@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.
Files changed (116) hide show
  1. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +1 -1
  2. package/assets/cli-ruby/lib/shopify_cli/theme/dev_server/cdn_fonts.rb +6 -2
  3. package/assets/cli-ruby/lib/shopify_cli/version.rb +1 -1
  4. package/dist/private/node/api.d.ts +1 -0
  5. package/dist/private/node/api.js +1 -0
  6. package/dist/private/node/api.js.map +1 -1
  7. package/dist/private/node/constants.d.ts +1 -1
  8. package/dist/private/node/constants.js +1 -1
  9. package/dist/private/node/constants.js.map +1 -1
  10. package/dist/private/node/content-tokens.js +1 -1
  11. package/dist/private/node/content-tokens.js.map +1 -1
  12. package/dist/private/node/demo-recorder.d.ts +20 -0
  13. package/dist/private/node/demo-recorder.js +122 -0
  14. package/dist/private/node/demo-recorder.js.map +1 -0
  15. package/dist/private/node/session/schema.d.ts +203 -41
  16. package/dist/private/node/tree-kill.d.ts +1 -0
  17. package/dist/private/node/tree-kill.js +7 -0
  18. package/dist/private/node/tree-kill.js.map +1 -0
  19. package/dist/private/node/ui/alert.js +4 -0
  20. package/dist/private/node/ui/alert.js.map +1 -1
  21. package/dist/private/node/ui/components/Alert.test.js +2 -2
  22. package/dist/private/node/ui/components/Alert.test.js.map +1 -1
  23. package/dist/private/node/ui/components/AutocompletePrompt.d.ts +3 -1
  24. package/dist/private/node/ui/components/AutocompletePrompt.js +8 -4
  25. package/dist/private/node/ui/components/AutocompletePrompt.js.map +1 -1
  26. package/dist/private/node/ui/components/AutocompletePrompt.test.js +33 -7
  27. package/dist/private/node/ui/components/AutocompletePrompt.test.js.map +1 -1
  28. package/dist/private/node/ui/components/ConcurrentOutput.d.ts +2 -2
  29. package/dist/private/node/ui/components/ConcurrentOutput.js +23 -6
  30. package/dist/private/node/ui/components/ConcurrentOutput.js.map +1 -1
  31. package/dist/private/node/ui/components/ConcurrentOutput.test.js +122 -8
  32. package/dist/private/node/ui/components/ConcurrentOutput.test.js.map +1 -1
  33. package/dist/private/node/ui/components/FatalError.js +5 -3
  34. package/dist/private/node/ui/components/FatalError.js.map +1 -1
  35. package/dist/private/node/ui/components/FatalError.test.js +113 -0
  36. package/dist/private/node/ui/components/FatalError.test.js.map +1 -1
  37. package/dist/private/node/ui/components/List.d.ts +1 -1
  38. package/dist/private/node/ui/components/List.js +2 -1
  39. package/dist/private/node/ui/components/List.js.map +1 -1
  40. package/dist/private/node/ui/components/List.test.js +19 -0
  41. package/dist/private/node/ui/components/List.test.js.map +1 -1
  42. package/dist/private/node/ui/components/Prompts/InfoTable.js +5 -1
  43. package/dist/private/node/ui/components/Prompts/InfoTable.js.map +1 -1
  44. package/dist/private/node/ui/components/Prompts/InfoTable.test.js +5 -4
  45. package/dist/private/node/ui/components/Prompts/InfoTable.test.js.map +1 -1
  46. package/dist/private/node/ui/components/SelectPrompt.d.ts +3 -1
  47. package/dist/private/node/ui/components/SelectPrompt.js +4 -2
  48. package/dist/private/node/ui/components/SelectPrompt.js.map +1 -1
  49. package/dist/private/node/ui/components/SelectPrompt.test.js +22 -0
  50. package/dist/private/node/ui/components/SelectPrompt.test.js.map +1 -1
  51. package/dist/private/node/ui/components/Tasks.d.ts +3 -1
  52. package/dist/private/node/ui/components/Tasks.js +7 -3
  53. package/dist/private/node/ui/components/Tasks.js.map +1 -1
  54. package/dist/private/node/ui/components/Tasks.test.js +22 -1
  55. package/dist/private/node/ui/components/Tasks.test.js.map +1 -1
  56. package/dist/private/node/ui/components/TextPrompt.d.ts +2 -0
  57. package/dist/private/node/ui/components/TextPrompt.js +4 -2
  58. package/dist/private/node/ui/components/TextPrompt.js.map +1 -1
  59. package/dist/private/node/ui/components/TextPrompt.test.js +9 -0
  60. package/dist/private/node/ui/components/TextPrompt.test.js.map +1 -1
  61. package/dist/private/node/ui/components/TokenizedText.d.ts +1 -1
  62. package/dist/private/node/ui/components/TokenizedText.js.map +1 -1
  63. package/dist/private/node/ui/components/TokenizedText.test.js +10 -0
  64. package/dist/private/node/ui/components/TokenizedText.test.js.map +1 -1
  65. package/dist/private/node/ui/hooks/use-abort-signal.d.ts +4 -0
  66. package/dist/private/node/ui/hooks/use-abort-signal.js +14 -0
  67. package/dist/private/node/ui/hooks/use-abort-signal.js.map +1 -0
  68. package/dist/private/node/ui/hooks/use-async-and-unmount.d.ts +1 -1
  69. package/dist/private/node/ui/hooks/use-async-and-unmount.js +1 -1
  70. package/dist/private/node/ui/hooks/use-async-and-unmount.js.map +1 -1
  71. package/dist/private/node/ui.js +3 -3
  72. package/dist/private/node/ui.js.map +1 -1
  73. package/dist/public/common/version.d.ts +1 -1
  74. package/dist/public/common/version.js +1 -1
  75. package/dist/public/common/version.js.map +1 -1
  76. package/dist/public/node/cli.js +2 -0
  77. package/dist/public/node/cli.js.map +1 -1
  78. package/dist/public/node/colors.js.map +1 -0
  79. package/dist/public/node/context/local.d.ts +1 -1
  80. package/dist/public/node/context/local.js +2 -2
  81. package/dist/public/node/context/local.js.map +1 -1
  82. package/dist/public/node/error-handler.js +7 -2
  83. package/dist/public/node/error-handler.js.map +1 -1
  84. package/dist/public/node/error.d.ts +8 -3
  85. package/dist/public/node/error.js +12 -5
  86. package/dist/public/node/error.js.map +1 -1
  87. package/dist/public/node/fs.d.ts +1 -0
  88. package/dist/public/node/hooks/prerun.js +2 -0
  89. package/dist/public/node/hooks/prerun.js.map +1 -1
  90. package/dist/public/node/node-package-manager.d.ts +11 -0
  91. package/dist/public/node/node-package-manager.js +8 -6
  92. package/dist/public/node/node-package-manager.js.map +1 -1
  93. package/dist/public/node/output.d.ts +6 -1
  94. package/dist/public/node/output.js +6 -2
  95. package/dist/public/node/output.js.map +1 -1
  96. package/dist/public/node/plugins/tunnel.d.ts +19 -4
  97. package/dist/public/node/plugins/tunnel.js +1 -1
  98. package/dist/public/node/plugins/tunnel.js.map +1 -1
  99. package/dist/public/node/plugins.d.ts +1 -12
  100. package/dist/public/node/plugins.js +0 -23
  101. package/dist/public/node/plugins.js.map +1 -1
  102. package/dist/public/node/ruby.js +2 -0
  103. package/dist/public/node/ruby.js.map +1 -1
  104. package/dist/public/node/system.d.ts +1 -0
  105. package/dist/public/node/system.js +8 -3
  106. package/dist/public/node/system.js.map +1 -1
  107. package/dist/public/node/tcp.js +1 -1
  108. package/dist/public/node/tcp.js.map +1 -1
  109. package/dist/public/node/ui.d.ts +17 -8
  110. package/dist/public/node/ui.js +75 -19
  111. package/dist/public/node/ui.js.map +1 -1
  112. package/dist/tsconfig.tsbuildinfo +1 -1
  113. package/package.json +13 -12
  114. package/dist/private/node/colors.js.map +0 -1
  115. /package/dist/{private → public}/node/colors.d.ts +0 -0
  116. /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
