zcb 0.0.21 → 0.0.23

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/bin/zcb.mjs CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- const { cli } = await import('../dist/main/cli.mjs'); // eslint-disable-line import/no-unresolved
2
+ const { cli } = await import('../dist/esm/cli.mjs'); // eslint-disable-line import/no-unresolved
3
3
  cli();
@@ -0,0 +1,184 @@
1
+ 'use strict';
2
+
3
+ var node_fs = require('node:fs');
4
+ var node_path = require('node:path');
5
+ var shelljs = require('shelljs');
6
+ var yargs = require('yargs');
7
+ require('core-js/modules/es.array.push.js');
8
+ var esm = require('fs-extra/esm');
9
+ var Handlebars = require('handlebars');
10
+ var node_url = require('node:url');
11
+ var lodashEs = require('lodash-es');
12
+
13
+ let NonEmumeralProperties = function (NonEmumeralProperties) {
14
+ NonEmumeralProperties["CALLBACKS"] = "__callbacks";
15
+ NonEmumeralProperties["DISABLED"] = "__disabled";
16
+ NonEmumeralProperties["EXPERIMENT"] = "__experiment";
17
+ NonEmumeralProperties["ZCB"] = "__zcb";
18
+ return NonEmumeralProperties;
19
+ }({});
20
+ let TransformConfigHandlerAction = function (TransformConfigHandlerAction) {
21
+ TransformConfigHandlerAction["DELETE_NODE"] = "deleteNode";
22
+ TransformConfigHandlerAction["SKIP_NODE"] = "skipNode";
23
+ return TransformConfigHandlerAction;
24
+ }({});
25
+
26
+ const removeDisabledSlices = (clone, config) => {
27
+ if (NonEmumeralProperties.DISABLED in config) {
28
+ return {
29
+ action: TransformConfigHandlerAction.DELETE_NODE
30
+ };
31
+ }
32
+ return {
33
+ value: clone
34
+ };
35
+ };
36
+
37
+ const setupExperiments = callback => async (clone, config) => {
38
+ if (NonEmumeralProperties.EXPERIMENT in config && typeof config.__experiment === 'string') {
39
+ const buckets = await callback(config.__experiment, clone, config);
40
+ clone.__experiment = {
41
+ buckets,
42
+ id: config.__experiment
43
+ };
44
+ return {
45
+ value: clone
46
+ };
47
+ }
48
+ return {
49
+ value: clone
50
+ };
51
+ };
52
+
53
+ const transformArray = (list, handler) => Promise.all(list.map(entry => {
54
+ if (lodashEs.isPlainObject(entry)) {
55
+ return transformConfig(entry, handler);
56
+ }
57
+ if (Array.isArray(entry)) {
58
+ return transformArray(entry, handler);
59
+ }
60
+ return entry;
61
+ }));
62
+ const transformConfig = async (config, handler = []) => {
63
+ let transform = {};
64
+ const handlers = lodashEs.castArray(handler);
65
+ for (const callback of handlers) {
66
+ const result = await Promise.resolve(callback(transform, config));
67
+ if (result.action === TransformConfigHandlerAction.DELETE_NODE) {
68
+ return {};
69
+ }
70
+ if (result.value) {
71
+ transform = result.value;
72
+ }
73
+ if (result.action === TransformConfigHandlerAction.SKIP_NODE) {
74
+ return transform;
75
+ }
76
+ }
77
+ for (const key in config) {
78
+ const value = config[key];
79
+ if (lodashEs.isPlainObject(value)) {
80
+ transform[key] = await transformConfig(value, handler);
81
+ } else if (Array.isArray(value)) {
82
+ transform[key] = await transformArray(value, handler);
83
+ } else {
84
+ transform[key] = value;
85
+ }
86
+ }
87
+ return transform;
88
+ };
89
+
90
+ const transformWriteConfig = async (config, {
91
+ experimentsCallback,
92
+ outputFile
93
+ }) => {
94
+ const handlers = [removeDisabledSlices];
95
+ if (experimentsCallback) {
96
+ handlers.push(setupExperiments(experimentsCallback));
97
+ }
98
+ const template = Handlebars.compile(node_fs.readFileSync(node_path.resolve(node_path.dirname(node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (document.currentScript && document.currentScript.src || new URL('cli.cjs', document.baseURI).href)))), './templates/config.ts.hbs'), {
99
+ encoding: 'utf8'
100
+ }));
101
+ const output = template({
102
+ config: JSON.stringify(await transformConfig(config, handlers), undefined, 2)
103
+ }).replaceAll(/"([A-Za-z][\dA-Za-z]+)":/g, '$1:');
104
+ shelljs.echo(`zcd watch => writing to file: ${outputFile}`);
105
+ shelljs.echo(`zcd watch => content to write:\n${output}\n`);
106
+ esm.outputFileSync(node_path.resolve(process.cwd(), outputFile), output);
107
+ };
108
+
109
+ const importValidateTransformWriteConfig = (inputFile, outputFile, command, experimentCallbackFile) => {
110
+ import(node_path.resolve(process.cwd(), inputFile)).then(({
111
+ default: configBuilder
112
+ }) => {
113
+ if (!configBuilder.validate()) {
114
+ shelljs.echo(`zcd ${command} => invalid config`);
115
+ shelljs.echo(`zcd ${command} => config values:\n${configBuilder.toJson()}\n`);
116
+ shelljs.echo(`zcd ${command} => errors:\n${JSON.stringify(configBuilder.errors(), undefined, 2)}\n`);
117
+ shelljs.exit(1);
118
+ }
119
+ shelljs.echo('zcd ${command} => valid config');
120
+ shelljs.echo(`zcd ${command} => config values:\n${configBuilder.toJson()}\n`);
121
+ if (experimentCallbackFile) {
122
+ import(node_path.resolve(process.cwd(), experimentCallbackFile)).then(({
123
+ default: experimentsCallback
124
+ }) => {
125
+ void transformWriteConfig(configBuilder.values(), {
126
+ experimentsCallback,
127
+ outputFile
128
+ });
129
+ }).catch(error => {
130
+ if (error instanceof Error) {
131
+ shelljs.echo(`zcd ${command} => error message: ${error.message}`);
132
+ if (error.stack) {
133
+ shelljs.echo(`zcd ${command} => error stack:\n${error.stack}\n`);
134
+ }
135
+ }
136
+ });
137
+ return;
138
+ }
139
+ void transformWriteConfig(configBuilder.values(), {
140
+ outputFile
141
+ });
142
+ }).catch(error => {
143
+ if (error instanceof Error) {
144
+ shelljs.echo(`zcd ${command} => error message: ${error.message}`);
145
+ if (error.stack) {
146
+ shelljs.echo(`zcd ${command} => error stack:\n${error.stack}\n`);
147
+ }
148
+ }
149
+ });
150
+ };
151
+
152
+ let Commands = function (Commands) {
153
+ Commands["BUILD"] = "build";
154
+ Commands["WATCH"] = "watch";
155
+ return Commands;
156
+ }({});
157
+ const generateArguments = cmdYargs => cmdYargs.positional('input-file', {
158
+ demandOption: true,
159
+ desc: 'The relative path to the config builder root file',
160
+ type: 'string'
161
+ }).positional('output-file', {
162
+ demandOption: true,
163
+ desc: 'The relative path to the output config file',
164
+ type: 'string'
165
+ }).option('experiments-callback-file', {
166
+ desc: 'The relative path to the experiment callback file',
167
+ type: 'string'
168
+ });
169
+ const cli = () => {
170
+ yargs.command('watch <input-file> <output-file>', 'Watch a config builder and write config', cmdYargs => generateArguments(cmdYargs), argv => {
171
+ shelljs.echo(`zcd watch => watching file: ${argv['input-file']}`);
172
+ node_fs.watchFile(node_path.resolve(process.cwd(), argv['input-file']), () => {
173
+ shelljs.echo('zcd watch => file change detected');
174
+ importValidateTransformWriteConfig(argv['input-file'], argv['output-file'], Commands.WATCH, argv['experiments-callback-file']);
175
+ });
176
+ }).command('build <input-file> <output-file>', 'Write config from a config builder', cmdYargs => generateArguments(cmdYargs), argv => {
177
+ shelljs.echo(`zcd build => building file: ${argv['input-file']}`);
178
+ importValidateTransformWriteConfig(argv['input-file'], argv['output-file'], Commands.BUILD, argv['experiments-callback-file']);
179
+ }).help().argv;
180
+ };
181
+
182
+ exports.Commands = Commands;
183
+ exports.cli = cli;
184
+ //# sourceMappingURL=cli.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.cjs","sources":["../zod-config-builder/src//types.ts","../zod-config-builder/src//transformers/removeDisabledSlices.ts","../zod-config-builder/src//transformers/setupExperiments.ts","../zod-config-builder/src//utils/transformConfig.ts","../zod-config-builder/src//utils/transformWriteConfig.ts","../zod-config-builder/src//utils/importValidateTransformWriteConfig.ts","../zod-config-builder/src//cli.ts"],"sourcesContent":["import type { List } from 'ts-toolbelt';\nimport type { Includes, Join } from 'type-fest';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyRecord = Record<string, any>;\n\nexport type Buckets<Config extends AnyRecord> = Record<string, Experiment<Config>>;\n\nexport interface ConfigParserOptions {\n experimentsCallback?: RunExperimentsCallback;\n}\n\nexport interface Experiment<Config extends AnyRecord> {\n action?: TransformConfigHandlerAction;\n value?: Config;\n}\n\nexport enum NonEmumeralProperties {\n CALLBACKS = '__callbacks',\n DISABLED = '__disabled',\n EXPERIMENT = '__experiment',\n ZCB = '__zcb',\n}\n\nexport type Path<Config extends object> = Join<Leaves<Config>, '.'>;\n\nexport type RunExperimentsCallback = (id: string) => Promise<string>;\n\nexport type Scope<Config extends object> = Join<Paths<Config>, '.'>;\n\nexport type SetupExperimentsCallback = <Config extends AnyRecord>(\n id: string,\n clone: Config,\n config: Config\n) => Promise<Buckets<Config>>;\n\nexport type TransformConfigHandler = <Config extends AnyRecord>(\n clone: Config,\n config: Config\n) => TransformConfigHandlerReturnType<Config> | Promise<TransformConfigHandlerReturnType<Config>>;\n\nexport type TransformConfigHandlerSync = <Config extends AnyRecord>(\n clone: Config,\n config: Config\n) => TransformConfigHandlerReturnType<Config>;\n\nexport enum TransformConfigHandlerAction {\n DELETE_NODE = 'deleteNode',\n SKIP_NODE = 'skipNode',\n}\n\nexport interface TransformConfigHandlerReturnType<Config extends AnyRecord> {\n action?: TransformConfigHandlerAction;\n value?: Config;\n}\n\nexport interface WriteConfigOptions {\n experimentsCallback?: SetupExperimentsCallback;\n outputFile: string;\n}\n\nexport type Leaves<T, Path extends string[] = []> = T extends string\n ? Path\n : {\n [K in keyof T & string]: Leaves<T[K], [...Path, K]>;\n }[keyof T & string];\n\nexport type Paths<T, Path extends string[] = []> = T extends string\n ? Path\n : {\n [K in keyof T & string]: T[K] extends object ? Paths<T[K], [...Path, K]> : Path;\n }[keyof T & string];\n\nexport type LeavesScopeDiffs<T1 extends readonly string[][], T2 extends string[]> = {\n [K1 in keyof T1]: List.Length<List.Intersect<T1[K1], T2, '<-contains'>> extends 1\n ? List.Length<T1[K1]> extends 1\n ? Includes<T2, T1[K1][0]> extends false\n ? T1[K1]\n : never\n : List.Diff<T1[K1], T2>\n : never;\n}[number];\n","import {\n type AnyRecord,\n NonEmumeralProperties,\n TransformConfigHandlerAction,\n type TransformConfigHandlerSync,\n} from '../types.ts';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const removeDisabledSlices: TransformConfigHandlerSync = <Config extends AnyRecord>(\n clone: Config,\n config: Config\n) => {\n if (NonEmumeralProperties.DISABLED in config) {\n return {\n action: TransformConfigHandlerAction.DELETE_NODE,\n };\n }\n\n return {\n value: clone,\n };\n};\n","import {\n type AnyRecord,\n NonEmumeralProperties,\n type SetupExperimentsCallback,\n type TransformConfigHandler,\n} from '../types.ts';\n\nexport const setupExperiments =\n (callback: SetupExperimentsCallback): TransformConfigHandler =>\n async <Config extends AnyRecord>(clone: Config, config: Config) => {\n if (NonEmumeralProperties.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 { castArray, isPlainObject } from 'lodash-es';\nimport {\n type AnyRecord,\n type TransformConfigHandler,\n TransformConfigHandlerAction,\n type TransformConfigHandlerSync,\n} 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 // eslint-disable-next-line @typescript-eslint/no-unsafe-return\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 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 === TransformConfigHandlerAction.DELETE_NODE) {\n return {} as Config;\n }\n\n if (result.value) {\n transform = result.value;\n }\n\n if (result.action === TransformConfigHandlerAction.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 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 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 === TransformConfigHandlerAction.DELETE_NODE) {\n return {} as Config;\n }\n\n if (result.value) {\n transform = result.value;\n }\n\n if (result.action === TransformConfigHandlerAction.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 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, 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({ config: JSON.stringify(await transformConfig(config, handlers), undefined, 2) }).replaceAll(\n /\"([A-Za-z][\\dA-Za-z]+)\":/g,\n '$1:'\n );\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 { 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 from 'yargs';\nimport { importValidateTransformWriteConfig } from './utils/importValidateTransformWriteConfig.ts';\n\nexport enum Commands {\n BUILD = 'build',\n WATCH = 'watch',\n}\n\nconst generateArguments = (cmdYargs: yargs.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\n .command(\n 'watch <input-file> <output-file>',\n 'Watch a config builder and write config',\n cmdYargs => generateArguments(cmdYargs),\n argv => {\n shelljs.echo(`zcd watch => watching file: ${argv['input-file']}`);\n\n watchFile(resolve(process.cwd(), argv['input-file']), () => {\n shelljs.echo('zcd watch => file change detected');\n\n importValidateTransformWriteConfig(\n argv['input-file'],\n argv['output-file'],\n Commands.WATCH,\n argv['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 argv => {\n shelljs.echo(`zcd build => building file: ${argv['input-file']}`);\n\n importValidateTransformWriteConfig(\n argv['input-file'],\n argv['output-file'],\n Commands.BUILD,\n argv['experiments-callback-file']\n );\n }\n )\n .help().argv;\n};\n"],"names":["NonEmumeralProperties","TransformConfigHandlerAction","removeDisabledSlices","clone","config","DISABLED","action","DELETE_NODE","value","setupExperiments","callback","EXPERIMENT","__experiment","buckets","id","transformArray","list","handler","Promise","all","map","entry","isPlainObject","transformConfig","Array","isArray","transform","handlers","castArray","result","resolve","SKIP_NODE","key","transformWriteConfig","experimentsCallback","outputFile","push","template","Handlebars","compile","readFileSync","dirname","fileURLToPath","import","encoding","output","JSON","stringify","undefined","replaceAll","shelljs","echo","outputFileSync","process","cwd","importValidateTransformWriteConfig","inputFile","command","experimentCallbackFile","then","default","configBuilder","validate","toJson","errors","exit","values","catch","error","Error","message","stack","Commands","generateArguments","cmdYargs","positional","demandOption","desc","type","option","cli","yargs","argv","watchFile","WATCH","BUILD","help"],"mappings":"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"}
@@ -0,0 +1,330 @@
1
+ 'use strict';
2
+
3
+ var zodToJsonSchema = require('zod-to-json-schema');
4
+ var lodashEs = require('lodash-es');
5
+ require('core-js/modules/es.array.push.js');
6
+
7
+ let NonEmumeralProperties = function (NonEmumeralProperties) {
8
+ NonEmumeralProperties["CALLBACKS"] = "__callbacks";
9
+ NonEmumeralProperties["DISABLED"] = "__disabled";
10
+ NonEmumeralProperties["EXPERIMENT"] = "__experiment";
11
+ NonEmumeralProperties["ZCB"] = "__zcb";
12
+ return NonEmumeralProperties;
13
+ }({});
14
+ let TransformConfigHandlerAction = function (TransformConfigHandlerAction) {
15
+ TransformConfigHandlerAction["DELETE_NODE"] = "deleteNode";
16
+ TransformConfigHandlerAction["SKIP_NODE"] = "skipNode";
17
+ return TransformConfigHandlerAction;
18
+ }({});
19
+
20
+ const NON_ENUMERABLE_KEYS = new Set(Object.values(NonEmumeralProperties));
21
+ const cloneNonEnumerableValues = (clone, config) => {
22
+ for (const nonEnumerableKey of NON_ENUMERABLE_KEYS) {
23
+ if (nonEnumerableKey in config) {
24
+ Object.defineProperty(clone, nonEnumerableKey, {
25
+ configurable: false,
26
+ enumerable: false,
27
+ value: config[nonEnumerableKey]
28
+ });
29
+ }
30
+ }
31
+ return {
32
+ value: clone
33
+ };
34
+ };
35
+
36
+ const arrayHasInvalidDefaults = propertyDefinition => {
37
+ const {
38
+ items
39
+ } = propertyDefinition;
40
+ return items && typeof items === 'object' && 'default' in items;
41
+ };
42
+
43
+ const isDerivedValueCallback = value => typeof value === 'function';
44
+
45
+ const isInvalidPropertyOverride = (propertyValue, override = false) => !override && propertyValue !== undefined;
46
+
47
+ const RESERVED_KEYWORDS = new Set(['disable', 'errors', 'experiment', 'extend', 'flush', 'fork', 'toJson', 'validate', 'values']);
48
+ const isPropertyReservedWord = propertyName => RESERVED_KEYWORDS.has(propertyName);
49
+
50
+ const isSchemaValid = schema => schema.type !== 'object';
51
+
52
+ const isValidPropertyDefinition = propertyDefinition => typeof propertyDefinition === 'object';
53
+
54
+ const isValidValue = (value, depth = 0) => {
55
+ if (lodashEs.isPlainObject(value)) {
56
+ const object = value;
57
+ if (object.__zcb === true) {
58
+ return true;
59
+ }
60
+ if (depth < 1 && Object.values(object).every(v => isValidValue(v, depth + 1))) {
61
+ return true;
62
+ }
63
+ return false;
64
+ }
65
+ if (Array.isArray(value)) {
66
+ if (value.every(v => isValidValue(v, depth + 1))) {
67
+ return true;
68
+ }
69
+ return false;
70
+ }
71
+ return true;
72
+ };
73
+
74
+ const objectHasInvalidDefaults = propertyDefinition => propertyDefinition.properties && Object.values(propertyDefinition.properties).some(value => typeof value === 'object' && 'default' in value);
75
+
76
+ const recordHasInvalidDefaults = propertyDefinition => propertyDefinition.additionalProperties && typeof propertyDefinition.additionalProperties === 'object' && 'default' in propertyDefinition.additionalProperties;
77
+
78
+ const transformArray = (list, handler) => Promise.all(list.map(entry => {
79
+ if (lodashEs.isPlainObject(entry)) {
80
+ return transformConfig(entry, handler);
81
+ }
82
+ if (Array.isArray(entry)) {
83
+ return transformArray(entry, handler);
84
+ }
85
+ return entry;
86
+ }));
87
+ const transformConfig = async (config, handler = []) => {
88
+ let transform = {};
89
+ const handlers = lodashEs.castArray(handler);
90
+ for (const callback of handlers) {
91
+ const result = await Promise.resolve(callback(transform, config));
92
+ if (result.action === TransformConfigHandlerAction.DELETE_NODE) {
93
+ return {};
94
+ }
95
+ if (result.value) {
96
+ transform = result.value;
97
+ }
98
+ if (result.action === TransformConfigHandlerAction.SKIP_NODE) {
99
+ return transform;
100
+ }
101
+ }
102
+ for (const key in config) {
103
+ const value = config[key];
104
+ if (lodashEs.isPlainObject(value)) {
105
+ transform[key] = await transformConfig(value, handler);
106
+ } else if (Array.isArray(value)) {
107
+ transform[key] = await transformArray(value, handler);
108
+ } else {
109
+ transform[key] = value;
110
+ }
111
+ }
112
+ return transform;
113
+ };
114
+ const transformArraySync = (list, handler) => list.map(entry => {
115
+ if (lodashEs.isPlainObject(entry)) {
116
+ return transformConfigSync(entry, handler);
117
+ }
118
+ if (Array.isArray(entry)) {
119
+ return transformArraySync(entry, handler);
120
+ }
121
+ return entry;
122
+ });
123
+ const transformConfigSync = (config, handler = []) => {
124
+ let transform = {};
125
+ const handlers = lodashEs.castArray(handler);
126
+ for (const callback of handlers) {
127
+ const result = callback(transform, config);
128
+ if (result.action === TransformConfigHandlerAction.DELETE_NODE) {
129
+ return {};
130
+ }
131
+ if (result.value) {
132
+ transform = result.value;
133
+ }
134
+ if (result.action === TransformConfigHandlerAction.SKIP_NODE) {
135
+ return transform;
136
+ }
137
+ }
138
+ for (const key in config) {
139
+ const value = config[key];
140
+ if (lodashEs.isPlainObject(value)) {
141
+ transform[key] = transformConfigSync(value, handler);
142
+ } else if (Array.isArray(value)) {
143
+ transform[key] = transformArraySync(value, handler);
144
+ } else {
145
+ transform[key] = value;
146
+ }
147
+ }
148
+ return transform;
149
+ };
150
+
151
+ const createConfigBuilder = (zodSchema, derivedValueCallbacks = {}, initialValues = {}) => {
152
+ let config = initialValues;
153
+ Object.defineProperty(config, NonEmumeralProperties.ZCB, {
154
+ configurable: false,
155
+ enumerable: false,
156
+ value: true
157
+ });
158
+ let callbacks = {
159
+ ...derivedValueCallbacks
160
+ };
161
+ const configBuilder = {
162
+ disable: () => {
163
+ Object.defineProperty(config, NonEmumeralProperties.DISABLED, {
164
+ configurable: false,
165
+ enumerable: false,
166
+ value: true
167
+ });
168
+ return configBuilder;
169
+ },
170
+ errors: () => {
171
+ try {
172
+ zodSchema.parse(configBuilder.values());
173
+ return [];
174
+ } catch (error) {
175
+ return error.errors;
176
+ }
177
+ },
178
+ experiment: key => {
179
+ Object.defineProperty(config, NonEmumeralProperties.EXPERIMENT, {
180
+ configurable: false,
181
+ enumerable: false,
182
+ value: key
183
+ });
184
+ return configBuilder;
185
+ },
186
+ extend: configBuilder => {
187
+ config = transformConfigSync(configBuilder.values(), [cloneNonEnumerableValues]);
188
+ callbacks = {
189
+ ...configBuilder.__callbacks
190
+ };
191
+ },
192
+ flush: () => {
193
+ const values = configBuilder.values();
194
+ config = {};
195
+ Object.defineProperty(config, NonEmumeralProperties.ZCB, {
196
+ configurable: false,
197
+ enumerable: false,
198
+ value: true
199
+ });
200
+ return values;
201
+ },
202
+ fork: () => createConfigBuilder(zodSchema, derivedValueCallbacks),
203
+ toJson: () => JSON.stringify(configBuilder.values(), undefined, 2),
204
+ validate: () => {
205
+ try {
206
+ zodSchema.parse(configBuilder.values());
207
+ return true;
208
+ } catch (error) {
209
+ console.error(error);
210
+ return false;
211
+ }
212
+ },
213
+ values: () => {
214
+ for (const property in callbacks) {
215
+ const callback = callbacks[property];
216
+ if (callback) {
217
+ config[property] = callback(config);
218
+ }
219
+ }
220
+ return config;
221
+ }
222
+ };
223
+ Object.defineProperty(configBuilder, NonEmumeralProperties.CALLBACKS, {
224
+ configurable: false,
225
+ enumerable: false,
226
+ value: callbacks
227
+ });
228
+ const jsonSchema = zodToJsonSchema.zodToJsonSchema(zodSchema);
229
+ if (isSchemaValid(jsonSchema)) {
230
+ throw new Error(`The root type of a config schema must be "object", but received "${String(jsonSchema.type)}"`);
231
+ }
232
+ for (const propertyName in jsonSchema.properties) {
233
+ if (isPropertyReservedWord(propertyName)) {
234
+ throw new Error(`"${propertyName}" is a reserved keyword within the config builder. Please use a different property name. The full list of reserved keywords is: ${[...RESERVED_KEYWORDS].join(', ')}`);
235
+ }
236
+ const castProperty = propertyName;
237
+ const propertyDefinition = jsonSchema.properties[propertyName];
238
+ if (isValidPropertyDefinition(propertyDefinition)) {
239
+ if (propertyDefinition.default) {
240
+ config[castProperty] = propertyDefinition.default;
241
+ }
242
+ if (propertyDefinition.type === 'array' && arrayHasInvalidDefaults(propertyDefinition)) {
243
+ throw new Error(`When setting schema array defaults for the array assigned to "${String(castProperty)}", set them on the array and not the item.`);
244
+ }
245
+ if (propertyDefinition.type === 'object') {
246
+ if (objectHasInvalidDefaults(propertyDefinition)) {
247
+ throw new Error(`When setting schema property defaults for the object assigned to "${String(castProperty)}", set them on the object and not the property.`);
248
+ }
249
+ if (recordHasInvalidDefaults(propertyDefinition)) {
250
+ throw new Error(`When setting schema property defaults for the object assigned to "${String(castProperty)}", set them on the object and not the property.`);
251
+ }
252
+ }
253
+ }
254
+ configBuilder[castProperty] = (value, override) => {
255
+ if (isInvalidPropertyOverride(config[castProperty], override)) {
256
+ throw new Error(`A value already exists for "${String(castProperty)}". 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.`);
257
+ }
258
+ let propertyValue;
259
+ const MAX_DEPTH = 1;
260
+ if (!isValidValue(value)) {
261
+ throw new Error(`"${String(castProperty)}" value has a depth greater than ${MAX_DEPTH}. To pass in objects with a depth greater than ${MAX_DEPTH}, create a builder for that config slice.`);
262
+ }
263
+ if (isDerivedValueCallback(value)) {
264
+ callbacks[castProperty] = value;
265
+ propertyValue = value(config);
266
+ } else {
267
+ propertyValue = value;
268
+ }
269
+ config[castProperty] = propertyValue;
270
+ return configBuilder;
271
+ };
272
+ }
273
+ return configBuilder;
274
+ };
275
+
276
+ const runExperiments = callback => async (clone, config) => {
277
+ if (NonEmumeralProperties.EXPERIMENT in config && typeof config.__experiment === 'object') {
278
+ const {
279
+ buckets,
280
+ id
281
+ } = config.__experiment;
282
+ const bucket = await callback(id);
283
+ if (bucket && bucket in buckets && buckets[bucket]) {
284
+ return buckets[bucket];
285
+ }
286
+ }
287
+ return {
288
+ value: clone
289
+ };
290
+ };
291
+
292
+ const createConfigParser = async (config, {
293
+ experimentsCallback
294
+ } = {}) => {
295
+ const handlers = [];
296
+ if (experimentsCallback) {
297
+ handlers.push(runExperiments(experimentsCallback));
298
+ }
299
+ return handlers.length > 0 ? await transformConfig(config, handlers) : config;
300
+ };
301
+
302
+ const createConfigReader = config => {
303
+ const configReader = {
304
+ read: path => lodashEs.get(config, path),
305
+ scope: scope => createConfigReader(lodashEs.get(config, scope))
306
+ };
307
+ return configReader;
308
+ };
309
+
310
+ const 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'];
311
+
312
+ const 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'];
313
+
314
+ const distanceUnits = ['km', 'mi'];
315
+
316
+ const 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'];
317
+
318
+ const 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'];
319
+
320
+ exports.NonEmumeralProperties = NonEmumeralProperties;
321
+ exports.TransformConfigHandlerAction = TransformConfigHandlerAction;
322
+ exports.countryCodes = countryCodes;
323
+ exports.countryNames = countryNames;
324
+ exports.createConfigBuilder = createConfigBuilder;
325
+ exports.createConfigParser = createConfigParser;
326
+ exports.createConfigReader = createConfigReader;
327
+ exports.distanceUnits = distanceUnits;
328
+ exports.languageCodes = languageCodes;
329
+ exports.timezones = timezones;
330
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../zod-config-builder/src//types.ts","../zod-config-builder/src//transformers/cloneNonEnumerableValues.ts","../zod-config-builder/src//utils/arrayHasInvalidDefaults.ts","../zod-config-builder/src//utils/isDerivedValueCallback.ts","../zod-config-builder/src//utils/isInvalidPropertyOverride.ts","../zod-config-builder/src//utils/isPropertyReservedWord.ts","../zod-config-builder/src//utils/isSchemaValid.ts","../zod-config-builder/src//utils/isValidPropertyDefinition.ts","../zod-config-builder/src//utils/isValidValue.ts","../zod-config-builder/src//utils/objectHasInvalidDefaults.ts","../zod-config-builder/src//utils/recordHasInvalidDefaults.ts","../zod-config-builder/src//utils/transformConfig.ts","../zod-config-builder/src//createConfigBuilder.ts","../zod-config-builder/src//transformers/runExperiments.ts","../zod-config-builder/src//createConfigParser.ts","../zod-config-builder/src//createConfigReader.ts","../zod-config-builder/src//data/countryCodes.ts","../zod-config-builder/src//data/countryNames.ts","../zod-config-builder/src//data/distanceUnits.ts","../zod-config-builder/src//data/languageCodes.ts","../zod-config-builder/src//data/timezones.ts"],"sourcesContent":["import type { List } from 'ts-toolbelt';\nimport type { Includes, Join } from 'type-fest';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyRecord = Record<string, any>;\n\nexport type Buckets<Config extends AnyRecord> = Record<string, Experiment<Config>>;\n\nexport interface ConfigParserOptions {\n experimentsCallback?: RunExperimentsCallback;\n}\n\nexport interface Experiment<Config extends AnyRecord> {\n action?: TransformConfigHandlerAction;\n value?: Config;\n}\n\nexport enum NonEmumeralProperties {\n CALLBACKS = '__callbacks',\n DISABLED = '__disabled',\n EXPERIMENT = '__experiment',\n ZCB = '__zcb',\n}\n\nexport type Path<Config extends object> = Join<Leaves<Config>, '.'>;\n\nexport type RunExperimentsCallback = (id: string) => Promise<string>;\n\nexport type Scope<Config extends object> = Join<Paths<Config>, '.'>;\n\nexport type SetupExperimentsCallback = <Config extends AnyRecord>(\n id: string,\n clone: Config,\n config: Config\n) => Promise<Buckets<Config>>;\n\nexport type TransformConfigHandler = <Config extends AnyRecord>(\n clone: Config,\n config: Config\n) => TransformConfigHandlerReturnType<Config> | Promise<TransformConfigHandlerReturnType<Config>>;\n\nexport type TransformConfigHandlerSync = <Config extends AnyRecord>(\n clone: Config,\n config: Config\n) => TransformConfigHandlerReturnType<Config>;\n\nexport enum TransformConfigHandlerAction {\n DELETE_NODE = 'deleteNode',\n SKIP_NODE = 'skipNode',\n}\n\nexport interface TransformConfigHandlerReturnType<Config extends AnyRecord> {\n action?: TransformConfigHandlerAction;\n value?: Config;\n}\n\nexport interface WriteConfigOptions {\n experimentsCallback?: SetupExperimentsCallback;\n outputFile: string;\n}\n\nexport type Leaves<T, Path extends string[] = []> = T extends string\n ? Path\n : {\n [K in keyof T & string]: Leaves<T[K], [...Path, K]>;\n }[keyof T & string];\n\nexport type Paths<T, Path extends string[] = []> = T extends string\n ? Path\n : {\n [K in keyof T & string]: T[K] extends object ? Paths<T[K], [...Path, K]> : Path;\n }[keyof T & string];\n\nexport type LeavesScopeDiffs<T1 extends readonly string[][], T2 extends string[]> = {\n [K1 in keyof T1]: List.Length<List.Intersect<T1[K1], T2, '<-contains'>> extends 1\n ? List.Length<T1[K1]> extends 1\n ? Includes<T2, T1[K1][0]> extends false\n ? T1[K1]\n : never\n : List.Diff<T1[K1], T2>\n : never;\n}[number];\n","import { type AnyRecord, NonEmumeralProperties, type TransformConfigHandlerSync } from '../types.ts';\n\nconst NON_ENUMERABLE_KEYS = new Set(Object.values(NonEmumeralProperties));\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const cloneNonEnumerableValues: TransformConfigHandlerSync = <Config extends AnyRecord>(\n clone: Config,\n config: Config\n) => {\n for (const nonEnumerableKey of NON_ENUMERABLE_KEYS) {\n if (nonEnumerableKey in config) {\n Object.defineProperty(clone, nonEnumerableKey, {\n configurable: false,\n enumerable: false,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n value: config[nonEnumerableKey],\n });\n }\n }\n\n return {\n value: clone,\n };\n};\n","import type { JSONSchema7 } from 'json-schema';\n\nexport const arrayHasInvalidDefaults = (propertyDefinition: JSONSchema7) => {\n const { items } = propertyDefinition;\n return items && typeof items === 'object' && 'default' in items;\n};\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isDerivedValueCallback = <T extends (c: any) => any>(value: any): value is T =>\n typeof value === 'function';\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isInvalidPropertyOverride = (propertyValue: any, override = false) =>\n !override && propertyValue !== undefined;\n","export const RESERVED_KEYWORDS = new Set([\n 'disable',\n 'errors',\n 'experiment',\n 'extend',\n 'flush',\n 'fork',\n 'toJson',\n 'validate',\n 'values',\n]);\n\nexport const isPropertyReservedWord = (propertyName: string) => RESERVED_KEYWORDS.has(propertyName);\n","import type { JSONSchema7 } from 'json-schema';\n\nexport const isSchemaValid = (schema: JSONSchema7) => schema.type !== 'object';\n","import type { JSONSchema7, JSONSchema7Definition } from 'json-schema';\n\nexport const isValidPropertyDefinition = (\n propertyDefinition: JSONSchema7Definition | undefined\n): propertyDefinition is JSONSchema7 => typeof propertyDefinition === 'object';\n","import { isPlainObject } from 'lodash-es';\n\nexport const isValidValue = (value: unknown, depth = 0): boolean => {\n if (isPlainObject(value)) {\n const object = value as Record<string, unknown>;\n\n if (object.__zcb === true) {\n return true;\n }\n\n if (depth < 1 && Object.values(object).every(v => isValidValue(v, depth + 1))) {\n return true;\n }\n\n return false;\n }\n\n if (Array.isArray(value)) {\n if (value.every(v => isValidValue(v, depth + 1))) {\n return true;\n }\n\n return false;\n }\n\n return true;\n};\n","import type { JSONSchema7 } from 'json-schema';\n\nexport const objectHasInvalidDefaults = (propertyDefinition: JSONSchema7) =>\n propertyDefinition.properties &&\n Object.values(propertyDefinition.properties).some(value => typeof value === 'object' && 'default' in value);\n","import type { JSONSchema7 } from 'json-schema';\n\nexport const recordHasInvalidDefaults = (propertyDefinition: JSONSchema7) =>\n propertyDefinition.additionalProperties &&\n typeof propertyDefinition.additionalProperties === 'object' &&\n 'default' in propertyDefinition.additionalProperties;\n","import { castArray, isPlainObject } from 'lodash-es';\nimport {\n type AnyRecord,\n type TransformConfigHandler,\n TransformConfigHandlerAction,\n type TransformConfigHandlerSync,\n} 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 // eslint-disable-next-line @typescript-eslint/no-unsafe-return\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 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 === TransformConfigHandlerAction.DELETE_NODE) {\n return {} as Config;\n }\n\n if (result.value) {\n transform = result.value;\n }\n\n if (result.action === TransformConfigHandlerAction.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 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 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 === TransformConfigHandlerAction.DELETE_NODE) {\n return {} as Config;\n }\n\n if (result.value) {\n transform = result.value;\n }\n\n if (result.action === TransformConfigHandlerAction.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 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 { type JSONSchema7 } from 'json-schema';\nimport { type ZodError, type z } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\nimport { cloneNonEnumerableValues } from './transformers/cloneNonEnumerableValues.ts';\nimport { NonEmumeralProperties } from './types.ts';\nimport { arrayHasInvalidDefaults } from './utils/arrayHasInvalidDefaults.ts';\nimport { isDerivedValueCallback } from './utils/isDerivedValueCallback.ts';\nimport { isInvalidPropertyOverride } from './utils/isInvalidPropertyOverride.ts';\nimport { RESERVED_KEYWORDS, isPropertyReservedWord } from './utils/isPropertyReservedWord.ts';\nimport { isSchemaValid } from './utils/isSchemaValid.ts';\nimport { isValidPropertyDefinition } from './utils/isValidPropertyDefinition.ts';\nimport { isValidValue } from './utils/isValidValue.ts';\nimport { objectHasInvalidDefaults } from './utils/objectHasInvalidDefaults.ts';\nimport { recordHasInvalidDefaults } from './utils/recordHasInvalidDefaults.ts';\nimport { transformConfigSync } from './utils/transformConfig.ts';\n\nexport type ConfigBuilder<ZodTypes> = {\n [Key in keyof Required<ZodTypes>]: (\n value: ZodTypes[Key] | ((c: ZodTypes) => ZodTypes[Key]),\n override?: boolean\n ) => ConfigBuilder<ZodTypes>;\n} & {\n disable: () => ConfigBuilder<ZodTypes>;\n errors: () => ZodError['errors'];\n experiment: (key: string) => ConfigBuilder<ZodTypes>;\n extend: (configBuilder: ConfigBuilder<ZodTypes>) => ConfigBuilder<ZodTypes>;\n flush: () => ZodTypes;\n fork: () => ConfigBuilder<ZodTypes>;\n toJson: () => string;\n validate: () => boolean;\n values: () => ZodTypes;\n};\n\nexport const createConfigBuilder = <ZodTypes>(\n zodSchema: z.ZodSchema,\n derivedValueCallbacks: Partial<\n Record<\n keyof ZodTypes,\n (c: {\n [Key in keyof ZodTypes]: ZodTypes[Key];\n }) => ZodTypes[keyof ZodTypes]\n >\n > = {},\n initialValues: Partial<{\n [Key in keyof ZodTypes]: ZodTypes[Key];\n }> = {}\n): ConfigBuilder<ZodTypes> => {\n type Config = {\n [Key in keyof ZodTypes]: ZodTypes[Key];\n };\n\n type DerivedValueCallback<K extends keyof Config = keyof Config> = (c: Config) => Config[K];\n let config = initialValues as Config;\n\n Object.defineProperty(config, NonEmumeralProperties.ZCB, {\n configurable: false,\n enumerable: false,\n value: true,\n });\n\n let callbacks: Partial<Record<keyof Config, DerivedValueCallback>> = { ...derivedValueCallbacks };\n\n const configBuilder = {\n disable: () => {\n Object.defineProperty(config, NonEmumeralProperties.DISABLED, {\n configurable: false,\n enumerable: false,\n value: true,\n });\n\n return configBuilder;\n },\n errors: () => {\n try {\n zodSchema.parse(configBuilder.values());\n return [];\n } catch (error: unknown) {\n return (error as ZodError).errors;\n }\n },\n experiment: (key: string) => {\n Object.defineProperty(config, NonEmumeralProperties.EXPERIMENT, {\n configurable: false,\n enumerable: false,\n value: key,\n });\n\n return configBuilder;\n },\n extend: (configBuilder: ConfigBuilder<Config>) => {\n config = transformConfigSync<Config>(configBuilder.values(), [cloneNonEnumerableValues]);\n // @ts-expect-error private property\n callbacks = { ...configBuilder.__callbacks } as Partial<Record<keyof Config, DerivedValueCallback>>;\n },\n flush: () => {\n const values = configBuilder.values();\n config = {} as Config;\n\n Object.defineProperty(config, NonEmumeralProperties.ZCB, {\n configurable: false,\n enumerable: false,\n value: true,\n });\n\n return values;\n },\n fork: () => createConfigBuilder<Config>(zodSchema, derivedValueCallbacks),\n toJson: () => JSON.stringify(configBuilder.values(), undefined, 2),\n validate: () => {\n try {\n zodSchema.parse(configBuilder.values());\n return true;\n } catch (error: unknown) {\n console.error(error);\n return false;\n }\n },\n values: () => {\n for (const property in callbacks) {\n const callback = callbacks[property];\n\n if (callback) {\n config[property as keyof Config] = callback(config);\n }\n }\n\n return config;\n },\n } as unknown as ConfigBuilder<ZodTypes>;\n\n Object.defineProperty(configBuilder, NonEmumeralProperties.CALLBACKS, {\n configurable: false,\n enumerable: false,\n value: callbacks,\n });\n\n const jsonSchema = zodToJsonSchema(zodSchema) as JSONSchema7;\n\n if (isSchemaValid(jsonSchema)) {\n throw new Error(`The root type of a config schema must be \"object\", but received \"${String(jsonSchema.type)}\"`);\n }\n\n for (const propertyName in jsonSchema.properties) {\n if (isPropertyReservedWord(propertyName)) {\n throw new Error(\n `\"${propertyName}\" is a reserved keyword within the config builder. Please use a different property name. The full list of reserved keywords is: ${[\n ...RESERVED_KEYWORDS,\n ].join(', ')}`\n );\n }\n\n const castProperty = propertyName as keyof Config;\n const propertyDefinition = jsonSchema.properties[propertyName];\n\n if (isValidPropertyDefinition(propertyDefinition)) {\n if (propertyDefinition.default) {\n config[castProperty] = propertyDefinition.default as Config[keyof Config];\n }\n\n if (propertyDefinition.type === 'array' && arrayHasInvalidDefaults(propertyDefinition)) {\n throw new Error(\n `When setting schema array defaults for the array assigned to \"${String(\n castProperty\n )}\", set them on the array and not the item.`\n );\n }\n\n if (propertyDefinition.type === 'object') {\n if (objectHasInvalidDefaults(propertyDefinition)) {\n throw new Error(\n `When setting schema property defaults for the object assigned to \"${String(\n castProperty\n )}\", set them on the object and not the property.`\n );\n }\n\n if (recordHasInvalidDefaults(propertyDefinition)) {\n throw new Error(\n `When setting schema property defaults for the object assigned to \"${String(\n castProperty\n )}\", set them on the object and not the property.`\n );\n }\n }\n }\n\n configBuilder[castProperty] = ((value: Config[keyof Config] | DerivedValueCallback, override?: boolean) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (isInvalidPropertyOverride(config[castProperty], override)) {\n throw new Error(\n `A value already exists for \"${String(\n castProperty\n )}\". 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.`\n );\n }\n\n let propertyValue: Config[keyof Config];\n const MAX_DEPTH = 1;\n\n if (!isValidValue(value)) {\n throw new Error(\n `\"${String(\n castProperty\n )}\" value has a depth greater than ${MAX_DEPTH}. To pass in objects with a depth greater than ${MAX_DEPTH}, create a builder for that config slice.`\n );\n }\n\n if (isDerivedValueCallback<DerivedValueCallback>(value)) {\n callbacks[castProperty] = value;\n propertyValue = value(config);\n } else {\n propertyValue = value;\n }\n\n config[castProperty] = propertyValue;\n return configBuilder;\n }) as ConfigBuilder<Config>[keyof Config];\n }\n\n return configBuilder;\n};\n","import {\n type AnyRecord,\n type Buckets,\n NonEmumeralProperties,\n type RunExperimentsCallback,\n type TransformConfigHandler,\n} from '../types.ts';\n\nexport const runExperiments =\n (callback: RunExperimentsCallback): TransformConfigHandler =>\n async <Config extends AnyRecord>(clone: Config, config: Config) => {\n if (NonEmumeralProperties.EXPERIMENT in config && typeof config.__experiment === 'object') {\n const { buckets, id } = config.__experiment as { buckets: Buckets<Config>; id: string };\n const bucket = await callback(id);\n\n if (bucket && bucket in buckets && buckets[bucket]) {\n return buckets[bucket]!;\n }\n }\n\n return {\n value: clone,\n };\n };\n","import { runExperiments } from './transformers/runExperiments.ts';\nimport type { ConfigParserOptions, TransformConfigHandler } from './types.ts';\nimport { transformConfig } from './utils/transformConfig.ts';\n\nexport const createConfigParser = async <Config extends object>(\n config: Config,\n { experimentsCallback }: ConfigParserOptions = {}\n) => {\n const handlers: TransformConfigHandler[] = [];\n\n if (experimentsCallback) {\n handlers.push(runExperiments(experimentsCallback));\n }\n\n return handlers.length > 0 ? await transformConfig(config, handlers) : config;\n};\n","import { get } from 'lodash-es';\nimport type { Get } from 'type-fest';\nimport type { Path, Scope } from './types.ts';\n\nexport interface ConfigReader<Config extends object> {\n read: <P extends Path<Config>>(path: P) => Get<Config, P>;\n scope: <S extends Scope<Config>>(scope: S) => ConfigReader<Get<Config, S>>;\n}\n\nexport const createConfigReader = <Config extends object>(config: Config): ConfigReader<Config> => {\n const configReader = {\n read: <P extends Path<Config>>(path: P) => get(config, path),\n scope: <S extends Scope<Config>>(scope: S) => createConfigReader(get(config, scope) as Get<Config, S>),\n } as ConfigReader<Config>;\n\n return configReader;\n};\n","export const countryCodes = [\n 'AF',\n 'AX',\n 'AL',\n 'DZ',\n 'AS',\n 'AD',\n 'AO',\n 'AI',\n 'AQ',\n 'AG',\n 'AR',\n 'AM',\n 'AW',\n 'AU',\n 'AT',\n 'AZ',\n 'BS',\n 'BH',\n 'BD',\n 'BB',\n 'BY',\n 'BE',\n 'BZ',\n 'BJ',\n 'BM',\n 'BT',\n 'BO',\n 'BA',\n 'BW',\n 'BV',\n 'BR',\n 'IO',\n 'BN',\n 'BG',\n 'BF',\n 'BI',\n 'KH',\n 'CM',\n 'CA',\n 'CV',\n 'KY',\n 'CF',\n 'TD',\n 'CL',\n 'CN',\n 'CX',\n 'CC',\n 'CO',\n 'KM',\n 'CG',\n 'CD',\n 'CK',\n 'CR',\n 'CI',\n 'HR',\n 'CU',\n 'CY',\n 'CZ',\n 'DK',\n 'DJ',\n 'DM',\n 'DO',\n 'EC',\n 'EG',\n 'SV',\n 'GQ',\n 'ER',\n 'EE',\n 'ET',\n 'FK',\n 'FO',\n 'FJ',\n 'FI',\n 'FR',\n 'GF',\n 'PF',\n 'TF',\n 'GA',\n 'GM',\n 'GE',\n 'DE',\n 'GH',\n 'GI',\n 'GR',\n 'GL',\n 'GD',\n 'GP',\n 'GU',\n 'GT',\n 'GG',\n 'GN',\n 'GW',\n 'GY',\n 'HT',\n 'HM',\n 'VA',\n 'HN',\n 'HK',\n 'HU',\n 'IS',\n 'IN',\n 'ID',\n 'IR',\n 'IQ',\n 'IE',\n 'IM',\n 'IL',\n 'IT',\n 'JM',\n 'JP',\n 'JE',\n 'JO',\n 'KZ',\n 'KE',\n 'KI',\n 'KR',\n 'KW',\n 'KG',\n 'LA',\n 'LV',\n 'LB',\n 'LS',\n 'LR',\n 'LY',\n 'LI',\n 'LT',\n 'LU',\n 'MO',\n 'MK',\n 'MG',\n 'MW',\n 'MY',\n 'MV',\n 'ML',\n 'MT',\n 'MH',\n 'MQ',\n 'MR',\n 'MU',\n 'YT',\n 'MX',\n 'FM',\n 'MD',\n 'MC',\n 'MN',\n 'ME',\n 'MS',\n 'MA',\n 'MZ',\n 'MM',\n 'NA',\n 'NR',\n 'NP',\n 'NL',\n 'AN',\n 'NC',\n 'NZ',\n 'NI',\n 'NE',\n 'NG',\n 'NU',\n 'NF',\n 'MP',\n 'NO',\n 'OM',\n 'PK',\n 'PW',\n 'PS',\n 'PA',\n 'PG',\n 'PY',\n 'PE',\n 'PH',\n 'PN',\n 'PL',\n 'PT',\n 'PR',\n 'QA',\n 'RE',\n 'RO',\n 'RU',\n 'RW',\n 'BL',\n 'SH',\n 'KN',\n 'LC',\n 'MF',\n 'PM',\n 'VC',\n 'WS',\n 'SM',\n 'ST',\n 'SA',\n 'SN',\n 'RS',\n 'SC',\n 'SL',\n 'SG',\n 'SK',\n 'SI',\n 'SB',\n 'SO',\n 'ZA',\n 'GS',\n 'ES',\n 'LK',\n 'SD',\n 'SR',\n 'SJ',\n 'SZ',\n 'SE',\n 'CH',\n 'SY',\n 'TW',\n 'TJ',\n 'TZ',\n 'TH',\n 'TL',\n 'TG',\n 'TK',\n 'TO',\n 'TT',\n 'TN',\n 'TR',\n 'TM',\n 'TC',\n 'TV',\n 'UG',\n 'UA',\n 'AE',\n 'GB',\n 'US',\n 'UM',\n 'UY',\n 'UZ',\n 'VU',\n 'VE',\n 'VN',\n 'VG',\n 'VI',\n 'WF',\n 'EH',\n 'YE',\n 'ZM',\n 'ZW',\n] as const;\n","export const countryNames = [\n 'Afghanistan',\n 'Albania',\n 'Algeria',\n 'Andorra',\n 'Angola',\n 'Anguilla',\n 'Antigua and Barbuda',\n 'Argentina',\n 'Armenia',\n 'Aruba',\n 'Australia',\n 'Austria',\n 'Azerbaijan',\n 'Bahamas',\n 'Bahrain',\n 'Bangladesh',\n 'Barbados',\n 'Belarus',\n 'Belgium',\n 'Belize',\n 'Benin',\n 'Bermuda',\n 'Bhutan',\n 'Bolivia',\n 'Bosnia and Herzegovina',\n 'Botswana',\n 'Brazil',\n 'British Virgin Islands',\n 'Brunei',\n 'Bulgaria',\n 'Burkina Faso',\n 'Burundi',\n 'Cambodia',\n 'Cameroon',\n 'Cape Verde',\n 'Cayman Islands',\n 'Chad',\n 'Chile',\n 'China',\n 'Colombia',\n 'Congo',\n 'Cook Islands',\n 'Costa Rica',\n 'Cote D Ivoire',\n 'Croatia',\n 'Cruise Ship',\n 'Cuba',\n 'Cyprus',\n 'Czech Republic',\n 'Denmark',\n 'Djibouti',\n 'Dominica',\n 'Dominican Republic',\n 'Ecuador',\n 'Egypt',\n 'El Salvador',\n 'Equatorial Guinea',\n 'Estonia',\n 'Ethiopia',\n 'Falkland Islands',\n 'Faroe Islands',\n 'Fiji',\n 'Finland',\n 'France',\n 'French Polynesia',\n 'French West Indies',\n 'Gabon',\n 'Gambia',\n 'Georgia',\n 'Germany',\n 'Ghana',\n 'Gibraltar',\n 'Greece',\n 'Greenland',\n 'Grenada',\n 'Guam',\n 'Guatemala',\n 'Guernsey',\n 'Guinea',\n 'Guinea Bissau',\n 'Guyana',\n 'Haiti',\n 'Honduras',\n 'Hong Kong',\n 'Hungary',\n 'Iceland',\n 'India',\n 'Indonesia',\n 'Iran',\n 'Iraq',\n 'Ireland',\n 'Isle of Man',\n 'Israel',\n 'Italy',\n 'Jamaica',\n 'Japan',\n 'Jersey',\n 'Jordan',\n 'Kazakhstan',\n 'Kenya',\n 'Kuwait',\n 'Kyrgyz Republic',\n 'Laos',\n 'Latvia',\n 'Lebanon',\n 'Lesotho',\n 'Liberia',\n 'Libya',\n 'Liechtenstein',\n 'Lithuania',\n 'Luxembourg',\n 'Macau',\n 'Macedonia',\n 'Madagascar',\n 'Malawi',\n 'Malaysia',\n 'Maldives',\n 'Mali',\n 'Malta',\n 'Mauritania',\n 'Mauritius',\n 'Mexico',\n 'Moldova',\n 'Monaco',\n 'Mongolia',\n 'Montenegro',\n 'Montserrat',\n 'Morocco',\n 'Mozambique',\n 'Namibia',\n 'Nepal',\n 'Netherlands',\n 'Netherlands Antilles',\n 'New Caledonia',\n 'New Zealand',\n 'Nicaragua',\n 'Niger',\n 'Nigeria',\n 'Norway',\n 'Oman',\n 'Pakistan',\n 'Palestine',\n 'Panama',\n 'Papua New Guinea',\n 'Paraguay',\n 'Peru',\n 'Philippines',\n 'Poland',\n 'Portugal',\n 'Puerto Rico',\n 'Qatar',\n 'Reunion',\n 'Romania',\n 'Russia',\n 'Rwanda',\n 'Saint Pierre and Miquelon',\n 'Samoa',\n 'San Marino',\n 'Satellite',\n 'Saudi Arabia',\n 'Senegal',\n 'Serbia',\n 'Seychelles',\n 'Sierra Leone',\n 'Singapore',\n 'Slovakia',\n 'Slovenia',\n 'South Africa',\n 'South Korea',\n 'Spain',\n 'Sri Lanka',\n 'St Kitts and Nevis',\n 'St Lucia',\n 'St Vincent',\n 'St. Lucia',\n 'Sudan',\n 'Suriname',\n 'Swaziland',\n 'Sweden',\n 'Switzerland',\n 'Syria',\n 'Taiwan',\n 'Tajikistan',\n 'Tanzania',\n 'Thailand',\n \"Timor L'Este\",\n 'Togo',\n 'Tonga',\n 'Trinidad and Tobago',\n 'Tunisia',\n 'Turkey',\n 'Turkmenistan',\n 'Turks and Caicos',\n 'Uganda',\n 'Ukraine',\n 'United Arab Emirates',\n 'United Kingdom',\n 'Uruguay',\n 'Uzbekistan',\n 'Venezuela',\n 'Vietnam',\n 'Virgin Islands (US)',\n 'Yemen',\n 'Zambia',\n 'Zimbabwe',\n] as const;\n","export const distanceUnits = ['km', 'mi'] as const;\n","export const languageCodes = [\n 'aa',\n 'ab',\n 'ae',\n 'af',\n 'ak',\n 'am',\n 'an',\n 'ar',\n 'as',\n 'av',\n 'ay',\n 'az',\n 'ba',\n 'be',\n 'bg',\n 'bi',\n 'bm',\n 'bn',\n 'bo',\n 'br',\n 'bs',\n 'ca',\n 'ce',\n 'ch',\n 'co',\n 'cr',\n 'cs',\n 'cu',\n 'cv',\n 'cy',\n 'da',\n 'de',\n 'dv',\n 'dz',\n 'ee',\n 'el',\n 'en',\n 'eo',\n 'es',\n 'et',\n 'eu',\n 'fa',\n 'ff',\n 'fi',\n 'fj',\n 'fo',\n 'fr',\n 'fy',\n 'ga',\n 'gd',\n 'gl',\n 'gn',\n 'gu',\n 'gv',\n 'ha',\n 'he',\n 'hi',\n 'ho',\n 'hr',\n 'ht',\n 'hu',\n 'hy',\n 'hz',\n 'ia',\n 'id',\n 'ie',\n 'ig',\n 'ii',\n 'ik',\n 'io',\n 'is',\n 'it',\n 'iu',\n 'ja',\n 'jv',\n 'ka',\n 'kg',\n 'ki',\n 'kj',\n 'kk',\n 'kl',\n 'km',\n 'kn',\n 'ko',\n 'kr',\n 'ks',\n 'ku',\n 'kv',\n 'kw',\n 'ky',\n 'la',\n 'lb',\n 'lg',\n 'li',\n 'ln',\n 'lo',\n 'lt',\n 'lu',\n 'lv',\n 'mg',\n 'mh',\n 'mi',\n 'mk',\n 'ml',\n 'mn',\n 'mr',\n 'ms',\n 'mt',\n 'my',\n 'na',\n 'nb',\n 'nd',\n 'ne',\n 'ng',\n 'nl',\n 'nn',\n 'no',\n 'nr',\n 'nv',\n 'ny',\n 'oc',\n 'oj',\n 'om',\n 'or',\n 'os',\n 'pa',\n 'pi',\n 'pl',\n 'ps',\n 'pt',\n 'qu',\n 'rm',\n 'rn',\n 'ro',\n 'ru',\n 'rw',\n 'sa',\n 'sc',\n 'sd',\n 'se',\n 'sg',\n 'si',\n 'sk',\n 'sl',\n 'sm',\n 'sn',\n 'so',\n 'sq',\n 'sr',\n 'ss',\n 'st',\n 'su',\n 'sv',\n 'sw',\n 'ta',\n 'te',\n 'tg',\n 'th',\n 'ti',\n 'tk',\n 'tl',\n 'tn',\n 'to',\n 'tr',\n 'ts',\n 'tt',\n 'tw',\n 'ty',\n 'ug',\n 'uk',\n 'ur',\n 'uz',\n 've',\n 'vi',\n 'vo',\n 'wa',\n 'wo',\n 'xh',\n 'yi',\n 'yo',\n 'za',\n 'zh',\n 'zu',\n] as const;\n","export const timezones = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Addis_Ababa',\n 'Africa/Algiers',\n 'Africa/Asmara',\n 'Africa/Bamako',\n 'Africa/Bangui',\n 'Africa/Banjul',\n 'Africa/Bissau',\n 'Africa/Blantyre',\n 'Africa/Brazzaville',\n 'Africa/Bujumbura',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/Conakry',\n 'Africa/Dakar',\n 'Africa/Dar_es_Salaam',\n 'Africa/Djibouti',\n 'Africa/Douala',\n 'Africa/El_Aaiun',\n 'Africa/Freetown',\n 'Africa/Gaborone',\n 'Africa/Harare',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Kampala',\n 'Africa/Khartoum',\n 'Africa/Kigali',\n 'Africa/Kinshasa',\n 'Africa/Lagos',\n 'Africa/Libreville',\n 'Africa/Lome',\n 'Africa/Luanda',\n 'Africa/Lubumbashi',\n 'Africa/Lusaka',\n 'Africa/Malabo',\n 'Africa/Maputo',\n 'Africa/Maseru',\n 'Africa/Mbabane',\n 'Africa/Mogadishu',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Niamey',\n 'Africa/Nouakchott',\n 'Africa/Ouagadougou',\n 'Africa/Porto-Novo',\n 'Africa/Sao_Tome',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Anguilla',\n 'America/Antigua',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Aruba',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Cayenne',\n 'America/Cayman',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Dominica',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Fort_Nelson',\n 'America/Fortaleza',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Grenada',\n 'America/Guadeloupe',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/Kralendijk',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Lower_Princes',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Marigot',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Montserrat',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Santa_Isabel',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Sitka',\n 'America/St_Barthelemy',\n 'America/St_Johns',\n 'America/St_Kitts',\n 'America/St_Lucia',\n 'America/St_Thomas',\n 'America/St_Vincent',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Tortola',\n 'America/Vancouver',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/McMurdo',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Arctic/Longyearbyen',\n 'Asia/Aden',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Baghdad',\n 'Asia/Bahrain',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Colombo',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Gaza',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kathmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Kuwait',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Muscat',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Phnom_Penh',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qyzylorda',\n 'Asia/Rangoon',\n 'Asia/Riyadh',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Ulaanbaatar',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vientiane',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faroe',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/St_Helena',\n 'Atlantic/Stanley',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/Perth',\n 'Australia/Sydney',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Athens',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Bratislava',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Busingen',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Guernsey',\n 'Europe/Helsinki',\n 'Europe/Isle_of_Man',\n 'Europe/Istanbul',\n 'Europe/Jersey',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Lisbon',\n 'Europe/Ljubljana',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Mariehamn',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Podgorica',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/San_Marino',\n 'Europe/Sarajevo',\n 'Europe/Simferopol',\n 'Europe/Skopje',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Uzhgorod',\n 'Europe/Vaduz',\n 'Europe/Vatican',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zagreb',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Indian/Antananarivo',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Comoro',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Mayotte',\n 'Indian/Reunion',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Johnston',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Midway',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Saipan',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n] as const;\n"],"names":["NonEmumeralProperties","TransformConfigHandlerAction","NON_ENUMERABLE_KEYS","Set","Object","values","cloneNonEnumerableValues","clone","config","nonEnumerableKey","defineProperty","configurable","enumerable","value","arrayHasInvalidDefaults","propertyDefinition","items","isDerivedValueCallback","isInvalidPropertyOverride","propertyValue","override","undefined","RESERVED_KEYWORDS","isPropertyReservedWord","propertyName","has","isSchemaValid","schema","type","isValidPropertyDefinition","isValidValue","depth","isPlainObject","object","__zcb","every","v","Array","isArray","objectHasInvalidDefaults","properties","some","recordHasInvalidDefaults","additionalProperties","transformArray","list","handler","Promise","all","map","entry","transformConfig","transform","handlers","castArray","callback","result","resolve","action","DELETE_NODE","SKIP_NODE","key","transformArraySync","transformConfigSync","createConfigBuilder","zodSchema","derivedValueCallbacks","initialValues","ZCB","callbacks","configBuilder","disable","DISABLED","errors","parse","error","experiment","EXPERIMENT","extend","__callbacks","flush","fork","toJson","JSON","stringify","validate","console","property","CALLBACKS","jsonSchema","zodToJsonSchema","Error","String","join","castProperty","default","MAX_DEPTH","runExperiments","__experiment","buckets","id","bucket","createConfigParser","experimentsCallback","push","length","createConfigReader","configReader","read","path","get","scope","countryCodes","countryNames","distanceUnits","languageCodes","timezones"],"mappings":"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CJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EA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"}
@@ -0,0 +1,4 @@
1
+ /* eslint-disable prettier/prettier, import/no-default-export, unicorn/numeric-separators-style */
2
+ /* This file is autogenerated, do not edit directly, your changes will not perist. */
3
+
4
+ export default {{{ config }}} as const;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zcb",
3
3
  "description": "Build configs with type safety from zod schema.",
