zcb 0.2.10 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -4
  3. package/bin/zcb.js +3 -1
  4. package/dist/cjs/cli.cjs.map +1 -1
  5. package/dist/cjs/index.cjs +1 -1
  6. package/dist/cjs/index.cjs.map +1 -1
  7. package/dist/esm/cli.mjs.map +1 -1
  8. package/dist/esm/index.mjs +1 -1
  9. package/dist/esm/index.mjs.map +1 -1
  10. package/dist/types/cjs/createConfigBuilder.d.cts.map +1 -1
  11. package/dist/types/cjs/createConfigParser.d.cts.map +1 -1
  12. package/dist/types/cjs/createConfigReader.d.cts +1 -4
  13. package/dist/types/cjs/createConfigReader.d.cts.map +1 -1
  14. package/dist/types/cjs/transformers/cloneNonEnumerableValues.d.cts.map +1 -1
  15. package/dist/types/cjs/transformers/runExperiments.d.cts.map +1 -1
  16. package/dist/types/cjs/transformers/setupExperiments.d.cts.map +1 -1
  17. package/dist/types/cjs/utils/arrayHasInvalidDefaults.d.cts.map +1 -1
  18. package/dist/types/cjs/utils/collateDefaultValues.d.cts.map +1 -1
  19. package/dist/types/cjs/utils/collateObjectPropertyDefaults.d.cts.map +1 -1
  20. package/dist/types/cjs/utils/importValidateTransformWriteConfig.d.cts.map +1 -1
  21. package/dist/types/cjs/utils/isDerivedValueCallback.d.cts.map +1 -1
  22. package/dist/types/cjs/utils/isInvalidPropertyOverride.d.cts.map +1 -1
  23. package/dist/types/cjs/utils/isPropertyReservedWord.d.cts.map +1 -1
  24. package/dist/types/cjs/utils/isSchemaValid.d.cts.map +1 -1
  25. package/dist/types/cjs/utils/isValidPropertyDefinition.d.cts.map +1 -1
  26. package/dist/types/cjs/utils/isValidValue.d.cts.map +1 -1
  27. package/dist/types/cjs/utils/jsonStringifyReplacer.d.cts.map +1 -1
  28. package/dist/types/cjs/utils/objectPropertyHasDefaults.d.cts.map +1 -1
  29. package/dist/types/cjs/utils/recordHasInvalidDefaults.d.cts.map +1 -1
  30. package/dist/types/cjs/utils/transformConfig.d.cts.map +1 -1
  31. package/dist/types/cjs/utils/transformWriteConfig.d.cts.map +1 -1
  32. package/dist/types/esm/createConfigBuilder.d.ts.map +1 -1
  33. package/dist/types/esm/createConfigParser.d.ts.map +1 -1
  34. package/dist/types/esm/createConfigReader.d.ts +1 -4
  35. package/dist/types/esm/createConfigReader.d.ts.map +1 -1
  36. package/dist/types/esm/transformers/cloneNonEnumerableValues.d.ts.map +1 -1
  37. package/dist/types/esm/transformers/runExperiments.d.ts.map +1 -1
  38. package/dist/types/esm/transformers/setupExperiments.d.ts.map +1 -1
  39. package/dist/types/esm/utils/arrayHasInvalidDefaults.d.ts.map +1 -1
  40. package/dist/types/esm/utils/collateDefaultValues.d.ts.map +1 -1
  41. package/dist/types/esm/utils/collateObjectPropertyDefaults.d.ts.map +1 -1
  42. package/dist/types/esm/utils/importValidateTransformWriteConfig.d.ts.map +1 -1
  43. package/dist/types/esm/utils/isDerivedValueCallback.d.ts.map +1 -1
  44. package/dist/types/esm/utils/isInvalidPropertyOverride.d.ts.map +1 -1
  45. package/dist/types/esm/utils/isPropertyReservedWord.d.ts.map +1 -1
  46. package/dist/types/esm/utils/isSchemaValid.d.ts.map +1 -1
  47. package/dist/types/esm/utils/isValidPropertyDefinition.d.ts.map +1 -1
  48. package/dist/types/esm/utils/isValidValue.d.ts.map +1 -1
  49. package/dist/types/esm/utils/jsonStringifyReplacer.d.ts.map +1 -1
  50. package/dist/types/esm/utils/objectPropertyHasDefaults.d.ts.map +1 -1
  51. package/dist/types/esm/utils/recordHasInvalidDefaults.d.ts.map +1 -1
  52. package/dist/types/esm/utils/transformConfig.d.ts.map +1 -1
  53. package/dist/types/esm/utils/transformWriteConfig.d.ts.map +1 -1
  54. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  55. package/package.json +32 -32
  56. package/src/__testUtils__/builtConfig.ts +1 -1
  57. package/src/__testUtils__/configBuilder.ts +2 -0
  58. package/src/createConfigReader.test.ts +2 -2
  59. package/src/createConfigReader.ts +5 -9
  60. package/src/transformers/cloneNonEnumerableValues.ts +0 -1
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "zcb",
3
3
  "description": "Build configs with type safety from zod schema.",
