From 7924ca7f4ed0dff593c180d7d8a034dbc405d878 Mon Sep 17 00:00:00 2001 From: Offirmo Date: Sat, 5 Oct 2024 20:47:08 +1000 Subject: [PATCH] +++ --- .../vanilla-web/src/viewport/index.js | 59 ++++++- .../active/view--chat/package.json | 13 +- .../view--chat/src/__fixtures/infinite.ts | 28 ++++ .../active/view--chat/src/loop/demo.ts | 7 +- .../active/view--chat/src/loop/index.ts | 13 +- .../active/view--chat/src/loop/types.ts | 29 ++-- .../active/view--chat/src/steps/types.ts | 9 +- .../the-boring-rpg/xx-sandbox/package.json | 1 + .../xx-sandbox/src/hateoas/index.ts | 145 ++++++++++++++++-- stack--current/yarn.lock | 100 +----------- 10 files changed, 272 insertions(+), 132 deletions(-) create mode 100755 stack--current/5-incubator/active/view--chat/src/__fixtures/infinite.ts diff --git a/stack--current/5-incubator/active--no-pkg/vanilla-web/src/viewport/index.js b/stack--current/5-incubator/active--no-pkg/vanilla-web/src/viewport/index.js index 59e71569..df99dabb 100644 --- a/stack--current/5-incubator/active--no-pkg/vanilla-web/src/viewport/index.js +++ b/stack--current/5-incubator/active--no-pkg/vanilla-web/src/viewport/index.js @@ -38,6 +38,61 @@ window.addEventListener('load', (event) => { dumpScreen() dumpVisualViewPort() - // TODO layout viewport https://developer.mozilla.org/en-US/docs/Glossary/Layout_viewport - // TODO get root element + // TODO layout viewport? + // https://developer.mozilla.org/en-US/docs/Glossary/Layout_viewport + // through root element? + + console.group('Multi screens') + console.group('Screen:', getBoundingRect‿str(getBoundingRectꓽScreen())) + console.group('Available screen:', getBoundingRect‿str(getBoundingRectꓽScreenⵧavailable(), getBoundingRectꓽScreen())) + console.group('Browser window') + console.log('Browser window:', 'todo') + // TODO frames + console.group('Visual viewport (dynamic)') + console.log('Visual viewport (dynamic):', 'todo') + console.groupEnd() + console.groupEnd() + console.groupEnd() + console.groupEnd() + console.groupEnd() }) + +function getBoundingRectꓽScreen(s = globalThis.top.screen) { + return { + w: s.width, + h: s.height, + } +} +function getBoundingRectꓽScreenⵧavailable(s = globalThis.top.screen) { + return { + w: s.availWidth, + h: s.availHeight, + } +} + +function hasꓽdimensions(rect) { + return rect && (rect.hasOwnProperty('w') || rect.hasOwnProperty('h')) +} + +function getBoundingRect‿str(rect, parentRect) { + let result = '' + + if (hasꓽdimensions(rect)) { + result += `${rect.w}×${rect.h}` + + if (hasꓽdimensions(parentRect)) { + const surfaceⵧparent = parentRect.w * parentRect.h + const surface = rect.w * rect.h + const ratio = surface / surfaceⵧparent + result += `[${Math.round(ratio * 100)}%]` + } + } + + if (rect && (rect.hasOwnProperty('x') || rect.hasOwnProperty('y'))) { + result += `(${rect.x},${rect.y})` + } + + + + return result +} diff --git a/stack--current/5-incubator/active/view--chat/package.json b/stack--current/5-incubator/active/view--chat/package.json index caa3ae6b..75e96e5a 100644 --- a/stack--current/5-incubator/active/view--chat/package.json +++ b/stack--current/5-incubator/active/view--chat/package.json @@ -9,8 +9,17 @@ "sideEffects": false, "type": "module", "source": "src/index.js", - "module": "src/index.js", - "main": "src/index.js", + "exports": { + ".": { + "import": "./dist/src.es2023.esm/index.js" + }, + "./primitives-console-basic": { + "import": "./dist/src.es2023.esm/__fixtures/primitives--console.js" + } + }, + "module": "dist/src.es2023.esm/index.js", + "main": "dist/src.es2023.cjs/index.js", + "typings": "dist/src.es2023.esm/index.d.ts", "peerDependencies": { "tslib": "^2" diff --git a/stack--current/5-incubator/active/view--chat/src/__fixtures/infinite.ts b/stack--current/5-incubator/active/view--chat/src/__fixtures/infinite.ts new file mode 100755 index 00000000..1bcec9ea --- /dev/null +++ b/stack--current/5-incubator/active/view--chat/src/__fixtures/infinite.ts @@ -0,0 +1,28 @@ +import * as RichText from '@offirmo-private/rich-text-format' + +import { + type StepIterator, + type StepIteratorTNext, + type StepIteratorYieldResult, +} from '../loop/types.js' +import { getꓽInputStepⵧconfirmation } from '../steps/bases.js' + +///////////////////////////////////////////////// + +type ContentType = string | RichText.Document + +///////////////////////////////////////////////// + +class ChatGenerator implements StepIterator { + next(p: StepIteratorTNext) { + const step = getꓽInputStepⵧconfirmation({}) + return { + value: step, + done: false, + } satisfies StepIteratorYieldResult + } +} + +///////////////////////////////////////////////// + +export default ChatGenerator diff --git a/stack--current/5-incubator/active/view--chat/src/loop/demo.ts b/stack--current/5-incubator/active/view--chat/src/loop/demo.ts index 3bb63db5..b1bb7d78 100755 --- a/stack--current/5-incubator/active/view--chat/src/loop/demo.ts +++ b/stack--current/5-incubator/active/view--chat/src/loop/demo.ts @@ -1,11 +1,14 @@ -import generator_func from '../__fixtures/tour.js' +import generator_func_tour from '../__fixtures/tour.js' +import InfiniteChatGenerator from '../__fixtures/infinite.js' + import { ChatPrimitivesConsole } from '../__fixtures/primitives--console.js' import { create } from './index.js' const chat = create({ DEBUG: false, - gen_next_step: generator_func() as any, + //gen_next_step: generator_func_tour(), + gen_next_step: new InfiniteChatGenerator(), primitives: new ChatPrimitivesConsole(), }) diff --git a/stack--current/5-incubator/active/view--chat/src/loop/index.ts b/stack--current/5-incubator/active/view--chat/src/loop/index.ts index b4661367..96c45733 100644 --- a/stack--current/5-incubator/active/view--chat/src/loop/index.ts +++ b/stack--current/5-incubator/active/view--chat/src/loop/index.ts @@ -4,13 +4,13 @@ import assert from 'tiny-invariant' import { type ChatPrimitives } from '../primitives/types.js' import { type Step, StepType, type TaskProgressStep } from '../steps/index.js' -import { StepsGenerator } from './types.js' +import { type StepIterator } from './types.js' import { create_dummy_progress_promise } from '../utils/index.js' ///////////////////////////////////////////////// interface Options { - gen_next_step: StepsGenerator + gen_next_step: StepIterator primitives: ChatPrimitives // TODO review! merge? @@ -35,6 +35,7 @@ function create({ DEBUG_to_prettified_str = (x: any) => x, // work with browser }: Options) { if (DEBUG) console.log(`↘ ${LIB}.create()`) + let infinite_loop_limit = 10 // temp while proto async function start() { if (DEBUG) console.log(`↘ ${LIB}.start()`) @@ -92,6 +93,10 @@ function create({ async function execute_step(step: Step) { if (DEBUG) console.log('↘ ${LIB}.execute_step(', DEBUG_to_prettified_str(step), ')') + infinite_loop_limit-- + if (infinite_loop_limit < 0) { + throw new Error('Too many steps, exiting to avoid infinite loop!') + } //const step = normalize_step(raw_step) @@ -100,6 +105,7 @@ function create({ case StepType.simple_message: await primitives.display_message({ msg: step.msg }) + step.callback?.() break case StepType.perceived_labor: { @@ -138,8 +144,7 @@ function create({ }), }) - if (step.callback) - step.callback(success, result || error) + step.callback?.(success, result || error) break } diff --git a/stack--current/5-incubator/active/view--chat/src/loop/types.ts b/stack--current/5-incubator/active/view--chat/src/loop/types.ts index de2323ef..b97c060d 100644 --- a/stack--current/5-incubator/active/view--chat/src/loop/types.ts +++ b/stack--current/5-incubator/active/view--chat/src/loop/types.ts @@ -3,24 +3,27 @@ import { type Step } from '../steps/index.js' ///////////////////////////////////////////////// -// what is yielded by the generator -type StepsGeneratorYield = Step +type TYield = Step | Promise> -// what is eventually returned by the generator -type StepsGeneratorReturn = Step | Promise> +type TReturn = any -// parameters of the generator.next() method -type StepsGeneratorNext = unknown +type TNext = { + last_step: Step | undefined, + last_answer: any | undefined, +} -// all together -type StepsGenerator = Generator< - StepsGeneratorYield, - StepsGeneratorReturn, - StepsGeneratorNext -> +type StepIterator = Iterator, TReturn, TNext> ///////////////////////////////////////////////// +// helper types for implementation +type StepIteratorTNext = TNext +type StepIteratorYieldResult = IteratorYieldResult> +type StepIteratorReturnResult = IteratorReturnResult> export { - type StepsGenerator, + type StepIteratorTNext, + type StepIteratorYieldResult, + type StepIteratorReturnResult, + + type StepIterator, } diff --git a/stack--current/5-incubator/active/view--chat/src/steps/types.ts b/stack--current/5-incubator/active/view--chat/src/steps/types.ts index 514e61cb..9b1e4239 100644 --- a/stack--current/5-incubator/active/view--chat/src/steps/types.ts +++ b/stack--current/5-incubator/active/view--chat/src/steps/types.ts @@ -21,13 +21,18 @@ export type StepType = Enum // eslint-disable-line no-redeclare // TODO more async?? callbacks? everything? interface BaseStep { - // TODO needed? + + // always a callback after the step is done, even for a trivial one + // for ex. a notification system may want to mark a notif as "read" after it's been displayed + callback?: (...p: any[]) => void } interface SimpleMessageStep extends BaseStep { type: typeof StepType.simple_message msg: ContentType | string + + callback?: () => void } // TODO is it redundant with progress? @@ -38,7 +43,7 @@ interface PerceivedLaborStep extends BaseStep { duration_ms?: number msg_after?: ContentType | string - // callback? + callback?: () => void } interface TaskProgressStep extends BaseStep { diff --git a/stack--current/A-apps--core/the-boring-rpg/xx-sandbox/package.json b/stack--current/A-apps--core/the-boring-rpg/xx-sandbox/package.json index 2a1bceb2..b4dfe025 100644 --- a/stack--current/A-apps--core/the-boring-rpg/xx-sandbox/package.json +++ b/stack--current/A-apps--core/the-boring-rpg/xx-sandbox/package.json @@ -25,6 +25,7 @@ "@offirmo-private/state-utils": "*", "@offirmo-private/timestamps": "*", "@offirmo-private/ts-types": "*", + "@offirmo-private/view--chat": "*", "@tbrpg/state": "*", "@tbrpg/ui--rich-text": "^0", "tiny-invariant": "^1", diff --git a/stack--current/A-apps--core/the-boring-rpg/xx-sandbox/src/hateoas/index.ts b/stack--current/A-apps--core/the-boring-rpg/xx-sandbox/src/hateoas/index.ts index d0c90d1a..2e4d5d82 100644 --- a/stack--current/A-apps--core/the-boring-rpg/xx-sandbox/src/hateoas/index.ts +++ b/stack--current/A-apps--core/the-boring-rpg/xx-sandbox/src/hateoas/index.ts @@ -2,19 +2,42 @@ import { Immutable } from '@offirmo-private/state-utils' import { type Hyperlink } from '@offirmo-private/ts-types-web' import * as RichText from '@offirmo-private/rich-text-format' -import to_terminal from '@offirmo-private/rich-text-format--to-terminal' - import * as State from '@tbrpg/state' import * as RRT from '@tbrpg/ui--rich-text' import { prettifyꓽjson } from '../services/misc.js' +import { ChatPrimitivesConsole } from '@offirmo-private/view--chat/primitives-console-basic' +import { + create, + StepType, + type Step, + type StepIterator, + type StepIteratorTNext, + type StepIteratorYieldResult, + type StepIteratorReturnResult, +} from '@offirmo-private/view--chat' +import to_terminal from '@offirmo-private/rich-text-format--to-terminal' + ///////////////////////////////////////////////// +// TODO async to pretend we're talking to a server (even if it's a worker) + +class Game { + state: Immutable -let state = State.create() -// TODO reseed -state = State.on_start_session(state, true) -state = State.update_to_now(state) + constructor() { + this.state = State.create() + // TODO reseed + } + + on_start_session() { + this.state = State.on_start_session(this.state, true) + } + + getꓽstate(): Immutable { + return this.state + } +} ///////////////////////////////////////////////// @@ -32,8 +55,110 @@ function HATEOASᐧGET(state: Immutable, link: Hyperlink['href'] = } } +///////////////////////////////////////////////// + +type ContentType = string | RichText.Document + +class GameChat implements StepIterator { + game: Game = new Game() + is_done: boolean = false + hypermedia: any = undefined + + constructor() { + this.game.on_start_session() + } + + next(p: StepIteratorTNext) { + if (this.is_done) { + return { + value: undefined, + done: true, + } satisfies StepIteratorReturnResult + } + + return { + value: this.gen_next_step(p), + done: false, + } satisfies StepIteratorYieldResult + } + + gen_next_step({ last_step, last_answer }: StepIteratorTNext): Step { + const state = this.game.getꓽstate() + + const pef = State.getꓽoldest_pending_engagementⵧflow(state.u_state) + if (pef) { + //console.log('[PEF]', to_terminal(pef.$doc)) + const step: Step = { + type: StepType.simple_message, + msg: pef.$doc, + callback: () => { + this.game.state = State.acknowledge_engagement_msg_seen(this.game.state, pef.uid) + } + } + return step + } + + const penf = State.getꓽoldest_pending_engagementⵧnon_flow(state.u_state) + if (penf) { + //console.log('[PENF]', to_terminal(penf.$doc)) + const step: Step = { + type: StepType.simple_message, + msg: penf.$doc, + callback: () => { + this.game.state = State.acknowledge_engagement_msg_seen(this.game.state, penf.uid) + } + } + return step + } + this.is_done = true + + /* + console.log('/////////////////////////////////////////////////') + // TODO should be part of recap? + if (State.is_inventory_full(state.u_state)) { + console.warn('[special message] Inventory is full!') + } + if(State.getꓽavailable_energy‿float(state.t_state) >= 1) { + console.log('[special message] You can play now!') + } + + console.log('/////////////////////////////////////////////////') + console.log('Actions:', RichText.renderⵧto_actions($doc)) +*/ + + + /* + let current_uri: Hyperlink['href'] = '' + const $doc = HATEOASᐧGET(state, current_uri) + console.log(prettifyꓽjson($doc)) + //console.log(to_terminal($doc)) + */ + + + const hypermedia = HATEOASᐧGET(state) + + const step: Step = { + type: StepType.simple_message, + msg: hypermedia, + } + + return step + } + + //return?(value?: TReturn): IteratorResult; + + //throw?(e?: any): IteratorResult; +} + +///////////////////////////////////////////////// + +const chat = create({ + DEBUG: false, + gen_next_step: new GameChat(), + primitives: new ChatPrimitivesConsole(), +}) + console.log('/////////////////////////////////////////////////') -let current_uri: Hyperlink['href'] = '' -const $doc = HATEOASᐧGET(state, current_uri) -console.log(prettifyꓽjson($doc)) -//console.log(to_terminal($doc)) +await chat.start() + +///////////////////////////////////////////////// diff --git a/stack--current/yarn.lock b/stack--current/yarn.lock index 84974b84..c18b34d4 100644 --- a/stack--current/yarn.lock +++ b/stack--current/yarn.lock @@ -2038,13 +2038,6 @@ cli-columns@^4: string-width "^4.2.3" strip-ansi "^6.0.1" -cli-cursor@^5.0.0: - version "5.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38" - integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== - dependencies: - restore-cursor "^5.0.0" - cli-progress@^3: version "3.12.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" @@ -2052,11 +2045,6 @@ cli-progress@^3: dependencies: string-width "^4.2.3" -cli-spinners@^2.9.2: - version "2.9.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - clipboardy@3.0.0: version "3.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/clipboardy/-/clipboardy-3.0.0.tgz#f3876247404d334c9ed01b6f269c11d09a5e3092" @@ -2117,7 +2105,7 @@ color-string@^1.9.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.2, color-support@^1.1.3: +color-support@^1.1.2: version "1.1.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -2919,20 +2907,6 @@ gauge@^3.0.0: strip-ansi "^6.0.1" wide-align "^1.1.2" -gauge@^5: - version "5.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/gauge/-/gauge-5.0.2.tgz#7ab44c11181da9766333f10db8cd1e4b17fd6c46" - integrity sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^4.0.1" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - geo-tz@^8: version "8.1.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/geo-tz/-/geo-tz-8.1.1.tgz#0173ee2f4c27a8198393244b1d21f908a36d8f74" @@ -3357,11 +3331,6 @@ is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-interactive@^2.0.0: - version "2.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" - integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== - is-json@^2.0.1: version "2.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" @@ -3455,11 +3424,6 @@ is-unicode-supported@^0.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-unicode-supported@^1.3.0: - version "1.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" - integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== - is-unicode-supported@^2.0.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz#09f0ab0de6d3744d48d265ebb98f65d11f2a9b3a" @@ -3656,11 +3620,6 @@ lines-and-columns@^1.1.6: resolved "https://packages.atlassian.com/api/npm/npm-remote/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -linewrap@^0.2: - version "0.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/linewrap/-/linewrap-0.2.1.tgz#5caef1579383b9b5fcb682b2d498dc9d74c545cf" - integrity sha512-RwPPaQ6CnZ85U2HLYcyEjD1pvF0+cesbSlIYKXWkrFAYSapDIYrMX0AoZkg4poxPZCVkVFXDatDUcnU7/2al/w== - lmdb@2.8.5: version "2.8.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/lmdb/-/lmdb-2.8.5.tgz#ce191110c755c0951caa062722e300c703973837" @@ -3731,14 +3690,6 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -log-symbols@^6.0.0: - version "6.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/log-symbols/-/log-symbols-6.0.0.tgz#bb95e5f05322651cac30c0feb6404f9f2a8a9439" - integrity sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw== - dependencies: - chalk "^5.3.0" - is-unicode-supported "^1.3.0" - log-symbols@^7: version "7.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/log-symbols/-/log-symbols-7.0.0.tgz#953999bb9cec27a09049c8f45e1154ec81163061" @@ -3876,11 +3827,6 @@ mimic-fn@^2.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-function@^5.0.0: - version "5.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" - integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== - mimic-response@^3.1.0: version "3.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" @@ -4213,28 +4159,6 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -onetime@^7.0.0: - version "7.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60" - integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== - dependencies: - mimic-function "^5.0.0" - -ora@^8: - version "8.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ora/-/ora-8.1.0.tgz#c3db2f9f83a2bec9e8ab71fe3b9ae234d65ca3a8" - integrity sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ== - dependencies: - chalk "^5.3.0" - cli-cursor "^5.0.0" - cli-spinners "^2.9.2" - is-interactive "^2.0.0" - is-unicode-supported "^2.0.0" - log-symbols "^6.0.0" - stdin-discarder "^0.2.2" - string-width "^7.2.0" - strip-ansi "^7.1.0" - ordered-binary@^1.4.1: version "1.5.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/ordered-binary/-/ordered-binary-1.5.2.tgz#2007072bcc4cb3454e250ca8ecc994f092ca03dc" @@ -4794,14 +4718,6 @@ responselike@^3.0.0: dependencies: lowercase-keys "^3.0.0" -restore-cursor@^5.0.0: - version "5.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/restore-cursor/-/restore-cursor-5.1.0.tgz#0766d95699efacb14150993f55baf0953ea1ebe7" - integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== - dependencies: - onetime "^7.0.0" - signal-exit "^4.1.0" - reusify@^1.0.4: version "1.0.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -5015,7 +4931,7 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://packages.atlassian.com/api/npm/npm-remote/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1, signal-exit@^4.1.0: +signal-exit@^4.0.1: version "4.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== @@ -5132,11 +5048,6 @@ stable@^0.1.8: resolved "https://packages.atlassian.com/api/npm/npm-remote/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stdin-discarder@^0.2.2: - version "0.2.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/stdin-discarder/-/stdin-discarder-0.2.2.tgz#390037f44c4ae1a1ae535c5fe38dc3aba8d997be" - integrity sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ== - stream-source@0.3: version "0.3.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/stream-source/-/stream-source-0.3.5.tgz#b97f52d0f8ea566db071db679b985403a31e0340" @@ -5333,11 +5244,6 @@ term-size@^2.2.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== -term-size@^4: - version "4.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/term-size/-/term-size-4.0.0.tgz#4aa3c66b7a38c33c99d7f2495198ed30548f79fa" - integrity sha512-105zga8eUjLH0I+ffu2UXZLCHCEu6fbgpeKRnBmScUQuMbEXtR77DQkUS9XoaJhvxko6W/4ZiwcPETtzYUgYrw== - terminal-size@^4: version "4.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/terminal-size/-/terminal-size-4.0.0.tgz#a0b7530518afe5f49952c58251ec6e2e3a740570" @@ -5679,7 +5585,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@^1.1.2: version "1.1.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==