4
- "version": "0.0.21",
4
+ "version": "0.0.23",
5
5
  "author": "Dylan Aubrey",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/badbatch/zod-config-builder",
@@ -11,8 +11,11 @@
11
11
  "bin": {
12
12
  "zcb": "./bin/zcb.mjs"
13
13
  },
14
- "main": "./dist/main/index.mjs",
15
- "types": "./dist/types/index.d.ts",
14
+ "exports": {
15
+ "types": "./dist/types/index.d.ts",
16
+ "import": "./dist/esm/index.mjs",
17
+ "require": "./dist/cjs/index.cjs"
18
+ },
16
19
  "publishConfig": {
17
20
  "access": "public"
18
21
  },
@@ -20,8 +23,8 @@
20
23
  "fs-extra": "^11.1.1",
21
24
  "handlebars": "^4.7.7",
22
25
  "json-schema": "^0.4.0",
23
- "shelljs": "^0.8.4",
24
- "yargs": "^15.1.0",
26
+ "shelljs": "^0.8.5",
27
+ "yargs": "^15.4.1",
25
28
  "zod": "^3.21.4",
26
29
  "zod-to-json-schema": "^3.21.0"
27
30
  },
@@ -35,10 +38,12 @@
35
38
  "@babel/cli": "^7.21.5",