4
- "version": "0.2.10",
5
- "author": "Dylan Aubrey",
4
+ "version": "0.3.1",
5
+ "author": "miami-man",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/badbatch/zod-config-builder",
8
8
  "repository": "badbatch/zod-config-builder",
@@ -31,56 +31,56 @@
31
31
  "@types/fs-extra": "^11.0.4",
32
32
  "@types/json-schema": "^7.0.15",
33
33
  "@types/lodash-es": "^4.17.12",
34
- "@types/shelljs": "^0.8.15",
34
+ "@types/shelljs": "^0.8.16",
35
35
  "@types/uuid": "^10.0.0",
36
36
  "@types/yargs": "^17.0.33",
37
- "core-js": "^3.39.0",
38
- "fs-extra": "^11.2.0",
37
+ "core-js": "^3.43.0",
38
+ "fs-extra": "^11.3.0",
39
39
  "handlebars": "^4.7.8",
40
40
  "json-schema": "^0.4.0",
41
41
  "lodash-es": "^4.17.21",
42
- "shelljs": "^0.8.5",
42
+ "shelljs": "^0.10.0",
43
43
  "ts-node": "^10.9.2",
44
44
  "ts-toolbelt": "^9.6.0",
45
- "type-fest": "^4.26.1",
46
- "uuid": "^11.0.2",
47
- "yargs": "^17.7.2",
48
- "zod": "^3.23.8",
49
- "zod-to-json-schema": "^3.23.5"
45
+ "type-fest": "^4.41.0",
46
+ "uuid": "^11.1.0",
47
+ "yargs": "^18.0.0",
48
+ "zod": "^3.25.63",
49
+ "zod-to-json-schema": "^3.24.5"
50
50
  },
51
51
  "devDependencies": {
52
- "@commitlint/cli": "^19.5.0",
52
+ "@commitlint/cli": "^19.8.1",
53
53
  "@jest/globals": "^29.7.0",
54
- "@repodog/cli": "^1.6.36",
54
+ "@repodog/cli": "^1.6.43",
55
55
  "@repodog/commitlint-config": "^19.0.3",
56
- "@repodog/eslint-config": "^9.0.7",
57
- "@repodog/eslint-config-jest": "^9.0.3",
58
- "@repodog/jest-config": "^29.0.3",
56
+ "@repodog/eslint-config": "^9.0.15",
57
+ "@repodog/eslint-config-jest": "^9.0.4",
58
+ "@repodog/jest-config": "^29.0.4",
59
59
  "@repodog/markdownlint-config": "^1.2.4",
60
60
  "@repodog/prettier-config": "^3.0.2",
61
- "@repodog/rollup-config": "^4.0.3",
62
- "@repodog/swc-config": "^1.0.3",
63
- "@repodog/syncpack-config": "^13.0.2",
61
+ "@repodog/rollup-config": "^4.0.9",
62
+ "@repodog/swc-config": "^1.0.10",
63
+ "@repodog/syncpack-config": "^13.0.3",
64
64
  "@repodog/ts-config": "^5.0.4",
65
65
  "@rollup/plugin-swc": "^0.3.0",
66
- "@swc/core": "^1.7.26",
67
- "@swc/jest": "^0.2.36",
66
+ "@swc/core": "^1.12.0",
67
+ "@swc/jest": "^0.2.38",
68
68
  "@types/jest": "^29.5.13",
69
- "@types/node": "^22.5.5",
70
- "cts-types": "^0.0.7",
69
+ "@types/node": "^24.0.1",
70
+ "cts-types": "^0.0.9",
71
71
  "del-cli": "^6.0.0",
72
- "eslint": "^9.11.0",
72
+ "eslint": "^9.28.0",
73
73
  "generate-changelog": "^1.8.0",
74
- "husky": "^9.1.6",
74
+ "husky": "^9.1.7",
75
75
  "jest": "^29.7.0",
76
76
  "jest-environment-jsdom": "^29.7.0",
77
77
  "jest-environment-node": "^29.7.0",
78
- "markdownlint-cli2": "^0.14.0",
79
- "prettier": "^3.3.3",
80
- "rollup": "^4.22.4",
78
+ "markdownlint-cli2": "^0.18.1",
79
+ "prettier": "^3.5.3",
80
+ "rollup": "^4.43.0",
81
81
  "suppress-experimental-warnings": "^2.0.0",
82
- "syncpack": "^13.0.0",
83
- "typescript": "^5.6.2"
82
+ "syncpack": "^13.0.4",
83
+ "typescript": "^5.8.3"
84
84
  },
