@mastra/deployer-vercel 1.1.10-alpha.0 → 1.1.10

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 (34) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/index.cjs +7 -0
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +7 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/studio/assets/{chunk-ZCJMLMGS-EpzOXhYC.js → chunk-ZCJMLMGS-CHlK_IfI.js} +1 -1
  9. package/dist/studio/assets/{index-DI2WlDGV.js → index-BXj_biWM.js} +1 -1
  10. package/dist/studio/assets/{index-CT6hc-Vw.js → index-BmWiBi1B.js} +1 -1
  11. package/dist/studio/assets/{index-Cu-pwULa.js → index-Bwjq9j4-.js} +1 -1
  12. package/dist/studio/assets/{index-BhRoJ8sB.js → index-CAG-QPEg.js} +1 -1
  13. package/dist/studio/assets/{index-CcuLHGGL.js → index-CDScig7X.js} +1 -1
  14. package/dist/studio/assets/{index-Fl2h-tmu.js → index-CTZrmCZr.js} +1 -1
  15. package/dist/studio/assets/{index-CohowL6S.js → index-CWIdfI0R.js} +1 -1
  16. package/dist/studio/assets/{index-BO0mAZV8.js → index-CZzbx7I0.js} +1 -1
  17. package/dist/studio/assets/{index-D5lYTeOy.js → index-CfoqMBuV.js} +1 -1
  18. package/dist/studio/assets/{index-C89hg6l7.js → index-CiiWxC-N.js} +1 -1
  19. package/dist/studio/assets/{index-DAsq1tGt.js → index-Csaj9nPS.js} +1 -1
  20. package/dist/studio/assets/{index-BxAIaw39.js → index-CyYrzAD7.js} +1 -1
  21. package/dist/studio/assets/{index-Dbuyk4vT.js → index-DAXXr3mH.js} +1 -1
  22. package/dist/studio/assets/{index-PxOYv-SI.js → index-DMwhoLmS.js} +1 -1
  23. package/dist/studio/assets/{index-4wmszAz-.js → index-DWorcTNt.js} +1 -1
  24. package/dist/studio/assets/{index-CV9GU560.js → index-DYQIsCUK.js} +1 -1
  25. package/dist/studio/assets/{index-1sPGmD-a.js → index-Wktr2oyp.js} +1 -1
  26. package/dist/studio/assets/{index-BBzLcStj.js → index-ssKSCgs7.js} +1 -1
  27. package/dist/studio/assets/{main-Bn9Oh0eK.js → main-Aki3Izz8.js} +138 -138
  28. package/dist/studio/assets/style-jz1fKdCV.css +1 -0
  29. package/dist/studio/assets/{token-APYSY3BW-RPVF55TR-DSKHfG-w.js → token-APYSY3BW-RPVF55TR-DkyYu-Nk.js} +1 -1
  30. package/dist/studio/assets/token-util-RMHT2CPJ-VVUHOXBL-CEm9fIht.js +1 -0
  31. package/dist/studio/index.html +2 -2
  32. package/package.json +6 -6
  33. package/dist/studio/assets/style-QRGye2b4.css +0 -1
  34. package/dist/studio/assets/token-util-RMHT2CPJ-VVUHOXBL-C7fG7s3Z.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,37 @@
1
1
  # @mastra/deployer-vercel
2
2
 