36
39
  "@babel/core": "^7.21.8",
37
40
  "@babel/eslint-parser": "^7.21.8",
38
- "@babel/plugin-proposal-class-properties": "^7.18.6",
39
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
41
+ "@babel/plugin-proposal-decorators": "^7.23.3",
40
42
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
41
43
  "@babel/plugin-syntax-import-assertions": "^7.20.0",
44
+ "@babel/plugin-transform-class-properties": "^7.23.3",
45
+ "@babel/plugin-transform-export-namespace-from": "^7.23.4",
46
+ "@babel/plugin-transform-modules-commonjs": "^7.23.3",
42
47
  "@babel/plugin-transform-runtime": "^7.21.4",
43
48
  "@babel/preset-env": "^7.21.5",
44
49
  "@babel/preset-react": "^7.18.6",
@@ -48,41 +53,43 @@
48
53
  "@commitlint/config-conventional": "^17.6.3",
49
54
  "@commitlint/prompt-cli": "^17.6.3",
50
55
  "@jest/globals": "^29.5.0",
51
- "@repodog/babel-config": "^1.1.7",
52
- "@repodog/cli": "^1.1.8",
53
- "@repodog/commitlint-config": "^1.1.5",
54
- "@repodog/eslint-config": "^1.1.9",
55
- "@repodog/eslint-config-jest": "^1.1.9",
56
- "@repodog/jest-config": "^1.1.7",
56
+ "@repodog/babel-config": "^1.1.11",
57
+ "@repodog/cli": "^1.2.3",
58
+ "@repodog/commitlint-config": "^1.1.6",
59
+ "@repodog/eslint-config": "^1.1.17",
60
+ "@repodog/eslint-config-jest": "^1.1.10",
61
+ "@repodog/jest-config": "^1.1.11",
57
62
  "@repodog/markdownlint-config": "^1.1.5",
