zcb 0.3.8 → 0.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli.cjs.map +1 -1
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/production.analysis.txt +19 -19
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +25 -21
- package/pnpm-workspace.yaml +1 -15
package/dist/cjs/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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":"0RAEO,MAAMA,EAAmD,CAC9DC,EACAC,IAEI,eAAgBA,EACX,CACLC,OAAQ,eAIL,CACLC,MAAOH,GCTLI,EAAiB,CAACC,EAAaC,IACnCC,QAAQC,IACNH,EAAKI,IAAIC,GACHC,EAAAA,cAAcD,GACTE,EAAgBF,EAAOJ,GAG5BO,MAAMC,QAAQJ,GACTN,EAAeM,EAAOJ,GAIxBI,IAIAE,EAAkBG,MAC7Bd,EACAK,EAA6D,MAI7D,IAAIU,EAAY,CAAA,EAChB,MAAMC,EAAWC,EAAAA,UAAUZ,GAE3B,IAAK,MAAMa,KAAYF,EAAU,CAC/B,MAAMG,QAAeb,QAAQc,QAAQF,EAASH,EAAWf,IAEzD,GAAsB,gBAAlBmB,EAAOlB,OAGT,MAAO,CAAA,EAOT,GAJIkB,EAAOjB,QACTa,EAAYI,EAAOjB,OAGC,cAAlBiB,EAAOlB,OACT,OAAOc,CAEX,CAEA,IAAK,MAAMM,KAAOrB,EAAQ,CACxB,MAAME,EAAQF,EAAOqB,GAEjBX,EAAAA,cAAcR,GAChBa,EAAUM,SAAaV,EAAgBT,EAAOG,GACrCO,MAAMC,QAAQX,GAGvBa,EAAUM,SAAclB,EAAeD,EAAOG,GAE9CU,EAAUM,GAAOnB,CAErB,CAEA,OAAOa,GClDIO,EAAuBR,MAClCd,GACEuB,sBAAqBC,iBAEvB,MAAMR,EAAqC,CAAClB,GCZ5C,IAACoB,EDcGK,GACFP,EAASS,MCfVP,EDegCK,ECdjCT,MAAiCf,EAAeC,KAC9C,GAAI,iBAAkBA,GAAyC,iBAAxBA,EAAO0B,aAA2B,CACvE,MAAMC,QAAgBT,EAASlB,EAAO0B,aAAc3B,EAAOC,GAQ3D,OALAD,EAAM2B,aAAe,CACnBC,UACAC,GAAI5B,EAAO0B,cAGN,CACLxB,MAAOH,EAEX,CAEA,MAAO,CACLG,MAAOH,MDCX,MAAM8B,EAAUC,EAAKD,QAAQE,EAAAA,cAAc,oBAAAC,SAAAC,QAAA,OAAAC,cAAAC,YAAAC,KAAAC,GAAA,WAAAA,EAAAC,QAAAC,eAAAF,EAAAG,KAAA,IAAAC,IAAA,UAAAT,SAAAU,SAAAN,OAMrCO,EAJWC,EAAWC,QAC1BC,EAAAA,aAAahB,EAAKV,QAAQS,EAAS,8BAA+B,CAAEkB,SAAU,SAGjEC,CAAS,CACtBhD,OAAQiD,KAAKC,gBACLvC,EAAgBX,EAAQgB,GAC9B,CAACmC,EAAIC,SAAsBC,IAAND,EAAkB,YAAcA,EACrD,KAGDE,WAAW,4BAA6B,OACxCA,WAAW,cAAe,aAE7BC,EAAQC,KAAK,iCAAiChC,KAC9C+B,EAAQC,KAAK,mCAAmCb,OAChDc,EAAAA,eAAe3B,EAAKV,QAAQsC,QAAQC,MAAOnC,GAAamB,IEhC7CiB,EAAqC,CAChDC,EACArC,EACAsC,EACAC,KAEAC,OAAO5C,EAAAA,QAAQsC,QAAQC,MAAOE,IAG3BI,KAAK,EAAGC,QAASC,MACXA,EAAcC,cACjBb,EAAQC,KAAK,OAAOM,uBACpBP,EAAQC,KAAK,OAAOM,wBAA8BK,EAAcE,eAChEd,EAAQC,KAAK,OAAOM,iBAAuBb,KAAKC,UAAUiB,EAAcG,eAAWjB,EAAW,QAC9FE,EAAQgB,KAAK,IAGfhB,EAAQC,KAAK,kCACbD,EAAQC,KAAK,OAAOM,wBAA8BK,EAAcE,eAE5DN,EACFC,OAAO5C,EAAAA,QAAQsC,QAAQC,MAAOI,IAG3BE,KAAK,EAAGC,QAAS3C,MACXD,EAAqB6C,EAAcK,UAAW,CAAEjD,sBAAqBC,iBAI3EiD,MAAOC,IACAA,aAAiBC,QAIvBpB,EAAQC,KAAK,OAAOM,uBAA6BY,EAAME,WAEnDF,EAAMG,OACRtB,EAAQC,KAAK,OAAOM,sBAA4BY,EAAMG,cAOzDvD,EAAqB6C,EAAcK,UAAW,CAAEhD,iBAItDiD,MAAOC,IACAA,aAAiBC,QAIvBpB,EAAQC,KAAK,OAAOM,uBAA6BY,EAAME,WAEnDF,EAAMG,OACRtB,EAAQC,KAAK,OAAOM,sBAA4BY,EAAMG,eChDxDC,EAAqBC,GACzBA,EACGC,WAAW,aAAc,CACxBC,cAAc,EACdC,KAAM,oDACNC,KAAM,WAEPH,WAAW,cAAe,CACzBC,cAAc,EACdC,KAAM,8CACNC,KAAM,WAEPC,OAAO,4BAA6B,CACnCF,KAAM,oDACNC,KAAM,uBAGO,KAGJE,EAAMC,EAAAA,QAAQ5B,QAAQ6B,OAOhCzB,QACC,mCACA,0CACAiB,GAAYD,EAAkBC,GAC9BA,IACExB,EAAQC,KAAK,+BAA+BuB,EAAS,iBAErDS,EAAAA,UAAUpE,EAAAA,QAAQsC,QAAQC,MAAOoB,EAAS,eAAgB,KACxDxB,EAAQC,KAAK,qCAEbI,EACEmB,EAAS,cACTA,EAAS,eACT,QACAA,EAAS,kCAKhBjB,QACC,mCACA,qCACAiB,GAAYD,EAAkBC,GAC9BA,IACExB,EAAQC,KAAK,+BAA+BuB,EAAS,iBAErDnB,EACEmB,EAAS,cACTA,EAAS,eACT,QACAA,EAAS,gCAIdU,OACAC"}
|
|
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","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":"0RAEO,MAAMA,EAAmD,CAC9DC,EACAC,IAEI,eAAgBA,EACX,CACLC,OAAQ,eAIL,CACLC,MAAOH,GCTLI,EAAiB,CAACC,EAAaC,IACnCC,QAAQC,IACNH,EAAKI,IAAIC,GACHC,EAAAA,cAAcD,GACTE,EAAgBF,EAAOJ,GAG5BO,MAAMC,QAAQJ,GACTN,EAAeM,EAAOJ,GAIxBI,IAIAE,EAAkBG,MAC7Bd,EACAK,EAA6D,MAI7D,IAAIU,EAAY,CAAA,EAChB,MAAMC,EAAWC,EAAAA,UAAUZ,GAE3B,IAAK,MAAMa,KAAYF,EAAU,CAC/B,MAAMG,QAAeb,QAAQc,QAAQF,EAASH,EAAWf,IAEzD,GAAsB,gBAAlBmB,EAAOlB,OAGT,MAAO,CAAA,EAOT,GAJIkB,EAAOjB,QACTa,EAAYI,EAAOjB,OAGC,cAAlBiB,EAAOlB,OACT,OAAOc,CAEX,CAEA,IAAK,MAAMM,KAAOrB,EAAQ,CACxB,MAAME,EAAQF,EAAOqB,GAEjBX,EAAAA,cAAcR,GAChBa,EAAUM,SAAaV,EAAgBT,EAAOG,GACrCO,MAAMC,QAAQX,GAGvBa,EAAUM,SAAclB,EAAeD,EAAOG,GAE9CU,EAAUM,GAAOnB,CAErB,CAEA,OAAOa,GClDIO,EAAuBR,MAClCd,GACEuB,sBAAqBC,iBAEvB,MAAMR,EAAqC,CAAClB,GCZ5C,IAACoB,EDcGK,GACFP,EAASS,MCfVP,EDegCK,ECdjCT,MAAiCf,EAAeC,KAC9C,GAAI,iBAAkBA,GAAyC,iBAAxBA,EAAO0B,aAA2B,CACvE,MAAMC,QAAgBT,EAASlB,EAAO0B,aAAc3B,EAAOC,GAQ3D,OALAD,EAAM2B,aAAe,CACnBC,UACAC,GAAI5B,EAAO0B,cAGN,CACLxB,MAAOH,EAEX,CAEA,MAAO,CACLG,MAAOH,MDCX,MAAM8B,EAAUC,EAAKD,QAAQE,EAAAA,cAAc,oBAAAC,SAAAC,QAAA,OAAAC,cAAAC,YAAAC,KAAAC,GAAA,WAAAA,EAAAC,QAAAC,eAAAF,EAAAG,KAAA,IAAAC,IAAA,UAAAT,SAAAU,SAAAN,OAMrCO,EAJWC,EAAWC,QAC1BC,EAAAA,aAAahB,EAAKV,QAAQS,EAAS,8BAA+B,CAAEkB,SAAU,SAGjEC,CAAS,CACtBhD,OAAQiD,KAAKC,gBACLvC,EAAgBX,EAAQgB,GAC9B,CAACmC,EAAIC,SAAsBC,IAAND,EAAkB,YAAcA,EACrD,KAGDE,WAAW,4BAA6B,OACxCA,WAAW,cAAe,aAE7BC,EAAQC,KAAK,iCAAiChC,KAC9C+B,EAAQC,KAAK,mCAAmCb,OAChDc,EAAAA,eAAe3B,EAAKV,QAAQsC,QAAQC,MAAOnC,GAAamB,IEhC7CiB,EAAqC,CAChDC,EACArC,EACAsC,EACAC,YAEO3C,EAAAA,QAAQsC,QAAQC,MAAOE,IAG3BG,KAAK,EAAGC,QAASC,MACXA,EAAcC,cACjBZ,EAAQC,KAAK,OAAOM,uBACpBP,EAAQC,KAAK,OAAOM,wBAA8BI,EAAcE,eAChEb,EAAQC,KAAK,OAAOM,iBAAuBb,KAAKC,UAAUgB,EAAcG,eAAWhB,EAAW,QAC9FE,EAAQe,KAAK,IAGff,EAAQC,KAAK,kCACbD,EAAQC,KAAK,OAAOM,wBAA8BI,EAAcE,eAE5DL,SACK3C,EAAAA,QAAQsC,QAAQC,MAAOI,IAG3BC,KAAK,EAAGC,QAAS1C,MACXD,EAAqB4C,EAAcK,UAAW,CAAEhD,sBAAqBC,iBAI3EgD,MAAOC,IACAA,aAAiBC,QAIvBnB,EAAQC,KAAK,OAAOM,uBAA6BW,EAAME,WAEnDF,EAAMG,OACRrB,EAAQC,KAAK,OAAOM,sBAA4BW,EAAMG,cAOzDtD,EAAqB4C,EAAcK,UAAW,CAAE/C,iBAItDgD,MAAOC,IACAA,aAAiBC,QAIvBnB,EAAQC,KAAK,OAAOM,uBAA6BW,EAAME,WAEnDF,EAAMG,OACRrB,EAAQC,KAAK,OAAOM,sBAA4BW,EAAMG,eChDxDC,EAAqBC,GACzBA,EACGC,WAAW,aAAc,CACxBC,cAAc,EACdC,KAAM,oDACNC,KAAM,WAEPH,WAAW,cAAe,CACzBC,cAAc,EACdC,KAAM,8CACNC,KAAM,WAEPC,OAAO,4BAA6B,CACnCF,KAAM,oDACNC,KAAM,uBAGO,KAGJE,EAAMC,EAAAA,QAAQ3B,QAAQ4B,OAOhCxB,QACC,mCACA,0CACAgB,GAAYD,EAAkBC,GAC9BA,IACEvB,EAAQC,KAAK,+BAA+BsB,EAAS,iBAErDS,EAAAA,UAAUnE,EAAAA,QAAQsC,QAAQC,MAAOmB,EAAS,eAAgB,KACxDvB,EAAQC,KAAK,qCAEbI,EACEkB,EAAS,cACTA,EAAS,eACT,QACAA,EAAS,kCAKhBhB,QACC,mCACA,qCACAgB,GAAYD,EAAkBC,GAC9BA,IACEvB,EAAQC,KAAK,+BAA+BsB,EAAS,iBAErDlB,EACEkB,EAAS,cACTA,EAAS,eACT,QACAA,EAAS,gCAIdU,OACAC"}
|
package/dist/esm/cli.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.mjs","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","url","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","cli","yargs","hideBin","argv","watchFile","help","parseAsync"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.mjs","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","url","output","Handlebars","compile","readFileSync","encoding","template","JSON","stringify","_k","v","undefined","replaceAll","shelljs","echo","outputFileSync","process","cwd","importValidateTransformWriteConfig","inputFile","command","experimentCallbackFile","then","default","configBuilder","$validate","$toJson","$errors","exit","$values","catch","error","Error","message","stack","generateArguments","cmdYargs","positional","demandOption","desc","type","option","cli","yargs","hideBin","argv","watchFile","help","parseAsync"],"mappings":"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"}
|
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
-----------------------------
|
|
2
2
|
Rollup File Analysis
|
|
3
3
|
-----------------------------
|
|
4
|
-
bundle size: 7.
|
|
4
|
+
bundle size: 7.035 KB
|
|
5
5
|
original size: 11.406 KB
|
|
6
|
-
code reduction:
|
|
6
|
+
code reduction: 38.32 %
|
|
7
7
|
module count: 6
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
███████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
10
10
|
file: /src/utils/importValidateTransformWriteConfig.ts
|
|
11
|
-
bundle space:
|
|
12
|
-
rendered size: 2.
|
|
11
|
+
bundle space: 30.18 %
|
|
12
|
+
rendered size: 2.123 KB
|
|
13
13
|
original size: 2.453 KB
|
|
14
|
-
code reduction: 13.
|
|
14
|
+
code reduction: 13.45 %
|
|
15
15
|
dependents: 1
|
|
16
16
|
- /src/cli.ts
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
19
19
|
file: /src/utils/transformConfig.ts
|
|
20
|
-
bundle space:
|
|
21
|
-
rendered size: 1.
|
|
20
|
+
bundle space: 24.02 %
|
|
21
|
+
rendered size: 1.69 KB
|
|
22
22
|
original size: 4.004 KB
|
|
23
|
-
code reduction: 57.
|
|
23
|
+
code reduction: 57.79 %
|
|
24
24
|
dependents: 1
|
|
25
25
|
- /src/utils/transformWriteConfig.ts
|
|
26
26
|
|
|
27
27
|
███████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
28
28
|
file: /src/cli.ts
|
|
29
|
-
bundle space: 22.
|
|
30
|
-
rendered size: 1.
|
|
29
|
+
bundle space: 22.91 %
|
|
30
|
+
rendered size: 1.612 KB
|
|
31
31
|
original size: 2.42 KB
|
|
32
|
-
code reduction:
|
|
32
|
+
code reduction: 33.39 %
|
|
33
33
|
dependents: 0
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
██████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
36
36
|
file: /src/utils/transformWriteConfig.ts
|
|
37
|
-
bundle space:
|
|
38
|
-
rendered size:
|
|
37
|
+
bundle space: 12.71 %
|
|
38
|
+
rendered size: 894 Bytes
|
|
39
39
|
original size: 1.532 KB
|
|
40
|
-
code reduction:
|
|
40
|
+
code reduction: 41.64 %
|
|
41
41
|
dependents: 1
|
|
42
42
|
- /src/utils/importValidateTransformWriteConfig.ts
|
|
43
43
|
|
|
44
44
|
███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
45
45
|
file: /src/transformers/setupExperiments.ts
|
|
46
|
-
bundle space: 7.
|
|
46
|
+
bundle space: 7.43 %
|
|
47
47
|
rendered size: 523 Bytes
|
|
48
48
|
original size: 660 Bytes
|
|
49
49
|
code reduction: 20.76 %
|
|
@@ -52,7 +52,7 @@ dependents: 1
|
|
|
52
52
|
|
|
53
53
|
█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
54
54
|
file: /src/transformers/removeDisabledSlices.ts
|
|
55
|
-
bundle space: 2.
|
|
55
|
+
bundle space: 2.74 %
|
|
56
56
|
rendered size: 193 Bytes
|
|
57
57
|
original size: 337 Bytes
|
|
58
58
|
code reduction: 42.73 %
|