zcb 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/cli.cjs +1 -1
- package/dist/cjs/cli.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/templates/config.ts.hbs +1 -1
- package/dist/esm/cli.mjs +1 -1
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/templates/config.ts.hbs +1 -1
- package/dist/production.analysis.txt +23 -23
- package/dist/types/cjs/cli.d.cts +7 -1
- package/dist/types/cjs/cli.d.cts.map +1 -1
- package/dist/types/cjs/createConfigBuilder.d.cts +4 -4
- package/dist/types/cjs/createConfigBuilder.d.cts.map +1 -1
- package/dist/types/cjs/createConfigParser.d.cts.map +1 -1
- package/dist/types/cjs/transformers/runExperiments.d.cts.map +1 -1
- package/dist/types/cjs/utils/collateDefaultValues.d.cts +2 -2
- package/dist/types/cjs/utils/collateDefaultValues.d.cts.map +1 -1
- package/dist/types/cjs/utils/collateObjectPropertyDefaults.d.cts +2 -2
- package/dist/types/cjs/utils/collateObjectPropertyDefaults.d.cts.map +1 -1
- package/dist/types/cjs/utils/hasArrayInvalidDefaults.d.cts +3 -0
- package/dist/types/cjs/utils/hasArrayInvalidDefaults.d.cts.map +1 -0
- package/dist/types/cjs/utils/hasObjectPropertyDefaults.d.cts +3 -0
- package/dist/types/cjs/utils/hasObjectPropertyDefaults.d.cts.map +1 -0
- package/dist/types/cjs/utils/hasRecordInvalidDefaults.d.cts +3 -0
- package/dist/types/cjs/utils/hasRecordInvalidDefaults.d.cts.map +1 -0
- package/dist/types/cjs/utils/importValidateTransformWriteConfig.d.cts +2 -2
- package/dist/types/cjs/utils/importValidateTransformWriteConfig.d.cts.map +1 -1
- package/dist/types/cjs/utils/isInvalidPropertyOverride.d.cts +1 -1
- package/dist/types/cjs/utils/isInvalidPropertyOverride.d.cts.map +1 -1
- package/dist/types/cjs/utils/isPropertyReservedWord.d.cts.map +1 -1
- package/dist/types/cjs/utils/isSchemaValid.d.cts +2 -2
- package/dist/types/cjs/utils/isSchemaValid.d.cts.map +1 -1
- package/dist/types/cjs/utils/isValidPropertyDefinition.d.cts +2 -2
- package/dist/types/cjs/utils/isValidPropertyDefinition.d.cts.map +1 -1
- package/dist/types/cjs/utils/isValidValue.d.cts.map +1 -1
- package/dist/types/cjs/utils/transformConfig.d.cts.map +1 -1
- package/dist/types/cjs/utils/transformWriteConfig.d.cts.map +1 -1
- package/dist/types/esm/cli.d.ts +7 -1
- package/dist/types/esm/cli.d.ts.map +1 -1
- package/dist/types/esm/createConfigBuilder.d.ts +4 -4
- package/dist/types/esm/createConfigBuilder.d.ts.map +1 -1
- package/dist/types/esm/createConfigParser.d.ts.map +1 -1
- package/dist/types/esm/transformers/runExperiments.d.ts.map +1 -1
- package/dist/types/esm/utils/collateDefaultValues.d.ts +2 -2
- package/dist/types/esm/utils/collateDefaultValues.d.ts.map +1 -1
- package/dist/types/esm/utils/collateObjectPropertyDefaults.d.ts +2 -2
- package/dist/types/esm/utils/collateObjectPropertyDefaults.d.ts.map +1 -1
- package/dist/types/esm/utils/hasArrayInvalidDefaults.d.ts +3 -0
- package/dist/types/esm/utils/hasArrayInvalidDefaults.d.ts.map +1 -0
- package/dist/types/esm/utils/hasObjectPropertyDefaults.d.ts +3 -0
- package/dist/types/esm/utils/hasObjectPropertyDefaults.d.ts.map +1 -0
- package/dist/types/esm/utils/hasRecordInvalidDefaults.d.ts +3 -0
- package/dist/types/esm/utils/hasRecordInvalidDefaults.d.ts.map +1 -0
- package/dist/types/esm/utils/importValidateTransformWriteConfig.d.ts +2 -2
- package/dist/types/esm/utils/importValidateTransformWriteConfig.d.ts.map +1 -1
- package/dist/types/esm/utils/isInvalidPropertyOverride.d.ts +1 -1
- package/dist/types/esm/utils/isInvalidPropertyOverride.d.ts.map +1 -1
- package/dist/types/esm/utils/isPropertyReservedWord.d.ts.map +1 -1
- package/dist/types/esm/utils/isSchemaValid.d.ts +2 -2
- package/dist/types/esm/utils/isSchemaValid.d.ts.map +1 -1
- package/dist/types/esm/utils/isValidPropertyDefinition.d.ts +2 -2
- package/dist/types/esm/utils/isValidPropertyDefinition.d.ts.map +1 -1
- package/dist/types/esm/utils/isValidValue.d.ts.map +1 -1
- package/dist/types/esm/utils/transformConfig.d.ts.map +1 -1
- package/dist/types/esm/utils/transformWriteConfig.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +49 -45
- package/pnpm-workspace.yaml +26 -0
- package/src/__testUtils__/builtConfig.ts +1 -1
- package/src/__testUtils__/configBuilder.ts +29 -23
- package/src/__testUtils__/schema.ts +2 -2
- package/src/cli.ts +9 -3
- package/src/createConfigBuilder.test.ts +30 -26
- package/src/createConfigBuilder.ts +45 -51
- package/src/createConfigParser.ts +1 -1
- package/src/createConfigReader.test.ts +2 -2
- package/src/createConfigReader.ts +2 -2
- package/src/templates/config.ts.hbs +1 -1
- package/src/transformers/cloneNonEnumerableValues.ts +1 -1
- package/src/transformers/runExperiments.ts +16 -5
- package/src/utils/collateDefaultValues.ts +15 -15
- package/src/utils/collateObjectPropertyDefaults.ts +6 -4
- package/src/utils/hasArrayInvalidDefaults.ts +6 -0
- package/src/utils/hasObjectPropertyDefaults.ts +5 -0
- package/src/utils/hasRecordInvalidDefaults.ts +6 -0
- package/src/utils/importValidateTransformWriteConfig.ts +25 -13
- package/src/utils/isInvalidPropertyOverride.ts +2 -2
- package/src/utils/isPropertyReservedWord.ts +1 -1
- package/src/utils/isSchemaValid.ts +2 -2
- package/src/utils/isValidPropertyDefinition.ts +3 -3
- package/src/utils/isValidValue.ts +1 -5
- package/src/utils/transformConfig.ts +8 -2
- package/src/utils/transformWriteConfig.test.ts +1 -1
- package/src/utils/transformWriteConfig.ts +6 -4
- package/dist/types/cjs/utils/arrayHasInvalidDefaults.d.cts +0 -3
- package/dist/types/cjs/utils/arrayHasInvalidDefaults.d.cts.map +0 -1
- package/dist/types/cjs/utils/jsonStringifyReplacer.d.cts +0 -109
- package/dist/types/cjs/utils/jsonStringifyReplacer.d.cts.map +0 -1
- package/dist/types/cjs/utils/objectPropertyHasDefaults.d.cts +0 -3
- package/dist/types/cjs/utils/objectPropertyHasDefaults.d.cts.map +0 -1
- package/dist/types/cjs/utils/recordHasInvalidDefaults.d.cts +0 -3
- package/dist/types/cjs/utils/recordHasInvalidDefaults.d.cts.map +0 -1
- package/dist/types/esm/utils/arrayHasInvalidDefaults.d.ts +0 -3
- package/dist/types/esm/utils/arrayHasInvalidDefaults.d.ts.map +0 -1
- package/dist/types/esm/utils/jsonStringifyReplacer.d.ts +0 -109
- package/dist/types/esm/utils/jsonStringifyReplacer.d.ts.map +0 -1
- package/dist/types/esm/utils/objectPropertyHasDefaults.d.ts +0 -3
- package/dist/types/esm/utils/objectPropertyHasDefaults.d.ts.map +0 -1
- package/dist/types/esm/utils/recordHasInvalidDefaults.d.ts +0 -3
- package/dist/types/esm/utils/recordHasInvalidDefaults.d.ts.map +0 -1
- package/src/__snapshots__/createConfigBuilder.test.ts.snap +0 -30
- package/src/utils/arrayHasInvalidDefaults.ts +0 -6
- package/src/utils/jsonStringifyReplacer.ts +0 -6
- package/src/utils/objectPropertyHasDefaults.ts +0 -5
- package/src/utils/recordHasInvalidDefaults.ts +0 -6
package/README.md
CHANGED
|
@@ -209,7 +209,7 @@ NODE_OPTIONS="--experimental-strip-types" npx zcb watch ./configBuilder.ts ./bui
|
|
|
209
209
|
|
|
210
210
|
```ts
|
|
211
211
|
// ./builtConfig.ts
|
|
212
|
-
/* eslint-disable
|
|
212
|
+
/* eslint-disable import-x/no-default-export, unicorn/numeric-separators-style, unicorn/no-null */
|
|
213
213
|
/* This file is autogenerated, do not edit directly, your changes will not perist. */
|
|
214
214
|
|
|
215
215
|
export default {
|
package/dist/cjs/cli.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("node:fs"),i=require("node:path"),t=require("shelljs"),r=require("yargs"),n=require("yargs/helpers")
|
|
1
|
+
"use strict";var e=require("node:fs"),i=require("node:path"),t=require("shelljs"),r=require("yargs"),n=require("yargs/helpers"),c=require("fs-extra/esm"),a=require("handlebars"),o=require("node:url"),l=require("lodash-es"),s="undefined"!=typeof document?document.currentScript:null;const u=(e,i)=>"__disabled"in i?{action:"DELETE_NODE"}:{value:e},d=(e,i)=>Promise.all(e.map(e=>l.isPlainObject(e)?p(e,i):Array.isArray(e)?d(e,i):e)),p=async(e,i=[])=>{let t={};const r=l.castArray(i);for(const i of r){const r=await Promise.resolve(i(t,e));if("DELETE_NODE"===r.action)return{};if(r.value&&(t=r.value),"SKIP_NODE"===r.action)return t}for(const r in e){const n=e[r];l.isPlainObject(n)?t[r]=await p(n,i):Array.isArray(n)?t[r]=await d(n,i):t[r]=n}return t},f=async(r,{experimentsCallback:n,outputFile:l})=>{const d=[u];var f;n&&d.push((f=n,async(e,i)=>{if("__experiment"in i&&"string"==typeof i.__experiment){const t=await f(i.__experiment,e,i);return e.__experiment={buckets:t,id:i.__experiment},{value:e}}return{value:e}}));const h=i.dirname(o.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:s&&"SCRIPT"===s.tagName.toUpperCase()&&s.src||new URL("cli.cjs",document.baseURI).href)),m=a.compile(e.readFileSync(i.resolve(h,"../templates/config.ts.hbs"),{encoding:"utf8"}))({config:JSON.stringify(await p(r,d),(e,i)=>void 0===i?"undefined":i,2)}).replaceAll(/"([A-Za-z][\dA-Za-z]+)":/g,"$1:").replaceAll('"undefined"',"undefined");t.echo(`zcd watch => writing to file: ${l}`),t.echo(`zcd watch => content to write:\n${m}\n`),c.outputFileSync(i.resolve(process.cwd(),l),m)},h=(e,r,n,c)=>{import(i.resolve(process.cwd(),e)).then(({default:e})=>{e.$validate()||(t.echo(`zcd ${n} => invalid config`),t.echo(`zcd ${n} => config values:\n${e.$toJson()}\n`),t.echo(`zcd ${n} => errors:\n${JSON.stringify(e.$errors(),void 0,2)}\n`),t.exit(1)),t.echo("zcd ${command} => valid config"),t.echo(`zcd ${n} => config values:\n${e.$toJson()}\n`),c?import(i.resolve(process.cwd(),c)).then(({default:i})=>{f(e.$values(),{experimentsCallback:i,outputFile:r})}).catch(e=>{e instanceof Error&&(t.echo(`zcd ${n} => error message: ${e.message}`),e.stack&&t.echo(`zcd ${n} => error stack:\n${e.stack}\n`))}):f(e.$values(),{outputFile:r})}).catch(e=>{e instanceof Error&&(t.echo(`zcd ${n} => error message: ${e.message}`),e.stack&&t.echo(`zcd ${n} => error stack:\n${e.stack}\n`))})},m=e=>e.positional("input-file",{demandOption:!0,desc:"The relative path to the config builder root file",type:"string"}).positional("output-file",{demandOption:!0,desc:"The relative path to the output config file",type:"string"}).option("experiments-callback-file",{desc:"The relative path to the experiment callback file",type:"string"});exports.cli=()=>{r(n.hideBin(process.argv)).command("watch <input-file> <output-file>","Watch a config builder and write config",e=>m(e),r=>{t.echo(`zcd watch => watching file: ${r["input-file"]}`),e.watchFile(i.resolve(process.cwd(),r["input-file"]),()=>{t.echo("zcd watch => file change detected"),h(r["input-file"],r["output-file"],"watch",r["experiments-callback-file"])})}).command("build <input-file> <output-file>","Write config from a config builder",e=>m(e),e=>{t.echo(`zcd build => building file: ${e["input-file"]}`),h(e["input-file"],e["output-file"],"build",e["experiments-callback-file"])}).help().parseAsync()};
|
|
2
2
|
//# sourceMappingURL=cli.cjs.map
|
package/dist/cjs/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.cjs","sources":["../zod-config-builder/src//transformers/removeDisabledSlices.ts","../zod-config-builder/src//utils/transformConfig.ts","../zod-config-builder/src//utils/transformWriteConfig.ts","../zod-config-builder/src//transformers/setupExperiments.ts","../zod-config-builder/src//utils/importValidateTransformWriteConfig.ts","../zod-config-builder/src//cli.ts"],"sourcesContent":["import { type AnyRecord, type TransformConfigHandlerSync } from '../types.ts';\n\nexport const removeDisabledSlices: TransformConfigHandlerSync = <Config extends AnyRecord>(\n clone: Config,\n config: Config,\n) => {\n if ('__disabled' in config) {\n return {\n action: 'DELETE_NODE',\n };\n }\n\n return {\n value: clone,\n };\n};\n","import { castArray, isPlainObject } from 'lodash-es';\nimport { type AnyRecord, type TransformConfigHandler, type TransformConfigHandlerSync } from '../types.ts';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst transformArray = (list: any[], handler: TransformConfigHandler | TransformConfigHandler[]): Promise<any[]> =>\n Promise.all(\n list.map(entry => {\n if (isPlainObject(entry)) {\n return transformConfig(entry, handler);\n }\n\n if (Array.isArray(entry)) {\n return transformArray(entry, handler);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return entry;\n }),\n );\n\nexport const transformConfig = async <Config extends AnyRecord>(\n config: Config,\n handler: TransformConfigHandler | TransformConfigHandler[] = [],\n): Promise<Config> => {\n // Typing gets too complicated without casting.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n let transform = {} as Config;\n const handlers = castArray(handler);\n\n for (const callback of handlers) {\n const result = await Promise.resolve(callback(transform, config));\n\n if (result.action === 'DELETE_NODE') {\n // Typing gets too complicated without casting.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as Config;\n }\n\n if (result.value) {\n transform = result.value;\n }\n\n if (result.action === 'SKIP_NODE') {\n return transform;\n }\n }\n\n for (const key in config) {\n const value = config[key];\n\n if (isPlainObject(value)) {\n transform[key] = await transformConfig(value, handler);\n } else if (Array.isArray(value)) {\n // transformArraySync returns an any type.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n transform[key] = (await transformArray(value, handler)) as Config[Extract<keyof Config, string>];\n } else {\n transform[key] = value;\n }\n }\n\n return transform;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst transformArraySync = (list: any[], handler: TransformConfigHandlerSync | TransformConfigHandlerSync[]): any[] =>\n list.map(entry => {\n if (isPlainObject(entry)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return transformConfigSync(entry, handler);\n }\n\n if (Array.isArray(entry)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return transformArraySync(entry, handler);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return entry;\n });\n\nexport const transformConfigSync = <Config extends AnyRecord>(\n config: Config,\n handler: TransformConfigHandlerSync | TransformConfigHandlerSync[] = [],\n): Config => {\n // Typing gets too complicated without casting.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n let transform = {} as Config;\n const handlers = castArray(handler);\n\n for (const callback of handlers) {\n const result = callback(transform, config);\n\n if (result.action === 'DELETE_NODE') {\n // Typing gets too complicated without casting.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as Config;\n }\n\n if (result.value) {\n transform = result.value;\n }\n\n if (result.action === 'SKIP_NODE') {\n return transform;\n }\n }\n\n for (const key in config) {\n const value = config[key];\n\n if (isPlainObject(value)) {\n transform[key] = transformConfigSync(value, handler);\n } else if (Array.isArray(value)) {\n // transformArraySync returns an any type.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n transform[key] = transformArraySync(value, handler) as Config[Extract<keyof Config, string>];\n } else {\n transform[key] = value;\n }\n }\n\n return transform;\n};\n","import { outputFileSync } from 'fs-extra/esm';\nimport Handlebars from 'handlebars';\nimport { readFileSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport shelljs from 'shelljs';\nimport { removeDisabledSlices } from '../transformers/removeDisabledSlices.ts';\nimport { setupExperiments } from '../transformers/setupExperiments.ts';\nimport { type TransformConfigHandler, type WriteConfigOptions } from '../types.ts';\nimport { transformConfig } from './transformConfig.ts';\n\nexport const transformWriteConfig = async <Config extends object>(\n config: Config,\n { experimentsCallback, outputFile }: WriteConfigOptions,\n) => {\n const handlers: TransformConfigHandler[] = [removeDisabledSlices];\n\n if (experimentsCallback) {\n handlers.push(setupExperiments(experimentsCallback));\n }\n\n const template = Handlebars.compile(\n readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), '../templates/config.ts.hbs'), { encoding: 'utf8' }),\n );\n\n const output = template({\n config: JSON.stringify(\n await transformConfig(config, handlers),\n (_k, v: unknown) => (v === undefined ? 'undefined' : v),\n 2,\n ),\n })\n .replaceAll(/\"([A-Za-z][\\dA-Za-z]+)\":/g, '$1:')\n .replaceAll('\"undefined\"', 'undefined');\n\n shelljs.echo(`zcd watch => writing to file: ${outputFile}`);\n shelljs.echo(`zcd watch => content to write:\\n${output}\\n`);\n outputFileSync(resolve(process.cwd(), outputFile), output);\n};\n","import { type AnyRecord, type SetupExperimentsCallback, type TransformConfigHandler } from '../types.ts';\n\nexport const setupExperiments =\n (callback: SetupExperimentsCallback): TransformConfigHandler =>\n async <Config extends AnyRecord>(clone: Config, config: Config) => {\n if ('__experiment' in config && typeof config.__experiment === 'string') {\n const buckets = await callback(config.__experiment, clone, config);\n\n // @ts-expect-error private property\n clone.__experiment = {\n buckets,\n id: config.__experiment,\n };\n\n return {\n value: clone,\n };\n }\n\n return {\n value: clone,\n };\n };\n","import { resolve } from 'node:path';\nimport shelljs from 'shelljs';\nimport { type Commands } from '../cli.ts';\nimport { type ConfigBuilder } from '../createConfigBuilder.ts';\nimport { type SetupExperimentsCallback } from '../types.ts';\nimport { transformWriteConfig } from './transformWriteConfig.ts';\n\nexport const importValidateTransformWriteConfig = (\n inputFile: string,\n outputFile: string,\n command: Commands,\n experimentCallbackFile?: string,\n) => {\n import(resolve(process.cwd(), inputFile))\n .then(({ default: configBuilder }: { default: ConfigBuilder<object> }) => {\n if (!configBuilder.$validate()) {\n shelljs.echo(`zcd ${command} => invalid config`);\n shelljs.echo(`zcd ${command} => config values:\\n${configBuilder.$toJson()}\\n`);\n shelljs.echo(`zcd ${command} => errors:\\n${JSON.stringify(configBuilder.$errors(), undefined, 2)}\\n`);\n shelljs.exit(1);\n }\n\n shelljs.echo('zcd ${command} => valid config');\n shelljs.echo(`zcd ${command} => config values:\\n${configBuilder.$toJson()}\\n`);\n\n if (experimentCallbackFile) {\n import(resolve(process.cwd(), experimentCallbackFile))\n .then(({ default: experimentsCallback }: { default: SetupExperimentsCallback }) => {\n void transformWriteConfig(configBuilder.$values(), { experimentsCallback, outputFile });\n })\n .catch((error: unknown) => {\n if (error instanceof Error) {\n shelljs.echo(`zcd ${command} => error message: ${error.message}`);\n\n if (error.stack) {\n shelljs.echo(`zcd ${command} => error stack:\\n${error.stack}\\n`);\n }\n }\n });\n\n return;\n }\n\n void transformWriteConfig(configBuilder.$values(), { outputFile });\n })\n .catch((error: unknown) => {\n if (error instanceof Error) {\n shelljs.echo(`zcd ${command} => error message: ${error.message}`);\n\n if (error.stack) {\n shelljs.echo(`zcd ${command} => error stack:\\n${error.stack}\\n`);\n }\n }\n });\n};\n","import { watchFile } from 'node:fs';\nimport { resolve } from 'node:path';\nimport shelljs from 'shelljs';\nimport yargs, { type Argv } from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { importValidateTransformWriteConfig } from './utils/importValidateTransformWriteConfig.ts';\n\nexport type Commands = 'build' | 'watch';\n\nconst generateArguments = (cmdYargs: Argv) =>\n cmdYargs\n .positional('input-file', {\n demandOption: true,\n desc: 'The relative path to the config builder root file',\n type: 'string',\n })\n .positional('output-file', {\n demandOption: true,\n desc: 'The relative path to the output config file',\n type: 'string',\n })\n .option('experiments-callback-file', {\n desc: 'The relative path to the experiment callback file',\n type: 'string',\n });\n\nexport const cli = () => {\n // yargs does not provide a way to pass generic to type args.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const argv = yargs(hideBin(process.argv)) as Argv<{\n 'experiments-callback-file'?: string;\n 'input-file': string;\n 'output-file': string;\n }>;\n\n void argv\n .command(\n 'watch <input-file> <output-file>',\n 'Watch a config builder and write config',\n cmdYargs => generateArguments(cmdYargs),\n cmdYargs => {\n shelljs.echo(`zcd watch => watching file: ${cmdYargs['input-file']}`);\n\n watchFile(resolve(process.cwd(), cmdYargs['input-file']), () => {\n shelljs.echo('zcd watch => file change detected');\n\n importValidateTransformWriteConfig(\n cmdYargs['input-file'],\n cmdYargs['output-file'],\n 'watch',\n cmdYargs['experiments-callback-file'],\n );\n });\n },\n )\n .command(\n 'build <input-file> <output-file>',\n 'Write config from a config builder',\n cmdYargs => generateArguments(cmdYargs),\n cmdYargs => {\n shelljs.echo(`zcd build => building file: ${cmdYargs['input-file']}`);\n\n importValidateTransformWriteConfig(\n cmdYargs['input-file'],\n cmdYargs['output-file'],\n 'build',\n cmdYargs['experiments-callback-file'],\n );\n },\n )\n .help()\n .parseAsync();\n};\n"],"names":["removeDisabledSlices","clone","config","action","value","transformArray","list","handler","Promise","all","map","entry","isPlainObject","transformConfig","Array","isArray","async","transform","handlers","castArray","callback","result","resolve","key","transformWriteConfig","experimentsCallback","outputFile","push","__experiment","buckets","id","output","Handlebars","compile","readFileSync","dirname","fileURLToPath","document","require","pathToFileURL","__filename","href","_documentCurrentScript","tagName","toUpperCase","src","URL","baseURI","encoding","template","JSON","stringify","_k","v","undefined","replaceAll","shelljs","echo","outputFileSync","process","cwd","importValidateTransformWriteConfig","inputFile","command","experimentCallbackFile","import","then","default","configBuilder","$validate","$toJson","$errors","exit","$values","catch","error","Error","message","stack","generateArguments","cmdYargs","positional","demandOption","desc","type","option","yargs","hideBin","argv","watchFile","help","parseAsync"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.cjs","sources":["../../src/transformers/removeDisabledSlices.ts","../../src/utils/transformConfig.ts","../../src/utils/transformWriteConfig.ts","../../src/transformers/setupExperiments.ts","../../src/utils/importValidateTransformWriteConfig.ts","../../src/cli.ts"],"sourcesContent":["import { type AnyRecord, type TransformConfigHandlerSync } from '../types.ts';\n\nexport const removeDisabledSlices: TransformConfigHandlerSync = <Config extends AnyRecord>(\n clone: Config,\n config: Config,\n) => {\n if ('__disabled' in config) {\n return {\n action: 'DELETE_NODE',\n };\n }\n\n return {\n value: clone,\n };\n};\n","import { castArray, isPlainObject } from 'lodash-es';\nimport { type AnyRecord, type TransformConfigHandler, type TransformConfigHandlerSync } from '../types.ts';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst transformArray = (list: any[], handler: TransformConfigHandler | TransformConfigHandler[]): Promise<any[]> =>\n Promise.all(\n list.map(entry => {\n if (isPlainObject(entry)) {\n return transformConfig(entry, handler);\n }\n\n if (Array.isArray(entry)) {\n return transformArray(entry, handler);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return entry;\n }),\n );\n\nexport const transformConfig = async <Config extends AnyRecord>(\n config: Config,\n handler: TransformConfigHandler | TransformConfigHandler[] = [],\n): Promise<Config> => {\n // Typing gets too complicated without casting.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n let transform = {} as Config;\n const handlers = castArray(handler);\n\n for (const callback of handlers) {\n const result = await Promise.resolve(callback(transform, config));\n\n if (result.action === 'DELETE_NODE') {\n // Typing gets too complicated without casting.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as Config;\n }\n\n if (result.value) {\n transform = result.value;\n }\n\n if (result.action === 'SKIP_NODE') {\n return transform;\n }\n }\n\n for (const key in config) {\n const value = config[key];\n\n if (isPlainObject(value)) {\n transform[key] = await transformConfig(value, handler);\n } else if (Array.isArray(value)) {\n // TODO: Need to look at this\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n transform[key] = (await transformArray(value, handler)) as Config[Extract<keyof Config, string>];\n } else {\n transform[key] = value;\n }\n }\n\n return transform;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst transformArraySync = (list: any[], handler: TransformConfigHandlerSync | TransformConfigHandlerSync[]): any[] =>\n list.map(entry => {\n if (isPlainObject(entry)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return transformConfigSync(entry, handler);\n }\n\n if (Array.isArray(entry)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return transformArraySync(entry, handler);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return entry;\n });\n\nexport const transformConfigSync = <Config extends AnyRecord>(\n config: Config,\n handler: TransformConfigHandlerSync | TransformConfigHandlerSync[] = [],\n): Config => {\n // Typing gets too complicated without casting.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n let transform = {} as Config;\n const handlers = castArray(handler);\n\n for (const callback of handlers) {\n const result = callback(transform, config);\n\n if (result.action === 'DELETE_NODE') {\n // Typing gets too complicated without casting.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as Config;\n }\n\n if (result.value) {\n transform = result.value;\n }\n\n if (result.action === 'SKIP_NODE') {\n return transform;\n }\n }\n\n for (const key in config) {\n // TODO: Need to look at this\n\n const value = config[key];\n\n if (isPlainObject(value)) {\n // TODO: Need to look at this\n\n transform[key] = transformConfigSync(value, handler);\n } else if (Array.isArray(value)) {\n // TODO: Need to look at this\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n transform[key] = transformArraySync(value, handler) as Config[Extract<keyof Config, string>];\n } else {\n // TODO: Need to look at this\n\n transform[key] = value;\n }\n }\n\n return transform;\n};\n","import { outputFileSync } from 'fs-extra/esm';\nimport Handlebars from 'handlebars';\nimport { readFileSync } from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport shelljs from 'shelljs';\nimport { removeDisabledSlices } from '../transformers/removeDisabledSlices.ts';\nimport { setupExperiments } from '../transformers/setupExperiments.ts';\nimport { type TransformConfigHandler, type WriteConfigOptions } from '../types.ts';\nimport { transformConfig } from './transformConfig.ts';\n\nexport const transformWriteConfig = async <Config extends object>(\n config: Config,\n { experimentsCallback, outputFile }: WriteConfigOptions,\n): Promise<void> => {\n const handlers: TransformConfigHandler[] = [removeDisabledSlices];\n\n if (experimentsCallback) {\n handlers.push(setupExperiments(experimentsCallback));\n }\n\n const dirname = path.dirname(fileURLToPath(import.meta.url));\n\n const template = Handlebars.compile(\n readFileSync(path.resolve(dirname, '../templates/config.ts.hbs'), { encoding: 'utf8' }),\n );\n\n const output = template({\n config: JSON.stringify(\n await transformConfig(config, handlers),\n (_k, v: unknown) => (v === undefined ? 'undefined' : v),\n 2,\n ),\n })\n .replaceAll(/\"([A-Za-z][\\dA-Za-z]+)\":/g, '$1:')\n .replaceAll('\"undefined\"', 'undefined');\n\n shelljs.echo(`zcd watch => writing to file: ${outputFile}`);\n shelljs.echo(`zcd watch => content to write:\\n${output}\\n`);\n outputFileSync(path.resolve(process.cwd(), outputFile), output);\n};\n","import { type AnyRecord, type SetupExperimentsCallback, type TransformConfigHandler } from '../types.ts';\n\nexport const setupExperiments =\n (callback: SetupExperimentsCallback): TransformConfigHandler =>\n async <Config extends AnyRecord>(clone: Config, config: Config) => {\n if ('__experiment' in config && typeof config.__experiment === 'string') {\n const buckets = await callback(config.__experiment, clone, config);\n\n // @ts-expect-error private property\n clone.__experiment = {\n buckets,\n id: config.__experiment,\n };\n\n return {\n value: clone,\n };\n }\n\n return {\n value: clone,\n };\n };\n","import { resolve } from 'node:path';\nimport shelljs from 'shelljs';\nimport { type CliCommands } from '../cli.ts';\nimport { type ConfigBuilder } from '../createConfigBuilder.ts';\nimport { type SetupExperimentsCallback } from '../types.ts';\nimport { transformWriteConfig } from './transformWriteConfig.ts';\n\nexport const importValidateTransformWriteConfig = (\n inputFile: string,\n outputFile: string,\n command: CliCommands,\n experimentCallbackFile?: string,\n): void => {\n import(resolve(process.cwd(), inputFile))\n // TODO: Will revisit\n // eslint-disable-next-line unicorn/prefer-await\n .then(({ default: configBuilder }: { default: ConfigBuilder<object> }) => {\n if (!configBuilder.$validate()) {\n shelljs.echo(`zcd ${command} => invalid config`);\n shelljs.echo(`zcd ${command} => config values:\\n${configBuilder.$toJson()}\\n`);\n shelljs.echo(`zcd ${command} => errors:\\n${JSON.stringify(configBuilder.$errors(), undefined, 2)}\\n`);\n shelljs.exit(1);\n }\n\n shelljs.echo('zcd ${command} => valid config');\n shelljs.echo(`zcd ${command} => config values:\\n${configBuilder.$toJson()}\\n`);\n\n if (experimentCallbackFile) {\n import(resolve(process.cwd(), experimentCallbackFile))\n // TODO: Will revisit\n // eslint-disable-next-line unicorn/prefer-await\n .then(({ default: experimentsCallback }: { default: SetupExperimentsCallback }) => {\n void transformWriteConfig(configBuilder.$values(), { experimentsCallback, outputFile });\n })\n // TODO: Will revisit\n // eslint-disable-next-line unicorn/prefer-await\n .catch((error: unknown) => {\n if (!(error instanceof Error)) {\n return;\n }\n\n shelljs.echo(`zcd ${command} => error message: ${error.message}`);\n\n if (error.stack) {\n shelljs.echo(`zcd ${command} => error stack:\\n${error.stack}\\n`);\n }\n });\n\n return;\n }\n\n void transformWriteConfig(configBuilder.$values(), { outputFile });\n })\n // TODO: Will revisit\n // eslint-disable-next-line unicorn/prefer-await\n .catch((error: unknown) => {\n if (!(error instanceof Error)) {\n return;\n }\n\n shelljs.echo(`zcd ${command} => error message: ${error.message}`);\n\n if (error.stack) {\n shelljs.echo(`zcd ${command} => error stack:\\n${error.stack}\\n`);\n }\n });\n};\n","import { watchFile } from 'node:fs';\nimport { resolve } from 'node:path';\nimport shelljs from 'shelljs';\nimport yargs, { type Argv } from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { importValidateTransformWriteConfig } from './utils/importValidateTransformWriteConfig.ts';\n\nexport type CliCommands = 'build' | 'watch';\n\nexport type CliArguments = Argv<{\n 'experiments-callback-file'?: string;\n 'input-file': string;\n 'output-file': string;\n}>;\n\nconst generateArguments = (cmdYargs: Argv): CliArguments =>\n cmdYargs\n .positional('input-file', {\n demandOption: true,\n desc: 'The relative path to the config builder root file',\n type: 'string',\n })\n .positional('output-file', {\n demandOption: true,\n desc: 'The relative path to the output config file',\n type: 'string',\n })\n .option('experiments-callback-file', {\n desc: 'The relative path to the experiment callback file',\n type: 'string',\n });\n\nexport const cli = (): void => {\n // yargs does not provide a way to pass generic to type args.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const argv = yargs(hideBin(process.argv)) as Argv<{\n 'experiments-callback-file'?: string;\n 'input-file': string;\n 'output-file': string;\n }>;\n\n void argv\n .command(\n 'watch <input-file> <output-file>',\n 'Watch a config builder and write config',\n cmdYargs => generateArguments(cmdYargs),\n cmdYargs => {\n shelljs.echo(`zcd watch => watching file: ${cmdYargs['input-file']}`);\n\n watchFile(resolve(process.cwd(), cmdYargs['input-file']), () => {\n shelljs.echo('zcd watch => file change detected');\n\n importValidateTransformWriteConfig(\n cmdYargs['input-file'],\n cmdYargs['output-file'],\n 'watch',\n cmdYargs['experiments-callback-file'],\n );\n });\n },\n )\n .command(\n 'build <input-file> <output-file>',\n 'Write config from a config builder',\n cmdYargs => generateArguments(cmdYargs),\n cmdYargs => {\n shelljs.echo(`zcd build => building file: ${cmdYargs['input-file']}`);\n\n importValidateTransformWriteConfig(\n cmdYargs['input-file'],\n cmdYargs['output-file'],\n 'build',\n cmdYargs['experiments-callback-file'],\n );\n },\n )\n .help()\n .parseAsync();\n};\n"],"names":["removeDisabledSlices","clone","config","action","value","transformArray","list","handler","Promise","all","map","entry","isPlainObject","transformConfig","Array","isArray","async","transform","handlers","castArray","callback","result","resolve","key","transformWriteConfig","experimentsCallback","outputFile","push","__experiment","buckets","id","dirname","path","fileURLToPath","document","require","pathToFileURL","__filename","href","_documentCurrentScript","tagName","toUpperCase","src","URL","baseURI","output","Handlebars","compile","readFileSync","encoding","template","JSON","stringify","_k","v","undefined","replaceAll","shelljs","echo","outputFileSync","process","cwd","importValidateTransformWriteConfig","inputFile","command","experimentCallbackFile","import","then","default","configBuilder","$validate","$toJson","$errors","exit","$values","catch","error","Error","message","stack","generateArguments","cmdYargs","positional","demandOption","desc","type","option","yargs","hideBin","argv","watchFile","help","parseAsync"],"mappings":"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"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=require("lodash-es"),e=require("uuid"),i=require("zod-to-json-schema");require("core-js/modules/es.set.difference.v2.js"),require("core-js/modules/es.set.intersection.v2.js"),require("core-js/modules/es.set.is-disjoint-from.v2.js"),require("core-js/modules/es.set.is-subset-of.v2.js"),require("core-js/modules/es.set.is-superset-of.v2.js"),require("core-js/modules/es.set.symmetric-difference.v2.js"),require("core-js/modules/es.set.union.v2.js");var r=require("zod");require("core-js/modules/es.array.push.js");const n=["__callbacks","__disabled","__experiment","__id","__type","__zcb"],o=(a,e)=>{for(const i of n)i in e&&Object.defineProperty(a,i,{configurable:!1,enumerable:!1,value:e[i]});return{value:a}},t=a=>{const{items:e}=a;return e&&"object"==typeof e&&"default"in e},c=e=>{const{properties:i}=e;if(i&&(a=>a.properties&&Object.values(a.properties).some(a=>"object"==typeof a&&"default"in a))(e))return Object.keys(i).reduce((e,r)=>{const n=i[r];return!n||a.isBoolean(n)||"default"in n&&!a.isUndefined(n.default)&&(e[r]=n.default),e},{})},s=new Set(["$disable","$errors","$experiment","$extend","$flush","$fork","$toJson","$validate","$values"]),u=a=>s.has(a),A=a=>"object"==typeof a,l=a=>a.additionalProperties&&"object"==typeof a.additionalProperties&&"default"in a.additionalProperties,m=a=>"function"==typeof a,d=(a,e=!1)=>!e&&void 0!==a,f=(e,i=0)=>{if(a.isPlainObject(e)){const a=e;return!0===a.__zcb||!!(i<1&&Object.values(a).every(a=>f(a,i+1)))}return!Array.isArray(e)||!!e.every(a=>f(a,i+1))},p=(a,e)=>e instanceof r.ZodType?i.zodToJsonSchema(e,{errorMessages:!0}):e,h=(e,i)=>Promise.all(e.map(e=>a.isPlainObject(e)?g(e,i):Array.isArray(e)?h(e,i):e)),g=async(e,i=[])=>{let r={};const n=a.castArray(i);for(const a of n){const i=await Promise.resolve(a(r,e));if("DELETE_NODE"===i.action)return{};if(i.value&&(r=i.value),"SKIP_NODE"===i.action)return r}for(const n in e){const o=e[n];a.isPlainObject(o)?r[n]=await g(o,i):Array.isArray(o)?r[n]=await h(o,i):r[n]=o}return r},b=(e,i)=>e.map(e=>a.isPlainObject(e)?y(e,i):Array.isArray(e)?b(e,i):e),y=(e,i=[])=>{let r={};const n=a.castArray(i);for(const a of n){const i=a(r,e);if("DELETE_NODE"===i.action)return{};if(i.value&&(r=i.value),"SKIP_NODE"===i.action)return r}for(const n in e){const o=e[n];a.isPlainObject(o)?r[n]=y(o,i):Array.isArray(o)?r[n]=b(o,i):r[n]=o}return r},P=(r,n={},h={},g={})=>{const b=i.zodToJsonSchema(r);if("object"!==b.type)throw new Error(`The root type of a config schema must be "object", but received "${String(b.type)}"`);const k=n.overrides?.uuid??e.v4,v=()=>{const e=a.merge(a.cloneDeep(g),(a=>{const e={};for(const i in a.properties){if(u(i))throw new Error(`"${i}" is a reserved keyword within the config builder. Please use a different property name. The full list of reserved keywords is: ${[...s].join(", ")}`);const r=i,n=a.properties[i];if(A(n)){if(n.default&&(e[r]=n.default),"array"===n.type&&t(n))throw new Error(`When setting schema array defaults for the array assigned to "${String(r)}", set them on the array and not the item.`);if("object"===n.type){if(l(n))throw new Error(`When setting schema property defaults for the value of the record assigned to "${String(r)}", set them on the record and not the value.`);const a=c(n);a&&(e[r]=a)}}}return e})(b));var i;return i=e,Object.defineProperty(i,"__zcb",{configurable:!1,enumerable:!1,value:!0}),Object.defineProperty(i,"__id",{configurable:!1,enumerable:!1,value:k()}),n.type&&Object.defineProperty(i,"__type",{configurable:!1,enumerable:!1,value:n.type}),e};let E=v(),S={...h};const M={$disable:()=>(Object.defineProperty(E,"__disabled",{configurable:!1,enumerable:!1,value:!0}),M),$errors:()=>{try{return r.parse(M.$values()),[]}catch(a){return a.errors}},$experiment:a=>(Object.defineProperty(E,"__experiment",{configurable:!1,enumerable:!1,value:a}),M),$extend:a=>{E=y(a.$values(),[o]),S={...a.__callbacks}},$flush:()=>{const a=M.$values();return E=v(),a},$fork:()=>P(r,n,h,g),$toJson:()=>JSON.stringify(M.$values(),p,2),$validate:()=>{try{return r.parse(M.$values()),!0}catch(a){return console.error(a),!1}},$values:()=>{for(const a in S){const e=S[a];e&&(E[a]=e(E))}return E}};Object.defineProperty(M,"__callbacks",{configurable:!1,enumerable:!1,value:S});for(const a in b.properties){if(u(a))throw new Error(`"${a}" is a reserved keyword within the config builder. Please use a different property name. The full list of reserved keywords is: ${[...s].join(", ")}`);const e=a;b.required?.includes(a)||a in E||(E[a]=void 0),M[e]=(a,i)=>{if(d(E[e],i))throw new Error(`A value already exists for "${String(e)}". You may be trying to add a new values before flushing the old one. If you intended to override the existing value, pass in true as the second argument.`);let r;if(!f(a))throw new Error(`"${String(e)}" value has a depth greater than ${String(1)}. To pass in objects with a depth greater than ${String(1)}, create a builder for that config slice.`);return m(a)?(S[e]=a,r=a(E)):r=a,E[e]=r,M}}return M},k=(e,i)=>a.get(e,i),v=e=>({read:(i,r)=>{const n=k(e,i);if(a.isPlainObject(n)||Array.isArray(n)&&n.some(e=>a.isPlainObject(e)))throw new Error("Path resolved to an object or an array of objects, but `read` can only resolve to a primitive value or an array of primitives. Use the `scope` method instead.");if(!r)return n;if(!a.isString(n))throw new Error("Config reader received variables to use in string template, but the path did not resolve to a string.");return Object.keys(r).reduce((a,e)=>a.replace(new RegExp(`{{${e}}}`),String(r[e])),n)},scope:i=>{const r=k(e,i);if(!(a.isPlainObject(r)||Array.isArray(r)&&r.some(e=>a.isPlainObject(e))))throw new Error("Path resolved to a primitive or an array of primitive, but `scope` can only resolve to an object or an array of object. Use the `read` method instead.");return v(r)}});exports.cloneNonEnumerableValues=o,exports.countryCodes=["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],exports.countryNames=["Afghanistan","Albania","Algeria","Andorra","Angola","Anguilla","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Cape Verde","Cayman Islands","Chad","Chile","China","Colombia","Congo","Cook Islands","Costa Rica","Cote D Ivoire","Croatia","Cruise Ship","Cuba","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Estonia","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Polynesia","French West Indies","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guam","Guatemala","Guernsey","Guinea","Guinea Bissau","Guyana","Haiti","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kuwait","Kyrgyz Republic","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Mauritania","Mauritius","Mexico","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Namibia","Nepal","Netherlands","Netherlands Antilles","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Norway","Oman","Pakistan","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russia","Rwanda","Saint Pierre and Miquelon","Samoa","San Marino","Satellite","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","South Africa","South Korea","Spain","Sri Lanka","St Kitts and Nevis","St Lucia","St Vincent","St. Lucia","Sudan","Suriname","Swaziland","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Timor L'Este","Togo","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos","Uganda","Ukraine","United Arab Emirates","United Kingdom","Uruguay","Uzbekistan","Venezuela","Vietnam","Virgin Islands (US)","Yemen","Zambia","Zimbabwe"],exports.createConfigBuilder=P,exports.createConfigParser=async(a,{experimentsCallback:e}={})=>{const i=[];var r;return e&&i.push((r=e,async(a,e)=>{if("__experiment"in e&&"object"==typeof e.__experiment){const{buckets:a,id:i}=e.__experiment,n=await r(i);if(n&&n in a&&a[n])return a[n]}return{value:a}})),i.length>0?await g(a,i):a},exports.createConfigReader=v,exports.distanceUnits=["km","mi"],exports.languageCodes=["aa","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu"],exports.timezones=["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"];
|
|
1
|
+
"use strict";var a=require("lodash-es"),e=require("uuid"),i=require("zod");const r=["__callbacks","__disabled","__experiment","__id","__type","__zcb"],n=(a,e)=>{for(const i of r)Object.hasOwn(e,i)&&Object.defineProperty(a,i,{configurable:!1,enumerable:!1,value:e[i]});return{value:a}},o=e=>{const{properties:i}=e;if(i&&(a=>!!a.properties&&Object.values(a.properties).some(a=>"object"==typeof a&&"default"in a))(e))return Object.keys(i).reduce((e,r)=>{const n=i[r];return!n||a.isBoolean(n)||"default"in n&&!a.isUndefined(n.default)&&(e[r]=n.default),e},{})},t=a=>{const{items:e}=a;return!!e&&"object"==typeof e&&"default"in e},c=a=>!!a.additionalProperties&&"object"==typeof a.additionalProperties&&"default"in a.additionalProperties,s=new Set(["$disable","$errors","$experiment","$extend","$flush","$fork","$toJson","$validate","$values"]),u=a=>s.has(a),A=a=>!!a&&"object"==typeof a,l=a=>"function"==typeof a,m=(a,e=!1)=>!e&&void 0!==a,d=(e,i=0)=>{if(a.isPlainObject(e)){const a=e;return!0===a.__zcb||!!(i<1&&Object.values(a).every(a=>d(a,i+1)))}return!Array.isArray(e)||e.every(a=>d(a,i+1))},f=(e,i)=>Promise.all(e.map(e=>a.isPlainObject(e)?p(e,i):Array.isArray(e)?f(e,i):e)),p=async(e,i=[])=>{let r={};const n=a.castArray(i);for(const a of n){const i=await Promise.resolve(a(r,e));if("DELETE_NODE"===i.action)return{};if(i.value&&(r=i.value),"SKIP_NODE"===i.action)return r}for(const n in e){const o=e[n];a.isPlainObject(o)?r[n]=await p(o,i):Array.isArray(o)?r[n]=await f(o,i):r[n]=o}return r},h=(e,i)=>e.map(e=>a.isPlainObject(e)?g(e,i):Array.isArray(e)?h(e,i):e),g=(e,i=[])=>{let r={};const n=a.castArray(i);for(const a of n){const i=a(r,e);if("DELETE_NODE"===i.action)return{};if(i.value&&(r=i.value),"SKIP_NODE"===i.action)return r}for(const n in e){const o=e[n];a.isPlainObject(o)?r[n]=g(o,i):Array.isArray(o)?r[n]=h(o,i):r[n]=o}return r},b=(r,f={},p={},h={})=>{const y=i.z.toJSONSchema(r);if("object"!==y.type)throw new Error(`The root type of a config schema must be "object", but received "${String(y.type)}"`);const P=f.overrides?.uuid??e.v4,E=()=>{const e=a.merge(a.cloneDeep(h),(a=>{const e={};for(const i in a.properties){if(u(i))throw new Error(`"${i}" is a reserved keyword within the config builder. Please use a different property name. The full list of reserved keywords is: ${[...s].join(", ")}`);const r=i,n=a.properties[i];if(A(n)){if(n.default&&(e[r]=n.default),"array"===n.type&&t(n))throw new Error(`When setting schema array defaults for the array assigned to "${String(r)}", set them on the array and not the item.`);if("object"===n.type){if(c(n))throw new Error(`When setting schema property defaults for the value of the record assigned to "${String(r)}", set them on the record and not the value.`);const a=o(n);a&&(e[r]=a)}}}return e})(y));var i;return i=e,Object.defineProperties(i,{__id:{configurable:!1,enumerable:!1,value:P()},__zcb:{configurable:!1,enumerable:!1,value:!0},...f.type&&{__type:{configurable:!1,enumerable:!1,value:f.type}}}),e};let k=E(),S={...p};const M={$disable:()=>(Object.defineProperty(k,"__disabled",{configurable:!1,enumerable:!1,value:!0}),M),$errors:()=>{try{return r.parse(M.$values()),[]}catch(a){return a instanceof i.ZodError?a.issues:[]}},$experiment:a=>(Object.defineProperty(k,"__experiment",{configurable:!1,enumerable:!1,value:a}),M),$extend:a=>{k=g(a.$values(),[n]),S={...a.__callbacks}},$flush:()=>{const a=M.$values();return k=E(),a},$fork:()=>b(r,f,p,h),$toJson:()=>JSON.stringify(M.$values(),void 0,2),$validate:()=>{try{return r.parse(M.$values()),!0}catch(a){return console.error(a),!1}},$values:()=>{for(const a in S){const e=a,i=S[e];i&&(k[e]=i(k))}return k}};Object.defineProperty(M,"__callbacks",{configurable:!1,enumerable:!1,value:S});for(const a in y.properties){if(u(a))throw new Error(`"${a}" is a reserved keyword within the config builder. Please use a different property name. The full list of reserved keywords is: ${[...s].join(", ")}`);const e=a;y.required?.includes(a)||Object.hasOwn(k,a)||(k[a]=void 0),M[e]=(a,i)=>{if(m(k[e],i))throw new Error(`A value already exists for "${String(e)}". You may be trying to add a new values before flushing the old one. If you intended to override the existing value, pass in true as the second argument.`);if(!d(a))throw new Error(`"${String(e)}" value has a depth greater than ${String(1)}. To pass in objects with a depth greater than ${String(1)}, create a builder for that config slice.`);let r;return l(a)?(S[e]=a,r=a(k)):r=a,k[e]=r,M}}return M},y=(e,i)=>a.get(e,i),P=e=>({read:(i,r)=>{const n=y(e,i);if(a.isPlainObject(n)||Array.isArray(n)&&n.some(e=>a.isPlainObject(e)))throw new Error("Path resolved to an object or an array of objects, but `read` can only resolve to a primitive value or an array of primitives. Use the `scope` method instead.");if(!r)return n;if(!a.isString(n))throw new Error("Config reader received variables to use in string template, but the path did not resolve to a string.");return Object.keys(r).reduce((a,e)=>a.replace(new RegExp(`{{${e}}}`),()=>String(r[e])),n)},scope:i=>{const r=y(e,i);if(!(a.isPlainObject(r)||Array.isArray(r)&&r.some(e=>a.isPlainObject(e))))throw new Error("Path resolved to a primitive or an array of primitive, but `scope` can only resolve to an object or an array of object. Use the `read` method instead.");return P(r)}});exports.cloneNonEnumerableValues=n,exports.countryCodes=["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],exports.countryNames=["Afghanistan","Albania","Algeria","Andorra","Angola","Anguilla","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Cape Verde","Cayman Islands","Chad","Chile","China","Colombia","Congo","Cook Islands","Costa Rica","Cote D Ivoire","Croatia","Cruise Ship","Cuba","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Estonia","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Polynesia","French West Indies","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guam","Guatemala","Guernsey","Guinea","Guinea Bissau","Guyana","Haiti","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kuwait","Kyrgyz Republic","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Mauritania","Mauritius","Mexico","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Namibia","Nepal","Netherlands","Netherlands Antilles","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Norway","Oman","Pakistan","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russia","Rwanda","Saint Pierre and Miquelon","Samoa","San Marino","Satellite","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","South Africa","South Korea","Spain","Sri Lanka","St Kitts and Nevis","St Lucia","St Vincent","St. Lucia","Sudan","Suriname","Swaziland","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Timor L'Este","Togo","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos","Uganda","Ukraine","United Arab Emirates","United Kingdom","Uruguay","Uzbekistan","Venezuela","Vietnam","Virgin Islands (US)","Yemen","Zambia","Zimbabwe"],exports.createConfigBuilder=b,exports.createConfigParser=async(a,{experimentsCallback:e}={})=>{const i=[];var r;return e&&i.push((r=e,async(a,e)=>{if("__experiment"in e&&"object"==typeof e.__experiment){const{buckets:a,id:i}=e.__experiment,n=await r(i);if(Object.hasOwn(a,n))return a[n]}return{value:a}})),i.length>0?await p(a,i):a},exports.createConfigReader=P,exports.distanceUnits=["km","mi"],exports.languageCodes=["aa","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu"],exports.timezones=["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"];
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|