- body = replace_font_urls(body)
25
- [status, headers, body]
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
@@ -1,3 +1,3 @@
1
1
  module ShopifyCLI
2
- VERSION = "2.34.0"
2
+ VERSION = ENV.fetch("SHOPIFY_CLI_VERSION", "3.46.0")
3
3
  end
@@ -1,3 +1,4 @@
1
+ import { Headers } from 'form-data';
1
2
  export type API = 'admin' | 'storefront-renderer' | 'partners';
2
3
  export declare const allAPIs: API[];
3
4
  interface RequestOptions<T> {
@@ -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;AACxD,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,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACtC,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 {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 response.headers.forEach((value, key) => {\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"]}
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"]}
@@ -13,7 +13,7 @@ export declare const environmentVariables: {
13
13
  themeToken: string;
14
14
  unitTest: string;
15
15
  verbose: string;
16
- themeBundling: string;
16
+ noThemeBundling: string;
17
17
  codespaceName: string;
18
18
  codespaces: string;
19
19
  gitpod: string;
@@ -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
- themeBundling: 'SHOPIFY_CLI_THEME_BUNDLING',
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,aAAa,EAAE,4BAA4B;IAC3C,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 themeBundling: 'SHOPIFY_CLI_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
+ {"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,4 +1,4 @@
1
- import colors from './colors.js';
1
+ import colors from '../../public/node/colors.js';
2
2
  import { stringifyMessage } from '../../public/node/output.js';
3
3
  import { relativizePath } from '../../public/node/path.js';
4
4
  import terminalLink from 'terminal-link';
@@ -1 +1 @@
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 './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"]}
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, 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, 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, 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, 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
- [x: string]: {
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
- [x: string]: {
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
- [x: string]: {
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
- [x: string]: {
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
- [x: string]: {
141
- identity: {
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
- [x: string]: {
157
- identity: {
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;