58
63
  "@repodog/prettier-config": "^1.1.5",
59
- "@repodog/rollup-config": "^1.1.6",
60
- "@repodog/syncpack-config": "^1.1.5",
61
- "@repodog/ts-config": "^1.1.5",
64
+ "@repodog/rollup-config": "^1.1.8",
65
+ "@repodog/syncpack-config": "^1.2.1",
66
+ "@repodog/ts-config": "^1.1.6",
62
67
  "@rollup/plugin-babel": "^6.0.3",
68
+ "@rollup/plugin-commonjs": "^25.0.7",
63
69
  "@rollup/plugin-image": "^3.0.2",
64
70
  "@rollup/plugin-json": "^6.0.0",
65
71
  "@rollup/plugin-node-resolve": "^15.0.2",
66
72
  "@rollup/plugin-terser": "^0.4.1",
67
73
  "@types/fs-extra": "^11.0.1",
68
- "@types/jest": "^25.1.3",
74
+ "@types/jest": "^25.2.3",
69
75
  "@types/json-schema": "^7.0.11",
70
76
  "@types/lodash-es": "^4.17.9",
71
- "@types/node": "^18.11.18",
72
- "@types/shelljs": "^0.8.11",
73
- "@types/yargs": "^15.0.4",
77
+ "@types/node": "^18.16.7",
78
+ "@types/shelljs": "^0.8.12",
79
+ "@types/yargs": "^15.0.15",
74
80
  "@typescript-eslint/eslint-plugin": "^5.59.5",