3
+ ## 1.1.10
4
+
5
+ ### Patch Changes
6
+
7
+ - fix(deployer-vercel): always force externals: true to prevent ESM TLA deadlocks ([#14863](https://github.com/mastra-ai/mastra/pull/14863))
8
+
9
+ The Cloud deployer and CLI `mastra build` already force `externals: true` to avoid circular module evaluation deadlocks when dynamic imports produce code-split chunks. The Vercel deployer was missed when those fixes were added.
10
+
11
+ - Updated dependencies [[`180aaaf`](https://github.com/mastra-ai/mastra/commit/180aaaf4d0903d33a49bc72de2d40ca69a5bc599), [`9140989`](https://github.com/mastra-ai/mastra/commit/91409890e83f4f1d9c1b39223f1af91a6a53b549), [`d7c98cf`](https://github.com/mastra-ai/mastra/commit/d7c98cfc9d75baba9ecbf1a8835b5183d0a0aec8), [`acf5fbc`](https://github.com/mastra-ai/mastra/commit/acf5fbcb890dc7ca7167bec386ce5874dfadb997), [`24ca2ae`](https://github.com/mastra-ai/mastra/commit/24ca2ae57538ec189fabb9daee6175ad27035853), [`0762516`](https://github.com/mastra-ai/mastra/commit/07625167e029a8268ea7aaf0402416e6d8832874), [`9c57f2f`](https://github.com/mastra-ai/mastra/commit/9c57f2f7241e9f94769aa99fc86c531e8207d0f9), [`5bfc691`](https://github.com/mastra-ai/mastra/commit/5bfc69104c07ba7a9b55c2f8536422c0878b9c57), [`2de3d36`](https://github.com/mastra-ai/mastra/commit/2de3d36932b7f73ad26bc403f7da26cfe89e903e), [`d3736cb`](https://github.com/mastra-ai/mastra/commit/d3736cb9ce074d2b8e8b00218a01f790fe81a1b4), [`c627366`](https://github.com/mastra-ai/mastra/commit/c6273666f9ef4c8c617c68b7d07fe878a322f85c)]:
12
+ - @mastra/core@1.19.0
13
+ - @mastra/deployer@1.19.0
14
+
15
+ ## 1.1.10-alpha.2
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies [[`9c57f2f`](https://github.com/mastra-ai/mastra/commit/9c57f2f7241e9f94769aa99fc86c531e8207d0f9), [`5bfc691`](https://github.com/mastra-ai/mastra/commit/5bfc69104c07ba7a9b55c2f8536422c0878b9c57)]:
20
+ - @mastra/core@1.19.0-alpha.2
21
+ - @mastra/deployer@1.19.0-alpha.2
22
+
23
+ ## 1.1.10-alpha.1
24
+
25
+ ### Patch Changes
26
+
27
+ - fix(deployer-vercel): always force externals: true to prevent ESM TLA deadlocks ([#14863](https://github.com/mastra-ai/mastra/pull/14863))
28
+
29
+ The Cloud deployer and CLI `mastra build` already force `externals: true` to avoid circular module evaluation deadlocks when dynamic imports produce code-split chunks. The Vercel deployer was missed when those fixes were added.
30
+
31
+ - Updated dependencies [[`9140989`](https://github.com/mastra-ai/mastra/commit/91409890e83f4f1d9c1b39223f1af91a6a53b549), [`d7c98cf`](https://github.com/mastra-ai/mastra/commit/d7c98cfc9d75baba9ecbf1a8835b5183d0a0aec8), [`acf5fbc`](https://github.com/mastra-ai/mastra/commit/acf5fbcb890dc7ca7167bec386ce5874dfadb997), [`24ca2ae`](https://github.com/mastra-ai/mastra/commit/24ca2ae57538ec189fabb9daee6175ad27035853), [`0762516`](https://github.com/mastra-ai/mastra/commit/07625167e029a8268ea7aaf0402416e6d8832874), [`2de3d36`](https://github.com/mastra-ai/mastra/commit/2de3d36932b7f73ad26bc403f7da26cfe89e903e), [`d3736cb`](https://github.com/mastra-ai/mastra/commit/d3736cb9ce074d2b8e8b00218a01f790fe81a1b4), [`c627366`](https://github.com/mastra-ai/mastra/commit/c6273666f9ef4c8c617c68b7d07fe878a322f85c)]:
32
+ - @mastra/core@1.18.1-alpha.1
33
+ - @mastra/deployer@1.18.1-alpha.1
34
+
3
35
  ## 1.1.10-alpha.0
4
36
 
5
37
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -24,6 +24,13 @@ var VercelDeployer = class extends deployer.Deployer {
24
24
  const { studio, ...overrides } = options;
25
25
  this.vcConfigOverrides = { ...overrides };
26
26
  }
27
+ async getUserBundlerOptions(mastraEntryFile, outputDirectory) {
28
+ const bundlerOptions = await super.getUserBundlerOptions(mastraEntryFile, outputDirectory);
29
+ return {
30
+ ...bundlerOptions,
31
+ externals: true
32
+ };
33
+ }
27
34
  async prepare(outputDirectory) {
28
35
  await super.prepare(outputDirectory);
29
36
  this.writeVercelJSON(path.join(outputDirectory, this.outputDir, "..", ".."));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["Deployer","join","fileURLToPath","dirname","copy","readFileSync","injectStudioHtmlConfig","writeFileSync","process","move"],"mappings":"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","file":"index.cjs","sourcesContent":["import { readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport process from 'node:process';\nimport { fileURLToPath } from 'node:url';\nimport { Deployer } from '@mastra/deployer';\nimport { injectStudioHtmlConfig } from '@mastra/deployer/build';\nimport { copy, move } from 'fs-extra/esm';\nimport type { VcConfig, VcConfigOverrides, VercelDeployerOptions } from './types';\n\nexport class VercelDeployer extends Deployer {\n private vcConfigOverrides: VcConfigOverrides = {};\n private studio: boolean;\n\n constructor(options: VercelDeployerOptions = {}) {\n super({ name: 'VERCEL' });\n this.outputDir = join('.vercel', 'output', 'functions', 'index.func');\n this.studio = options.studio ?? false;\n\n const { studio, ...overrides } = options;\n this.vcConfigOverrides = { ...overrides };\n }\n\n async prepare(outputDirectory: string): Promise<void> {\n await super.prepare(outputDirectory);\n\n this.writeVercelJSON(join(outputDirectory, this.outputDir, '..', '..'));\n\n if (this.studio) {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n\n const studioSource = join(dirname(__dirname), 'dist', 'studio');\n const staticDir = join(outputDirectory, '.vercel', 'output', 'static');\n\n try {\n await copy(studioSource, staticDir, { overwrite: true });\n } catch (err) {\n throw new Error(\n `Failed to copy studio assets from \"${studioSource}\" to \"${staticDir}\": ${err instanceof Error ? err.message : err}`,\n );\n }\n\n this.injectStudioConfig(staticDir);\n }\n }\n\n private getEntry(): string {\n return `\nimport { handle } from 'hono/vercel'\nimport { mastra } from '#mastra';\nimport { createHonoServer, getToolExports } from '#server';\nimport { tools } from '#tools';\nimport { scoreTracesWorkflow } from '@mastra/core/evals/scoreTraces';\n\nif (mastra.getStorage()) {\n mastra.__registerInternalWorkflow(scoreTracesWorkflow);\n}\n\nconst app = await createHonoServer(mastra, { tools: getToolExports(tools) });\n\nexport const GET = handle(app);\nexport const POST = handle(app);\nexport const PUT = handle(app);\nexport const DELETE = handle(app);\nexport const PATCH = handle(app);\nexport const OPTIONS = handle(app);\nexport const HEAD = handle(app);\n`;\n }\n\n private injectStudioConfig(staticDir: string) {\n const indexPath = join(staticDir, 'index.html');\n let html = readFileSync(indexPath, 'utf-8');\n\n /**\n * Use window.location expressions so the SPA constructs the correct same-origin endpoint.\n * Port uses a ternary: window.location.port is '' for default ports (80/443), and the SPA falls back to 4111 for empty strings, so we return the default port explicitly instead.\n */\n html = injectStudioHtmlConfig(html, {\n host: `window.location.hostname`,\n port: `(window.location.port || (window.location.protocol === 'https:' ? '443' : '80'))`,\n protocol: `window.location.protocol.replace(':', '')`,\n apiPrefix: `'/api'`,\n basePath: '',\n hideCloudCta: `'true'`,\n templates: `'false'`,\n cloudApiEndpoint: `''`,\n experimentalFeatures: `'false'`,\n telemetryDisabled: `''`,\n requestContextPresets: `''`,\n experimentalUI: `'false'`,\n });\n\n writeFileSync(indexPath, html);\n }\n\n private writeVercelJSON(outputDirectory: string) {\n const routes = this.studio\n ? [\n { src: '/api/(.*)', dest: '/' },\n { src: '/health', dest: '/' },\n { handle: 'filesystem' as const },\n { src: '/(.*)', dest: '/index.html', check: true },\n ]\n : [{ src: '/(.*)', dest: '/' }];\n\n writeFileSync(join(outputDirectory, 'config.json'), JSON.stringify({ version: 3, routes }));\n }\n\n async bundle(\n entryFile: string,\n outputDirectory: string,\n { toolsPaths, projectRoot }: { toolsPaths: (string | string[])[]; projectRoot: string },\n ): Promise<void> {\n const result = await this._bundle(\n this.getEntry(),\n entryFile,\n { outputDirectory, projectRoot },\n toolsPaths,\n join(outputDirectory, this.outputDir),\n );\n\n const nodeVersion = process.version?.split('.')?.[0]?.replace('v', '') ?? '22';\n\n const vcConfig: VcConfig = {\n handler: 'index.mjs',\n launcherType: 'Nodejs',\n runtime: `nodejs${nodeVersion}.x`,\n shouldAddHelpers: true,\n };\n\n // Merge supported overrides\n const { maxDuration, memory, regions } = this.vcConfigOverrides;\n if (typeof maxDuration === 'number') vcConfig.maxDuration = maxDuration;\n if (typeof memory === 'number') vcConfig.memory = memory;\n if (Array.isArray(regions) && regions.length > 0) vcConfig.regions = regions;\n\n writeFileSync(join(outputDirectory, this.outputDir, '.vc-config.json'), JSON.stringify(vcConfig, null, 2));\n\n await move(join(outputDirectory, '.vercel', 'output'), join(process.cwd(), '.vercel', 'output'), {\n overwrite: true,\n });\n\n return result;\n }\n\n async deploy(): Promise<void> {\n this.logger?.info('Deploying to Vercel is deprecated. Please use the Vercel dashboard to deploy.');\n }\n\n async lint(entryFile: string, outputDirectory: string, toolsPaths: (string | string[])[]): Promise<void> {\n await super.lint(entryFile, outputDirectory, toolsPaths);\n\n const hasLibsql = (await this.deps.checkDependencies(['@mastra/libsql'])) === `ok`;\n\n if (hasLibsql) {\n this.logger.error(\n `Vercel Deployer does not support @libsql/client(which may have been installed by @mastra/libsql) as a dependency. \n\t\t\t\tUse other Mastra Storage options instead e.g @mastra/pg`,\n );\n process.exit(1);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["Deployer","join","fileURLToPath","dirname","copy","readFileSync","injectStudioHtmlConfig","writeFileSync","process","move"],"mappings":"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","file":"index.cjs","sourcesContent":["import { readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport process from 'node:process';\nimport { fileURLToPath } from 'node:url';\nimport type { Config } from '@mastra/core/mastra';\nimport { Deployer } from '@mastra/deployer';\nimport { injectStudioHtmlConfig } from '@mastra/deployer/build';\nimport { copy, move } from 'fs-extra/esm';\nimport type { VcConfig, VcConfigOverrides, VercelDeployerOptions } from './types';\n\nexport class VercelDeployer extends Deployer {\n private vcConfigOverrides: VcConfigOverrides = {};\n private studio: boolean;\n\n constructor(options: VercelDeployerOptions = {}) {\n super({ name: 'VERCEL' });\n this.outputDir = join('.vercel', 'output', 'functions', 'index.func');\n this.studio = options.studio ?? false;\n\n const { studio, ...overrides } = options;\n this.vcConfigOverrides = { ...overrides };\n }\n\n protected async getUserBundlerOptions(\n mastraEntryFile: string,\n outputDirectory: string,\n ): Promise<NonNullable<Config['bundler']>> {\n const bundlerOptions = await super.getUserBundlerOptions(mastraEntryFile, outputDirectory);\n\n // Always force externals: true for Vercel deployments.\n // Vercel serverless functions resolve dependencies from node_modules,\n // so bundling them inline serves no purpose. Bundling inline can also cause\n // circular module evaluation deadlocks when dynamic imports produce chunks\n // that depend back on the entry module via static imports, resulting in\n // \"Detected unsettled top-level await\" errors (Node.js exit code 13).\n // See: https://github.com/mastra-ai/mastra/issues/14860\n return {\n ...bundlerOptions,\n externals: true,\n };\n }\n\n async prepare(outputDirectory: string): Promise<void> {\n await super.prepare(outputDirectory);\n\n this.writeVercelJSON(join(outputDirectory, this.outputDir, '..', '..'));\n\n if (this.studio) {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n\n const studioSource = join(dirname(__dirname), 'dist', 'studio');\n const staticDir = join(outputDirectory, '.vercel', 'output', 'static');\n\n try {\n await copy(studioSource, staticDir, { overwrite: true });\n } catch (err) {\n throw new Error(\n `Failed to copy studio assets from \"${studioSource}\" to \"${staticDir}\": ${err instanceof Error ? err.message : err}`,\n );\n }\n\n this.injectStudioConfig(staticDir);\n }\n }\n\n private getEntry(): string {\n return `\nimport { handle } from 'hono/vercel'\nimport { mastra } from '#mastra';\nimport { createHonoServer, getToolExports } from '#server';\nimport { tools } from '#tools';\nimport { scoreTracesWorkflow } from '@mastra/core/evals/scoreTraces';\n\nif (mastra.getStorage()) {\n mastra.__registerInternalWorkflow(scoreTracesWorkflow);\n}\n\nconst app = await createHonoServer(mastra, { tools: getToolExports(tools) });\n\nexport const GET = handle(app);\nexport const POST = handle(app);\nexport const PUT = handle(app);\nexport const DELETE = handle(app);\nexport const PATCH = handle(app);\nexport const OPTIONS = handle(app);\nexport const HEAD = handle(app);\n`;\n }\n\n private injectStudioConfig(staticDir: string) {\n const indexPath = join(staticDir, 'index.html');\n let html = readFileSync(indexPath, 'utf-8');\n\n /**\n * Use window.location expressions so the SPA constructs the correct same-origin endpoint.\n * Port uses a ternary: window.location.port is '' for default ports (80/443), and the SPA falls back to 4111 for empty strings, so we return the default port explicitly instead.\n */\n html = injectStudioHtmlConfig(html, {\n host: `window.location.hostname`,\n port: `(window.location.port || (window.location.protocol === 'https:' ? '443' : '80'))`,\n protocol: `window.location.protocol.replace(':', '')`,\n apiPrefix: `'/api'`,\n basePath: '',\n hideCloudCta: `'true'`,\n templates: `'false'`,\n cloudApiEndpoint: `''`,\n experimentalFeatures: `'false'`,\n telemetryDisabled: `''`,\n requestContextPresets: `''`,\n experimentalUI: `'false'`,\n });\n\n writeFileSync(indexPath, html);\n }\n\n private writeVercelJSON(outputDirectory: string) {\n const routes = this.studio\n ? [\n { src: '/api/(.*)', dest: '/' },\n { src: '/health', dest: '/' },\n { handle: 'filesystem' as const },\n { src: '/(.*)', dest: '/index.html', check: true },\n ]\n : [{ src: '/(.*)', dest: '/' }];\n\n writeFileSync(join(outputDirectory, 'config.json'), JSON.stringify({ version: 3, routes }));\n }\n\n async bundle(\n entryFile: string,\n outputDirectory: string,\n { toolsPaths, projectRoot }: { toolsPaths: (string | string[])[]; projectRoot: string },\n ): Promise<void> {\n const result = await this._bundle(\n this.getEntry(),\n entryFile,\n { outputDirectory, projectRoot },\n toolsPaths,\n join(outputDirectory, this.outputDir),\n );\n\n const nodeVersion = process.version?.split('.')?.[0]?.replace('v', '') ?? '22';\n\n const vcConfig: VcConfig = {\n handler: 'index.mjs',\n launcherType: 'Nodejs',\n runtime: `nodejs${nodeVersion}.x`,\n shouldAddHelpers: true,\n };\n\n // Merge supported overrides\n const { maxDuration, memory, regions } = this.vcConfigOverrides;\n if (typeof maxDuration === 'number') vcConfig.maxDuration = maxDuration;\n if (typeof memory === 'number') vcConfig.memory = memory;\n if (Array.isArray(regions) && regions.length > 0) vcConfig.regions = regions;\n\n writeFileSync(join(outputDirectory, this.outputDir, '.vc-config.json'), JSON.stringify(vcConfig, null, 2));\n\n await move(join(outputDirectory, '.vercel', 'output'), join(process.cwd(), '.vercel', 'output'), {\n overwrite: true,\n });\n\n return result;\n }\n\n async deploy(): Promise<void> {\n this.logger?.info('Deploying to Vercel is deprecated. Please use the Vercel dashboard to deploy.');\n }\n\n async lint(entryFile: string, outputDirectory: string, toolsPaths: (string | string[])[]): Promise<void> {\n await super.lint(entryFile, outputDirectory, toolsPaths);\n\n const hasLibsql = (await this.deps.checkDependencies(['@mastra/libsql'])) === `ok`;\n\n if (hasLibsql) {\n this.logger.error(\n `Vercel Deployer does not support @libsql/client(which may have been installed by @mastra/libsql) as a dependency. \n\t\t\t\tUse other Mastra Storage options instead e.g @mastra/pg`,\n );\n process.exit(1);\n }\n }\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,11 @@
1
+ import type { Config } from '@mastra/core/mastra';
1
2
  import { Deployer } from '@mastra/deployer';
2
3
  import type { VercelDeployerOptions } from './types.js';
3
4
  export declare class VercelDeployer extends Deployer {
4
5
  private vcConfigOverrides;
5
6
  private studio;
6
7
  constructor(options?: VercelDeployerOptions);
8
+ protected getUserBundlerOptions(mastraEntryFile: string, outputDirectory: string): Promise<NonNullable<Config['bundler']>>;
7
9
  prepare(outputDirectory: string): Promise<void>;
8
10
  private getEntry;
9
11
  private injectStudioConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,KAAK,EAA+B,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElF,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,MAAM,CAAU;gBAEZ,OAAO,GAAE,qBAA0B;IASzC,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrD,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,eAAe;IAajB,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GACtF,OAAO,CAAC,IAAI,CAAC;IAiCV,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAazG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,KAAK,EAA+B,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElF,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,MAAM,CAAU;gBAEZ,OAAO,GAAE,qBAA0B;cAS/B,qBAAqB,CACnC,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAgBpC,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrD,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,eAAe;IAajB,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GACtF,OAAO,CAAC,IAAI,CAAC;IAiCV,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAazG"}
package/dist/index.js CHANGED
@@ -17,6 +17,13 @@ var VercelDeployer = class extends Deployer {
17
17
  const { studio, ...overrides } = options;
18
18
  this.vcConfigOverrides = { ...overrides };
19
19
  }
20
+ async getUserBundlerOptions(mastraEntryFile, outputDirectory) {
21
+ const bundlerOptions = await super.getUserBundlerOptions(mastraEntryFile, outputDirectory);
22
+ return {
23
+ ...bundlerOptions,
24
+ externals: true
25
+ };
26
+ }
20
27
  async prepare(outputDirectory) {
21
28
  await super.prepare(outputDirectory);
22
29
  this.writeVercelJSON(join(outputDirectory, this.outputDir, "..", ".."));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport process from 'node:process';\nimport { fileURLToPath } from 'node:url';\nimport { Deployer } from '@mastra/deployer';\nimport { injectStudioHtmlConfig } from '@mastra/deployer/build';\nimport { copy, move } from 'fs-extra/esm';\nimport type { VcConfig, VcConfigOverrides, VercelDeployerOptions } from './types';\n\nexport class VercelDeployer extends Deployer {\n private vcConfigOverrides: VcConfigOverrides = {};\n private studio: boolean;\n\n constructor(options: VercelDeployerOptions = {}) {\n super({ name: 'VERCEL' });\n this.outputDir = join('.vercel', 'output', 'functions', 'index.func');\n this.studio = options.studio ?? false;\n\n const { studio, ...overrides } = options;\n this.vcConfigOverrides = { ...overrides };\n }\n\n async prepare(outputDirectory: string): Promise<void> {\n await super.prepare(outputDirectory);\n\n this.writeVercelJSON(join(outputDirectory, this.outputDir, '..', '..'));\n\n if (this.studio) {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n\n const studioSource = join(dirname(__dirname), 'dist', 'studio');\n const staticDir = join(outputDirectory, '.vercel', 'output', 'static');\n\n try {\n await copy(studioSource, staticDir, { overwrite: true });\n } catch (err) {\n throw new Error(\n `Failed to copy studio assets from \"${studioSource}\" to \"${staticDir}\": ${err instanceof Error ? err.message : err}`,\n );\n }\n\n this.injectStudioConfig(staticDir);\n }\n }\n\n private getEntry(): string {\n return `\nimport { handle } from 'hono/vercel'\nimport { mastra } from '#mastra';\nimport { createHonoServer, getToolExports } from '#server';\nimport { tools } from '#tools';\nimport { scoreTracesWorkflow } from '@mastra/core/evals/scoreTraces';\n\nif (mastra.getStorage()) {\n mastra.__registerInternalWorkflow(scoreTracesWorkflow);\n}\n\nconst app = await createHonoServer(mastra, { tools: getToolExports(tools) });\n\nexport const GET = handle(app);\nexport const POST = handle(app);\nexport const PUT = handle(app);\nexport const DELETE = handle(app);\nexport const PATCH = handle(app);\nexport const OPTIONS = handle(app);\nexport const HEAD = handle(app);\n`;\n }\n\n private injectStudioConfig(staticDir: string) {\n const indexPath = join(staticDir, 'index.html');\n let html = readFileSync(indexPath, 'utf-8');\n\n /**\n * Use window.location expressions so the SPA constructs the correct same-origin endpoint.\n * Port uses a ternary: window.location.port is '' for default ports (80/443), and the SPA falls back to 4111 for empty strings, so we return the default port explicitly instead.\n */\n html = injectStudioHtmlConfig(html, {\n host: `window.location.hostname`,\n port: `(window.location.port || (window.location.protocol === 'https:' ? '443' : '80'))`,\n protocol: `window.location.protocol.replace(':', '')`,\n apiPrefix: `'/api'`,\n basePath: '',\n hideCloudCta: `'true'`,\n templates: `'false'`,\n cloudApiEndpoint: `''`,\n experimentalFeatures: `'false'`,\n telemetryDisabled: `''`,\n requestContextPresets: `''`,\n experimentalUI: `'false'`,\n });\n\n writeFileSync(indexPath, html);\n }\n\n private writeVercelJSON(outputDirectory: string) {\n const routes = this.studio\n ? [\n { src: '/api/(.*)', dest: '/' },\n { src: '/health', dest: '/' },\n { handle: 'filesystem' as const },\n { src: '/(.*)', dest: '/index.html', check: true },\n ]\n : [{ src: '/(.*)', dest: '/' }];\n\n writeFileSync(join(outputDirectory, 'config.json'), JSON.stringify({ version: 3, routes }));\n }\n\n async bundle(\n entryFile: string,\n outputDirectory: string,\n { toolsPaths, projectRoot }: { toolsPaths: (string | string[])[]; projectRoot: string },\n ): Promise<void> {\n const result = await this._bundle(\n this.getEntry(),\n entryFile,\n { outputDirectory, projectRoot },\n toolsPaths,\n join(outputDirectory, this.outputDir),\n );\n\n const nodeVersion = process.version?.split('.')?.[0]?.replace('v', '') ?? '22';\n\n const vcConfig: VcConfig = {\n handler: 'index.mjs',\n launcherType: 'Nodejs',\n runtime: `nodejs${nodeVersion}.x`,\n shouldAddHelpers: true,\n };\n\n // Merge supported overrides\n const { maxDuration, memory, regions } = this.vcConfigOverrides;\n if (typeof maxDuration === 'number') vcConfig.maxDuration = maxDuration;\n if (typeof memory === 'number') vcConfig.memory = memory;\n if (Array.isArray(regions) && regions.length > 0) vcConfig.regions = regions;\n\n writeFileSync(join(outputDirectory, this.outputDir, '.vc-config.json'), JSON.stringify(vcConfig, null, 2));\n\n await move(join(outputDirectory, '.vercel', 'output'), join(process.cwd(), '.vercel', 'output'), {\n overwrite: true,\n });\n\n return result;\n }\n\n async deploy(): Promise<void> {\n this.logger?.info('Deploying to Vercel is deprecated. Please use the Vercel dashboard to deploy.');\n }\n\n async lint(entryFile: string, outputDirectory: string, toolsPaths: (string | string[])[]): Promise<void> {\n await super.lint(entryFile, outputDirectory, toolsPaths);\n\n const hasLibsql = (await this.deps.checkDependencies(['@mastra/libsql'])) === `ok`;\n\n if (hasLibsql) {\n this.logger.error(\n `Vercel Deployer does not support @libsql/client(which may have been installed by @mastra/libsql) as a dependency. \n\t\t\t\tUse other Mastra Storage options instead e.g @mastra/pg`,\n );\n process.exit(1);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport process from 'node:process';\nimport { fileURLToPath } from 'node:url';\nimport type { Config } from '@mastra/core/mastra';\nimport { Deployer } from '@mastra/deployer';\nimport { injectStudioHtmlConfig } from '@mastra/deployer/build';\nimport { copy, move } from 'fs-extra/esm';\nimport type { VcConfig, VcConfigOverrides, VercelDeployerOptions } from './types';\n\nexport class VercelDeployer extends Deployer {\n private vcConfigOverrides: VcConfigOverrides = {};\n private studio: boolean;\n\n constructor(options: VercelDeployerOptions = {}) {\n super({ name: 'VERCEL' });\n this.outputDir = join('.vercel', 'output', 'functions', 'index.func');\n this.studio = options.studio ?? false;\n\n const { studio, ...overrides } = options;\n this.vcConfigOverrides = { ...overrides };\n }\n\n protected async getUserBundlerOptions(\n mastraEntryFile: string,\n outputDirectory: string,\n ): Promise<NonNullable<Config['bundler']>> {\n const bundlerOptions = await super.getUserBundlerOptions(mastraEntryFile, outputDirectory);\n\n // Always force externals: true for Vercel deployments.\n // Vercel serverless functions resolve dependencies from node_modules,\n // so bundling them inline serves no purpose. Bundling inline can also cause\n // circular module evaluation deadlocks when dynamic imports produce chunks\n // that depend back on the entry module via static imports, resulting in\n // \"Detected unsettled top-level await\" errors (Node.js exit code 13).\n // See: https://github.com/mastra-ai/mastra/issues/14860\n return {\n ...bundlerOptions,\n externals: true,\n };\n }\n\n async prepare(outputDirectory: string): Promise<void> {\n await super.prepare(outputDirectory);\n\n this.writeVercelJSON(join(outputDirectory, this.outputDir, '..', '..'));\n\n if (this.studio) {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n\n const studioSource = join(dirname(__dirname), 'dist', 'studio');\n const staticDir = join(outputDirectory, '.vercel', 'output', 'static');\n\n try {\n await copy(studioSource, staticDir, { overwrite: true });\n } catch (err) {\n throw new Error(\n `Failed to copy studio assets from \"${studioSource}\" to \"${staticDir}\": ${err instanceof Error ? err.message : err}`,\n );\n }\n\n this.injectStudioConfig(staticDir);\n }\n }\n\n private getEntry(): string {\n return `\nimport { handle } from 'hono/vercel'\nimport { mastra } from '#mastra';\nimport { createHonoServer, getToolExports } from '#server';\nimport { tools } from '#tools';\nimport { scoreTracesWorkflow } from '@mastra/core/evals/scoreTraces';\n\nif (mastra.getStorage()) {\n mastra.__registerInternalWorkflow(scoreTracesWorkflow);\n}\n\nconst app = await createHonoServer(mastra, { tools: getToolExports(tools) });\n\nexport const GET = handle(app);\nexport const POST = handle(app);\nexport const PUT = handle(app);\nexport const DELETE = handle(app);\nexport const PATCH = handle(app);\nexport const OPTIONS = handle(app);\nexport const HEAD = handle(app);\n`;\n }\n\n private injectStudioConfig(staticDir: string) {\n const indexPath = join(staticDir, 'index.html');\n let html = readFileSync(indexPath, 'utf-8');\n\n /**\n * Use window.location expressions so the SPA constructs the correct same-origin endpoint.\n * Port uses a ternary: window.location.port is '' for default ports (80/443), and the SPA falls back to 4111 for empty strings, so we return the default port explicitly instead.\n */\n html = injectStudioHtmlConfig(html, {\n host: `window.location.hostname`,\n port: `(window.location.port || (window.location.protocol === 'https:' ? '443' : '80'))`,\n protocol: `window.location.protocol.replace(':', '')`,\n apiPrefix: `'/api'`,\n basePath: '',\n hideCloudCta: `'true'`,\n templates: `'false'`,\n cloudApiEndpoint: `''`,\n experimentalFeatures: `'false'`,\n telemetryDisabled: `''`,\n requestContextPresets: `''`,\n experimentalUI: `'false'`,\n });\n\n writeFileSync(indexPath, html);\n }\n\n private writeVercelJSON(outputDirectory: string) {\n const routes = this.studio\n ? [\n { src: '/api/(.*)', dest: '/' },\n { src: '/health', dest: '/' },\n { handle: 'filesystem' as const },\n { src: '/(.*)', dest: '/index.html', check: true },\n ]\n : [{ src: '/(.*)', dest: '/' }];\n\n writeFileSync(join(outputDirectory, 'config.json'), JSON.stringify({ version: 3, routes }));\n }\n\n async bundle(\n entryFile: string,\n outputDirectory: string,\n { toolsPaths, projectRoot }: { toolsPaths: (string | string[])[]; projectRoot: string },\n ): Promise<void> {\n const result = await this._bundle(\n this.getEntry(),\n entryFile,\n { outputDirectory, projectRoot },\n toolsPaths,\n join(outputDirectory, this.outputDir),\n );\n\n const nodeVersion = process.version?.split('.')?.[0]?.replace('v', '') ?? '22';\n\n const vcConfig: VcConfig = {\n handler: 'index.mjs',\n launcherType: 'Nodejs',\n runtime: `nodejs${nodeVersion}.x`,\n shouldAddHelpers: true,\n };\n\n // Merge supported overrides\n const { maxDuration, memory, regions } = this.vcConfigOverrides;\n if (typeof maxDuration === 'number') vcConfig.maxDuration = maxDuration;\n if (typeof memory === 'number') vcConfig.memory = memory;\n if (Array.isArray(regions) && regions.length > 0) vcConfig.regions = regions;\n\n writeFileSync(join(outputDirectory, this.outputDir, '.vc-config.json'), JSON.stringify(vcConfig, null, 2));\n\n await move(join(outputDirectory, '.vercel', 'output'), join(process.cwd(), '.vercel', 'output'), {\n overwrite: true,\n });\n\n return result;\n }\n\n async deploy(): Promise<void> {\n this.logger?.info('Deploying to Vercel is deprecated. Please use the Vercel dashboard to deploy.');\n }\n\n async lint(entryFile: string, outputDirectory: string, toolsPaths: (string | string[])[]): Promise<void> {\n await super.lint(entryFile, outputDirectory, toolsPaths);\n\n const hasLibsql = (await this.deps.checkDependencies(['@mastra/libsql'])) === `ok`;\n\n if (hasLibsql) {\n this.logger.error(\n `Vercel Deployer does not support @libsql/client(which may have been installed by @mastra/libsql) as a dependency. \n\t\t\t\tUse other Mastra Storage options instead e.g @mastra/pg`,\n );\n process.exit(1);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- import{_ as A,G as O,H as M}from"./main-Bn9Oh0eK.js";var V={env:{}},S={},U=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-io.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(r,e)=>{for(var o in e)l(r,o,{get:e[o],enumerable:!0})},h=(r,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let w of b(e))!T.call(r,w)&&w!==o&&l(r,w,{get:()=>e[w],enumerable:!(a=j(e,w))||a.enumerable});return r},_=(r,e,o)=>(o=r!=null?g(m(r)):{},h(!r||!r.__esModule?l(o,"default",{value:r,enumerable:!0}):o,r)),E=r=>h(l({},"__esModule",{value:!0}),r),k={};D(k,{findRootDir:()=>v,getUserDataDir:()=>s}),P.exports=E(k);var c=_(O("path")),p=_(O("fs")),d=_(O("os")),y=M();function v(){try{let r=V.cwd();for(;r!==c.default.dirname(r);){const e=c.default.join(r,".vercel");if(p.default.existsSync(e))return r;r=c.default.dirname(r)}}catch{throw new y.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function s(){if(S.XDG_DATA_HOME)return S.XDG_DATA_HOME;switch(d.default.platform()){case"darwin":return c.default.join(d.default.homedir(),"Library/Application Support");case"linux":return c.default.join(d.default.homedir(),".local/share");case"win32":return S.LOCALAPPDATA?S.LOCALAPPDATA:null;default:return null}}}}),J=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/auth-config.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(e,o)=>{for(var a in o)l(e,a,{get:o[a],enumerable:!0})},h=(e,o,a,w)=>{if(o&&typeof o=="object"||typeof o=="function")for(let x of b(o))!T.call(e,x)&&x!==a&&l(e,x,{get:()=>o[x],enumerable:!(w=j(o,x))||w.enumerable});return e},_=(e,o,a)=>(a=e!=null?g(m(e)):{},h(!e||!e.__esModule?l(a,"default",{value:e,enumerable:!0}):a,e)),E=e=>h(l({},"__esModule",{value:!0}),e),k={};D(k,{isValidAccessToken:()=>r,readAuthConfig:()=>v,writeAuthConfig:()=>s}),P.exports=E(k);var c=_(O("fs")),p=_(O("path")),d=q();function y(){const e=(0,d.getVercelDataDir)();if(!e)throw new Error(`Unable to find Vercel CLI data directory. Your platform: ${V.platform}. Supported: darwin, linux, win32.`);return p.join(e,"auth.json")}function v(){try{const e=y();if(!c.existsSync(e))return null;const o=c.readFileSync(e,"utf8");return o?JSON.parse(o):null}catch{return null}}function s(e){const o=y(),a=p.dirname(o);c.existsSync(a)||c.mkdirSync(a,{mode:504,recursive:!0}),c.writeFileSync(o,JSON.stringify(e,null,2),{mode:384})}function r(e){if(!e.token)return!1;if(typeof e.expiresAt!="number")return!0;const o=Math.floor(Date.now()/1e3);return e.expiresAt>=o}}}),L=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/oauth.js"(C,P){var g=Object.defineProperty,l=Object.getOwnPropertyDescriptor,j=Object.getOwnPropertyNames,b=Object.prototype.hasOwnProperty,m=(s,r)=>{for(var e in r)g(s,e,{get:r[e],enumerable:!0})},T=(s,r,e,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of j(r))!b.call(s,a)&&a!==e&&g(s,a,{get:()=>r[a],enumerable:!(o=l(r,a))||o.enumerable});return s},D=s=>T(g({},"__esModule",{value:!0}),s),h={};m(h,{processTokenResponse:()=>v,refreshTokenRequest:()=>y}),P.exports=D(h);var _=O("os"),E="https://vercel.com",k="cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",c=`@vercel/oidc node-${V.version} ${(0,_.platform)()} (${(0,_.arch)()}) ${(0,_.hostname)()}`,p=null;async function d(){if(p)return p;const s=`${E}/.well-known/openid-configuration`,r=await fetch(s,{headers:{"user-agent":c}});if(!r.ok)throw new Error("Failed to discover OAuth endpoints");const e=await r.json();if(!e||typeof e.token_endpoint!="string")throw new Error("Invalid OAuth discovery response");const o=e.token_endpoint;return p=o,o}async function y(s){const r=await d();return await fetch(r,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":c},body:new URLSearchParams({client_id:k,grant_type:"refresh_token",...s})})}async function v(s){const r=await s.json();if(!s.ok){const e=typeof r=="object"&&r&&"error"in r?String(r.error):"Token refresh failed";return[new Error(e)]}return typeof r!="object"||r===null?[new Error("Invalid token response")]:typeof r.access_token!="string"?[new Error("Missing access_token in response")]:r.token_type!=="Bearer"?[new Error("Invalid token_type in response")]:typeof r.expires_in!="number"?[new Error("Missing expires_in in response")]:[null,r]}}}),q=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-util.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(t,n)=>{for(var i in n)l(t,i,{get:n[i],enumerable:!0})},h=(t,n,i,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let f of b(n))!T.call(t,f)&&f!==i&&l(t,f,{get:()=>n[f],enumerable:!(u=j(n,f))||u.enumerable});return t},_=(t,n,i)=>(i=t!=null?g(m(t)):{},h(!t||!t.__esModule?l(i,"default",{value:t,enumerable:!0}):i,t)),E=t=>h(l({},"__esModule",{value:!0}),t),k={};D(k,{assertVercelOidcTokenResponse:()=>a,findProjectInfo:()=>w,getTokenPayload:()=>R,getVercelCliToken:()=>e,getVercelDataDir:()=>r,getVercelOidcToken:()=>o,isExpired:()=>$,loadToken:()=>N,saveToken:()=>x}),P.exports=E(k);var c=_(O("path")),p=_(O("fs")),d=M(),y=U(),v=J(),s=L();function r(){const t="com.vercel.cli",n=(0,y.getUserDataDir)();return n?c.join(n,t):null}async function e(){const t=(0,v.readAuthConfig)();if(!t)return null;if((0,v.isValidAccessToken)(t))return t.token||null;if(!t.refreshToken)return(0,v.writeAuthConfig)({}),null;try{const n=await(0,s.refreshTokenRequest)({refresh_token:t.refreshToken}),[i,u]=await(0,s.processTokenResponse)(n);if(i||!u)return(0,v.writeAuthConfig)({}),null;const f={token:u.access_token,expiresAt:Math.floor(Date.now()/1e3)+u.expires_in};return u.refresh_token&&(f.refreshToken=u.refresh_token),(0,v.writeAuthConfig)(f),f.token??null}catch{return(0,v.writeAuthConfig)({}),null}}async function o(t,n,i){const u=`https://api.vercel.com/v1/projects/${n}/token?source=vercel-oidc-refresh${i?`&teamId=${i}`:""}`,f=await fetch(u,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!f.ok)throw new d.VercelOidcTokenError(`Failed to refresh OIDC token: ${f.statusText}`);const I=await f.json();return a(I),I}function a(t){if(!t||typeof t!="object")throw new TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in t)||typeof t.token!="string")throw new TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function w(){const t=(0,y.findRootDir)();if(!t)throw new d.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");const n=c.join(t,".vercel","project.json");if(!p.existsSync(n))throw new d.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");const i=JSON.parse(p.readFileSync(n,"utf8"));if(typeof i.projectId!="string"&&typeof i.orgId!="string")throw new TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:i.projectId,teamId:i.orgId}}function x(t,n){const i=(0,y.getUserDataDir)();if(!i)throw new d.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");const u=c.join(i,"com.vercel.token",`${n}.json`),f=JSON.stringify(t);p.mkdirSync(c.dirname(u),{mode:504,recursive:!0}),p.writeFileSync(u,f),p.chmodSync(u,432)}function N(t){const n=(0,y.getUserDataDir)();if(!n)throw new d.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");const i=c.join(n,"com.vercel.token",`${t}.json`);if(!p.existsSync(i))return null;const u=JSON.parse(p.readFileSync(i,"utf8"));return a(u),u}function R(t){const n=t.split(".");if(n.length!==3)throw new d.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");const i=n[1].replace(/-/g,"+").replace(/_/g,"/"),u=i.padEnd(i.length+(4-i.length%4)%4,"=");return JSON.parse(Buffer.from(u,"base64").toString("utf8"))}function $(t){return t.exp*1e3<Date.now()}}});export{q as r};
1
+ import{_ as A,G as O,H as M}from"./main-Aki3Izz8.js";var V={env:{}},S={},U=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-io.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(r,e)=>{for(var o in e)l(r,o,{get:e[o],enumerable:!0})},h=(r,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let w of b(e))!T.call(r,w)&&w!==o&&l(r,w,{get:()=>e[w],enumerable:!(a=j(e,w))||a.enumerable});return r},_=(r,e,o)=>(o=r!=null?g(m(r)):{},h(!r||!r.__esModule?l(o,"default",{value:r,enumerable:!0}):o,r)),E=r=>h(l({},"__esModule",{value:!0}),r),k={};D(k,{findRootDir:()=>v,getUserDataDir:()=>s}),P.exports=E(k);var c=_(O("path")),p=_(O("fs")),d=_(O("os")),y=M();function v(){try{let r=V.cwd();for(;r!==c.default.dirname(r);){const e=c.default.join(r,".vercel");if(p.default.existsSync(e))return r;r=c.default.dirname(r)}}catch{throw new y.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function s(){if(S.XDG_DATA_HOME)return S.XDG_DATA_HOME;switch(d.default.platform()){case"darwin":return c.default.join(d.default.homedir(),"Library/Application Support");case"linux":return c.default.join(d.default.homedir(),".local/share");case"win32":return S.LOCALAPPDATA?S.LOCALAPPDATA:null;default:return null}}}}),J=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/auth-config.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(e,o)=>{for(var a in o)l(e,a,{get:o[a],enumerable:!0})},h=(e,o,a,w)=>{if(o&&typeof o=="object"||typeof o=="function")for(let x of b(o))!T.call(e,x)&&x!==a&&l(e,x,{get:()=>o[x],enumerable:!(w=j(o,x))||w.enumerable});return e},_=(e,o,a)=>(a=e!=null?g(m(e)):{},h(!e||!e.__esModule?l(a,"default",{value:e,enumerable:!0}):a,e)),E=e=>h(l({},"__esModule",{value:!0}),e),k={};D(k,{isValidAccessToken:()=>r,readAuthConfig:()=>v,writeAuthConfig:()=>s}),P.exports=E(k);var c=_(O("fs")),p=_(O("path")),d=q();function y(){const e=(0,d.getVercelDataDir)();if(!e)throw new Error(`Unable to find Vercel CLI data directory. Your platform: ${V.platform}. Supported: darwin, linux, win32.`);return p.join(e,"auth.json")}function v(){try{const e=y();if(!c.existsSync(e))return null;const o=c.readFileSync(e,"utf8");return o?JSON.parse(o):null}catch{return null}}function s(e){const o=y(),a=p.dirname(o);c.existsSync(a)||c.mkdirSync(a,{mode:504,recursive:!0}),c.writeFileSync(o,JSON.stringify(e,null,2),{mode:384})}function r(e){if(!e.token)return!1;if(typeof e.expiresAt!="number")return!0;const o=Math.floor(Date.now()/1e3);return e.expiresAt>=o}}}),L=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/oauth.js"(C,P){var g=Object.defineProperty,l=Object.getOwnPropertyDescriptor,j=Object.getOwnPropertyNames,b=Object.prototype.hasOwnProperty,m=(s,r)=>{for(var e in r)g(s,e,{get:r[e],enumerable:!0})},T=(s,r,e,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of j(r))!b.call(s,a)&&a!==e&&g(s,a,{get:()=>r[a],enumerable:!(o=l(r,a))||o.enumerable});return s},D=s=>T(g({},"__esModule",{value:!0}),s),h={};m(h,{processTokenResponse:()=>v,refreshTokenRequest:()=>y}),P.exports=D(h);var _=O("os"),E="https://vercel.com",k="cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",c=`@vercel/oidc node-${V.version} ${(0,_.platform)()} (${(0,_.arch)()}) ${(0,_.hostname)()}`,p=null;async function d(){if(p)return p;const s=`${E}/.well-known/openid-configuration`,r=await fetch(s,{headers:{"user-agent":c}});if(!r.ok)throw new Error("Failed to discover OAuth endpoints");const e=await r.json();if(!e||typeof e.token_endpoint!="string")throw new Error("Invalid OAuth discovery response");const o=e.token_endpoint;return p=o,o}async function y(s){const r=await d();return await fetch(r,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":c},body:new URLSearchParams({client_id:k,grant_type:"refresh_token",...s})})}async function v(s){const r=await s.json();if(!s.ok){const e=typeof r=="object"&&r&&"error"in r?String(r.error):"Token refresh failed";return[new Error(e)]}return typeof r!="object"||r===null?[new Error("Invalid token response")]:typeof r.access_token!="string"?[new Error("Missing access_token in response")]:r.token_type!=="Bearer"?[new Error("Invalid token_type in response")]:typeof r.expires_in!="number"?[new Error("Missing expires_in in response")]:[null,r]}}}),q=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-util.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(t,n)=>{for(var i in n)l(t,i,{get:n[i],enumerable:!0})},h=(t,n,i,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let f of b(n))!T.call(t,f)&&f!==i&&l(t,f,{get:()=>n[f],enumerable:!(u=j(n,f))||u.enumerable});return t},_=(t,n,i)=>(i=t!=null?g(m(t)):{},h(!t||!t.__esModule?l(i,"default",{value:t,enumerable:!0}):i,t)),E=t=>h(l({},"__esModule",{value:!0}),t),k={};D(k,{assertVercelOidcTokenResponse:()=>a,findProjectInfo:()=>w,getTokenPayload:()=>R,getVercelCliToken:()=>e,getVercelDataDir:()=>r,getVercelOidcToken:()=>o,isExpired:()=>$,loadToken:()=>N,saveToken:()=>x}),P.exports=E(k);var c=_(O("path")),p=_(O("fs")),d=M(),y=U(),v=J(),s=L();function r(){const t="com.vercel.cli",n=(0,y.getUserDataDir)();return n?c.join(n,t):null}async function e(){const t=(0,v.readAuthConfig)();if(!t)return null;if((0,v.isValidAccessToken)(t))return t.token||null;if(!t.refreshToken)return(0,v.writeAuthConfig)({}),null;try{const n=await(0,s.refreshTokenRequest)({refresh_token:t.refreshToken}),[i,u]=await(0,s.processTokenResponse)(n);if(i||!u)return(0,v.writeAuthConfig)({}),null;const f={token:u.access_token,expiresAt:Math.floor(Date.now()/1e3)+u.expires_in};return u.refresh_token&&(f.refreshToken=u.refresh_token),(0,v.writeAuthConfig)(f),f.token??null}catch{return(0,v.writeAuthConfig)({}),null}}async function o(t,n,i){const u=`https://api.vercel.com/v1/projects/${n}/token?source=vercel-oidc-refresh${i?`&teamId=${i}`:""}`,f=await fetch(u,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!f.ok)throw new d.VercelOidcTokenError(`Failed to refresh OIDC token: ${f.statusText}`);const I=await f.json();return a(I),I}function a(t){if(!t||typeof t!="object")throw new TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in t)||typeof t.token!="string")throw new TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function w(){const t=(0,y.findRootDir)();if(!t)throw new d.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");const n=c.join(t,".vercel","project.json");if(!p.existsSync(n))throw new d.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");const i=JSON.parse(p.readFileSync(n,"utf8"));if(typeof i.projectId!="string"&&typeof i.orgId!="string")throw new TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:i.projectId,teamId:i.orgId}}function x(t,n){const i=(0,y.getUserDataDir)();if(!i)throw new d.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");const u=c.join(i,"com.vercel.token",`${n}.json`),f=JSON.stringify(t);p.mkdirSync(c.dirname(u),{mode:504,recursive:!0}),p.writeFileSync(u,f),p.chmodSync(u,432)}function N(t){const n=(0,y.getUserDataDir)();if(!n)throw new d.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");const i=c.join(n,"com.vercel.token",`${t}.json`);if(!p.existsSync(i))return null;const u=JSON.parse(p.readFileSync(i,"utf8"));return a(u),u}function R(t){const n=t.split(".");if(n.length!==3)throw new d.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");const i=n[1].replace(/-/g,"+").replace(/_/g,"/"),u=i.padEnd(i.length+(4-i.length%4)%4,"=");return JSON.parse(Buffer.from(u,"base64").toString("utf8"))}function $(t){return t.exp*1e3<Date.now()}}});export{q as r};
@@ -1 +1 @@
1
- import{x as d,y,e as b,z as _,A as g,o as u,L as S,k as T,t,i as k,q as W,j,n as X,E as p}from"./main-Bn9Oh0eK.js";import"./index-CcuLHGGL.js";const Y=1,U=2,G=3,R=179,z=4,v=180,x=5,Z=181,V=6;function E(O){return O>=65&&O<=90||O>=97&&O<=122}const F=new p(O=>{let a=O.pos;for(;;){let{next:e}=O;if(e<0)break;if(e==123){let r=O.peek(1);if(r==123){if(O.pos>a)break;O.acceptToken(Y,2);return}else if(r==37){if(O.pos>a)break;let $=2,i=2;for(;;){let n=O.peek($);if(n==32||n==10)++$;else if(n==35)for(++$;;){let Q=O.peek($);if(Q<0||Q==10)break;$++}else if(n==45&&i==2)i=++$;else{let Q=n==101&&O.peek($+1)==110&&O.peek($+2)==100;O.acceptToken(Q?G:U,i);return}}}}if(O.advance(),e==10)break}O.pos>a&&O.acceptToken(R)});function h(O,a,e){return new p(r=>{let $=r.pos;for(;;){let{next:i}=r;if(i==123&&r.peek(1)==37){let n=2;for(;;n++){let s=r.peek(n);if(s!=32&&s!=10)break}let Q="";for(;;n++){let s=r.peek(n);if(!E(s))break;Q+=String.fromCharCode(s)}if(Q==O){if(r.pos>$)break;r.acceptToken(e,2);break}}else if(i<0)break;if(r.advance(),i==10)break}r.pos>$&&r.acceptToken(a)})}const D=h("endcomment",Z,x),C=h("endraw",v,z),N=new p(O=>{if(O.next==35){for(O.advance();!(O.next==10||O.next<0||(O.next==37||O.next==125)&&O.peek(1)==125);)O.advance();O.acceptToken(V)}}),I={__proto__:null,contains:32,or:36,and:36,true:50,false:50,empty:52,forloop:54,tablerowloop:56,continue:58,in:128,with:194,for:196,as:198,if:234,endif:238,unless:244,endunless:248,elsif:252,else:256,case:262,endcase:266,when:270,endfor:278,tablerow:284,endtablerow:288,break:292,cycle:298,echo:302,render:306,include:310,assign:314,capture:320,endcapture:324,increment:328,decrement:332},L={__proto__:null,if:84,endif:88,elsif:92,else:96,unless:102,endunless:106,case:112,endcase:116,when:120,for:126,endfor:136,tablerow:142,endtablerow:146,break:150,continue:154,cycle:158,comment:164,endcomment:170,raw:176,endraw:182,echo:186,render:190,include:202,assign:206,capture:212,endcapture:216,increment:220,decrement:224,liquid:228},A=X.deserialize({version:14,states:"GlQYOPOOOOOP'#Fz'#FzOeOaO'#CdOsQhO'#CfO!bQxO'#DRO#{OPO'#DUO$ZOPO'#D_O$iOPO'#DdO$wOPO'#DkO%VOPO'#DsO%eOSO'#EOO%jOQO'#EUO%oOPO'#EhOOOP'#G_'#G_OOOP'#G['#G[OOOP'#Fy'#FyQYOPOOOOOP-E9x-E9xOOQW'#Cg'#CgO&`Q!jO,59QO&gQ!jO'#G]OsQhO'#CsOOQW'#G]'#G]OOOP,59m,59mO)PQhO,59mOsQhO,59qOsQhO,59uO)ZQhO,59wOsQhO,59zOsQhO,5:POsQhO,5:TO!]QhO,5:WO!]QhO,5:`O)`QhO,5:dO)eQhO,5:fO)jQhO,5:hO)oQhO,5:kO)tQhO,5:qOsQhO,5:vOsQhO,5:xOsQhO,5;OOsQhO,5;QOsQhO,5;TOsQhO,5;XOsQhO,5;ZO+TQhO,5;]O+[OPO'#CdOOOP,59p,59pO#{OPO,59pO+jQxO'#DXOOOP,59y,59yO$ZOPO,59yO+oQxO'#DbOOOP,5:O,5:OO$iOPO,5:OO+tQxO'#DgOOOP,5:V,5:VO$wOPO,5:VO+yQxO'#DqOOOP,5:_,5:_O%VOPO,5:_O,OQxO'#DvOOOS'#GP'#GPO,TOSO'#ERO,]OSO,5:jOOOQ'#GQ'#GQO,bOQO'#EXO,jOQO,5:pOOOP,5;S,5;SO%oOPO,5;SO,oQxO'#EkOOOP-E9w-E9wO,tQ#|O,59SOsQhO,59VOsQhO,59VO,yQhO'#C|OOQW'#F{'#F{O-OQhO1G.lOOOP1G.l1G.lOsQhO,59VOsQhO,59ZO-WQ!jO,59_O-iQ!jO1G/XO-pQhO1G/XOOOP1G/X1G/XO-xQ!jO1G/]O.ZQ!jO1G/aOOOP1G/c1G/cO.lQ!jO1G/fO.}Q!jO1G/kO/qQ!jO1G/oO/xQhO1G/rO/}QhO1G/zOOOP1G0O1G0OOOOP1G0Q1G0QO0SQhO1G0SOOOS1G0V1G0VOOOQ1G0]1G0]O0_Q!jO1G0bO0}Q!jO1G0dO1UQ!jO1G0jO1gQ!jO1G0lO1nQ!jO1G0oO2PQ!jO1G0sO2bQ!jO1G0uO2sQhO'#EsO2zQhO'#ExO3RQhO'#FRO3YQhO'#FYO3aQhO'#F^O3hQhO'#FpOOQW'#G`'#G`OOQW'#GS'#GSO3oQhO1G0wOsQhO'#EtOsQhO'#EyOsQhO'#E}OOQW'#FP'#FPOsQhO'#FSOsQhO'#FWO!]QhO'#FZO!]QhO'#F_OOQW'#Fc'#FcOOQW'#Fe'#FeO3vQhO'#FfOsQhO'#FhOsQhO'#FjOsQhO'#FlOsQhO'#FnOsQhO'#FqOsQhO'#FuOsQhO'#FwOOOP1G0w1G0wOOOP1G/[1G/[O3{QhO,59sOOOP1G/e1G/eO4QQhO,59|OOOP1G/j1G/jO4VQhO,5:ROOOP1G/q1G/qO4[QhO,5:]OOOP1G/y1G/yO4aQhO,5:bOOOS-E9}-E9}OOOP1G0U1G0UO4fQxO'#ESOOOQ-E:O-E:OOOOP1G0[1G0[O4kQxO'#EYOOOP1G0n1G0nO4pQhO,5;VOOQW1G.n1G.nO7XQ!jO1G.qO9oQ!jO1G.qOOQW'#DO'#DOO9yQhO,59hOOQW-E9y-E9yOOOP7+$W7+$WO;sQ!jO1G.qO;zQ!jO1G.uOsQhO1G.yO>aQhO7+$sOOOP7+$s7+$sOOOP7+$w7+$wOOOP7+${7+${OOOP7+%Q7+%QOOOP7+%V7+%VOsQhO'#F|O>iQhO7+%ZOOOP7+%Z7+%ZOsQhO7+%^OsQhO7+%fO>qQhO'#GOO>vQhO7+%nOOOP7+%n7+%nO?OQhO7+%nO?TQhO7+%|OOOP7+%|7+%|O!]QhO'#E`OOQW'#GR'#GRO?]QhO7+&OOsQhO'#E`OOOP7+&O7+&OOOOP7+&U7+&UO?kQhO7+&WOOOP7+&W7+&WOOOP7+&Z7+&ZOOOP7+&_7+&_OOOP7+&a7+&aOOQW,5;_,5;_O2sQhO,5;_OOQW'#Ev'#EvOOQW,5;d,5;dO2zQhO,5;dOOQW'#E{'#E{OOQW,5;m,5;mO3RQhO,5;mOOQW'#FU'#FUOOQW,5;t,5;tO3YQhO,5;tOOQW'#F['#F[OOQW,5;x,5;xO3aQhO,5;xOOQW'#Fa'#FaOOQW,5<[,5<[O3hQhO,5<[OOQW'#Fs'#FsOOQW-E:Q-E:QOOOP7+&c7+&cO?sQ!jO,5;`OA^Q!jO,5;eOBwQ!jO,5;iODtQ!jO,5;nOF_Q!jO,5;rOHQQhO,5;uOHVQhO,5;yOH[QhO,5<QOJRQ!jO,5<SOKtQ!jO,5<UOMdQ!jO,5<WO! aQ!jO,5<YO!#SQ!jO,5<]O!$mQ!jO,5<aO!&jQ!jO,5<cOOOP1G/_1G/_OOOP1G/h1G/hOOOP1G/m1G/mOOOP1G/w1G/wOOOP1G/|1G/|O!(gQhO,5:nO!(lQhO,5:tOOOP1G0q1G0qOsQhO1G/SO!(qQ!jO7+$eOOOP<<H_<<H_O!)SQ!jO,5<hOOQW-E9z-E9zOOOP<<Hu<<HuO!+kQ!jO<<HxO!+rQ!jO<<IQOOQW,5<j,5<jOOQW-E9|-E9|OOOP<<IY<<IYO!+yQhO<<IYOOOP<<Ih<<IhO!,RQhO,5:zOOQW-E:P-E:POOOP<<Ij<<IjO!,WQ!jO,5:zOOOP<<Ir<<IrOOQW1G0y1G0yOOQW1G1O1G1OOOQW1G1X1G1XOOQW1G1`1G1`OOQW1G1d1G1dOOQW1G1v1G1vO!.^QhO1G1^OsQhO1G1aOsQhO1G1eO!0QQhO1G1lO!1tQhO1G1lO!1yQhO1G1nOOQW'#GT'#GTO!3mQhO1G1pO!5dQhO1G1tOOOP1G0Y1G0YOOOP1G0`1G0`O!7WQ!jO7+$nOOQW<<HP<<HPOOQW'#Dp'#DpO!9PQhO'#DoOOQW'#F}'#F}O!:jQhOAN>dOOOPAN>dAN>dO!:rQhOAN>lOOOPAN>lAN>lO!:zQhOAN>tOOOPAN>tAN>tOsQhO1G0fO!]QhO1G0fO!;SQ!jO7+&{O!<cQ!jO7+'PO!=rQhO7+'WOOQW-E:R-E:RO!?fQhO<<HYOsQhO,5:ZOOQW-E9{-E9{OOOPG24OG24OOOOPG24WG24WOOOPG24`G24`O!A`Q!jO7+&QOOQW7+&Q7+&QO!CcQhO<<JgO!DsQhO<<JkO!FTQhO<<JrO!GwQ!jO1G/u",stateData:"!Ik~O$}OSUOS~OPROQSO$yPO~O$yPOPWXQWX$xWX~OfeOifOjfOkfOlfOmfOnfOofO%QbO~OvhOwgOziO!OjO!QkO!TlO!YmO!^nO!aoO!ipO!mqO!orO!qsO!ttO!zuO#PvO#RwO#XxO#ZyO#^zO#b{O#d|O#f}O~OPROQSOR!RO$yPO~OPROQSOR!UO$yPO~OPROQSOR!XO$yPO~OPROQSOR![O$yPO~OPROQSOR!_O$yPO~O${!`O~O$z!cO~OPROQSOR!hO$yPO~O]!jO`!qOa!kOb!lOq!mO~OX!pO~P%}Od!rOX%PX]%PX`%PXa%PXb%PXq%PXh%PXw%PXt%PX#T%PX#U%PXm%PX#i%PX#k%PX#n%PX#r%PX#t%PX#w%PX#{%PX$S%PX$W%PX$Z%PX$]%PX$_%PX$a%PX$c%PX$f%PX$j%PX$l%PX#p%PX#y%PX$h%PXe%PX%Q%PX#V%PX$P%PX$U%PX~Oq!mOw!vO~PsOw!yO~Ow#PO~Ow#QO~On#RO~Ow#SO~Ow#TO~Om#oO#U#lO#i#fO#n#gO#r#hO#t#iO#w#jO#{#kO$S#mO$W#nO$Z#pO$]#qO$_#rO$a#sO$c#tO$f#uO$j#vO$l#wO~Ow#xO~P)yO$yPOPWXQWXRWX~O|#zO~O!V#|O~O![$OO~O!f$QO~O!k$SO~O${!`OT!uX~OT$VO~O$z!cOS!{X~OS$YO~O#`$[O~O^$]O~O%Q$`O~OX$cOq!mO~O]!jO`!qOa!kOb!lOh$fO~Ow$hO~P%}Oq!mOw$hO~O]!jO`!qOa!kOb!lOw$iO~O]!jO`!qOa!kOb!lOw$jO~O]!jO`!qOa!kOb!lOw$kO~O]!jO`!qOa!kOb!lOw$lO~O]!jO`!qOa!kOb!lOt$mO~Ow$oO~P/`O!b$pO~O!b$qO~Os$uOt$rOw$tO~Ow$wO~P%}O]!jO`!qOa!kOb!lOt$xO#T${O#U${O~Ow$|O~P0fO]!jO`!qOa!kOb!lOw$}O~Ow%PO~P%}O]!jO`!qOa!kOb!lOw%QO~O]!jO`!qOa!kOb!lOw%RO~O]!jO`!qOa!kOb!lOw%SO~O#k%VO~P)yO#p%YO~P)yO#y%]O~P)yO$P%`O~P)yO$U%cO~P)yO$h%fO~P)yOw%hO~P)yOn%pO~Ow%xO~Ow%yO~Ow%zO~Ow%{O~Ow%|O~O!w%}O~O!}&OO~Ow&PO~O]!jOX_i`_ib_iq_ih_iw_it_i#T_i#U_im_i#i_i#k_i#n_i#r_i#t_i#w_i#{_i$S_i$W_i$Z_i$]_i$__i$a_i$c_i$f_i$j_i$l_i#p_i#y_i$h_ie_i%Q_i#V_i$P_i$U_i~Oa_i~P4uO]!jOa!kOX_iq_ih_iw_it_i#T_i#U_im_i#i_i#k_i#n_i#r_i#t_i#w_i#{_i$S_i$W_i$Z_i$]_i$__i$a_i$c_i$f_i$j_i$l_i#p_i#y_i$h_ie_i%Q_i#V_i$P_i$U_i~O`!qOb!lO~P7`Os&QOXpaqpawpampa#Upa#ipa#npa#rpa#tpa#wpa#{pa$Spa$Wpa$Zpa$]pa$_pa$apa$cpa$fpa$jpa$lpa#kpa#ppa#ypa$Ppa$Upa$hpa~Oa!kO~P4uO]!jO`!qOa!kOb!lOXciqcihciwcitci#Tci#Ucimci#ici#kci#nci#rci#tci#wci#{ci$Sci$Wci$Zci$]ci$_ci$aci$cci$fci$jci$lci#pci#yci$hcieci%Qci#Vci$Pci$Uci~Oq!mOw&SO~Ot$mOw&VO~On&YO~Ot$rOw&[O~On&]O~Oq!mOw&^O~Ot$xOw&aO#T${O#U${O~Oq!mOw&cO~O]!jO`!qOa!kOb!lOm#ha#U#ha#i#ha#k#ha#n#ha#r#ha#t#ha#w#ha#{#ha$S#ha$W#ha$Z#ha$]#ha$_#ha$a#ha$c#ha$f#ha$j#ha$l#ha~O]!jO`!qOa!kOb!lOm#ma#U#ma#i#ma#n#ma#p#ma#r#ma#t#ma#w#ma#{#ma$S#ma$W#ma$Z#ma$]#ma$_#ma$a#ma$c#ma$f#ma$j#ma$l#ma~O]!jO`!qOa!kOb!lOm#qaw#qa#U#qa#i#qa#n#qa#r#qa#t#qa#w#qa#{#qa$S#qa$W#qa$Z#qa$]#qa$_#qa$a#qa$c#qa$f#qa$j#qa$l#qa#k#qa#p#qa#y#qa$P#qa$U#qa$h#qa~O]!jO`!qOa!kOb!lOm#va#U#va#i#va#n#va#r#va#t#va#w#va#y#va#{#va$S#va$W#va$Z#va$]#va$_#va$a#va$c#va$f#va$j#va$l#va~Om#zaw#za#U#za#i#za#n#za#r#za#t#za#w#za#{#za$S#za$W#za$Z#za$]#za$_#za$a#za$c#za$f#za$j#za$l#za#k#za#p#za#y#za$P#za$U#za$h#za~P/`O!b&kO~O!b&lO~Os&nOt$rOm$Yaw$Ya#U$Ya#i$Ya#n$Ya#r$Ya#t$Ya#w$Ya#{$Ya$S$Ya$W$Ya$Z$Ya$]$Ya$_$Ya$a$Ya$c$Ya$f$Ya$j$Ya$l$Ya#k$Ya#p$Ya#y$Ya$P$Ya$U$Ya$h$Ya~Om$[aw$[a#U$[a#i$[a#n$[a#r$[a#t$[a#w$[a#{$[a$S$[a$W$[a$Z$[a$]$[a$_$[a$a$[a$c$[a$f$[a$j$[a$l$[a#k$[a#p$[a#y$[a$P$[a$U$[a$h$[a~P%}Om$^aw$^a#i$^a#n$^a#r$^a#t$^a#w$^a#{$^a$S$^a$W$^a$Z$^a$]$^a$_$^a$a$^a$c$^a$f$^a$j$^a$l$^a#k$^a#p$^a#y$^a$P$^a$U$^a$h$^a~P0fO]!jO`!qOa!kOb!lOm$`aw$`a#U$`a#i$`a#n$`a#r$`a#t$`a#w$`a#{$`a$S$`a$W$`a$Z$`a$]$`a$_$`a$a$`a$c$`a$f$`a$j$`a$l$`a#k$`a#p$`a#y$`a$P$`a$U$`a$h$`a~Om$baw$ba#U$ba#i$ba#n$ba#r$ba#t$ba#w$ba#{$ba$S$ba$W$ba$Z$ba$]$ba$_$ba$a$ba$c$ba$f$ba$j$ba$l$ba#k$ba#p$ba#y$ba$P$ba$U$ba$h$ba~P%}O]!jO`!qOa!kOb!lOm$ea#U$ea#i$ea#n$ea#r$ea#t$ea#w$ea#{$ea$S$ea$W$ea$Z$ea$]$ea$_$ea$a$ea$c$ea$f$ea$h$ea$j$ea$l$ea~O]!jO`!qOa!kOb!lOm$iaw$ia#U$ia#i$ia#n$ia#r$ia#t$ia#w$ia#{$ia$S$ia$W$ia$Z$ia$]$ia$_$ia$a$ia$c$ia$f$ia$j$ia$l$ia#k$ia#p$ia#y$ia$P$ia$U$ia$h$ia~O]!jO`!qOa!kOb!lOm$kaw$ka#U$ka#i$ka#n$ka#r$ka#t$ka#w$ka#{$ka$S$ka$W$ka$Z$ka$]$ka$_$ka$a$ka$c$ka$f$ka$j$ka$l$ka#k$ka#p$ka#y$ka$P$ka$U$ka$h$ka~Ow&sO~Ow&tO~O]!jO`!qOa!kOb!lOe&vO~O]!jO`!qOa!kOb!lOt$paw$pam$pa#U$pa#i$pa#n$pa#r$pa#t$pa#w$pa#{$pa$S$pa$W$pa$Z$pa$]$pa$_$pa$a$pa$c$pa$f$pa$j$pa$l$pa#k$pa#p$pa#y$pa$P$pa$U$pa$h$paX$paq$pa~O]!jO`!qOa!kOb!lO%Q&wO~Ow&{O~P!+YOw&}O~P!+YOt$rOw'PO~Os'QO~O]!jO`!qOa!kOb!lO#V'ROt#Saw#Sa#T#Sa#U#Sam#Sa#i#Sa#n#Sa#r#Sa#t#Sa#w#Sa#{#Sa$S#Sa$W#Sa$Z#Sa$]#Sa$_#Sa$a#Sa$c#Sa$f#Sa$j#Sa$l#Sa#k#Sa#p#Sa#y#Sa$P#Sa$U#Sa$h#Sa~Ot$mOm#ziw#zi#U#zi#i#zi#n#zi#r#zi#t#zi#w#zi#{#zi$S#zi$W#zi$Z#zi$]#zi$_#zi$a#zi$c#zi$f#zi$j#zi$l#zi#k#zi#p#zi#y#zi$P#zi$U#zi$h#zi~Ot$rOm$Yiw$Yi#U$Yi#i$Yi#n$Yi#r$Yi#t$Yi#w$Yi#{$Yi$S$Yi$W$Yi$Z$Yi$]$Yi$_$Yi$a$Yi$c$Yi$f$Yi$j$Yi$l$Yi#k$Yi#p$Yi#y$Yi$P$Yi$U$Yi$h$Yi~On'UO~Oq!mOm$[iw$[i#U$[i#i$[i#n$[i#r$[i#t$[i#w$[i#{$[i$S$[i$W$[i$Z$[i$]$[i$_$[i$a$[i$c$[i$f$[i$j$[i$l$[i#k$[i#p$[i#y$[i$P$[i$U$[i$h$[i~Ot$xO#T${O#U${Om$^iw$^i#i$^i#n$^i#r$^i#t$^i#w$^i#{$^i$S$^i$W$^i$Z$^i$]$^i$_$^i$a$^i$c$^i$f$^i$j$^i$l$^i#k$^i#p$^i#y$^i$P$^i$U$^i$h$^i~Oq!mOm$biw$bi#U$bi#i$bi#n$bi#r$bi#t$bi#w$bi#{$bi$S$bi$W$bi$Z$bi$]$bi$_$bi$a$bi$c$bi$f$bi$j$bi$l$bi#k$bi#p$bi#y$bi$P$bi$U$bi$h$bi~OXpqqpqwpqmpq#Upq#ipq#npq#rpq#tpq#wpq#{pq$Spq$Wpq$Zpq$]pq$_pq$apq$cpq$fpq$jpq$lpq#kpq#ppq#ypq$Ppq$Upq$hpq~P/`Os'XOw!cX%Q!cXm!cX#U!cX#i!cX#n!cX#r!cX#t!cX#w!cX#{!cX$P!cX$S!cX$W!cX$Z!cX$]!cX$_!cX$a!cX$c!cX$f!cX$j!cX$l!cX$U!cX~Ow'ZO%Q&wO~Ow'[O%Q&wO~Ot$rOw']O~Om#}q#U#}q#i#}q#n#}q#r#}q#t#}q#w#}q#{#}q$P#}q$S#}q$W#}q$Z#}q$]#}q$_#}q$a#}q$c#}q$f#}q$j#}q$l#}q~P!+YOm$Rq#U$Rq#i$Rq#n$Rq#r$Rq#t$Rq#w$Rq#{$Rq$S$Rq$U$Rq$W$Rq$Z$Rq$]$Rq$_$Rq$a$Rq$c$Rq$f$Rq$j$Rq$l$Rq~P!+YOt$rOm$Yqw$Yq#U$Yq#i$Yq#n$Yq#r$Yq#t$Yq#w$Yq#{$Yq$S$Yq$W$Yq$Z$Yq$]$Yq$_$Yq$a$Yq$c$Yq$f$Yq$j$Yq$l$Yq#k$Yq#p$Yq#y$Yq$P$Yq$U$Yq$h$Yq~Ot$mOXpyqpywpympy#Upy#ipy#npy#rpy#tpy#wpy#{py$Spy$Wpy$Zpy$]py$_py$apy$cpy$fpy$jpy$lpy#kpy#ppy#ypy$Ppy$Upy$hpy~O]!jO`!qOa!kOb!lOt#Sqw#Sq#T#Sq#U#Sqm#Sq#i#Sq#n#Sq#r#Sq#t#Sq#w#Sq#{#Sq$S#Sq$W#Sq$Z#Sq$]#Sq$_#Sq$a#Sq$c#Sq$f#Sq$j#Sq$l#Sq#k#Sq#p#Sq#y#Sq$P#Sq$U#Sq$h#Sq~O%Q&wOm#}y#U#}y#i#}y#n#}y#r#}y#t#}y#w#}y#{#}y$P#}y$S#}y$W#}y$Z#}y$]#}y$_#}y$a#}y$c#}y$f#}y$j#}y$l#}y~O%Q&wOm$Ry#U$Ry#i$Ry#n$Ry#r$Ry#t$Ry#w$Ry#{$Ry$S$Ry$U$Ry$W$Ry$Z$Ry$]$Ry$_$Ry$a$Ry$c$Ry$f$Ry$j$Ry$l$Ry~Ot$rOm$Yyw$Yy#U$Yy#i$Yy#n$Yy#r$Yy#t$Yy#w$Yy#{$Yy$S$Yy$W$Yy$Z$Yy$]$Yy$_$Yy$a$Yy$c$Yy$f$Yy$j$Yy$l$Yy#k$Yy#p$Yy#y$Yy$P$Yy$U$Yy$h$Yy~O]!jO`!qOa!kOb!lOw!ci%Q!cim!ci#U!ci#i!ci#n!ci#r!ci#t!ci#w!ci#{!ci$P!ci$S!ci$W!ci$Z!ci$]!ci$_!ci$a!ci$c!ci$f!ci$j!ci$l!ci$U!ci~O",goto:"7j%TPPPPPPPP%UP%U%f&uPP&uPPP&uPPP&uPPPPPPPP'rP(SPP(VPP(V(gP(wP(VP(VP(V(}P)_P(V)eP)uP(VP(V){PP*]*g*qP(V*wP+XP(VP(VP(VP(V+_P+o+rP(V+uP,V,YP(VP(VP,]PPP(VP(VP(V,eP,uP(VP(VP(VP,{-]P-mP,{-sP.TP,{P,{P,{.ZP.kP,{P,{.q/RP,{/XP/iP,{P,{,{P,{P,{P,{P,{P,{/oP0PP,{P,{P0V0u1]1{2Z2m3P3V3]3c4RPPPPPP4X4iP%U7Ym^OTUVWX[`!Q!T!W!Z!^!g!tdRehijlmnvwxyz{|!k!l!q!r#f#g#h#j#k#q#r#s#t#u#v#w$f$m$p$q${&Q&k&l'Q'XQ!}oQ#OpQ%n#lQ%o#mQ&_$xR'_'R!ufRehijlmnvwxyz{|!k!l!q!r#f#g#h#j#k#q#r#s#t#u#v#w$f$m$p$q${&Q&k&l'Q'Xm!nch!o!t!u#U#X$g$v%O%q%t&o&rR$a!mm]OTUVWX[`!Q!T!W!Z!^!gmTOTUVWX[`!Q!T!W!Z!^!gQ!PTR#y!QmUOTUVWX[`!Q!T!W!Z!^!gQ!SUR#{!TmVOTUVWX[`!Q!T!W!Z!^!gQ!VVR#}!WmWOTUVWX[`!Q!T!W!Z!^!ga&y&W&X&z&|'S'T'`'aa&x&W&X&z&|'S'T'`'aQ!YWR$P!ZmXOTUVWX[`!Q!T!W!Z!^!gQ!]XR$R!^mYOTUVWX[`!Q!T!W!Z!^!gR!bYR$U!bmZOTUVWX[`!Q!T!W!Z!^!gR!eZR$X!eS$y#V$zT&p%r&qm[OTUVWX[`!Q!T!W!Z!^!gQ!f[R$Z!gm#c}#]#^#_#`#a#b#e%U%X%[%_%b%em#]}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%T#]R&d%Um#^}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%W#^R&e%Xm#_}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%Z#_R&f%[m#`}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%^#`R&g%_m#a}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%a#aR&h%bm#b}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%d#bR&i%eQ`OQ!QTQ!TUQ!WVQ!ZWQ!^XQ!g[_!i`!Q!T!W!Z!^!gSQO`SaQ!Oi!OTUVWX[!Q!T!W!Z!^!gQ!ocQ!uh^$b!o!u$g$v%O&o&rQ$g!tQ$v#UQ%O#XQ&o%qR&r%tQ$n!|U&U$n&j'WQ&j%mR'W&uQ&z&WQ&|&XW'Y&z&|'`'aQ'`'SR'a'TQ$s#RW&Z$s&m'O'bQ&m%pQ'O&]R'b'UQ!aYR$T!aQ!dZR$W!dQ$z#VR&`$zQ#e}Q%U#]Q%X#^Q%[#_Q%_#`Q%b#aQ%e#b_%g#e%U%X%[%_%b%eQ&q%rR'V&qm_OTUVWX[`!Q!T!W!Z!^!gQcRQ!seQ!thQ!wiQ!xjQ!zlQ!{mQ!|nQ#UvQ#VwQ#WxQ#XyQ#YzQ#Z{Q#[|Q$^!kQ$_!lQ$d!qQ$e!rQ%i#fQ%j#gQ%k#hQ%l#jQ%m#kQ%q#qQ%r#rQ%s#sQ%t#tQ%u#uQ%v#vQ%w#wQ&R$fQ&T$mQ&W$pQ&X$qQ&b${Q&u&QQ'S&kQ'T&lQ'^'QR'c'Xm#d}#]#^#_#`#a#b#e%U%X%[%_%b%e",nodeNames:"⚠ {{ {% {% {% {% InlineComment Template Text }} Interpolation VariableName MemberExpression . PropertyName BinaryExpression contains CompareOp LogicOp AssignmentExpression AssignOp ) ( RangeExpression .. BooleanLiteral empty forloop tablerowloop continue StringLiteral NumberLiteral Filter | FilterName : , Tag TagName %} IfDirective Tag if EndTag endif Tag elsif Tag else UnlessDirective Tag unless EndTag endunless CaseDirective Tag case EndTag endcase Tag when ForDirective Tag for in Parameter ParameterName EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag continue Tag cycle Comment Tag comment CommentText EndTag endcomment RawDirective Tag raw RawText EndTag endraw Tag echo Tag render RenderParameter with for as Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement Tag liquid IfDirective Tag if EndTag endif UnlessDirective Tag unless EndTag endunless Tag elsif Tag else CaseDirective Tag case EndTag endcase Tag when ForDirective Tag EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag Tag cycle Tag echo Tag render Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement",maxTerm:188,nodeProps:[["closedBy",1,"}}",-4,2,3,4,5,"%}",22,")"],["openedBy",9,"{{",21,"(",39,"{%"],["group",-12,11,12,15,19,23,25,26,27,28,29,30,31,"Expression"]],skippedNodes:[0,6],repeatNodeCount:11,tokenData:")T~RkXY!vYZ!v]^!vpq!vqr#Xrs#duv$Uwx$axy$|yz%R{|%W|}&r}!O&w!O!P'T!Q![&a![!]'e!^!_'j!_!`'r!`!a'j!c!}'z#R#S'z#T#o'z#p#q(s#q#r(x%W;'S'z;'S;:j(m<%lO'z~!{S$}~XY!vYZ!v]^!vpq!v~#[P!_!`#_~#dOa~~#gUOY#dZr#drs#ys;'S#d;'S;=`$O<%lO#d~$OOn~~$RP;=`<%l#d~$XP#q#r$[~$aOw~~$dUOY$aZw$awx#yx;'S$a;'S;=`$v<%lO$a~$yP;=`<%l$a~%ROf~~%WOe~P%ZQ!O!P%a!Q![&aP%dP!Q![%gP%lRoP!Q![%g!g!h%u#X#Y%uP%xR{|&R}!O&R!Q![&XP&UP!Q![&XP&^PoP!Q![&XP&fSoP!O!P%a!Q![&a!g!h%u#X#Y%u~&wOt~~&zRuv$U!O!P%a!Q![&a~'YQ]S!O!P'`!Q![%g~'eOh~~'jOs~~'oPa~!_!`#_~'wPd~!_!`#__(TW^WvQ%QT}!O'z!Q!['z!c!}'z#R#S'z#T#o'z%W;'S'z;'S;:j(m<%lO'z_(pP;=`<%l'z~(xOq~~({P#q#r)O~)TOX~",tokenizers:[F,C,D,N,0,1,2,3],topRules:{Template:[0,7]},specialized:[{term:186,get:O=>I[O]||-1},{term:38,get:O=>L[O]||-1}],tokenPrec:0});function o(O,a){return O.split(" ").map(e=>({label:e,type:a}))}const m=o("abs append at_least at_most capitalize ceil compact concat date default divided_by downcase escape escape_once first floor join last lstrip map minus modulo newline_to_br plus prepend remove remove_first replace replace_first reverse round rstrip size slice sort sort_natural split strip strip_html strip_newlines sum times truncate truncatewords uniq upcase url_decode url_encode where","function"),q=o("cycle comment endcomment raw endraw echo increment decrement liquid if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue assign capture endcapture render include","keyword"),f=o("empty forloop tablerowloop in with as","keyword"),H=o("first index index0 last length rindex","property"),B=o("col col0 col_first col_last first index index0 last length rindex rindex0 row","property");function M(O){var a;let{state:e,pos:r}=O,$=u(e).resolveInner(r,-1).enterUnfinishedNodesBefore(r),i=((a=$.childBefore(r))===null||a===void 0?void 0:a.name)||$.name;if($.name=="FilterName")return{type:"filter",node:$};if(O.explicit&&i=="|")return{type:"filter"};if($.name=="TagName")return{type:"tag",node:$};if(O.explicit&&i=="{%")return{type:"tag"};if($.name=="PropertyName"&&$.parent.name=="MemberExpression")return{type:"property",node:$,target:$.parent};if($.name=="."&&$.parent.name=="MemberExpression")return{type:"property",target:$.parent};if($.name=="MemberExpression"&&i==".")return{type:"property",target:$};if($.name=="VariableName")return{type:"expression",from:$.from};let n=O.matchBefore(/[\w\u00c0-\uffff]+$/);return n?{type:"expression",from:n.from}:O.explicit&&$.name!="CommentText"&&$.name!="StringLiteral"&&$.name!="NumberLiteral"&&$.name!="InlineComment"?{type:"expression"}:null}function K(O,a,e,r){let $=[];for(;;){let i=a.getChild("Expression");if(!i)return[];if(i.name=="forloop")return $.length?[]:H;if(i.name=="tablerowloop")return $.length?[]:B;if(i.name=="VariableName"){$.unshift(O.sliceDoc(i.from,i.to));break}else if(i.name=="MemberExpression"){let n=i.getChild("PropertyName");n&&$.unshift(O.sliceDoc(n.from,n.to)),a=i}else return[]}return r?r($,O,e):[]}function J(O={}){let a=O.filters?O.filters.concat(m):m,e=O.tags?O.tags.concat(q):q,r=O.variables?O.variables.concat(f):f,{properties:$}=O;return i=>{var n;let Q=M(i);if(!Q)return null;let s=(n=Q.from)!==null&&n!==void 0?n:Q.node?Q.node.from:i.pos,l;return Q.type=="filter"?l=a:Q.type=="tag"?l=e:Q.type=="expression"?l=r:l=K(i.state,Q.target,i,$),l.length?{options:l,from:s,validFor:/^[\w\u00c0-\uffff]*$/}:null}}const OO=d.inputHandler.of((O,a,e,r)=>r!="%"||a!=e||O.state.doc.sliceString(a-1,e+1)!="{}"?!1:(O.dispatch(O.state.changeByRange($=>({changes:{from:$.from,to:$.to,insert:"%%"},range:y.cursor($.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0));function c(O){return a=>{let e=O.test(a.textAfter);return a.lineIndent(a.node.from)+(e?0:a.unit)}}const $O=S.define({name:"liquid",parser:A.configure({props:[T({"cycle comment endcomment raw endraw echo increment decrement liquid in with as":t.keyword,"empty forloop tablerowloop":t.atom,"if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue":t.controlKeyword,"assign capture endcapture":t.definitionKeyword,contains:t.operatorKeyword,"render include":t.moduleKeyword,VariableName:t.variableName,TagName:t.tagName,FilterName:t.function(t.variableName),PropertyName:t.propertyName,CompareOp:t.compareOperator,AssignOp:t.definitionOperator,LogicOp:t.logicOperator,NumberLiteral:t.number,StringLiteral:t.string,BooleanLiteral:t.bool,InlineComment:t.lineComment,CommentText:t.blockComment,"{% %} {{ }}":t.brace,"( )":t.paren,".":t.derefOperator,", .. : |":t.punctuation}),k.add({Tag:W({closing:"%}"}),"UnlessDirective ForDirective TablerowDirective CaptureDirective":c(/^\s*(\{%-?\s*)?end\w/),IfDirective:c(/^\s*(\{%-?\s*)?(endif|else|elsif)\b/),CaseDirective:c(/^\s*(\{%-?\s*)?(endcase|when)\b/)}),j.add({"UnlessDirective ForDirective TablerowDirective CaptureDirective IfDirective CaseDirective RawDirective Comment"(O){let a=O.firstChild,e=O.lastChild;return!a||a.name!="Tag"?null:{from:a.to,to:e.name=="EndTag"?e.from:O.to}}})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*{%-?\s*(?:end|elsif|else|when|)$/}}),P=_();function w(O){return $O.configure({wrap:g(a=>a.type.isTop?{parser:O.parser,overlay:e=>e.name=="Text"||e.name=="RawText"}:null)},"liquid")}const aO=w(P.language);function rO(O={}){let a=O.base||P,e=a.language==P.language?aO:w(a.language);return new b(e,[a.support,e.data.of({autocomplete:J(O)}),a.language.data.of({closeBrackets:{brackets:["{"]}}),OO])}export{OO as closePercentBrace,rO as liquid,J as liquidCompletionSource,aO as liquidLanguage};
1
+ import{x as d,y,e as b,z as _,A as g,o as u,L as S,k as T,t,i as k,q as W,j,n as X,E as p}from"./main-Aki3Izz8.js";import"./index-CDScig7X.js";const Y=1,U=2,G=3,R=179,z=4,v=180,x=5,Z=181,V=6;function E(O){return O>=65&&O<=90||O>=97&&O<=122}const F=new p(O=>{let a=O.pos;for(;;){let{next:e}=O;if(e<0)break;if(e==123){let r=O.peek(1);if(r==123){if(O.pos>a)break;O.acceptToken(Y,2);return}else if(r==37){if(O.pos>a)break;let $=2,i=2;for(;;){let n=O.peek($);if(n==32||n==10)++$;else if(n==35)for(++$;;){let Q=O.peek($);if(Q<0||Q==10)break;$++}else if(n==45&&i==2)i=++$;else{let Q=n==101&&O.peek($+1)==110&&O.peek($+2)==100;O.acceptToken(Q?G:U,i);return}}}}if(O.advance(),e==10)break}O.pos>a&&O.acceptToken(R)});function h(O,a,e){return new p(r=>{let $=r.pos;for(;;){let{next:i}=r;if(i==123&&r.peek(1)==37){let n=2;for(;;n++){let s=r.peek(n);if(s!=32&&s!=10)break}let Q="";for(;;n++){let s=r.peek(n);if(!E(s))break;Q+=String.fromCharCode(s)}if(Q==O){if(r.pos>$)break;r.acceptToken(e,2);break}}else if(i<0)break;if(r.advance(),i==10)break}r.pos>$&&r.acceptToken(a)})}const D=h("endcomment",Z,x),C=h("endraw",v,z),N=new p(O=>{if(O.next==35){for(O.advance();!(O.next==10||O.next<0||(O.next==37||O.next==125)&&O.peek(1)==125);)O.advance();O.acceptToken(V)}}),I={__proto__:null,contains:32,or:36,and:36,true:50,false:50,empty:52,forloop:54,tablerowloop:56,continue:58,in:128,with:194,for:196,as:198,if:234,endif:238,unless:244,endunless:248,elsif:252,else:256,case:262,endcase:266,when:270,endfor:278,tablerow:284,endtablerow:288,break:292,cycle:298,echo:302,render:306,include:310,assign:314,capture:320,endcapture:324,increment:328,decrement:332},L={__proto__:null,if:84,endif:88,elsif:92,else:96,unless:102,endunless:106,case:112,endcase:116,when:120,for:126,endfor:136,tablerow:142,endtablerow:146,break:150,continue:154,cycle:158,comment:164,endcomment:170,raw:176,endraw:182,echo:186,render:190,include:202,assign:206,capture:212,endcapture:216,increment:220,decrement:224,liquid:228},A=X.deserialize({version:14,states:"GlQYOPOOOOOP'#Fz'#FzOeOaO'#CdOsQhO'#CfO!bQxO'#DRO#{OPO'#DUO$ZOPO'#D_O$iOPO'#DdO$wOPO'#DkO%VOPO'#DsO%eOSO'#EOO%jOQO'#EUO%oOPO'#EhOOOP'#G_'#G_OOOP'#G['#G[OOOP'#Fy'#FyQYOPOOOOOP-E9x-E9xOOQW'#Cg'#CgO&`Q!jO,59QO&gQ!jO'#G]OsQhO'#CsOOQW'#G]'#G]OOOP,59m,59mO)PQhO,59mOsQhO,59qOsQhO,59uO)ZQhO,59wOsQhO,59zOsQhO,5:POsQhO,5:TO!]QhO,5:WO!]QhO,5:`O)`QhO,5:dO)eQhO,5:fO)jQhO,5:hO)oQhO,5:kO)tQhO,5:qOsQhO,5:vOsQhO,5:xOsQhO,5;OOsQhO,5;QOsQhO,5;TOsQhO,5;XOsQhO,5;ZO+TQhO,5;]O+[OPO'#CdOOOP,59p,59pO#{OPO,59pO+jQxO'#DXOOOP,59y,59yO$ZOPO,59yO+oQxO'#DbOOOP,5:O,5:OO$iOPO,5:OO+tQxO'#DgOOOP,5:V,5:VO$wOPO,5:VO+yQxO'#DqOOOP,5:_,5:_O%VOPO,5:_O,OQxO'#DvOOOS'#GP'#GPO,TOSO'#ERO,]OSO,5:jOOOQ'#GQ'#GQO,bOQO'#EXO,jOQO,5:pOOOP,5;S,5;SO%oOPO,5;SO,oQxO'#EkOOOP-E9w-E9wO,tQ#|O,59SOsQhO,59VOsQhO,59VO,yQhO'#C|OOQW'#F{'#F{O-OQhO1G.lOOOP1G.l1G.lOsQhO,59VOsQhO,59ZO-WQ!jO,59_O-iQ!jO1G/XO-pQhO1G/XOOOP1G/X1G/XO-xQ!jO1G/]O.ZQ!jO1G/aOOOP1G/c1G/cO.lQ!jO1G/fO.}Q!jO1G/kO/qQ!jO1G/oO/xQhO1G/rO/}QhO1G/zOOOP1G0O1G0OOOOP1G0Q1G0QO0SQhO1G0SOOOS1G0V1G0VOOOQ1G0]1G0]O0_Q!jO1G0bO0}Q!jO1G0dO1UQ!jO1G0jO1gQ!jO1G0lO1nQ!jO1G0oO2PQ!jO1G0sO2bQ!jO1G0uO2sQhO'#EsO2zQhO'#ExO3RQhO'#FRO3YQhO'#FYO3aQhO'#F^O3hQhO'#FpOOQW'#G`'#G`OOQW'#GS'#GSO3oQhO1G0wOsQhO'#EtOsQhO'#EyOsQhO'#E}OOQW'#FP'#FPOsQhO'#FSOsQhO'#FWO!]QhO'#FZO!]QhO'#F_OOQW'#Fc'#FcOOQW'#Fe'#FeO3vQhO'#FfOsQhO'#FhOsQhO'#FjOsQhO'#FlOsQhO'#FnOsQhO'#FqOsQhO'#FuOsQhO'#FwOOOP1G0w1G0wOOOP1G/[1G/[O3{QhO,59sOOOP1G/e1G/eO4QQhO,59|OOOP1G/j1G/jO4VQhO,5:ROOOP1G/q1G/qO4[QhO,5:]OOOP1G/y1G/yO4aQhO,5:bOOOS-E9}-E9}OOOP1G0U1G0UO4fQxO'#ESOOOQ-E:O-E:OOOOP1G0[1G0[O4kQxO'#EYOOOP1G0n1G0nO4pQhO,5;VOOQW1G.n1G.nO7XQ!jO1G.qO9oQ!jO1G.qOOQW'#DO'#DOO9yQhO,59hOOQW-E9y-E9yOOOP7+$W7+$WO;sQ!jO1G.qO;zQ!jO1G.uOsQhO1G.yO>aQhO7+$sOOOP7+$s7+$sOOOP7+$w7+$wOOOP7+${7+${OOOP7+%Q7+%QOOOP7+%V7+%VOsQhO'#F|O>iQhO7+%ZOOOP7+%Z7+%ZOsQhO7+%^OsQhO7+%fO>qQhO'#GOO>vQhO7+%nOOOP7+%n7+%nO?OQhO7+%nO?TQhO7+%|OOOP7+%|7+%|O!]QhO'#E`OOQW'#GR'#GRO?]QhO7+&OOsQhO'#E`OOOP7+&O7+&OOOOP7+&U7+&UO?kQhO7+&WOOOP7+&W7+&WOOOP7+&Z7+&ZOOOP7+&_7+&_OOOP7+&a7+&aOOQW,5;_,5;_O2sQhO,5;_OOQW'#Ev'#EvOOQW,5;d,5;dO2zQhO,5;dOOQW'#E{'#E{OOQW,5;m,5;mO3RQhO,5;mOOQW'#FU'#FUOOQW,5;t,5;tO3YQhO,5;tOOQW'#F['#F[OOQW,5;x,5;xO3aQhO,5;xOOQW'#Fa'#FaOOQW,5<[,5<[O3hQhO,5<[OOQW'#Fs'#FsOOQW-E:Q-E:QOOOP7+&c7+&cO?sQ!jO,5;`OA^Q!jO,5;eOBwQ!jO,5;iODtQ!jO,5;nOF_Q!jO,5;rOHQQhO,5;uOHVQhO,5;yOH[QhO,5<QOJRQ!jO,5<SOKtQ!jO,5<UOMdQ!jO,5<WO! aQ!jO,5<YO!#SQ!jO,5<]O!$mQ!jO,5<aO!&jQ!jO,5<cOOOP1G/_1G/_OOOP1G/h1G/hOOOP1G/m1G/mOOOP1G/w1G/wOOOP1G/|1G/|O!(gQhO,5:nO!(lQhO,5:tOOOP1G0q1G0qOsQhO1G/SO!(qQ!jO7+$eOOOP<<H_<<H_O!)SQ!jO,5<hOOQW-E9z-E9zOOOP<<Hu<<HuO!+kQ!jO<<HxO!+rQ!jO<<IQOOQW,5<j,5<jOOQW-E9|-E9|OOOP<<IY<<IYO!+yQhO<<IYOOOP<<Ih<<IhO!,RQhO,5:zOOQW-E:P-E:POOOP<<Ij<<IjO!,WQ!jO,5:zOOOP<<Ir<<IrOOQW1G0y1G0yOOQW1G1O1G1OOOQW1G1X1G1XOOQW1G1`1G1`OOQW1G1d1G1dOOQW1G1v1G1vO!.^QhO1G1^OsQhO1G1aOsQhO1G1eO!0QQhO1G1lO!1tQhO1G1lO!1yQhO1G1nOOQW'#GT'#GTO!3mQhO1G1pO!5dQhO1G1tOOOP1G0Y1G0YOOOP1G0`1G0`O!7WQ!jO7+$nOOQW<<HP<<HPOOQW'#Dp'#DpO!9PQhO'#DoOOQW'#F}'#F}O!:jQhOAN>dOOOPAN>dAN>dO!:rQhOAN>lOOOPAN>lAN>lO!:zQhOAN>tOOOPAN>tAN>tOsQhO1G0fO!]QhO1G0fO!;SQ!jO7+&{O!<cQ!jO7+'PO!=rQhO7+'WOOQW-E:R-E:RO!?fQhO<<HYOsQhO,5:ZOOQW-E9{-E9{OOOPG24OG24OOOOPG24WG24WOOOPG24`G24`O!A`Q!jO7+&QOOQW7+&Q7+&QO!CcQhO<<JgO!DsQhO<<JkO!FTQhO<<JrO!GwQ!jO1G/u",stateData:"!Ik~O$}OSUOS~OPROQSO$yPO~O$yPOPWXQWX$xWX~OfeOifOjfOkfOlfOmfOnfOofO%QbO~OvhOwgOziO!OjO!QkO!TlO!YmO!^nO!aoO!ipO!mqO!orO!qsO!ttO!zuO#PvO#RwO#XxO#ZyO#^zO#b{O#d|O#f}O~OPROQSOR!RO$yPO~OPROQSOR!UO$yPO~OPROQSOR!XO$yPO~OPROQSOR![O$yPO~OPROQSOR!_O$yPO~O${!`O~O$z!cO~OPROQSOR!hO$yPO~O]!jO`!qOa!kOb!lOq!mO~OX!pO~P%}Od!rOX%PX]%PX`%PXa%PXb%PXq%PXh%PXw%PXt%PX#T%PX#U%PXm%PX#i%PX#k%PX#n%PX#r%PX#t%PX#w%PX#{%PX$S%PX$W%PX$Z%PX$]%PX$_%PX$a%PX$c%PX$f%PX$j%PX$l%PX#p%PX#y%PX$h%PXe%PX%Q%PX#V%PX$P%PX$U%PX~Oq!mOw!vO~PsOw!yO~Ow#PO~Ow#QO~On#RO~Ow#SO~Ow#TO~Om#oO#U#lO#i#fO#n#gO#r#hO#t#iO#w#jO#{#kO$S#mO$W#nO$Z#pO$]#qO$_#rO$a#sO$c#tO$f#uO$j#vO$l#wO~Ow#xO~P)yO$yPOPWXQWXRWX~O|#zO~O!V#|O~O![$OO~O!f$QO~O!k$SO~O${!`OT!uX~OT$VO~O$z!cOS!{X~OS$YO~O#`$[O~O^$]O~O%Q$`O~OX$cOq!mO~O]!jO`!qOa!kOb!lOh$fO~Ow$hO~P%}Oq!mOw$hO~O]!jO`!qOa!kOb!lOw$iO~O]!jO`!qOa!kOb!lOw$jO~O]!jO`!qOa!kOb!lOw$kO~O]!jO`!qOa!kOb!lOw$lO~O]!jO`!qOa!kOb!lOt$mO~Ow$oO~P/`O!b$pO~O!b$qO~Os$uOt$rOw$tO~Ow$wO~P%}O]!jO`!qOa!kOb!lOt$xO#T${O#U${O~Ow$|O~P0fO]!jO`!qOa!kOb!lOw$}O~Ow%PO~P%}O]!jO`!qOa!kOb!lOw%QO~O]!jO`!qOa!kOb!lOw%RO~O]!jO`!qOa!kOb!lOw%SO~O#k%VO~P)yO#p%YO~P)yO#y%]O~P)yO$P%`O~P)yO$U%cO~P)yO$h%fO~P)yOw%hO~P)yOn%pO~Ow%xO~Ow%yO~Ow%zO~Ow%{O~Ow%|O~O!w%}O~O!}&OO~Ow&PO~O]!jOX_i`_ib_iq_ih_iw_it_i#T_i#U_im_i#i_i#k_i#n_i#r_i#t_i#w_i#{_i$S_i$W_i$Z_i$]_i$__i$a_i$c_i$f_i$j_i$l_i#p_i#y_i$h_ie_i%Q_i#V_i$P_i$U_i~Oa_i~P4uO]!jOa!kOX_iq_ih_iw_it_i#T_i#U_im_i#i_i#k_i#n_i#r_i#t_i#w_i#{_i$S_i$W_i$Z_i$]_i$__i$a_i$c_i$f_i$j_i$l_i#p_i#y_i$h_ie_i%Q_i#V_i$P_i$U_i~O`!qOb!lO~P7`Os&QOXpaqpawpampa#Upa#ipa#npa#rpa#tpa#wpa#{pa$Spa$Wpa$Zpa$]pa$_pa$apa$cpa$fpa$jpa$lpa#kpa#ppa#ypa$Ppa$Upa$hpa~Oa!kO~P4uO]!jO`!qOa!kOb!lOXciqcihciwcitci#Tci#Ucimci#ici#kci#nci#rci#tci#wci#{ci$Sci$Wci$Zci$]ci$_ci$aci$cci$fci$jci$lci#pci#yci$hcieci%Qci#Vci$Pci$Uci~Oq!mOw&SO~Ot$mOw&VO~On&YO~Ot$rOw&[O~On&]O~Oq!mOw&^O~Ot$xOw&aO#T${O#U${O~Oq!mOw&cO~O]!jO`!qOa!kOb!lOm#ha#U#ha#i#ha#k#ha#n#ha#r#ha#t#ha#w#ha#{#ha$S#ha$W#ha$Z#ha$]#ha$_#ha$a#ha$c#ha$f#ha$j#ha$l#ha~O]!jO`!qOa!kOb!lOm#ma#U#ma#i#ma#n#ma#p#ma#r#ma#t#ma#w#ma#{#ma$S#ma$W#ma$Z#ma$]#ma$_#ma$a#ma$c#ma$f#ma$j#ma$l#ma~O]!jO`!qOa!kOb!lOm#qaw#qa#U#qa#i#qa#n#qa#r#qa#t#qa#w#qa#{#qa$S#qa$W#qa$Z#qa$]#qa$_#qa$a#qa$c#qa$f#qa$j#qa$l#qa#k#qa#p#qa#y#qa$P#qa$U#qa$h#qa~O]!jO`!qOa!kOb!lOm#va#U#va#i#va#n#va#r#va#t#va#w#va#y#va#{#va$S#va$W#va$Z#va$]#va$_#va$a#va$c#va$f#va$j#va$l#va~Om#zaw#za#U#za#i#za#n#za#r#za#t#za#w#za#{#za$S#za$W#za$Z#za$]#za$_#za$a#za$c#za$f#za$j#za$l#za#k#za#p#za#y#za$P#za$U#za$h#za~P/`O!b&kO~O!b&lO~Os&nOt$rOm$Yaw$Ya#U$Ya#i$Ya#n$Ya#r$Ya#t$Ya#w$Ya#{$Ya$S$Ya$W$Ya$Z$Ya$]$Ya$_$Ya$a$Ya$c$Ya$f$Ya$j$Ya$l$Ya#k$Ya#p$Ya#y$Ya$P$Ya$U$Ya$h$Ya~Om$[aw$[a#U$[a#i$[a#n$[a#r$[a#t$[a#w$[a#{$[a$S$[a$W$[a$Z$[a$]$[a$_$[a$a$[a$c$[a$f$[a$j$[a$l$[a#k$[a#p$[a#y$[a$P$[a$U$[a$h$[a~P%}Om$^aw$^a#i$^a#n$^a#r$^a#t$^a#w$^a#{$^a$S$^a$W$^a$Z$^a$]$^a$_$^a$a$^a$c$^a$f$^a$j$^a$l$^a#k$^a#p$^a#y$^a$P$^a$U$^a$h$^a~P0fO]!jO`!qOa!kOb!lOm$`aw$`a#U$`a#i$`a#n$`a#r$`a#t$`a#w$`a#{$`a$S$`a$W$`a$Z$`a$]$`a$_$`a$a$`a$c$`a$f$`a$j$`a$l$`a#k$`a#p$`a#y$`a$P$`a$U$`a$h$`a~Om$baw$ba#U$ba#i$ba#n$ba#r$ba#t$ba#w$ba#{$ba$S$ba$W$ba$Z$ba$]$ba$_$ba$a$ba$c$ba$f$ba$j$ba$l$ba#k$ba#p$ba#y$ba$P$ba$U$ba$h$ba~P%}O]!jO`!qOa!kOb!lOm$ea#U$ea#i$ea#n$ea#r$ea#t$ea#w$ea#{$ea$S$ea$W$ea$Z$ea$]$ea$_$ea$a$ea$c$ea$f$ea$h$ea$j$ea$l$ea~O]!jO`!qOa!kOb!lOm$iaw$ia#U$ia#i$ia#n$ia#r$ia#t$ia#w$ia#{$ia$S$ia$W$ia$Z$ia$]$ia$_$ia$a$ia$c$ia$f$ia$j$ia$l$ia#k$ia#p$ia#y$ia$P$ia$U$ia$h$ia~O]!jO`!qOa!kOb!lOm$kaw$ka#U$ka#i$ka#n$ka#r$ka#t$ka#w$ka#{$ka$S$ka$W$ka$Z$ka$]$ka$_$ka$a$ka$c$ka$f$ka$j$ka$l$ka#k$ka#p$ka#y$ka$P$ka$U$ka$h$ka~Ow&sO~Ow&tO~O]!jO`!qOa!kOb!lOe&vO~O]!jO`!qOa!kOb!lOt$paw$pam$pa#U$pa#i$pa#n$pa#r$pa#t$pa#w$pa#{$pa$S$pa$W$pa$Z$pa$]$pa$_$pa$a$pa$c$pa$f$pa$j$pa$l$pa#k$pa#p$pa#y$pa$P$pa$U$pa$h$paX$paq$pa~O]!jO`!qOa!kOb!lO%Q&wO~Ow&{O~P!+YOw&}O~P!+YOt$rOw'PO~Os'QO~O]!jO`!qOa!kOb!lO#V'ROt#Saw#Sa#T#Sa#U#Sam#Sa#i#Sa#n#Sa#r#Sa#t#Sa#w#Sa#{#Sa$S#Sa$W#Sa$Z#Sa$]#Sa$_#Sa$a#Sa$c#Sa$f#Sa$j#Sa$l#Sa#k#Sa#p#Sa#y#Sa$P#Sa$U#Sa$h#Sa~Ot$mOm#ziw#zi#U#zi#i#zi#n#zi#r#zi#t#zi#w#zi#{#zi$S#zi$W#zi$Z#zi$]#zi$_#zi$a#zi$c#zi$f#zi$j#zi$l#zi#k#zi#p#zi#y#zi$P#zi$U#zi$h#zi~Ot$rOm$Yiw$Yi#U$Yi#i$Yi#n$Yi#r$Yi#t$Yi#w$Yi#{$Yi$S$Yi$W$Yi$Z$Yi$]$Yi$_$Yi$a$Yi$c$Yi$f$Yi$j$Yi$l$Yi#k$Yi#p$Yi#y$Yi$P$Yi$U$Yi$h$Yi~On'UO~Oq!mOm$[iw$[i#U$[i#i$[i#n$[i#r$[i#t$[i#w$[i#{$[i$S$[i$W$[i$Z$[i$]$[i$_$[i$a$[i$c$[i$f$[i$j$[i$l$[i#k$[i#p$[i#y$[i$P$[i$U$[i$h$[i~Ot$xO#T${O#U${Om$^iw$^i#i$^i#n$^i#r$^i#t$^i#w$^i#{$^i$S$^i$W$^i$Z$^i$]$^i$_$^i$a$^i$c$^i$f$^i$j$^i$l$^i#k$^i#p$^i#y$^i$P$^i$U$^i$h$^i~Oq!mOm$biw$bi#U$bi#i$bi#n$bi#r$bi#t$bi#w$bi#{$bi$S$bi$W$bi$Z$bi$]$bi$_$bi$a$bi$c$bi$f$bi$j$bi$l$bi#k$bi#p$bi#y$bi$P$bi$U$bi$h$bi~OXpqqpqwpqmpq#Upq#ipq#npq#rpq#tpq#wpq#{pq$Spq$Wpq$Zpq$]pq$_pq$apq$cpq$fpq$jpq$lpq#kpq#ppq#ypq$Ppq$Upq$hpq~P/`Os'XOw!cX%Q!cXm!cX#U!cX#i!cX#n!cX#r!cX#t!cX#w!cX#{!cX$P!cX$S!cX$W!cX$Z!cX$]!cX$_!cX$a!cX$c!cX$f!cX$j!cX$l!cX$U!cX~Ow'ZO%Q&wO~Ow'[O%Q&wO~Ot$rOw']O~Om#}q#U#}q#i#}q#n#}q#r#}q#t#}q#w#}q#{#}q$P#}q$S#}q$W#}q$Z#}q$]#}q$_#}q$a#}q$c#}q$f#}q$j#}q$l#}q~P!+YOm$Rq#U$Rq#i$Rq#n$Rq#r$Rq#t$Rq#w$Rq#{$Rq$S$Rq$U$Rq$W$Rq$Z$Rq$]$Rq$_$Rq$a$Rq$c$Rq$f$Rq$j$Rq$l$Rq~P!+YOt$rOm$Yqw$Yq#U$Yq#i$Yq#n$Yq#r$Yq#t$Yq#w$Yq#{$Yq$S$Yq$W$Yq$Z$Yq$]$Yq$_$Yq$a$Yq$c$Yq$f$Yq$j$Yq$l$Yq#k$Yq#p$Yq#y$Yq$P$Yq$U$Yq$h$Yq~Ot$mOXpyqpywpympy#Upy#ipy#npy#rpy#tpy#wpy#{py$Spy$Wpy$Zpy$]py$_py$apy$cpy$fpy$jpy$lpy#kpy#ppy#ypy$Ppy$Upy$hpy~O]!jO`!qOa!kOb!lOt#Sqw#Sq#T#Sq#U#Sqm#Sq#i#Sq#n#Sq#r#Sq#t#Sq#w#Sq#{#Sq$S#Sq$W#Sq$Z#Sq$]#Sq$_#Sq$a#Sq$c#Sq$f#Sq$j#Sq$l#Sq#k#Sq#p#Sq#y#Sq$P#Sq$U#Sq$h#Sq~O%Q&wOm#}y#U#}y#i#}y#n#}y#r#}y#t#}y#w#}y#{#}y$P#}y$S#}y$W#}y$Z#}y$]#}y$_#}y$a#}y$c#}y$f#}y$j#}y$l#}y~O%Q&wOm$Ry#U$Ry#i$Ry#n$Ry#r$Ry#t$Ry#w$Ry#{$Ry$S$Ry$U$Ry$W$Ry$Z$Ry$]$Ry$_$Ry$a$Ry$c$Ry$f$Ry$j$Ry$l$Ry~Ot$rOm$Yyw$Yy#U$Yy#i$Yy#n$Yy#r$Yy#t$Yy#w$Yy#{$Yy$S$Yy$W$Yy$Z$Yy$]$Yy$_$Yy$a$Yy$c$Yy$f$Yy$j$Yy$l$Yy#k$Yy#p$Yy#y$Yy$P$Yy$U$Yy$h$Yy~O]!jO`!qOa!kOb!lOw!ci%Q!cim!ci#U!ci#i!ci#n!ci#r!ci#t!ci#w!ci#{!ci$P!ci$S!ci$W!ci$Z!ci$]!ci$_!ci$a!ci$c!ci$f!ci$j!ci$l!ci$U!ci~O",goto:"7j%TPPPPPPPP%UP%U%f&uPP&uPPP&uPPP&uPPPPPPPP'rP(SPP(VPP(V(gP(wP(VP(VP(V(}P)_P(V)eP)uP(VP(V){PP*]*g*qP(V*wP+XP(VP(VP(VP(V+_P+o+rP(V+uP,V,YP(VP(VP,]PPP(VP(VP(V,eP,uP(VP(VP(VP,{-]P-mP,{-sP.TP,{P,{P,{.ZP.kP,{P,{.q/RP,{/XP/iP,{P,{,{P,{P,{P,{P,{P,{/oP0PP,{P,{P0V0u1]1{2Z2m3P3V3]3c4RPPPPPP4X4iP%U7Ym^OTUVWX[`!Q!T!W!Z!^!g!tdRehijlmnvwxyz{|!k!l!q!r#f#g#h#j#k#q#r#s#t#u#v#w$f$m$p$q${&Q&k&l'Q'XQ!}oQ#OpQ%n#lQ%o#mQ&_$xR'_'R!ufRehijlmnvwxyz{|!k!l!q!r#f#g#h#j#k#q#r#s#t#u#v#w$f$m$p$q${&Q&k&l'Q'Xm!nch!o!t!u#U#X$g$v%O%q%t&o&rR$a!mm]OTUVWX[`!Q!T!W!Z!^!gmTOTUVWX[`!Q!T!W!Z!^!gQ!PTR#y!QmUOTUVWX[`!Q!T!W!Z!^!gQ!SUR#{!TmVOTUVWX[`!Q!T!W!Z!^!gQ!VVR#}!WmWOTUVWX[`!Q!T!W!Z!^!ga&y&W&X&z&|'S'T'`'aa&x&W&X&z&|'S'T'`'aQ!YWR$P!ZmXOTUVWX[`!Q!T!W!Z!^!gQ!]XR$R!^mYOTUVWX[`!Q!T!W!Z!^!gR!bYR$U!bmZOTUVWX[`!Q!T!W!Z!^!gR!eZR$X!eS$y#V$zT&p%r&qm[OTUVWX[`!Q!T!W!Z!^!gQ!f[R$Z!gm#c}#]#^#_#`#a#b#e%U%X%[%_%b%em#]}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%T#]R&d%Um#^}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%W#^R&e%Xm#_}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%Z#_R&f%[m#`}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%^#`R&g%_m#a}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%a#aR&h%bm#b}#]#^#_#`#a#b#e%U%X%[%_%b%eQ%d#bR&i%eQ`OQ!QTQ!TUQ!WVQ!ZWQ!^XQ!g[_!i`!Q!T!W!Z!^!gSQO`SaQ!Oi!OTUVWX[!Q!T!W!Z!^!gQ!ocQ!uh^$b!o!u$g$v%O&o&rQ$g!tQ$v#UQ%O#XQ&o%qR&r%tQ$n!|U&U$n&j'WQ&j%mR'W&uQ&z&WQ&|&XW'Y&z&|'`'aQ'`'SR'a'TQ$s#RW&Z$s&m'O'bQ&m%pQ'O&]R'b'UQ!aYR$T!aQ!dZR$W!dQ$z#VR&`$zQ#e}Q%U#]Q%X#^Q%[#_Q%_#`Q%b#aQ%e#b_%g#e%U%X%[%_%b%eQ&q%rR'V&qm_OTUVWX[`!Q!T!W!Z!^!gQcRQ!seQ!thQ!wiQ!xjQ!zlQ!{mQ!|nQ#UvQ#VwQ#WxQ#XyQ#YzQ#Z{Q#[|Q$^!kQ$_!lQ$d!qQ$e!rQ%i#fQ%j#gQ%k#hQ%l#jQ%m#kQ%q#qQ%r#rQ%s#sQ%t#tQ%u#uQ%v#vQ%w#wQ&R$fQ&T$mQ&W$pQ&X$qQ&b${Q&u&QQ'S&kQ'T&lQ'^'QR'c'Xm#d}#]#^#_#`#a#b#e%U%X%[%_%b%e",nodeNames:"⚠ {{ {% {% {% {% InlineComment Template Text }} Interpolation VariableName MemberExpression . PropertyName BinaryExpression contains CompareOp LogicOp AssignmentExpression AssignOp ) ( RangeExpression .. BooleanLiteral empty forloop tablerowloop continue StringLiteral NumberLiteral Filter | FilterName : , Tag TagName %} IfDirective Tag if EndTag endif Tag elsif Tag else UnlessDirective Tag unless EndTag endunless CaseDirective Tag case EndTag endcase Tag when ForDirective Tag for in Parameter ParameterName EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag continue Tag cycle Comment Tag comment CommentText EndTag endcomment RawDirective Tag raw RawText EndTag endraw Tag echo Tag render RenderParameter with for as Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement Tag liquid IfDirective Tag if EndTag endif UnlessDirective Tag unless EndTag endunless Tag elsif Tag else CaseDirective Tag case EndTag endcase Tag when ForDirective Tag EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag Tag cycle Tag echo Tag render Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement",maxTerm:188,nodeProps:[["closedBy",1,"}}",-4,2,3,4,5,"%}",22,")"],["openedBy",9,"{{",21,"(",39,"{%"],["group",-12,11,12,15,19,23,25,26,27,28,29,30,31,"Expression"]],skippedNodes:[0,6],repeatNodeCount:11,tokenData:")T~RkXY!vYZ!v]^!vpq!vqr#Xrs#duv$Uwx$axy$|yz%R{|%W|}&r}!O&w!O!P'T!Q![&a![!]'e!^!_'j!_!`'r!`!a'j!c!}'z#R#S'z#T#o'z#p#q(s#q#r(x%W;'S'z;'S;:j(m<%lO'z~!{S$}~XY!vYZ!v]^!vpq!v~#[P!_!`#_~#dOa~~#gUOY#dZr#drs#ys;'S#d;'S;=`$O<%lO#d~$OOn~~$RP;=`<%l#d~$XP#q#r$[~$aOw~~$dUOY$aZw$awx#yx;'S$a;'S;=`$v<%lO$a~$yP;=`<%l$a~%ROf~~%WOe~P%ZQ!O!P%a!Q![&aP%dP!Q![%gP%lRoP!Q![%g!g!h%u#X#Y%uP%xR{|&R}!O&R!Q![&XP&UP!Q![&XP&^PoP!Q![&XP&fSoP!O!P%a!Q![&a!g!h%u#X#Y%u~&wOt~~&zRuv$U!O!P%a!Q![&a~'YQ]S!O!P'`!Q![%g~'eOh~~'jOs~~'oPa~!_!`#_~'wPd~!_!`#__(TW^WvQ%QT}!O'z!Q!['z!c!}'z#R#S'z#T#o'z%W;'S'z;'S;:j(m<%lO'z_(pP;=`<%l'z~(xOq~~({P#q#r)O~)TOX~",tokenizers:[F,C,D,N,0,1,2,3],topRules:{Template:[0,7]},specialized:[{term:186,get:O=>I[O]||-1},{term:38,get:O=>L[O]||-1}],tokenPrec:0});function o(O,a){return O.split(" ").map(e=>({label:e,type:a}))}const m=o("abs append at_least at_most capitalize ceil compact concat date default divided_by downcase escape escape_once first floor join last lstrip map minus modulo newline_to_br plus prepend remove remove_first replace replace_first reverse round rstrip size slice sort sort_natural split strip strip_html strip_newlines sum times truncate truncatewords uniq upcase url_decode url_encode where","function"),q=o("cycle comment endcomment raw endraw echo increment decrement liquid if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue assign capture endcapture render include","keyword"),f=o("empty forloop tablerowloop in with as","keyword"),H=o("first index index0 last length rindex","property"),B=o("col col0 col_first col_last first index index0 last length rindex rindex0 row","property");function M(O){var a;let{state:e,pos:r}=O,$=u(e).resolveInner(r,-1).enterUnfinishedNodesBefore(r),i=((a=$.childBefore(r))===null||a===void 0?void 0:a.name)||$.name;if($.name=="FilterName")return{type:"filter",node:$};if(O.explicit&&i=="|")return{type:"filter"};if($.name=="TagName")return{type:"tag",node:$};if(O.explicit&&i=="{%")return{type:"tag"};if($.name=="PropertyName"&&$.parent.name=="MemberExpression")return{type:"property",node:$,target:$.parent};if($.name=="."&&$.parent.name=="MemberExpression")return{type:"property",target:$.parent};if($.name=="MemberExpression"&&i==".")return{type:"property",target:$};if($.name=="VariableName")return{type:"expression",from:$.from};let n=O.matchBefore(/[\w\u00c0-\uffff]+$/);return n?{type:"expression",from:n.from}:O.explicit&&$.name!="CommentText"&&$.name!="StringLiteral"&&$.name!="NumberLiteral"&&$.name!="InlineComment"?{type:"expression"}:null}function K(O,a,e,r){let $=[];for(;;){let i=a.getChild("Expression");if(!i)return[];if(i.name=="forloop")return $.length?[]:H;if(i.name=="tablerowloop")return $.length?[]:B;if(i.name=="VariableName"){$.unshift(O.sliceDoc(i.from,i.to));break}else if(i.name=="MemberExpression"){let n=i.getChild("PropertyName");n&&$.unshift(O.sliceDoc(n.from,n.to)),a=i}else return[]}return r?r($,O,e):[]}function J(O={}){let a=O.filters?O.filters.concat(m):m,e=O.tags?O.tags.concat(q):q,r=O.variables?O.variables.concat(f):f,{properties:$}=O;return i=>{var n;let Q=M(i);if(!Q)return null;let s=(n=Q.from)!==null&&n!==void 0?n:Q.node?Q.node.from:i.pos,l;return Q.type=="filter"?l=a:Q.type=="tag"?l=e:Q.type=="expression"?l=r:l=K(i.state,Q.target,i,$),l.length?{options:l,from:s,validFor:/^[\w\u00c0-\uffff]*$/}:null}}const OO=d.inputHandler.of((O,a,e,r)=>r!="%"||a!=e||O.state.doc.sliceString(a-1,e+1)!="{}"?!1:(O.dispatch(O.state.changeByRange($=>({changes:{from:$.from,to:$.to,insert:"%%"},range:y.cursor($.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0));function c(O){return a=>{let e=O.test(a.textAfter);return a.lineIndent(a.node.from)+(e?0:a.unit)}}const $O=S.define({name:"liquid",parser:A.configure({props:[T({"cycle comment endcomment raw endraw echo increment decrement liquid in with as":t.keyword,"empty forloop tablerowloop":t.atom,"if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue":t.controlKeyword,"assign capture endcapture":t.definitionKeyword,contains:t.operatorKeyword,"render include":t.moduleKeyword,VariableName:t.variableName,TagName:t.tagName,FilterName:t.function(t.variableName),PropertyName:t.propertyName,CompareOp:t.compareOperator,AssignOp:t.definitionOperator,LogicOp:t.logicOperator,NumberLiteral:t.number,StringLiteral:t.string,BooleanLiteral:t.bool,InlineComment:t.lineComment,CommentText:t.blockComment,"{% %} {{ }}":t.brace,"( )":t.paren,".":t.derefOperator,", .. : |":t.punctuation}),k.add({Tag:W({closing:"%}"}),"UnlessDirective ForDirective TablerowDirective CaptureDirective":c(/^\s*(\{%-?\s*)?end\w/),IfDirective:c(/^\s*(\{%-?\s*)?(endif|else|elsif)\b/),CaseDirective:c(/^\s*(\{%-?\s*)?(endcase|when)\b/)}),j.add({"UnlessDirective ForDirective TablerowDirective CaptureDirective IfDirective CaseDirective RawDirective Comment"(O){let a=O.firstChild,e=O.lastChild;return!a||a.name!="Tag"?null:{from:a.to,to:e.name=="EndTag"?e.from:O.to}}})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*{%-?\s*(?:end|elsif|else|when|)$/}}),P=_();function w(O){return $O.configure({wrap:g(a=>a.type.isTop?{parser:O.parser,overlay:e=>e.name=="Text"||e.name=="RawText"}:null)},"liquid")}const aO=w(P.language);function rO(O={}){let a=O.base||P,e=a.language==P.language?aO:w(a.language);return new b(e,[a.support,e.data.of({autocomplete:J(O)}),a.language.data.of({closeBrackets:{brackets:["{"]}}),OO])}export{OO as closePercentBrace,rO as liquid,J as liquidCompletionSource,aO as liquidLanguage};