85
85
  "keywords": [
86
86
  "config",
@@ -93,8 +93,8 @@
93
93
  "clean:dist": "del-cli ./dist",
94
94
  "commit": "commit",
95
95
  "compile": "pnpm run /^compile:.*/",
96
- "compile:cjs": "MODULE_SYSTEM=cjs rollup -c ./rollup.config.cjs",
97
- "compile:esm": "rollup -c ./rollup.config.cjs",
96
+ "compile:cjs": "MODULE_SYSTEM=cjs rollup -c ./rollup.config.mjs",
97
+ "compile:esm": "rollup -c ./rollup.config.mjs",
98
98
  "compile:types": "tsc --project ./tsconfig.build.json && cts-types build dist/types/esm dist/types/cjs",
99
99
  "cut:changelog": "changelog",
100
100
  "installActivateMise": "sh shellScripts/installActivateMise.sh",
@@ -1,4 +1,4 @@
1
- /* eslint-disable prettier/prettier, unicorn/numeric-separators-style */
1
+ /* eslint-disable prettier/prettier, import-x/no-default-export, unicorn/numeric-separators-style */
2
2
  /* This file is autogenerated, do not edit directly, your changes will not perist. */
3
3
 
4
4
  export default {
@@ -54,4 +54,6 @@ configBuilder
54
54
  .timeouts({ apollo: 10_000 })
55
55
  .timezone('Europe/London');
56
56
 
57
+ // convention is to default export.
58
+ // eslint-disable-next-line import-x/no-default-export
57
59
  export default configBuilder;
@@ -28,7 +28,7 @@ describe('createConfigReader', () => {
28
28
  const reader = createReader();
29
29
 
30
30
  // @ts-expect-error path does not resovle to a string
31
- expect(() => reader.read('pages.contactDetails', { vars })).toThrow(
31
+ expect(() => reader.read('pages.contactDetails', vars)).toThrow(
32
32
  new Error(
33
33
  'config reader received variables to use in string template, but the path did not resolve to a string.',
34
34
  ),
@@ -39,7 +39,7 @@ describe('createConfigReader', () => {
39
39
  describe('when a user accesses a property that is a string', () => {
40
40
  it('should return the correct string value with template placeholders populated', () => {
41
41
  const reader = createReader();
42
- const value = reader.read('templateString', { vars });
42
+ const value = reader.read('templateString', vars);
43
43
  expect(value).toBe('Simple Simon met a pieman going to the fair');
44
44
  });
45
45
  });
@@ -2,12 +2,8 @@ import { get, isString } from 'lodash-es';
2
2
  import { type Get } from 'type-fest';
3
3
  import { type Path, type Scope } from './types.ts';
4
4
 
5
- export type ReadOptions = {
6
- vars?: Record<string, string | number>;
7
- };
8
-
9
5
  export interface ConfigReader<Config extends object> {
10
- read: <P extends Path<Config>>(path: P, options?: ReadOptions) => Get<Config, P>;
6
+ read: <P extends Path<Config>>(path: P, variables?: Record<string, string | number>) => Get<Config, P>;
11
7
  scope: <S extends Scope<Config>>(scope: S) => ConfigReader<Get<Config, S>>;
12
8
  }
13
9
 
@@ -15,8 +11,8 @@ export const createConfigReader = <Config extends object>(config: Config): Confi
15
11
  // Aimed at reducing the amount of work for typescript to resolve type.
16
12
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
17
13
  const configReader = {
18
- read: <P extends Path<Config>>(path: P, { vars }: ReadOptions = {}) => {
19
- if (!vars) {
14
+ read: <P extends Path<Config>>(path: P, variables?: Record<string, string | number>) => {
15
+ if (!variables) {
20
16
  return get(config, path);
21
17
  }
22
18
 
@@ -28,8 +24,8 @@ export const createConfigReader = <Config extends object>(config: Config): Confi
28
24
  );
29
25
  }
30
26
 
31
- return Object.keys(vars).reduce<string>((acc, key) => {
32
- return acc.replace(new RegExp(`{{${key}}}`), String(vars[key]));
27
+ return Object.keys(variables).reduce<string>((acc, key) => {
28
+ return acc.replace(new RegExp(`{{${key}}}`), String(variables[key]));
33
29
  }, output);
34
30
  },
35
31
  // Aimed at reducing the amount of work for typescript to resolve type.
@@ -14,7 +14,6 @@ export const cloneNonEnumerableValues: TransformConfigHandlerSync = <
14
14
  Object.defineProperty(clone, nonEnumerableKey, {
15
15
  configurable: false,
16
16
  enumerable: false,
17
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
18
17
  value: config[nonEnumerableKey],
19
18
  });
20
19
  }