75
81
  "@typescript-eslint/parser": "^5.59.5",
76
82
  "babel-jest": "^29.5.0",
77
83
  "babel-plugin-codegen": "^4.1.5",
78
84
  "babel-plugin-macros": "^3.1.0",
79
- "core-js": "^3.27.2",
80
- "del-cli": "^3.0.0",
85
+ "core-js": "^3.30.2",
86
+ "del-cli": "^3.0.1",
81
87
  "eslint": "^8.40.0",
82
88
  "eslint-config-prettier": "^8.8.0",
83
89
  "eslint-import-resolver-typescript": "^3.5.5",
84
90
  "eslint-plugin-import": "^2.27.5",
85
91
  "eslint-plugin-jest": "^27.2.1",
92
+ "eslint-plugin-prefer-arrow": "^1.2.3",
86
93
  "eslint-plugin-prettier": "^4.2.1",
87
94
  "eslint-plugin-sort-class-members": "^1.18.0",
88
95
  "eslint-plugin-sort-destructure-keys": "^1.5.0",
@@ -107,7 +114,7 @@
107
114
  "ts-node": "^10.9.1",
108
115
  "ts-toolbelt": "^9.6.0",
109
116
  "type-fest": "^3.10.0",
110
- "typescript": "^5.0.3"
117
+ "typescript": "^5.0.4"
111
118
  },
112
119
  "keywords": [
113
120
  "config",
@@ -120,7 +127,8 @@
120
127
  "clean:dist": "del-cli ./dist",
121
128
  "commit": "commit",
122
129
  "compile": "pnpm run /^compile:.*/",
123
- "compile:main": "rollup -c ./rollup.config.cjs",
130
+ "compile:cjs": "MODULE_SYSTEM=cjs rollup -c ./rollup.config.cjs",
131
+ "compile:esm": "rollup -c ./rollup.config.cjs",
124
132
  "compile:types": "tsc --project ./tsconfig.build.json",
125
133
  "cut:changelog": "changelog",
126
134
  "cut:post-version": "pnpm run build",
File without changes
File without changes
File without changes
File without changes
File without changes