@shopify/cli-kit 3.46.0-pre.3 → 3.46.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +1 -1
- package/assets/cli-ruby/lib/shopify_cli/theme/dev_server/cdn_fonts.rb +6 -2
- package/assets/cli-ruby/lib/shopify_cli/version.rb +1 -1
- package/dist/private/node/api.d.ts +1 -0
- package/dist/private/node/api.js +1 -0
- package/dist/private/node/api.js.map +1 -1
- package/dist/private/node/constants.d.ts +1 -1
- package/dist/private/node/constants.js +1 -1
- package/dist/private/node/constants.js.map +1 -1
- package/dist/private/node/content-tokens.js +1 -1
- package/dist/private/node/content-tokens.js.map +1 -1
- package/dist/private/node/demo-recorder.d.ts +20 -0
- package/dist/private/node/demo-recorder.js +122 -0
- package/dist/private/node/demo-recorder.js.map +1 -0
- package/dist/private/node/session/schema.d.ts +203 -41
- package/dist/private/node/tree-kill.d.ts +1 -0
- package/dist/private/node/tree-kill.js +7 -0
- package/dist/private/node/tree-kill.js.map +1 -0
- package/dist/private/node/ui/alert.js +4 -0
- package/dist/private/node/ui/alert.js.map +1 -1
- package/dist/private/node/ui/components/Alert.test.js +2 -2
- package/dist/private/node/ui/components/Alert.test.js.map +1 -1
- package/dist/private/node/ui/components/AutocompletePrompt.d.ts +3 -1
- package/dist/private/node/ui/components/AutocompletePrompt.js +8 -4
- package/dist/private/node/ui/components/AutocompletePrompt.js.map +1 -1
- package/dist/private/node/ui/components/AutocompletePrompt.test.js +33 -7
- package/dist/private/node/ui/components/AutocompletePrompt.test.js.map +1 -1
- package/dist/private/node/ui/components/ConcurrentOutput.d.ts +2 -2
- package/dist/private/node/ui/components/ConcurrentOutput.js +23 -6
- package/dist/private/node/ui/components/ConcurrentOutput.js.map +1 -1
- package/dist/private/node/ui/components/ConcurrentOutput.test.js +122 -8
- package/dist/private/node/ui/components/ConcurrentOutput.test.js.map +1 -1
- package/dist/private/node/ui/components/FatalError.js +5 -3
- package/dist/private/node/ui/components/FatalError.js.map +1 -1
- package/dist/private/node/ui/components/FatalError.test.js +113 -0
- package/dist/private/node/ui/components/FatalError.test.js.map +1 -1
- package/dist/private/node/ui/components/List.d.ts +1 -1
- package/dist/private/node/ui/components/List.js +2 -1
- package/dist/private/node/ui/components/List.js.map +1 -1
- package/dist/private/node/ui/components/List.test.js +19 -0
- package/dist/private/node/ui/components/List.test.js.map +1 -1
- package/dist/private/node/ui/components/Prompts/InfoTable.js +5 -1
- package/dist/private/node/ui/components/Prompts/InfoTable.js.map +1 -1
- package/dist/private/node/ui/components/Prompts/InfoTable.test.js +5 -4
- package/dist/private/node/ui/components/Prompts/InfoTable.test.js.map +1 -1
- package/dist/private/node/ui/components/SelectPrompt.d.ts +3 -1
- package/dist/private/node/ui/components/SelectPrompt.js +4 -2
- package/dist/private/node/ui/components/SelectPrompt.js.map +1 -1
- package/dist/private/node/ui/components/SelectPrompt.test.js +22 -0
- package/dist/private/node/ui/components/SelectPrompt.test.js.map +1 -1
- package/dist/private/node/ui/components/Tasks.d.ts +3 -1
- package/dist/private/node/ui/components/Tasks.js +7 -3
- package/dist/private/node/ui/components/Tasks.js.map +1 -1
- package/dist/private/node/ui/components/Tasks.test.js +22 -1
- package/dist/private/node/ui/components/Tasks.test.js.map +1 -1
- package/dist/private/node/ui/components/TextPrompt.d.ts +2 -0
- package/dist/private/node/ui/components/TextPrompt.js +4 -2
- package/dist/private/node/ui/components/TextPrompt.js.map +1 -1
- package/dist/private/node/ui/components/TextPrompt.test.js +9 -0
- package/dist/private/node/ui/components/TextPrompt.test.js.map +1 -1
- package/dist/private/node/ui/components/TokenizedText.d.ts +1 -1
- package/dist/private/node/ui/components/TokenizedText.js.map +1 -1
- package/dist/private/node/ui/components/TokenizedText.test.js +10 -0
- package/dist/private/node/ui/components/TokenizedText.test.js.map +1 -1
- package/dist/private/node/ui/hooks/use-abort-signal.d.ts +4 -0
- package/dist/private/node/ui/hooks/use-abort-signal.js +14 -0
- package/dist/private/node/ui/hooks/use-abort-signal.js.map +1 -0
- package/dist/private/node/ui/hooks/use-async-and-unmount.d.ts +1 -1
- package/dist/private/node/ui/hooks/use-async-and-unmount.js +1 -1
- package/dist/private/node/ui/hooks/use-async-and-unmount.js.map +1 -1
- package/dist/private/node/ui.js +3 -3
- package/dist/private/node/ui.js.map +1 -1
- package/dist/public/common/version.d.ts +1 -1
- package/dist/public/common/version.js +1 -1
- package/dist/public/common/version.js.map +1 -1
- package/dist/public/node/cli.js +2 -0
- package/dist/public/node/cli.js.map +1 -1
- package/dist/public/node/colors.js.map +1 -0
- package/dist/public/node/context/local.d.ts +1 -1
- package/dist/public/node/context/local.js +2 -2
- package/dist/public/node/context/local.js.map +1 -1
- package/dist/public/node/error-handler.js +7 -2
- package/dist/public/node/error-handler.js.map +1 -1
- package/dist/public/node/error.d.ts +8 -3
- package/dist/public/node/error.js +12 -5
- package/dist/public/node/error.js.map +1 -1
- package/dist/public/node/fs.d.ts +1 -0
- package/dist/public/node/hooks/prerun.js +2 -0
- package/dist/public/node/hooks/prerun.js.map +1 -1
- package/dist/public/node/node-package-manager.d.ts +11 -0
- package/dist/public/node/node-package-manager.js +8 -6
- package/dist/public/node/node-package-manager.js.map +1 -1
- package/dist/public/node/output.d.ts +6 -1
- package/dist/public/node/output.js +6 -2
- package/dist/public/node/output.js.map +1 -1
- package/dist/public/node/plugins/tunnel.d.ts +19 -4
- package/dist/public/node/plugins/tunnel.js +1 -1
- package/dist/public/node/plugins/tunnel.js.map +1 -1
- package/dist/public/node/plugins.d.ts +1 -12
- package/dist/public/node/plugins.js +0 -23
- package/dist/public/node/plugins.js.map +1 -1
- package/dist/public/node/ruby.js +2 -0
- package/dist/public/node/ruby.js.map +1 -1
- package/dist/public/node/system.d.ts +1 -0
- package/dist/public/node/system.js +8 -3
- package/dist/public/node/system.js.map +1 -1
- package/dist/public/node/tcp.js +1 -1
- package/dist/public/node/tcp.js.map +1 -1
- package/dist/public/node/ui.d.ts +17 -8
- package/dist/public/node/ui.js +75 -19
- package/dist/public/node/ui.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -12
- package/dist/private/node/colors.js.map +0 -1
- /package/dist/{private → public}/node/colors.d.ts +0 -0
- /package/dist/{private → public}/node/colors.js +0 -0
|
@@ -10,7 +10,7 @@ module Extension
|
|
|
10
10
|
SUPPORTED_BUCKETS = %w(assets blocks snippets locales)
|
|
11
11
|
BUNDLE_SIZE_LIMIT = 10 * 1024 * 1024 # 10MB
|
|
12
12
|
LIQUID_SIZE_LIMIT = 100 * 1024 # 100kb
|
|
13
|
-
SUPPORTED_ASSET_EXTS = %w(.jpg .js .css .png .svg)
|
|
13
|
+
SUPPORTED_ASSET_EXTS = %w(.jpg .jpeg .js .css .png .svg)
|
|
14
14
|
SUPPORTED_LOCALE_EXTS = %w(.json)
|
|
15
15
|
|
|
16
16
|
def create(directory_name, context, getting_started: false)
|
|
@@ -21,8 +21,12 @@ module ShopifyCLI
|
|
|
21
21
|
|
|
22
22
|
# Proxy the request, and replace the URLs in the response
|
|
23
23
|
status, headers, body = @app.call(env)
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
content_type = headers["Content-Type"] || headers["content-type"]
|
|
25
|
+
if content_type.nil? || content_type == "" || content_type&.start_with?("text/")
|
|
26
|
+
[status, headers, replace_font_urls(body)]
|
|
27
|
+
else
|
|
28
|
+
[status, headers, body]
|
|
29
|
+
end
|
|
26
30
|
end
|
|
27
31
|
|
|
28
32
|
private
|
package/dist/private/node/api.js
CHANGED
|
@@ -10,6 +10,7 @@ export async function debugLogResponseInfo({ request, url }, errorHandler) {
|
|
|
10
10
|
let response = {};
|
|
11
11
|
try {
|
|
12
12
|
response = await request;
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
14
|
response.headers.forEach((value, key) => {
|
|
14
15
|
if (interestingResponseHeaders.has(key))
|
|
15
16
|
responseHeaders[key] = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/private/node/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/private/node/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAA;AAItC,MAAM,CAAC,MAAM,OAAO,GAAU,CAAC,OAAO,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAA;AAO1E,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;AAErG,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAC,OAAO,EAAE,GAAG,EAAoB,EACjC,YAAkD;IAElD,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IAC5B,MAAM,eAAe,GAA4B,EAAE,CAAA;IACnD,IAAI,QAAQ,GAAM,EAAO,CAAA;IACzB,IAAI;QACF,QAAQ,GAAG,MAAM,OAAO,CAAA;QACxB,8DAA8D;QAC9D,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,EAAE,EAAE;YAChD,IAAI,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACvE,CAAC,CAAC,CAAA;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,GAAG,YAAY,WAAW,EAAE;YAC9B,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE;gBACzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAqC,EAAE;oBAC9E,IAAI,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;iBACtE;aACF;SACF;QACD,IAAI,YAAY,EAAE;YAChB,MAAM,YAAY,CAAC,GAAG,CAAC,CAAA;SACxB;aAAM;YACL,MAAM,GAAG,CAAA;SACV;KACF;YAAS;QACR,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC5B,WAAW,CAAC,cAAc,GAAG,iBAAiB,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;;EAEnE,sBAAsB,CAAC,eAAe,CAAC;KACpC,CAAC,CAAA;KACH;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC","sourcesContent":["import {sanitizedHeadersOutput} from './api/headers.js'\nimport {outputDebug} from '@shopify/cli-kit/node/output'\nimport {Headers} from 'form-data'\nimport {ClientError} from 'graphql-request'\nimport {performance} from 'perf_hooks'\n\nexport type API = 'admin' | 'storefront-renderer' | 'partners'\n\nexport const allAPIs: API[] = ['admin', 'storefront-renderer', 'partners']\n\ninterface RequestOptions<T> {\n request: Promise<T>\n url: string\n}\n\nconst interestingResponseHeaders = new Set(['cache-control', 'content-type', 'etag', 'x-request-id'])\n\nexport async function debugLogResponseInfo<T extends {headers: Headers; status: number}>(\n {request, url}: RequestOptions<T>,\n errorHandler?: (error: unknown) => Error | unknown,\n): Promise<T> {\n const t0 = performance.now()\n const responseHeaders: {[key: string]: string} = {}\n let response: T = {} as T\n try {\n response = await request\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response.headers.forEach((value: any, key: any) => {\n if (interestingResponseHeaders.has(key)) responseHeaders[key] = value\n })\n } catch (err) {\n if (err instanceof ClientError) {\n if (err.response?.headers) {\n for (const [key, value] of err.response?.headers as Iterable<[string, string]>) {\n if (interestingResponseHeaders.has(key)) responseHeaders[key] = value\n }\n }\n }\n if (errorHandler) {\n throw errorHandler(err)\n } else {\n throw err\n }\n } finally {\n const t1 = performance.now()\n outputDebug(`Request to ${url} completed in ${Math.round(t1 - t0)} ms\nWith response headers:\n${sanitizedHeadersOutput(responseHeaders)}\n `)\n }\n return response\n}\n"]}
|
|
@@ -21,7 +21,7 @@ export const environmentVariables = {
|
|
|
21
21
|
themeToken: 'SHOPIFY_CLI_THEME_TOKEN',
|
|
22
22
|
unitTest: 'SHOPIFY_UNIT_TEST',
|
|
23
23
|
verbose: 'SHOPIFY_FLAG_VERBOSE',
|
|
24
|
-
|
|
24
|
+
noThemeBundling: 'SHOPIFY_CLI_NO_THEME_BUNDLING',
|
|
25
25
|
// Variables to detect if the CLI is running in a cloud environment
|
|
26
26
|
codespaceName: 'CODESPACE_NAME',
|
|
27
27
|
codespaces: 'CODESPACES',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/private/node/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAA;AAClD,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,GAAG,aAAa,CAAA;AAEhC,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;IACjE,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kBAAkB,EAAE,kCAAkC;IACtD,UAAU,EAAE,yBAAyB;IACrC,iBAAiB,EAAE,iCAAiC;IACpD,GAAG,EAAE,iBAAiB;IACtB,aAAa,EAAE,oBAAoB;IACnC,WAAW,EAAE,0BAA0B;IACvC,aAAa,EAAE,4BAA4B;IAC3C,SAAS,EAAE,qBAAqB;IAChC,UAAU,EAAE,qBAAqB;IACjC,eAAe,EAAE,+BAA+B;IAChD,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,yBAAyB;IACrC,QAAQ,EAAE,mBAAmB;IAC7B,OAAO,EAAE,sBAAsB;IAC/B,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/private/node/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAA;AAClD,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,GAAG,aAAa,CAAA;AAEhC,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;IACjE,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kBAAkB,EAAE,kCAAkC;IACtD,UAAU,EAAE,yBAAyB;IACrC,iBAAiB,EAAE,iCAAiC;IACpD,GAAG,EAAE,iBAAiB;IACtB,aAAa,EAAE,oBAAoB;IACnC,WAAW,EAAE,0BAA0B;IACvC,aAAa,EAAE,4BAA4B;IAC3C,SAAS,EAAE,qBAAqB;IAChC,UAAU,EAAE,qBAAqB;IACjC,eAAe,EAAE,+BAA+B;IAChD,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,yBAAyB;IACrC,QAAQ,EAAE,mBAAmB;IAC7B,OAAO,EAAE,sBAAsB;IAC/B,eAAe,EAAE,+BAA+B;IAChD,mEAAmE;IACnE,aAAa,EAAE,gBAAgB;IAC/B,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,sBAAsB;IAC9B,UAAU,EAAE,aAAa;IACzB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,eAAe;IAC5B,YAAY,EAAE,0BAA0B;IACxC,aAAa,EAAE,4BAA4B;IAC3C,YAAY,EAAE,2BAA2B;CAC1C,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,WAAW,EAAE,cAAc;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW,EAAE;QACX,GAAG,EAAE,kBAAkB;KACxB;IACD,WAAW,EAAE;QACX,KAAK,EAAE;YACL,IAAI,EAAE,GAAG,EAAE;gBACT,OAAO,WAAW,EAAE,CAAA;YACtB,CAAC;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,GAAG,EAAE;oBACT,OAAO,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAA;gBAC1C,CAAC;gBACD,QAAQ,EAAE,GAAG,EAAE;oBACb,OAAO,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;gBACtD,CAAC;aACF;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,aAAa;CACvB,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,6BAA6B,EAAE,CAAC;CACjC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,kCAAkC,CAAA","sourcesContent":["import {joinPath} from '../../public/node/path.js'\nimport envPaths from 'env-paths'\n\nconst identifier = 'shopify-cli'\n\nconst cacheFolder = () => {\n if (process.env.XDG_CACHE_HOME) return process.env.XDG_CACHE_HOME\n return envPaths(identifier).cache\n}\n\nexport const environmentVariables = {\n alwaysLogAnalytics: 'SHOPIFY_CLI_ALWAYS_LOG_ANALYTICS',\n deviceAuth: 'SHOPIFY_CLI_DEVICE_AUTH',\n enableCliRedirect: 'SHOPIFY_CLI_ENABLE_CLI_REDIRECT',\n env: 'SHOPIFY_CLI_ENV',\n firstPartyDev: 'SHOPIFY_CLI_1P_DEV',\n noAnalytics: 'SHOPIFY_CLI_NO_ANALYTICS',\n partnersToken: 'SHOPIFY_CLI_PARTNERS_TOKEN',\n runAsUser: 'SHOPIFY_RUN_AS_USER',\n serviceEnv: 'SHOPIFY_SERVICE_ENV',\n skipCliRedirect: 'SHOPIFY_CLI_SKIP_CLI_REDIRECT',\n spinInstance: 'SPIN_INSTANCE',\n themeToken: 'SHOPIFY_CLI_THEME_TOKEN',\n unitTest: 'SHOPIFY_UNIT_TEST',\n verbose: 'SHOPIFY_FLAG_VERBOSE',\n noThemeBundling: 'SHOPIFY_CLI_NO_THEME_BUNDLING',\n // Variables to detect if the CLI is running in a cloud environment\n codespaceName: 'CODESPACE_NAME',\n codespaces: 'CODESPACES',\n gitpod: 'GITPOD_WORKSPACE_URL',\n cloudShell: 'CLOUD_SHELL',\n spin: 'SPIN',\n spinAppPort: 'SERVER_PORT',\n spinAppHost: 'SPIN_APP_HOST',\n organization: 'SHOPIFY_CLI_ORGANIZATION',\n identityToken: 'SHOPIFY_CLI_IDENTITY_TOKEN',\n refreshToken: 'SHOPIFY_CLI_REFRESH_TOKEN',\n}\n\nexport const systemEnvironmentVariables = {\n backendPort: 'BACKEND_PORT',\n}\n\nexport const pathConstants = {\n executables: {\n dev: '/opt/dev/bin/dev',\n },\n directories: {\n cache: {\n path: () => {\n return cacheFolder()\n },\n vendor: {\n path: () => {\n return joinPath(cacheFolder(), 'vendor')\n },\n binaries: () => {\n return joinPath(cacheFolder(), 'vendor', 'binaries')\n },\n },\n },\n },\n}\n\nexport const keychainConstants = {\n service: 'shopify-cli',\n}\n\nexport const sessionConstants = {\n expirationTimeMarginInMinutes: 4,\n}\n\nexport const bugsnagApiKey = '9e1e6889176fd0c795d5c659225e0fae'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-tokens.js","sourceRoot":"","sources":["../../../src/private/node/content-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"content-tokens.js","sourceRoot":"","sources":["../../../src/private/node/content-tokens.ts"],"names":[],"mappings":"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","sourcesContent":["import colors from '../../public/node/colors.js'\nimport {OutputMessage, stringifyMessage} from '../../public/node/output.js'\nimport {relativizePath} from '../../public/node/path.js'\nimport terminalLink from 'terminal-link'\nimport cjs from 'color-json'\nimport type {Change} from 'diff'\n\nexport abstract class ContentToken<T> {\n value: T\n\n constructor(value: T) {\n this.value = value\n }\n\n abstract output(): string | string[]\n}\n\nexport class RawContentToken extends ContentToken<string> {\n output(): string {\n return this.value\n }\n}\n\nexport class LinkContentToken extends ContentToken<OutputMessage> {\n link: string\n\n constructor(value: OutputMessage, link: string) {\n super(value)\n this.link = link\n }\n\n output() {\n const text = colors.green(stringifyMessage(this.value))\n const url = this.link ?? ''\n return terminalLink(text, url, {fallback: () => `${text} ( ${url} )`})\n }\n}\n\nexport class CommandContentToken extends ContentToken<OutputMessage> {\n output(): string {\n return colors.bold(colors.yellow(stringifyMessage(this.value)))\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class JsonContentToken extends ContentToken<any> {\n output(): string {\n try {\n return cjs(stringifyMessage(this.value) ?? {})\n // eslint-disable-next-line no-catch-all/no-catch-all\n } catch (_) {\n return JSON.stringify(stringifyMessage(this.value) ?? {}, null, 2)\n }\n }\n}\n\nexport class LinesDiffContentToken extends ContentToken<Change[]> {\n output(): string[] {\n return this.value\n .map((part) => {\n if (part.added) {\n return part.value\n .split(/\\n/)\n .filter((line) => line !== '')\n .map((line) => {\n return colors.green(`+ ${line}\\n`)\n })\n } else if (part.removed) {\n return part.value\n .split(/\\n/)\n .filter((line) => line !== '')\n .map((line) => {\n return colors.magenta(`- ${line}\\n`)\n })\n } else {\n return part.value\n }\n })\n .flat()\n }\n}\n\nexport class ColorContentToken extends ContentToken<OutputMessage> {\n color: (text: string) => string\n\n constructor(value: OutputMessage, color: (text: string) => string) {\n super(value)\n this.color = color\n }\n\n output(): string {\n return this.color(stringifyMessage(this.value))\n }\n}\n\nexport class ErrorContentToken extends ContentToken<OutputMessage> {\n output(): string {\n return colors.bold.redBright(stringifyMessage(this.value))\n }\n}\n\nexport class PathContentToken extends ContentToken<OutputMessage> {\n output(): string {\n return relativizePath(stringifyMessage(this.value))\n }\n}\n\nexport class HeadingContentToken extends ContentToken<OutputMessage> {\n output(): string {\n return colors.bold.underline(stringifyMessage(this.value))\n }\n}\n\nexport class SubHeadingContentToken extends ContentToken<OutputMessage> {\n output(): string {\n return colors.underline(stringifyMessage(this.value))\n }\n}\n\nexport class ItalicContentToken extends ContentToken<OutputMessage> {\n output(): string {\n return colors.italic(stringifyMessage(this.value))\n }\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ConcurrentOutputProps } from './ui/components/ConcurrentOutput.js';
|
|
2
|
+
interface Event {
|
|
3
|
+
type: string;
|
|
4
|
+
properties: {
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
};
|
|
7
|
+
concurrencyStart?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function initDemoRecorder(): void;
|
|
10
|
+
export declare function recordUIEvent(event: Event): void;
|
|
11
|
+
export declare function resetRecordedSleep(): void;
|
|
12
|
+
export declare function printEventsJson(): void;
|
|
13
|
+
export declare function addOrUpdateConcurrentUIEventOutput(data: {
|
|
14
|
+
prefix: string;
|
|
15
|
+
index: number;
|
|
16
|
+
output: string;
|
|
17
|
+
}, componentData: {
|
|
18
|
+
footer: ConcurrentOutputProps['footer'];
|
|
19
|
+
}): void;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { isTruthy } from './context/utilities.js';
|
|
2
|
+
class DemoRecorder {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.recorded = [];
|
|
5
|
+
this.sleepStart = Date.now();
|
|
6
|
+
this.command = ['shopify', ...process.argv.slice(2)].join(' ');
|
|
7
|
+
}
|
|
8
|
+
addEvent({ type, properties }) {
|
|
9
|
+
if (type === 'taskbar') {
|
|
10
|
+
this.resetSleep();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
this.addSleep();
|
|
14
|
+
}
|
|
15
|
+
this.recorded.push({ type, properties: JSON.parse(JSON.stringify(properties)) });
|
|
16
|
+
this.sleepStart = Date.now();
|
|
17
|
+
}
|
|
18
|
+
recordedEventsJson() {
|
|
19
|
+
return JSON.stringify({
|
|
20
|
+
command: this.command,
|
|
21
|
+
steps: this.withFormattedConcurrent(this.recorded),
|
|
22
|
+
}, null, 2);
|
|
23
|
+
}
|
|
24
|
+
addSleep() {
|
|
25
|
+
const duration = (Date.now() - this.sleepStart) / 1000;
|
|
26
|
+
this.sleepStart = Date.now();
|
|
27
|
+
if (duration > 0.1) {
|
|
28
|
+
this.recorded.push({ type: 'sleep', properties: { duration } });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
resetSleep() {
|
|
32
|
+
this.sleepStart = Date.now();
|
|
33
|
+
}
|
|
34
|
+
addOrUpdateConcurrentOutput({ prefix, index, output, }, { footer }) {
|
|
35
|
+
let last = this.recorded[this.recorded.length - 1];
|
|
36
|
+
if (last?.type === 'concurrent') {
|
|
37
|
+
// Don't sleep between concurrent lines
|
|
38
|
+
this.resetSleep();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const eventProperties = {
|
|
42
|
+
type: 'concurrent',
|
|
43
|
+
properties: { processes: [], concurrencyStart: Date.now() },
|
|
44
|
+
};
|
|
45
|
+
if (footer)
|
|
46
|
+
eventProperties.properties.footer = footer;
|
|
47
|
+
this.addEvent(eventProperties);
|
|
48
|
+
last = this.recorded[this.recorded.length - 1];
|
|
49
|
+
}
|
|
50
|
+
const { processes } = last.properties;
|
|
51
|
+
while (processes.length <= index) {
|
|
52
|
+
processes.push({ prefix: '', steps: [] });
|
|
53
|
+
}
|
|
54
|
+
processes[index].prefix = prefix;
|
|
55
|
+
processes[index].steps.push({ timestamp: Date.now(), endMessage: output });
|
|
56
|
+
}
|
|
57
|
+
withFormattedConcurrent(recorded) {
|
|
58
|
+
return recorded.map((event) => {
|
|
59
|
+
if (event.type === 'concurrent') {
|
|
60
|
+
const { processes, footer, concurrencyStart } = event.properties;
|
|
61
|
+
const formatted = processes.map(({ prefix, steps }) => {
|
|
62
|
+
let mostRecentTimestamp = concurrencyStart;
|
|
63
|
+
const formattedSteps = steps.map(({ timestamp, endMessage }) => {
|
|
64
|
+
const duration = (timestamp - mostRecentTimestamp) / 1000;
|
|
65
|
+
mostRecentTimestamp = timestamp;
|
|
66
|
+
return { duration, endMessage };
|
|
67
|
+
});
|
|
68
|
+
return { prefix, steps: formattedSteps };
|
|
69
|
+
});
|
|
70
|
+
return { type: 'concurrent', properties: { footer, processes: formatted } };
|
|
71
|
+
}
|
|
72
|
+
return event;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
class NoopDemoRecorder {
|
|
77
|
+
addEvent(_event) { }
|
|
78
|
+
recordedEventsJson() {
|
|
79
|
+
return JSON.stringify({ steps: [] }, null, 2);
|
|
80
|
+
}
|
|
81
|
+
addSleep() { }
|
|
82
|
+
resetSleep() { }
|
|
83
|
+
addOrUpdateConcurrentOutput(..._args) { }
|
|
84
|
+
}
|
|
85
|
+
let _instance;
|
|
86
|
+
function ensureInstance() {
|
|
87
|
+
if (!_instance) {
|
|
88
|
+
if (isRecording()) {
|
|
89
|
+
_instance = new DemoRecorder();
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
_instance = new NoopDemoRecorder();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export function initDemoRecorder() {
|
|
97
|
+
ensureInstance();
|
|
98
|
+
}
|
|
99
|
+
export function recordUIEvent(event) {
|
|
100
|
+
ensureInstance();
|
|
101
|
+
_instance.addEvent(event);
|
|
102
|
+
}
|
|
103
|
+
export function resetRecordedSleep() {
|
|
104
|
+
ensureInstance();
|
|
105
|
+
_instance.resetSleep();
|
|
106
|
+
}
|
|
107
|
+
export function printEventsJson() {
|
|
108
|
+
if (isRecording()) {
|
|
109
|
+
ensureInstance();
|
|
110
|
+
_instance.addSleep();
|
|
111
|
+
// eslint-disable-next-line no-console
|
|
112
|
+
console.log(_instance.recordedEventsJson());
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export function addOrUpdateConcurrentUIEventOutput(data, componentData) {
|
|
116
|
+
ensureInstance();
|
|
117
|
+
_instance.addOrUpdateConcurrentOutput(data, componentData);
|
|
118
|
+
}
|
|
119
|
+
function isRecording() {
|
|
120
|
+
return isTruthy(process.env.RECORD_DEMO);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=demo-recorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-recorder.js","sourceRoot":"","sources":["../../../src/private/node/demo-recorder.ts"],"names":[],"mappings":"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","sourcesContent":["import {isTruthy} from './context/utilities.js'\nimport {ConcurrentOutputProps} from './ui/components/ConcurrentOutput.js'\n\ninterface Event {\n type: string\n properties: {[key: string]: unknown}\n // Only used within this recorder for tracking concurrency timeline\n concurrencyStart?: number\n}\n\ninterface ConcurrencyStep {\n timestamp: number\n endMessage: string\n}\n\ninterface ConcurrencyProcess {\n prefix: string\n steps: ConcurrencyStep[]\n}\n\nclass DemoRecorder {\n recorded: Event[]\n sleepStart: number\n command: string\n\n constructor() {\n this.recorded = []\n this.sleepStart = Date.now()\n this.command = ['shopify', ...process.argv.slice(2)].join(' ')\n }\n\n addEvent({type, properties}: Event) {\n if (type === 'taskbar') {\n this.resetSleep()\n } else {\n this.addSleep()\n }\n this.recorded.push({type, properties: JSON.parse(JSON.stringify(properties))})\n this.sleepStart = Date.now()\n }\n\n recordedEventsJson() {\n return JSON.stringify(\n {\n command: this.command,\n steps: this.withFormattedConcurrent(this.recorded),\n },\n null,\n 2,\n )\n }\n\n addSleep() {\n const duration = (Date.now() - this.sleepStart) / 1000\n this.sleepStart = Date.now()\n if (duration > 0.1) {\n this.recorded.push({type: 'sleep', properties: {duration}})\n }\n }\n\n resetSleep() {\n this.sleepStart = Date.now()\n }\n\n addOrUpdateConcurrentOutput(\n {\n prefix,\n index,\n output,\n }: {\n prefix: string\n index: number\n output: string\n },\n {footer}: {footer: ConcurrentOutputProps['footer']},\n ) {\n let last = this.recorded[this.recorded.length - 1]\n if (last?.type === 'concurrent') {\n // Don't sleep between concurrent lines\n this.resetSleep()\n } else {\n const eventProperties: Event = {\n type: 'concurrent',\n properties: {processes: [], concurrencyStart: Date.now()},\n }\n if (footer) eventProperties.properties.footer = footer\n this.addEvent(eventProperties)\n last = this.recorded[this.recorded.length - 1]\n }\n const {processes} = last!.properties as {processes: ConcurrencyProcess[]}\n while (processes.length <= index) {\n processes.push({prefix: '', steps: []})\n }\n processes[index]!.prefix = prefix\n processes[index]!.steps.push({timestamp: Date.now(), endMessage: output})\n }\n\n withFormattedConcurrent(recorded: Event[]) {\n return recorded.map((event) => {\n if (event.type === 'concurrent') {\n const {processes, footer, concurrencyStart} = event.properties as {\n processes: ConcurrencyProcess[]\n footer?: string\n concurrencyStart: number\n }\n const formatted = processes.map(({prefix, steps}: {prefix: string; steps: ConcurrencyStep[]}) => {\n let mostRecentTimestamp = concurrencyStart\n const formattedSteps = steps.map(({timestamp, endMessage}) => {\n const duration = (timestamp - mostRecentTimestamp) / 1000\n mostRecentTimestamp = timestamp\n return {duration, endMessage}\n })\n return {prefix, steps: formattedSteps}\n })\n return {type: 'concurrent', properties: {footer, processes: formatted}}\n }\n return event\n })\n }\n}\n\nclass NoopDemoRecorder {\n addEvent(_event: Event) {}\n\n recordedEventsJson() {\n return JSON.stringify({steps: []}, null, 2)\n }\n\n addSleep() {}\n resetSleep() {}\n\n addOrUpdateConcurrentOutput(..._args: unknown[]) {}\n}\n\nlet _instance: {\n addEvent: (event: Event) => void\n recordedEventsJson: () => string\n resetSleep: () => void\n addSleep: () => void\n addOrUpdateConcurrentOutput: (\n {\n prefix,\n index,\n output,\n }: {\n prefix: string\n index: number\n output: string\n },\n {footer}: {footer: ConcurrentOutputProps['footer']},\n ) => void\n}\n\nfunction ensureInstance() {\n if (!_instance) {\n if (isRecording()) {\n _instance = new DemoRecorder()\n } else {\n _instance = new NoopDemoRecorder()\n }\n }\n}\n\nexport function initDemoRecorder() {\n ensureInstance()\n}\n\nexport function recordUIEvent(event: Event) {\n ensureInstance()\n _instance.addEvent(event)\n}\n\nexport function resetRecordedSleep() {\n ensureInstance()\n _instance.resetSleep()\n}\n\nexport function printEventsJson(): void {\n if (isRecording()) {\n ensureInstance()\n _instance.addSleep()\n // eslint-disable-next-line no-console\n console.log(_instance.recordedEventsJson())\n }\n}\n\nexport function addOrUpdateConcurrentUIEventOutput(\n data: {\n prefix: string\n index: number\n output: string\n },\n componentData: {footer: ConcurrentOutputProps['footer']},\n) {\n ensureInstance()\n _instance.addOrUpdateConcurrentOutput(data, componentData)\n}\n\nfunction isRecording() {\n return isTruthy(process.env.RECORD_DEMO)\n}\n"]}
|
|
@@ -5,7 +5,7 @@ import { zod } from '../../../public/node/schema.js';
|
|
|
5
5
|
declare const IdentityTokenSchema: zod.ZodObject<{
|
|
6
6
|
accessToken: zod.ZodString;
|
|
7
7
|
refreshToken: zod.ZodString;
|
|
8
|
-
expiresAt: zod.ZodEffects<zod.ZodDate, Date,
|
|
8
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
9
9
|
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
10
10
|
}, "strip", zod.ZodTypeAny, {
|
|
11
11
|
accessToken: string;
|
|
@@ -15,15 +15,15 @@ declare const IdentityTokenSchema: zod.ZodObject<{
|
|
|
15
15
|
}, {
|
|
16
16
|
accessToken: string;
|
|
17
17
|
refreshToken: string;
|
|
18
|
-
expiresAt: Date;
|
|
19
18
|
scopes: string[];
|
|
19
|
+
expiresAt?: unknown;
|
|
20
20
|
}>;
|
|
21
21
|
/**
|
|
22
22
|
* The schema represents an application token.
|
|
23
23
|
*/
|
|
24
24
|
declare const ApplicationTokenSchema: zod.ZodObject<{
|
|
25
25
|
accessToken: zod.ZodString;
|
|
26
|
-
expiresAt: zod.ZodEffects<zod.ZodDate, Date,
|
|
26
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
27
27
|
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
28
28
|
}, "strip", zod.ZodTypeAny, {
|
|
29
29
|
accessToken: string;
|
|
@@ -31,8 +31,8 @@ declare const ApplicationTokenSchema: zod.ZodObject<{
|
|
|
31
31
|
scopes: string[];
|
|
32
32
|
}, {
|
|
33
33
|
accessToken: string;
|
|
34
|
-
expiresAt: Date;
|
|
35
34
|
scopes: string[];
|
|
35
|
+
expiresAt?: unknown;
|
|
36
36
|
}>;
|
|
37
37
|
/**
|
|
38
38
|
* This schema represents the format of the session
|
|
@@ -66,7 +66,7 @@ export declare const SessionSchema: zod.ZodObject<{}, "strip", zod.ZodObject<{
|
|
|
66
66
|
identity: zod.ZodObject<{
|
|
67
67
|
accessToken: zod.ZodString;
|
|
68
68
|
refreshToken: zod.ZodString;
|
|
69
|
-
expiresAt: zod.ZodEffects<zod.ZodDate, Date,
|
|
69
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
70
70
|
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
71
71
|
}, "strip", zod.ZodTypeAny, {
|
|
72
72
|
accessToken: string;
|
|
@@ -76,8 +76,8 @@ export declare const SessionSchema: zod.ZodObject<{}, "strip", zod.ZodObject<{
|
|
|
76
76
|
}, {
|
|
77
77
|
accessToken: string;
|
|
78
78
|
refreshToken: string;
|
|
79
|
-
expiresAt: Date;
|
|
80
79
|
scopes: string[];
|
|
80
|
+
expiresAt?: unknown;
|
|
81
81
|
}>;
|
|
82
82
|
/**
|
|
83
83
|
* It contains exchanged tokens for the applications the CLI
|
|
@@ -85,29 +85,132 @@ export declare const SessionSchema: zod.ZodObject<{}, "strip", zod.ZodObject<{
|
|
|
85
85
|
*/
|
|
86
86
|
applications: zod.ZodObject<{}, "strip", zod.ZodObject<{
|
|
87
87
|
accessToken: zod.ZodString;
|
|
88
|
-
expiresAt: zod.ZodEffects<zod.ZodDate, Date,
|
|
88
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
89
|
+
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
90
|
+
}, "strip", zod.ZodTypeAny, {
|
|
91
|
+
accessToken: string;
|
|
92
|
+
expiresAt: Date;
|
|
93
|
+
scopes: string[];
|
|
94
|
+
}, {
|
|
95
|
+
accessToken: string;
|
|
96
|
+
scopes: string[];
|
|
97
|
+
expiresAt?: unknown;
|
|
98
|
+
}>, zod.objectOutputType<{}, zod.ZodObject<{
|
|
99
|
+
accessToken: zod.ZodString;
|
|
100
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
89
101
|
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
90
102
|
}, "strip", zod.ZodTypeAny, {
|
|
91
103
|
accessToken: string;
|
|
92
104
|
expiresAt: Date;
|
|
93
105
|
scopes: string[];
|
|
94
106
|
}, {
|
|
107
|
+
accessToken: string;
|
|
108
|
+
scopes: string[];
|
|
109
|
+
expiresAt?: unknown;
|
|
110
|
+
}>, "strip">, zod.objectInputType<{}, zod.ZodObject<{
|
|
111
|
+
accessToken: zod.ZodString;
|
|
112
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
113
|
+
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
114
|
+
}, "strip", zod.ZodTypeAny, {
|
|
95
115
|
accessToken: string;
|
|
96
116
|
expiresAt: Date;
|
|
97
117
|
scopes: string[];
|
|
98
|
-
}
|
|
99
|
-
|
|
118
|
+
}, {
|
|
119
|
+
accessToken: string;
|
|
120
|
+
scopes: string[];
|
|
121
|
+
expiresAt?: unknown;
|
|
122
|
+
}>, "strip">>;
|
|
123
|
+
}, "strip", zod.ZodTypeAny, {
|
|
124
|
+
identity: {
|
|
125
|
+
accessToken: string;
|
|
126
|
+
refreshToken: string;
|
|
127
|
+
expiresAt: Date;
|
|
128
|
+
scopes: string[];
|
|
129
|
+
};
|
|
130
|
+
applications: {} & {
|
|
131
|
+
[k: string]: {
|
|
100
132
|
accessToken: string;
|
|
101
133
|
expiresAt: Date;
|
|
102
134
|
scopes: string[];
|
|
103
135
|
};
|
|
104
|
-
}
|
|
105
|
-
|
|
136
|
+
};
|
|
137
|
+
}, {
|
|
138
|
+
identity: {
|
|
139
|
+
accessToken: string;
|
|
140
|
+
refreshToken: string;
|
|
141
|
+
scopes: string[];
|
|
142
|
+
expiresAt?: unknown;
|
|
143
|
+
};
|
|
144
|
+
applications: {} & {
|
|
145
|
+
[k: string]: {
|
|
106
146
|
accessToken: string;
|
|
107
|
-
expiresAt: Date;
|
|
108
147
|
scopes: string[];
|
|
148
|
+
expiresAt?: unknown;
|
|
109
149
|
};
|
|
150
|
+
};
|
|
151
|
+
}>, zod.objectOutputType<{}, zod.ZodObject<{
|
|
152
|
+
/**
|
|
153
|
+
* It contains the identity token. Before usint it, we exchange it
|
|
154
|
+
* to get a token that we can use with different applications. The exchanged
|
|
155
|
+
* tokens for the applications are stored under applications.
|
|
156
|
+
*/
|
|
157
|
+
identity: zod.ZodObject<{
|
|
158
|
+
accessToken: zod.ZodString;
|
|
159
|
+
refreshToken: zod.ZodString;
|
|
160
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
161
|
+
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
162
|
+
}, "strip", zod.ZodTypeAny, {
|
|
163
|
+
accessToken: string;
|
|
164
|
+
refreshToken: string;
|
|
165
|
+
expiresAt: Date;
|
|
166
|
+
scopes: string[];
|
|
167
|
+
}, {
|
|
168
|
+
accessToken: string;
|
|
169
|
+
refreshToken: string;
|
|
170
|
+
scopes: string[];
|
|
171
|
+
expiresAt?: unknown;
|
|
110
172
|
}>;
|
|
173
|
+
/**
|
|
174
|
+
* It contains exchanged tokens for the applications the CLI
|
|
175
|
+
* authenticates with. Tokens are scoped under the fqdn of the applications.
|
|
176
|
+
*/
|
|
177
|
+
applications: zod.ZodObject<{}, "strip", zod.ZodObject<{
|
|
178
|
+
accessToken: zod.ZodString;
|
|
179
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
180
|
+
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
181
|
+
}, "strip", zod.ZodTypeAny, {
|
|
182
|
+
accessToken: string;
|
|
183
|
+
expiresAt: Date;
|
|
184
|
+
scopes: string[];
|
|
185
|
+
}, {
|
|
186
|
+
accessToken: string;
|
|
187
|
+
scopes: string[];
|
|
188
|
+
expiresAt?: unknown;
|
|
189
|
+
}>, zod.objectOutputType<{}, zod.ZodObject<{
|
|
190
|
+
accessToken: zod.ZodString;
|
|
191
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
192
|
+
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
193
|
+
}, "strip", zod.ZodTypeAny, {
|
|
194
|
+
accessToken: string;
|
|
195
|
+
expiresAt: Date;
|
|
196
|
+
scopes: string[];
|
|
197
|
+
}, {
|
|
198
|
+
accessToken: string;
|
|
199
|
+
scopes: string[];
|
|
200
|
+
expiresAt?: unknown;
|
|
201
|
+
}>, "strip">, zod.objectInputType<{}, zod.ZodObject<{
|
|
202
|
+
accessToken: zod.ZodString;
|
|
203
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
204
|
+
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
205
|
+
}, "strip", zod.ZodTypeAny, {
|
|
206
|
+
accessToken: string;
|
|
207
|
+
expiresAt: Date;
|
|
208
|
+
scopes: string[];
|
|
209
|
+
}, {
|
|
210
|
+
accessToken: string;
|
|
211
|
+
scopes: string[];
|
|
212
|
+
expiresAt?: unknown;
|
|
213
|
+
}>, "strip">>;
|
|
111
214
|
}, "strip", zod.ZodTypeAny, {
|
|
112
215
|
identity: {
|
|
113
216
|
accessToken: string;
|
|
@@ -115,8 +218,8 @@ export declare const SessionSchema: zod.ZodObject<{}, "strip", zod.ZodObject<{
|
|
|
115
218
|
expiresAt: Date;
|
|
116
219
|
scopes: string[];
|
|
117
220
|
};
|
|
118
|
-
applications: {
|
|
119
|
-
[
|
|
221
|
+
applications: {} & {
|
|
222
|
+
[k: string]: {
|
|
120
223
|
accessToken: string;
|
|
121
224
|
expiresAt: Date;
|
|
122
225
|
scopes: string[];
|
|
@@ -126,49 +229,108 @@ export declare const SessionSchema: zod.ZodObject<{}, "strip", zod.ZodObject<{
|
|
|
126
229
|
identity: {
|
|
127
230
|
accessToken: string;
|
|
128
231
|
refreshToken: string;
|
|
129
|
-
expiresAt: Date;
|
|
130
232
|
scopes: string[];
|
|
233
|
+
expiresAt?: unknown;
|
|
131
234
|
};
|
|
132
|
-
applications: {
|
|
133
|
-
[
|
|
235
|
+
applications: {} & {
|
|
236
|
+
[k: string]: {
|
|
134
237
|
accessToken: string;
|
|
135
|
-
expiresAt: Date;
|
|
136
238
|
scopes: string[];
|
|
239
|
+
expiresAt?: unknown;
|
|
137
240
|
};
|
|
138
241
|
};
|
|
139
|
-
}>, {
|
|
140
|
-
|
|
141
|
-
|
|
242
|
+
}>, "strip">, zod.objectInputType<{}, zod.ZodObject<{
|
|
243
|
+
/**
|
|
244
|
+
* It contains the identity token. Before usint it, we exchange it
|
|
245
|
+
* to get a token that we can use with different applications. The exchanged
|
|
246
|
+
* tokens for the applications are stored under applications.
|
|
247
|
+
*/
|
|
248
|
+
identity: zod.ZodObject<{
|
|
249
|
+
accessToken: zod.ZodString;
|
|
250
|
+
refreshToken: zod.ZodString;
|
|
251
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
252
|
+
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
253
|
+
}, "strip", zod.ZodTypeAny, {
|
|
254
|
+
accessToken: string;
|
|
255
|
+
refreshToken: string;
|
|
256
|
+
expiresAt: Date;
|
|
257
|
+
scopes: string[];
|
|
258
|
+
}, {
|
|
259
|
+
accessToken: string;
|
|
260
|
+
refreshToken: string;
|
|
261
|
+
scopes: string[];
|
|
262
|
+
expiresAt?: unknown;
|
|
263
|
+
}>;
|
|
264
|
+
/**
|
|
265
|
+
* It contains exchanged tokens for the applications the CLI
|
|
266
|
+
* authenticates with. Tokens are scoped under the fqdn of the applications.
|
|
267
|
+
*/
|
|
268
|
+
applications: zod.ZodObject<{}, "strip", zod.ZodObject<{
|
|
269
|
+
accessToken: zod.ZodString;
|
|
270
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
271
|
+
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
272
|
+
}, "strip", zod.ZodTypeAny, {
|
|
273
|
+
accessToken: string;
|
|
274
|
+
expiresAt: Date;
|
|
275
|
+
scopes: string[];
|
|
276
|
+
}, {
|
|
277
|
+
accessToken: string;
|
|
278
|
+
scopes: string[];
|
|
279
|
+
expiresAt?: unknown;
|
|
280
|
+
}>, zod.objectOutputType<{}, zod.ZodObject<{
|
|
281
|
+
accessToken: zod.ZodString;
|
|
282
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
283
|
+
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
284
|
+
}, "strip", zod.ZodTypeAny, {
|
|
285
|
+
accessToken: string;
|
|
286
|
+
expiresAt: Date;
|
|
287
|
+
scopes: string[];
|
|
288
|
+
}, {
|
|
289
|
+
accessToken: string;
|
|
290
|
+
scopes: string[];
|
|
291
|
+
expiresAt?: unknown;
|
|
292
|
+
}>, "strip">, zod.objectInputType<{}, zod.ZodObject<{
|
|
293
|
+
accessToken: zod.ZodString;
|
|
294
|
+
expiresAt: zod.ZodEffects<zod.ZodDate, Date, unknown>;
|
|
295
|
+
scopes: zod.ZodArray<zod.ZodString, "many">;
|
|
296
|
+
}, "strip", zod.ZodTypeAny, {
|
|
297
|
+
accessToken: string;
|
|
298
|
+
expiresAt: Date;
|
|
299
|
+
scopes: string[];
|
|
300
|
+
}, {
|
|
301
|
+
accessToken: string;
|
|
302
|
+
scopes: string[];
|
|
303
|
+
expiresAt?: unknown;
|
|
304
|
+
}>, "strip">>;
|
|
305
|
+
}, "strip", zod.ZodTypeAny, {
|
|
306
|
+
identity: {
|
|
307
|
+
accessToken: string;
|
|
308
|
+
refreshToken: string;
|
|
309
|
+
expiresAt: Date;
|
|
310
|
+
scopes: string[];
|
|
311
|
+
};
|
|
312
|
+
applications: {} & {
|
|
313
|
+
[k: string]: {
|
|
142
314
|
accessToken: string;
|
|
143
|
-
refreshToken: string;
|
|
144
315
|
expiresAt: Date;
|
|
145
316
|
scopes: string[];
|
|
146
317
|
};
|
|
147
|
-
applications: {
|
|
148
|
-
[x: string]: {
|
|
149
|
-
accessToken: string;
|
|
150
|
-
expiresAt: Date;
|
|
151
|
-
scopes: string[];
|
|
152
|
-
};
|
|
153
|
-
};
|
|
154
318
|
};
|
|
155
319
|
}, {
|
|
156
|
-
|
|
157
|
-
|
|
320
|
+
identity: {
|
|
321
|
+
accessToken: string;
|
|
322
|
+
refreshToken: string;
|
|
323
|
+
scopes: string[];
|
|
324
|
+
expiresAt?: unknown;
|
|
325
|
+
};
|
|
326
|
+
applications: {} & {
|
|
327
|
+
[k: string]: {
|
|
158
328
|
accessToken: string;
|
|
159
|
-
refreshToken: string;
|
|
160
|
-
expiresAt: Date;
|
|
161
329
|
scopes: string[];
|
|
162
|
-
|
|
163
|
-
applications: {
|
|
164
|
-
[x: string]: {
|
|
165
|
-
accessToken: string;
|
|
166
|
-
expiresAt: Date;
|
|
167
|
-
scopes: string[];
|
|
168
|
-
};
|
|
330
|
+
expiresAt?: unknown;
|
|
169
331
|
};
|
|
170
332
|
};
|
|
171
|
-
}
|
|
333
|
+
}>, "strip">>;
|
|
172
334
|
export type Session = zod.infer<typeof SessionSchema>;
|
|
173
335
|
export type IdentityToken = zod.infer<typeof IdentityTokenSchema>;
|
|
174
336
|
export type ApplicationToken = zod.infer<typeof ApplicationTokenSchema>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function treeKill(signal: string): void;
|