@glion/config 0.15.3 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,9 +28,6 @@ Create a `.hl7v2rc.json` file in your project:
28
28
  "repetition": "~",
29
29
  "escape": "\\",
30
30
  "segment": "\r"
31
- },
32
- "experimental": {
33
- "emptyMode": "empty"
34
31
  }
35
32
  }
36
33
  }
@@ -43,7 +40,6 @@ import { loadConfig } from "@glion/config";
43
40
 
44
41
  const { settings } = loadConfig();
45
42
  console.log(settings.delimiters.field); // "|"
46
- console.log(settings.experimental.emptyMode); // "empty"
47
43
  ```
48
44
 
49
45
  ## API
@@ -96,7 +92,6 @@ export default defineConfig({
96
92
  plugins: ["preset-lint-recommended"],
97
93
  settings: {
98
94
  delimiters: { field: "|", component: "^" },
99
- experimental: { emptyMode: "empty" },
100
95
  },
101
96
  });
102
97
  ```
@@ -123,9 +118,6 @@ type HL7v2Settings = {
123
118
  escape?: string; // default: "\\"
124
119
  segment?: string; // default: "\r"
125
120
  };
126
- experimental?: {
127
- emptyMode?: "legacy" | "empty"; // default: "legacy"
128
- };
129
121
  };
130
122
  ```
131
123
 
@@ -157,17 +149,6 @@ Example — using custom delimiters for a non-standard system:
157
149
  }
158
150
  ```
159
151
 
160
- ### `settings.experimental.emptyMode`
161
-
162
- Controls how empty fields and components are represented in the AST.
163
-
164
- | Value | Description |
165
- | -------------------- | ------------------------------------------------------------------------------- |
166
- | `"legacy"` (default) | Empty fields create full structure (Field → Rep → Comp → Sub with `value: ""`). |
167
- | `"empty"` | Empty fields have no children (Field with `children: []`). |
168
-
169
- Experimental — will become the default in v0.6.0.
170
-
171
152
  ### `plugins`
172
153
 
173
154
  Handled by unified-args; follows the standard unified plugin configuration format:
@@ -215,9 +196,7 @@ The loader searches for configuration in the following locations, in order:
215
196
  ["lint-max-message-size", ["error", { "maxBytes": 5000000 }]]
216
197
  ],
217
198
  "settings": {
218
- "experimental": {
219
- "emptyMode": "empty"
220
- }
199
+ "delimiters": { "field": "|" }
221
200
  }
222
201
  }
223
202
  ```
@@ -232,7 +211,6 @@ export default defineConfig({
232
211
  plugins: ["preset-lint-recommended"],
233
212
  settings: {
234
213
  delimiters: { field: "|", component: "^" },
235
- experimental: { emptyMode: "empty" },
236
214
  },
237
215
  });
238
216
  ```
@@ -253,9 +231,6 @@ export default {
253
231
  delimiters: {
254
232
  segment: process.env.HL7_SEGMENT_TERMINATOR || "\r",
255
233
  },
256
- experimental: {
257
- emptyMode: process.env.HL7_EMPTY_MODE || "legacy",
258
- },
259
234
  },
260
235
  };
261
236
  ```
@@ -269,7 +244,7 @@ export default {
269
244
  "hl7v2": {
270
245
  "plugins": ["preset-lint-recommended"],
271
246
  "settings": {
272
- "experimental": { "emptyMode": "empty" }
247
+ "delimiters": { "field": "|" }
273
248
  }
274
249
  }
275
250
  }
@@ -287,7 +262,6 @@ const processor = unified()
287
262
  .use(parseHL7v2)
288
263
  .data("settings", {
289
264
  delimiters: { field: "|", component: "^" },
290
- experimental: { emptyMode: "empty" },
291
265
  });
292
266
 
293
267
  const tree = processor.parse("MSH|^~\\&|...");
package/dist/define.d.ts CHANGED
@@ -11,7 +11,7 @@ import type { HL7v2ConfigInput } from "./schema";
11
11
  * export default defineConfig({
12
12
  * plugins: ["preset-lint-recommended"],
13
13
  * settings: {
14
- * experimental: { emptyMode: "empty" },
14
+ * delimiters: { field: "|" },
15
15
  * },
16
16
  * });
17
17
  * ```;
package/dist/index.d.ts CHANGED
@@ -13,12 +13,11 @@
13
13
  *
14
14
  * // Load full configuration
15
15
  * const config = loadConfig();
16
- * console.log(config.settings.experimental.emptyMode); // 'legacy' or 'empty'
16
+ * console.log(config.settings.delimiters); // Custom delimiter overrides
17
17
  * console.log(config.plugins); // Array of plugin configurations
18
18
  *
19
19
  * // Or destructure to get only settings
20
20
  * const { settings } = loadConfig();
21
- * console.log(settings.experimental.emptyMode); // 'legacy' or 'empty'
22
21
  * ```
23
22
  *
24
23
  * ### Load configuration asynchronously
@@ -41,16 +40,14 @@
41
40
  * "preset-lint-recommended"
42
41
  * ],
43
42
  * "settings": {
44
- * "experimental": {
45
- * "emptyMode": "empty"
46
- * }
43
+ * "delimiters": { "field": "|" }
47
44
  * }
48
45
  * }
49
46
  * ```
50
47
  *
51
48
  * @module @glion/config
52
49
  */
53
- import type { HL7v2Settings } from "./schema.js";
50
+ import type { HL7v2Settings } from "./schema";
54
51
  export { defineConfig } from "./define";
55
52
  export { jsonSchema } from "./json-schema";
56
53
  export { ConfigurationError, clearCaches, loadConfig, loadConfigAsync, } from "./loader";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,QAAS,SAAQ,aAAa;KAAG;CAC5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,QAAS,SAAQ,aAAa;KAAG;CAC5C"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ import { ConfigurationError, clearCaches, loadConfig, loadConfigAsync } from "./
14
14
  * export default defineConfig({
15
15
  * plugins: ["preset-lint-recommended"],
16
16
  * settings: {
17
- * experimental: { emptyMode: "empty" },
17
+ * delimiters: { field: "|" },
18
18
  * },
19
19
  * });
20
20
  * ```;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/define.ts"],"sourcesContent":["import type { HL7v2ConfigInput } from \"./schema\";\n\n/**\n * Helper for type-safe configuration authoring.\n *\n * Use in your `hl7v2.config.ts` file for IDE autocomplete:\n *\n * @example\n * ```typescript\n * import { defineConfig } from \"@glion/config\";\n *\n * export default defineConfig({\n * plugins: [\"preset-lint-recommended\"],\n * settings: {\n * experimental: { emptyMode: \"empty\" },\n * },\n * });\n * ```;\n */\nexport function defineConfig(config: HL7v2ConfigInput): HL7v2ConfigInput {\n return config;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,aAAa,QAA4C;AACvE,QAAO"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/define.ts"],"sourcesContent":["import type { HL7v2ConfigInput } from \"./schema\";\n\n/**\n * Helper for type-safe configuration authoring.\n *\n * Use in your `hl7v2.config.ts` file for IDE autocomplete:\n *\n * @example\n * ```typescript\n * import { defineConfig } from \"@glion/config\";\n *\n * export default defineConfig({\n * plugins: [\"preset-lint-recommended\"],\n * settings: {\n * delimiters: { field: \"|\" },\n * },\n * });\n * ```;\n */\nexport function defineConfig(config: HL7v2ConfigInput): HL7v2ConfigInput {\n return config;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,aAAa,QAA4C;AACvE,QAAO"}
@@ -273,17 +273,43 @@ let emojiRegex = void 0;
273
273
  * Expressions with /i flag have been changed accordingly.
274
274
  */
275
275
  const zodPatterns = {
276
+ /**
277
+ * `c` was changed to `[cC]` to replicate /i flag
278
+ */
276
279
  cuid: /^[cC][^\s-]{8,}$/,
277
280
  cuid2: /^[0-9a-z]+$/,
278
281
  ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,
282
+ /**
283
+ * `a-z` was added to replicate /i flag
284
+ */
279
285
  email: /^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,
286
+ /**
287
+ * Constructed a valid Unicode RegExp
288
+ *
289
+ * Lazily instantiate since this type of regex isn't supported
290
+ * in all envs (e.g. React Native).
291
+ *
292
+ * See:
293
+ * https://github.com/colinhacks/zod/issues/2433
294
+ * Fix in Zod:
295
+ * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b
296
+ */
280
297
  emoji: () => {
281
298
  if (emojiRegex === void 0) emojiRegex = RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$", "u");
282
299
  return emojiRegex;
283
300
  },
301
+ /**
302
+ * Unused
303
+ */
284
304
  uuid: /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,
305
+ /**
306
+ * Unused
307
+ */
285
308
  ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,
286
309
  ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,
310
+ /**
311
+ * Unused
312
+ */
287
313
  ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,
288
314
  ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,
289
315
  base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema2.js","names":[],"sources":["../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Options.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Refs.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/errorMessages.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/any.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/array.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/date.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/default.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/record.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/map.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/never.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/null.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/union.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/number.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/object.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/set.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/selectParser.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseDef.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js","../src/json-schema.ts"],"sourcesContent":["export const ignoreOverride = Symbol(\"Let zodToJsonSchema decide on which parser to use\");\nexport const jsonDescription = (jsonSchema, def) => {\n if (def.description) {\n try {\n return {\n ...jsonSchema,\n ...JSON.parse(def.description),\n };\n }\n catch { }\n }\n return jsonSchema;\n};\nexport const defaultOptions = {\n name: undefined,\n $refStrategy: \"root\",\n basePath: [\"#\"],\n effectStrategy: \"input\",\n pipeStrategy: \"all\",\n dateStrategy: \"format:date-time\",\n mapStrategy: \"entries\",\n removeAdditionalStrategy: \"passthrough\",\n allowedAdditionalProperties: true,\n rejectedAdditionalProperties: false,\n definitionPath: \"definitions\",\n target: \"jsonSchema7\",\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n markdownDescription: false,\n patternStrategy: \"escape\",\n applyRegexFlags: false,\n emailStrategy: \"format:email\",\n base64Strategy: \"contentEncoding:base64\",\n nameStrategy: \"ref\",\n openAiAnyTypeName: \"OpenAiAnyType\"\n};\nexport const getDefaultOptions = (options) => (typeof options === \"string\"\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n });\n","import { getDefaultOptions } from \"./Options.js\";\nexport const getRefs = (options) => {\n const _options = getDefaultOptions(options);\n const currentPath = _options.name !== undefined\n ? [..._options.basePath, _options.definitionPath, _options.name]\n : _options.basePath;\n return {\n ..._options,\n flags: { hasReferencedOpenAiAnyType: false },\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ])),\n };\n};\n","export function addErrorMessage(res, key, errorMessage, refs) {\n if (!refs?.errorMessages)\n return;\n if (errorMessage) {\n res.errorMessage = {\n ...res.errorMessage,\n [key]: errorMessage,\n };\n }\n}\nexport function setResponseValueAndErrors(res, key, value, errorMessage, refs) {\n res[key] = value;\n addErrorMessage(res, key, errorMessage, refs);\n}\n","export const getRelativePath = (pathA, pathB) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i])\n break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\n","import { getRelativePath } from \"../getRelativePath.js\";\nexport function parseAnyDef(refs) {\n if (refs.target !== \"openAi\") {\n return {};\n }\n const anyDefinitionPath = [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ];\n refs.flags.hasReferencedOpenAiAnyType = true;\n return {\n $ref: refs.$refStrategy === \"relative\"\n ? getRelativePath(anyDefinitionPath, refs.currentPath)\n : anyDefinitionPath.join(\"/\"),\n };\n}\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseArrayDef(def, refs) {\n const res = {\n type: \"array\",\n };\n if (def.type?._def &&\n def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n }\n if (def.minLength) {\n setResponseValueAndErrors(res, \"minItems\", def.minLength.value, def.minLength.message, refs);\n }\n if (def.maxLength) {\n setResponseValueAndErrors(res, \"maxItems\", def.maxLength.value, def.maxLength.message, refs);\n }\n if (def.exactLength) {\n setResponseValueAndErrors(res, \"minItems\", def.exactLength.value, def.exactLength.message, refs);\n setResponseValueAndErrors(res, \"maxItems\", def.exactLength.value, def.exactLength.message, refs);\n }\n return res;\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseBigintDef(def, refs) {\n const res = {\n type: \"integer\",\n format: \"int64\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n","export function parseBooleanDef() {\n return {\n type: \"boolean\",\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseBrandedDef(_def, refs) {\n return parseDef(_def.type._def, refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseCatchDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseDateDef(def, refs, overrideDateStrategy) {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n };\n }\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\",\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\",\n };\n case \"integer\":\n return integerDateParser(def, refs);\n }\n}\nconst integerDateParser = (def, refs) => {\n const res = {\n type: \"integer\",\n format: \"unix-time\",\n };\n if (refs.target === \"openApi3\") {\n return res;\n }\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minimum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maximum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n }\n }\n return res;\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parseDefaultDef(_def, refs) {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseEffectsDef(_def, refs) {\n return refs.effectStrategy === \"input\"\n ? parseDef(_def.schema._def, refs)\n : parseAnyDef(refs);\n}\n","export function parseEnumDef(def) {\n return {\n type: \"string\",\n enum: Array.from(def.values),\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nconst isJsonSchema7AllOfType = (type) => {\n if (\"type\" in type && type.type === \"string\")\n return false;\n return \"allOf\" in type;\n};\nexport function parseIntersectionDef(def, refs) {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"1\"],\n }),\n ].filter((x) => !!x);\n let unevaluatedProperties = refs.target === \"jsonSchema2019-09\"\n ? { unevaluatedProperties: false }\n : undefined;\n const mergedAllOf = [];\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n if (schema.unevaluatedProperties === undefined) {\n // If one of the schemas has no unevaluatedProperties set,\n // the merged schema should also have no unevaluatedProperties set\n unevaluatedProperties = undefined;\n }\n }\n else {\n let nestedSchema = schema;\n if (\"additionalProperties\" in schema &&\n schema.additionalProperties === false) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n else {\n // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n unevaluatedProperties = undefined;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length\n ? {\n allOf: mergedAllOf,\n ...unevaluatedProperties,\n }\n : undefined;\n}\n","export function parseLiteralDef(def, refs) {\n const parsedType = typeof def.value;\n if (parsedType !== \"bigint\" &&\n parsedType !== \"number\" &&\n parsedType !== \"boolean\" &&\n parsedType !== \"string\") {\n return {\n type: Array.isArray(def.value) ? \"array\" : \"object\",\n };\n }\n if (refs.target === \"openApi3\") {\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n enum: [def.value],\n };\n }\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n const: def.value,\n };\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n};\nexport function parseStringDef(def, refs) {\n const res = {\n type: \"string\",\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n break;\n }\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\n}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\n}\n","import { ZodFirstPartyTypeKind, } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { parseStringDef } from \"./string.js\";\nimport { parseBrandedDef } from \"./branded.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseRecordDef(def, refs) {\n if (refs.target === \"openAi\") {\n console.warn(\"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\");\n }\n if (refs.target === \"openApi3\" &&\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n type: \"object\",\n required: def.keyType._def.values,\n properties: def.keyType._def.values.reduce((acc, key) => ({\n ...acc,\n [key]: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", key],\n }) ?? parseAnyDef(refs),\n }), {}),\n additionalProperties: refs.rejectedAdditionalProperties,\n };\n }\n const schema = {\n type: \"object\",\n additionalProperties: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n }) ?? refs.allowedAdditionalProperties,\n };\n if (refs.target === \"openApi3\") {\n return schema;\n }\n if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.checks?.length) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.type._def.checks?.length) {\n const { type, ...keyType } = parseBrandedDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseRecordDef } from \"./record.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseMapDef(def, refs) {\n if (refs.mapStrategy === \"record\") {\n return parseRecordDef(def, refs);\n }\n const keys = parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"0\"],\n }) || parseAnyDef(refs);\n const values = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"],\n }) || parseAnyDef(refs);\n return {\n type: \"array\",\n maxItems: 125,\n items: {\n type: \"array\",\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n };\n}\n","export function parseNativeEnumDef(def) {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key) => {\n return typeof object[object[key]] !== \"number\";\n });\n const actualValues = actualKeys.map((key) => object[key]);\n const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)));\n return {\n type: parsedTypes.length === 1\n ? parsedTypes[0] === \"string\"\n ? \"string\"\n : \"number\"\n : [\"string\", \"number\"],\n enum: actualValues,\n };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseNeverDef(refs) {\n return refs.target === \"openAi\"\n ? undefined\n : {\n not: parseAnyDef({\n ...refs,\n currentPath: [...refs.currentPath, \"not\"],\n }),\n };\n}\n","export function parseNullDef(refs) {\n return refs.target === \"openApi3\"\n ? {\n enum: [\"null\"],\n nullable: true,\n }\n : {\n type: \"null\",\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const primitiveMappings = {\n ZodString: \"string\",\n ZodNumber: \"number\",\n ZodBigInt: \"integer\",\n ZodBoolean: \"boolean\",\n ZodNull: \"null\",\n};\nexport function parseUnionDef(def, refs) {\n if (refs.target === \"openApi3\")\n return asAnyOf(def, refs);\n const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (options.every((x) => x._def.typeName in primitiveMappings &&\n (!x._def.checks || !x._def.checks.length))) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n const types = options.reduce((types, x) => {\n const type = primitiveMappings[x._def.typeName]; //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types;\n }, []);\n return {\n type: types.length > 1 ? types : types[0],\n };\n }\n else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n // all options literals\n const types = options.reduce((acc, x) => {\n const type = typeof x._def.value;\n switch (type) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return [...acc, type];\n case \"bigint\":\n return [...acc, \"integer\"];\n case \"object\":\n if (x._def.value === null)\n return [...acc, \"null\"];\n case \"symbol\":\n case \"undefined\":\n case \"function\":\n default:\n return acc;\n }\n }, []);\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce((acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n }, []),\n };\n }\n }\n else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n return {\n type: \"string\",\n enum: options.reduce((acc, x) => [\n ...acc,\n ...x._def.values.filter((x) => !acc.includes(x)),\n ], []),\n };\n }\n return asAnyOf(def, refs);\n}\nconst asAnyOf = (def, refs) => {\n const anyOf = (def.options instanceof Map\n ? Array.from(def.options.values())\n : def.options)\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", `${i}`],\n }))\n .filter((x) => !!x &&\n (!refs.strictUnions ||\n (typeof x === \"object\" && Object.keys(x).length > 0)));\n return anyOf.length ? { anyOf } : undefined;\n};\n","import { parseDef } from \"../parseDef.js\";\nimport { primitiveMappings } from \"./union.js\";\nexport function parseNullableDef(def, refs) {\n if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(def.innerType._def.typeName) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n if (refs.target === \"openApi3\") {\n return {\n type: primitiveMappings[def.innerType._def.typeName],\n nullable: true,\n };\n }\n return {\n type: [\n primitiveMappings[def.innerType._def.typeName],\n \"null\",\n ],\n };\n }\n if (refs.target === \"openApi3\") {\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath],\n });\n if (base && \"$ref\" in base)\n return { allOf: [base], nullable: true };\n return base && { ...base, nullable: true };\n }\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"0\"],\n });\n return base && { anyOf: [base, { type: \"null\" }] };\n}\n","import { addErrorMessage, setResponseValueAndErrors, } from \"../errorMessages.js\";\nexport function parseNumberDef(def, refs) {\n const res = {\n type: \"number\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n addErrorMessage(res, \"type\", check.message, refs);\n break;\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseObjectDef(def, refs) {\n const forceOptionalIntoNullable = refs.target === \"openAi\";\n const result = {\n type: \"object\",\n properties: {},\n };\n const required = [];\n const shape = def.shape();\n for (const propName in shape) {\n let propDef = shape[propName];\n if (propDef === undefined || propDef._def === undefined) {\n continue;\n }\n let propOptional = safeIsOptional(propDef);\n if (propOptional && forceOptionalIntoNullable) {\n if (propDef._def.typeName === \"ZodOptional\") {\n propDef = propDef._def.innerType;\n }\n if (!propDef.isNullable()) {\n propDef = propDef.nullable();\n }\n propOptional = false;\n }\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", propName],\n propertyPath: [...refs.currentPath, \"properties\", propName],\n });\n if (parsedDef === undefined) {\n continue;\n }\n result.properties[propName] = parsedDef;\n if (!propOptional) {\n required.push(propName);\n }\n }\n if (required.length) {\n result.required = required;\n }\n const additionalProperties = decideAdditionalProperties(def, refs);\n if (additionalProperties !== undefined) {\n result.additionalProperties = additionalProperties;\n }\n return result;\n}\nfunction decideAdditionalProperties(def, refs) {\n if (def.catchall._def.typeName !== \"ZodNever\") {\n return parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n });\n }\n switch (def.unknownKeys) {\n case \"passthrough\":\n return refs.allowedAdditionalProperties;\n case \"strict\":\n return refs.rejectedAdditionalProperties;\n case \"strip\":\n return refs.removeAdditionalStrategy === \"strict\"\n ? refs.allowedAdditionalProperties\n : refs.rejectedAdditionalProperties;\n }\n}\nfunction safeIsOptional(schema) {\n try {\n return schema.isOptional();\n }\n catch {\n return true;\n }\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport const parseOptionalDef = (def, refs) => {\n if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n return parseDef(def.innerType._def, refs);\n }\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"1\"],\n });\n return innerSchema\n ? {\n anyOf: [\n {\n not: parseAnyDef(refs),\n },\n innerSchema,\n ],\n }\n : parseAnyDef(refs);\n};\n","import { parseDef } from \"../parseDef.js\";\nexport const parsePipelineDef = (def, refs) => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n }\n else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n });\n return {\n allOf: [a, b].filter((x) => x !== undefined),\n };\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parsePromiseDef(def, refs) {\n return parseDef(def.type._def, refs);\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseSetDef(def, refs) {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n const schema = {\n type: \"array\",\n uniqueItems: true,\n items,\n };\n if (def.minSize) {\n setResponseValueAndErrors(schema, \"minItems\", def.minSize.value, def.minSize.message, refs);\n }\n if (def.maxSize) {\n setResponseValueAndErrors(schema, \"maxItems\", def.maxSize.value, def.maxSize.message, refs);\n }\n return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseTupleDef(def, refs) {\n if (def.rest) {\n return {\n type: \"array\",\n minItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalItems\"],\n }),\n };\n }\n else {\n return {\n type: \"array\",\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n };\n }\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUndefinedDef(refs) {\n return {\n not: parseAnyDef(refs),\n };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUnknownDef(refs) {\n return parseAnyDef(refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseReadonlyDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nimport { parseArrayDef } from \"./parsers/array.js\";\nimport { parseBigintDef } from \"./parsers/bigint.js\";\nimport { parseBooleanDef } from \"./parsers/boolean.js\";\nimport { parseBrandedDef } from \"./parsers/branded.js\";\nimport { parseCatchDef } from \"./parsers/catch.js\";\nimport { parseDateDef } from \"./parsers/date.js\";\nimport { parseDefaultDef } from \"./parsers/default.js\";\nimport { parseEffectsDef } from \"./parsers/effects.js\";\nimport { parseEnumDef } from \"./parsers/enum.js\";\nimport { parseIntersectionDef } from \"./parsers/intersection.js\";\nimport { parseLiteralDef } from \"./parsers/literal.js\";\nimport { parseMapDef } from \"./parsers/map.js\";\nimport { parseNativeEnumDef } from \"./parsers/nativeEnum.js\";\nimport { parseNeverDef } from \"./parsers/never.js\";\nimport { parseNullDef } from \"./parsers/null.js\";\nimport { parseNullableDef } from \"./parsers/nullable.js\";\nimport { parseNumberDef } from \"./parsers/number.js\";\nimport { parseObjectDef } from \"./parsers/object.js\";\nimport { parseOptionalDef } from \"./parsers/optional.js\";\nimport { parsePipelineDef } from \"./parsers/pipeline.js\";\nimport { parsePromiseDef } from \"./parsers/promise.js\";\nimport { parseRecordDef } from \"./parsers/record.js\";\nimport { parseSetDef } from \"./parsers/set.js\";\nimport { parseStringDef } from \"./parsers/string.js\";\nimport { parseTupleDef } from \"./parsers/tuple.js\";\nimport { parseUndefinedDef } from \"./parsers/undefined.js\";\nimport { parseUnionDef } from \"./parsers/union.js\";\nimport { parseUnknownDef } from \"./parsers/unknown.js\";\nimport { parseReadonlyDef } from \"./parsers/readonly.js\";\nexport const selectParser = (def, typeName, refs) => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def, refs);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef(refs);\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef(refs);\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def, refs);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return () => def.getter()._def;\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef(refs);\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef(refs);\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef(refs);\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n return ((_) => undefined)(typeName);\n }\n};\n","import { ignoreOverride } from \"./Options.js\";\nimport { selectParser } from \"./selectParser.js\";\nimport { getRelativePath } from \"./getRelativePath.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nexport function parseDef(def, refs, forceResolution = false) {\n const seenItem = refs.seen.get(def);\n if (refs.override) {\n const overrideResult = refs.override?.(def, refs, seenItem, forceResolution);\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n if (seenSchema !== undefined) {\n return seenSchema;\n }\n }\n const newItem = { def, path: refs.currentPath, jsonSchema: undefined };\n refs.seen.set(def, newItem);\n const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n const jsonSchema = typeof jsonSchemaOrGetter === \"function\"\n ? parseDef(jsonSchemaOrGetter(), refs)\n : jsonSchemaOrGetter;\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema);\n }\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n newItem.jsonSchema = jsonSchema;\n return postProcessResult;\n }\n newItem.jsonSchema = jsonSchema;\n return jsonSchema;\n}\nconst get$ref = (item, refs) => {\n switch (refs.$refStrategy) {\n case \"root\":\n return { $ref: item.path.join(\"/\") };\n case \"relative\":\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case \"none\":\n case \"seen\": {\n if (item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)) {\n console.warn(`Recursive reference detected at ${refs.currentPath.join(\"/\")}! Defaulting to any`);\n return parseAnyDef(refs);\n }\n return refs.$refStrategy === \"seen\" ? parseAnyDef(refs) : undefined;\n }\n }\n};\nconst addMeta = (def, refs, jsonSchema) => {\n if (def.description) {\n jsonSchema.description = def.description;\n if (refs.markdownDescription) {\n jsonSchema.markdownDescription = def.description;\n }\n }\n return jsonSchema;\n};\n","import { parseDef } from \"./parseDef.js\";\nimport { getRefs } from \"./Refs.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nconst zodToJsonSchema = (schema, options) => {\n const refs = getRefs(options);\n let definitions = typeof options === \"object\" && options.definitions\n ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({\n ...acc,\n [name]: parseDef(schema._def, {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, true) ?? parseAnyDef(refs),\n }), {})\n : undefined;\n const name = typeof options === \"string\"\n ? options\n : options?.nameStrategy === \"title\"\n ? undefined\n : options?.name;\n const main = parseDef(schema._def, name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, false) ?? parseAnyDef(refs);\n const title = typeof options === \"object\" &&\n options.name !== undefined &&\n options.nameStrategy === \"title\"\n ? options.name\n : undefined;\n if (title !== undefined) {\n main.title = title;\n }\n if (refs.flags.hasReferencedOpenAiAnyType) {\n if (!definitions) {\n definitions = {};\n }\n if (!definitions[refs.openAiAnyTypeName]) {\n definitions[refs.openAiAnyTypeName] = {\n // Skipping \"object\" as no properties can be defined and additionalProperties must be \"false\"\n type: [\"string\", \"number\", \"integer\", \"boolean\", \"array\", \"null\"],\n items: {\n $ref: refs.$refStrategy === \"relative\"\n ? \"1\"\n : [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ].join(\"/\"),\n },\n };\n }\n }\n const combined = name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [\n ...(refs.$refStrategy === \"relative\" ? [] : refs.basePath),\n refs.definitionPath,\n name,\n ].join(\"/\"),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n if (refs.target === \"jsonSchema7\") {\n combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (refs.target === \"jsonSchema2019-09\" || refs.target === \"openAi\") {\n combined.$schema = \"https://json-schema.org/draft/2019-09/schema#\";\n }\n if (refs.target === \"openAi\" &&\n (\"anyOf\" in combined ||\n \"oneOf\" in combined ||\n \"allOf\" in combined ||\n (\"type\" in combined && Array.isArray(combined.type)))) {\n console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\");\n }\n return combined;\n};\nexport { zodToJsonSchema };\n","import { zodToJsonSchema } from \"zod-to-json-schema\";\n\nimport { HL7v2ConfigSchema } from \"./schema\";\n\n/**\n * JSON Schema for hl7v2 configuration.\n *\n * This schema can be used for IDE autocomplete by adding:\n *\n * ```json\n * {\n * \"$schema\": \"https://raw.githubusercontent.com/rethinkhealth/hl7v2/main/packages/hl7v2-config/schema.json\"\n * }\n * ```\n */\nexport const jsonSchema = zodToJsonSchema(HL7v2ConfigSchema, {\n $refStrategy: \"none\",\n name: \"HL7v2Config\",\n target: \"jsonSchema7\",\n});\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"mappings":"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"}
1
+ {"version":3,"file":"json-schema2.js","names":[],"sources":["../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Options.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Refs.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/errorMessages.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/any.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/array.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/date.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/default.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/record.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/map.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/never.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/null.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/union.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/number.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/object.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/set.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/selectParser.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseDef.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.0_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js","../src/json-schema.ts"],"sourcesContent":["export const ignoreOverride = Symbol(\"Let zodToJsonSchema decide on which parser to use\");\nexport const jsonDescription = (jsonSchema, def) => {\n if (def.description) {\n try {\n return {\n ...jsonSchema,\n ...JSON.parse(def.description),\n };\n }\n catch { }\n }\n return jsonSchema;\n};\nexport const defaultOptions = {\n name: undefined,\n $refStrategy: \"root\",\n basePath: [\"#\"],\n effectStrategy: \"input\",\n pipeStrategy: \"all\",\n dateStrategy: \"format:date-time\",\n mapStrategy: \"entries\",\n removeAdditionalStrategy: \"passthrough\",\n allowedAdditionalProperties: true,\n rejectedAdditionalProperties: false,\n definitionPath: \"definitions\",\n target: \"jsonSchema7\",\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n markdownDescription: false,\n patternStrategy: \"escape\",\n applyRegexFlags: false,\n emailStrategy: \"format:email\",\n base64Strategy: \"contentEncoding:base64\",\n nameStrategy: \"ref\",\n openAiAnyTypeName: \"OpenAiAnyType\"\n};\nexport const getDefaultOptions = (options) => (typeof options === \"string\"\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n });\n","import { getDefaultOptions } from \"./Options.js\";\nexport const getRefs = (options) => {\n const _options = getDefaultOptions(options);\n const currentPath = _options.name !== undefined\n ? [..._options.basePath, _options.definitionPath, _options.name]\n : _options.basePath;\n return {\n ..._options,\n flags: { hasReferencedOpenAiAnyType: false },\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ])),\n };\n};\n","export function addErrorMessage(res, key, errorMessage, refs) {\n if (!refs?.errorMessages)\n return;\n if (errorMessage) {\n res.errorMessage = {\n ...res.errorMessage,\n [key]: errorMessage,\n };\n }\n}\nexport function setResponseValueAndErrors(res, key, value, errorMessage, refs) {\n res[key] = value;\n addErrorMessage(res, key, errorMessage, refs);\n}\n","export const getRelativePath = (pathA, pathB) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i])\n break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\n","import { getRelativePath } from \"../getRelativePath.js\";\nexport function parseAnyDef(refs) {\n if (refs.target !== \"openAi\") {\n return {};\n }\n const anyDefinitionPath = [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ];\n refs.flags.hasReferencedOpenAiAnyType = true;\n return {\n $ref: refs.$refStrategy === \"relative\"\n ? getRelativePath(anyDefinitionPath, refs.currentPath)\n : anyDefinitionPath.join(\"/\"),\n };\n}\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseArrayDef(def, refs) {\n const res = {\n type: \"array\",\n };\n if (def.type?._def &&\n def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n }\n if (def.minLength) {\n setResponseValueAndErrors(res, \"minItems\", def.minLength.value, def.minLength.message, refs);\n }\n if (def.maxLength) {\n setResponseValueAndErrors(res, \"maxItems\", def.maxLength.value, def.maxLength.message, refs);\n }\n if (def.exactLength) {\n setResponseValueAndErrors(res, \"minItems\", def.exactLength.value, def.exactLength.message, refs);\n setResponseValueAndErrors(res, \"maxItems\", def.exactLength.value, def.exactLength.message, refs);\n }\n return res;\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseBigintDef(def, refs) {\n const res = {\n type: \"integer\",\n format: \"int64\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n","export function parseBooleanDef() {\n return {\n type: \"boolean\",\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseBrandedDef(_def, refs) {\n return parseDef(_def.type._def, refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseCatchDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseDateDef(def, refs, overrideDateStrategy) {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n };\n }\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\",\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\",\n };\n case \"integer\":\n return integerDateParser(def, refs);\n }\n}\nconst integerDateParser = (def, refs) => {\n const res = {\n type: \"integer\",\n format: \"unix-time\",\n };\n if (refs.target === \"openApi3\") {\n return res;\n }\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minimum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maximum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n }\n }\n return res;\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parseDefaultDef(_def, refs) {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseEffectsDef(_def, refs) {\n return refs.effectStrategy === \"input\"\n ? parseDef(_def.schema._def, refs)\n : parseAnyDef(refs);\n}\n","export function parseEnumDef(def) {\n return {\n type: \"string\",\n enum: Array.from(def.values),\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nconst isJsonSchema7AllOfType = (type) => {\n if (\"type\" in type && type.type === \"string\")\n return false;\n return \"allOf\" in type;\n};\nexport function parseIntersectionDef(def, refs) {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"1\"],\n }),\n ].filter((x) => !!x);\n let unevaluatedProperties = refs.target === \"jsonSchema2019-09\"\n ? { unevaluatedProperties: false }\n : undefined;\n const mergedAllOf = [];\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n if (schema.unevaluatedProperties === undefined) {\n // If one of the schemas has no unevaluatedProperties set,\n // the merged schema should also have no unevaluatedProperties set\n unevaluatedProperties = undefined;\n }\n }\n else {\n let nestedSchema = schema;\n if (\"additionalProperties\" in schema &&\n schema.additionalProperties === false) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n else {\n // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n unevaluatedProperties = undefined;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length\n ? {\n allOf: mergedAllOf,\n ...unevaluatedProperties,\n }\n : undefined;\n}\n","export function parseLiteralDef(def, refs) {\n const parsedType = typeof def.value;\n if (parsedType !== \"bigint\" &&\n parsedType !== \"number\" &&\n parsedType !== \"boolean\" &&\n parsedType !== \"string\") {\n return {\n type: Array.isArray(def.value) ? \"array\" : \"object\",\n };\n }\n if (refs.target === \"openApi3\") {\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n enum: [def.value],\n };\n }\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n const: def.value,\n };\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n};\nexport function parseStringDef(def, refs) {\n const res = {\n type: \"string\",\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n break;\n }\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\n}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\n}\n","import { ZodFirstPartyTypeKind, } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { parseStringDef } from \"./string.js\";\nimport { parseBrandedDef } from \"./branded.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseRecordDef(def, refs) {\n if (refs.target === \"openAi\") {\n console.warn(\"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\");\n }\n if (refs.target === \"openApi3\" &&\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n type: \"object\",\n required: def.keyType._def.values,\n properties: def.keyType._def.values.reduce((acc, key) => ({\n ...acc,\n [key]: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", key],\n }) ?? parseAnyDef(refs),\n }), {}),\n additionalProperties: refs.rejectedAdditionalProperties,\n };\n }\n const schema = {\n type: \"object\",\n additionalProperties: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n }) ?? refs.allowedAdditionalProperties,\n };\n if (refs.target === \"openApi3\") {\n return schema;\n }\n if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.checks?.length) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.type._def.checks?.length) {\n const { type, ...keyType } = parseBrandedDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseRecordDef } from \"./record.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseMapDef(def, refs) {\n if (refs.mapStrategy === \"record\") {\n return parseRecordDef(def, refs);\n }\n const keys = parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"0\"],\n }) || parseAnyDef(refs);\n const values = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"],\n }) || parseAnyDef(refs);\n return {\n type: \"array\",\n maxItems: 125,\n items: {\n type: \"array\",\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n };\n}\n","export function parseNativeEnumDef(def) {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key) => {\n return typeof object[object[key]] !== \"number\";\n });\n const actualValues = actualKeys.map((key) => object[key]);\n const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)));\n return {\n type: parsedTypes.length === 1\n ? parsedTypes[0] === \"string\"\n ? \"string\"\n : \"number\"\n : [\"string\", \"number\"],\n enum: actualValues,\n };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseNeverDef(refs) {\n return refs.target === \"openAi\"\n ? undefined\n : {\n not: parseAnyDef({\n ...refs,\n currentPath: [...refs.currentPath, \"not\"],\n }),\n };\n}\n","export function parseNullDef(refs) {\n return refs.target === \"openApi3\"\n ? {\n enum: [\"null\"],\n nullable: true,\n }\n : {\n type: \"null\",\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const primitiveMappings = {\n ZodString: \"string\",\n ZodNumber: \"number\",\n ZodBigInt: \"integer\",\n ZodBoolean: \"boolean\",\n ZodNull: \"null\",\n};\nexport function parseUnionDef(def, refs) {\n if (refs.target === \"openApi3\")\n return asAnyOf(def, refs);\n const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (options.every((x) => x._def.typeName in primitiveMappings &&\n (!x._def.checks || !x._def.checks.length))) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n const types = options.reduce((types, x) => {\n const type = primitiveMappings[x._def.typeName]; //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types;\n }, []);\n return {\n type: types.length > 1 ? types : types[0],\n };\n }\n else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n // all options literals\n const types = options.reduce((acc, x) => {\n const type = typeof x._def.value;\n switch (type) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return [...acc, type];\n case \"bigint\":\n return [...acc, \"integer\"];\n case \"object\":\n if (x._def.value === null)\n return [...acc, \"null\"];\n case \"symbol\":\n case \"undefined\":\n case \"function\":\n default:\n return acc;\n }\n }, []);\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce((acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n }, []),\n };\n }\n }\n else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n return {\n type: \"string\",\n enum: options.reduce((acc, x) => [\n ...acc,\n ...x._def.values.filter((x) => !acc.includes(x)),\n ], []),\n };\n }\n return asAnyOf(def, refs);\n}\nconst asAnyOf = (def, refs) => {\n const anyOf = (def.options instanceof Map\n ? Array.from(def.options.values())\n : def.options)\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", `${i}`],\n }))\n .filter((x) => !!x &&\n (!refs.strictUnions ||\n (typeof x === \"object\" && Object.keys(x).length > 0)));\n return anyOf.length ? { anyOf } : undefined;\n};\n","import { parseDef } from \"../parseDef.js\";\nimport { primitiveMappings } from \"./union.js\";\nexport function parseNullableDef(def, refs) {\n if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(def.innerType._def.typeName) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n if (refs.target === \"openApi3\") {\n return {\n type: primitiveMappings[def.innerType._def.typeName],\n nullable: true,\n };\n }\n return {\n type: [\n primitiveMappings[def.innerType._def.typeName],\n \"null\",\n ],\n };\n }\n if (refs.target === \"openApi3\") {\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath],\n });\n if (base && \"$ref\" in base)\n return { allOf: [base], nullable: true };\n return base && { ...base, nullable: true };\n }\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"0\"],\n });\n return base && { anyOf: [base, { type: \"null\" }] };\n}\n","import { addErrorMessage, setResponseValueAndErrors, } from \"../errorMessages.js\";\nexport function parseNumberDef(def, refs) {\n const res = {\n type: \"number\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n addErrorMessage(res, \"type\", check.message, refs);\n break;\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseObjectDef(def, refs) {\n const forceOptionalIntoNullable = refs.target === \"openAi\";\n const result = {\n type: \"object\",\n properties: {},\n };\n const required = [];\n const shape = def.shape();\n for (const propName in shape) {\n let propDef = shape[propName];\n if (propDef === undefined || propDef._def === undefined) {\n continue;\n }\n let propOptional = safeIsOptional(propDef);\n if (propOptional && forceOptionalIntoNullable) {\n if (propDef._def.typeName === \"ZodOptional\") {\n propDef = propDef._def.innerType;\n }\n if (!propDef.isNullable()) {\n propDef = propDef.nullable();\n }\n propOptional = false;\n }\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", propName],\n propertyPath: [...refs.currentPath, \"properties\", propName],\n });\n if (parsedDef === undefined) {\n continue;\n }\n result.properties[propName] = parsedDef;\n if (!propOptional) {\n required.push(propName);\n }\n }\n if (required.length) {\n result.required = required;\n }\n const additionalProperties = decideAdditionalProperties(def, refs);\n if (additionalProperties !== undefined) {\n result.additionalProperties = additionalProperties;\n }\n return result;\n}\nfunction decideAdditionalProperties(def, refs) {\n if (def.catchall._def.typeName !== \"ZodNever\") {\n return parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n });\n }\n switch (def.unknownKeys) {\n case \"passthrough\":\n return refs.allowedAdditionalProperties;\n case \"strict\":\n return refs.rejectedAdditionalProperties;\n case \"strip\":\n return refs.removeAdditionalStrategy === \"strict\"\n ? refs.allowedAdditionalProperties\n : refs.rejectedAdditionalProperties;\n }\n}\nfunction safeIsOptional(schema) {\n try {\n return schema.isOptional();\n }\n catch {\n return true;\n }\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport const parseOptionalDef = (def, refs) => {\n if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n return parseDef(def.innerType._def, refs);\n }\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"1\"],\n });\n return innerSchema\n ? {\n anyOf: [\n {\n not: parseAnyDef(refs),\n },\n innerSchema,\n ],\n }\n : parseAnyDef(refs);\n};\n","import { parseDef } from \"../parseDef.js\";\nexport const parsePipelineDef = (def, refs) => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n }\n else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n });\n return {\n allOf: [a, b].filter((x) => x !== undefined),\n };\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parsePromiseDef(def, refs) {\n return parseDef(def.type._def, refs);\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseSetDef(def, refs) {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n const schema = {\n type: \"array\",\n uniqueItems: true,\n items,\n };\n if (def.minSize) {\n setResponseValueAndErrors(schema, \"minItems\", def.minSize.value, def.minSize.message, refs);\n }\n if (def.maxSize) {\n setResponseValueAndErrors(schema, \"maxItems\", def.maxSize.value, def.maxSize.message, refs);\n }\n return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseTupleDef(def, refs) {\n if (def.rest) {\n return {\n type: \"array\",\n minItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalItems\"],\n }),\n };\n }\n else {\n return {\n type: \"array\",\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n };\n }\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUndefinedDef(refs) {\n return {\n not: parseAnyDef(refs),\n };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUnknownDef(refs) {\n return parseAnyDef(refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseReadonlyDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nimport { parseArrayDef } from \"./parsers/array.js\";\nimport { parseBigintDef } from \"./parsers/bigint.js\";\nimport { parseBooleanDef } from \"./parsers/boolean.js\";\nimport { parseBrandedDef } from \"./parsers/branded.js\";\nimport { parseCatchDef } from \"./parsers/catch.js\";\nimport { parseDateDef } from \"./parsers/date.js\";\nimport { parseDefaultDef } from \"./parsers/default.js\";\nimport { parseEffectsDef } from \"./parsers/effects.js\";\nimport { parseEnumDef } from \"./parsers/enum.js\";\nimport { parseIntersectionDef } from \"./parsers/intersection.js\";\nimport { parseLiteralDef } from \"./parsers/literal.js\";\nimport { parseMapDef } from \"./parsers/map.js\";\nimport { parseNativeEnumDef } from \"./parsers/nativeEnum.js\";\nimport { parseNeverDef } from \"./parsers/never.js\";\nimport { parseNullDef } from \"./parsers/null.js\";\nimport { parseNullableDef } from \"./parsers/nullable.js\";\nimport { parseNumberDef } from \"./parsers/number.js\";\nimport { parseObjectDef } from \"./parsers/object.js\";\nimport { parseOptionalDef } from \"./parsers/optional.js\";\nimport { parsePipelineDef } from \"./parsers/pipeline.js\";\nimport { parsePromiseDef } from \"./parsers/promise.js\";\nimport { parseRecordDef } from \"./parsers/record.js\";\nimport { parseSetDef } from \"./parsers/set.js\";\nimport { parseStringDef } from \"./parsers/string.js\";\nimport { parseTupleDef } from \"./parsers/tuple.js\";\nimport { parseUndefinedDef } from \"./parsers/undefined.js\";\nimport { parseUnionDef } from \"./parsers/union.js\";\nimport { parseUnknownDef } from \"./parsers/unknown.js\";\nimport { parseReadonlyDef } from \"./parsers/readonly.js\";\nexport const selectParser = (def, typeName, refs) => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def, refs);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef(refs);\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef(refs);\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def, refs);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return () => def.getter()._def;\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef(refs);\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef(refs);\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef(refs);\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n return ((_) => undefined)(typeName);\n }\n};\n","import { ignoreOverride } from \"./Options.js\";\nimport { selectParser } from \"./selectParser.js\";\nimport { getRelativePath } from \"./getRelativePath.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nexport function parseDef(def, refs, forceResolution = false) {\n const seenItem = refs.seen.get(def);\n if (refs.override) {\n const overrideResult = refs.override?.(def, refs, seenItem, forceResolution);\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n if (seenSchema !== undefined) {\n return seenSchema;\n }\n }\n const newItem = { def, path: refs.currentPath, jsonSchema: undefined };\n refs.seen.set(def, newItem);\n const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n const jsonSchema = typeof jsonSchemaOrGetter === \"function\"\n ? parseDef(jsonSchemaOrGetter(), refs)\n : jsonSchemaOrGetter;\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema);\n }\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n newItem.jsonSchema = jsonSchema;\n return postProcessResult;\n }\n newItem.jsonSchema = jsonSchema;\n return jsonSchema;\n}\nconst get$ref = (item, refs) => {\n switch (refs.$refStrategy) {\n case \"root\":\n return { $ref: item.path.join(\"/\") };\n case \"relative\":\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case \"none\":\n case \"seen\": {\n if (item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)) {\n console.warn(`Recursive reference detected at ${refs.currentPath.join(\"/\")}! Defaulting to any`);\n return parseAnyDef(refs);\n }\n return refs.$refStrategy === \"seen\" ? parseAnyDef(refs) : undefined;\n }\n }\n};\nconst addMeta = (def, refs, jsonSchema) => {\n if (def.description) {\n jsonSchema.description = def.description;\n if (refs.markdownDescription) {\n jsonSchema.markdownDescription = def.description;\n }\n }\n return jsonSchema;\n};\n","import { parseDef } from \"./parseDef.js\";\nimport { getRefs } from \"./Refs.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nconst zodToJsonSchema = (schema, options) => {\n const refs = getRefs(options);\n let definitions = typeof options === \"object\" && options.definitions\n ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({\n ...acc,\n [name]: parseDef(schema._def, {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, true) ?? parseAnyDef(refs),\n }), {})\n : undefined;\n const name = typeof options === \"string\"\n ? options\n : options?.nameStrategy === \"title\"\n ? undefined\n : options?.name;\n const main = parseDef(schema._def, name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, false) ?? parseAnyDef(refs);\n const title = typeof options === \"object\" &&\n options.name !== undefined &&\n options.nameStrategy === \"title\"\n ? options.name\n : undefined;\n if (title !== undefined) {\n main.title = title;\n }\n if (refs.flags.hasReferencedOpenAiAnyType) {\n if (!definitions) {\n definitions = {};\n }\n if (!definitions[refs.openAiAnyTypeName]) {\n definitions[refs.openAiAnyTypeName] = {\n // Skipping \"object\" as no properties can be defined and additionalProperties must be \"false\"\n type: [\"string\", \"number\", \"integer\", \"boolean\", \"array\", \"null\"],\n items: {\n $ref: refs.$refStrategy === \"relative\"\n ? \"1\"\n : [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ].join(\"/\"),\n },\n };\n }\n }\n const combined = name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [\n ...(refs.$refStrategy === \"relative\" ? [] : refs.basePath),\n refs.definitionPath,\n name,\n ].join(\"/\"),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n if (refs.target === \"jsonSchema7\") {\n combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (refs.target === \"jsonSchema2019-09\" || refs.target === \"openAi\") {\n combined.$schema = \"https://json-schema.org/draft/2019-09/schema#\";\n }\n if (refs.target === \"openAi\" &&\n (\"anyOf\" in combined ||\n \"oneOf\" in combined ||\n \"allOf\" in combined ||\n (\"type\" in combined && Array.isArray(combined.type)))) {\n console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\");\n }\n return combined;\n};\nexport { zodToJsonSchema };\n","import { zodToJsonSchema } from \"zod-to-json-schema\";\n\nimport { HL7v2ConfigSchema } from \"./schema\";\n\n/**\n * JSON Schema for hl7v2 configuration.\n *\n * This schema can be used for IDE autocomplete by adding:\n *\n * ```json\n * {\n * \"$schema\": \"https://raw.githubusercontent.com/rethinkhealth/hl7v2/main/packages/hl7v2-config/schema.json\"\n * }\n * ```\n */\nexport const jsonSchema = zodToJsonSchema(HL7v2ConfigSchema, {\n $refStrategy: \"none\",\n name: \"HL7v2Config\",\n target: \"jsonSchema7\",\n});\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"mappings":"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"}
package/dist/loader.d.ts CHANGED
@@ -14,14 +14,13 @@ export declare class ConfigurationError extends Error {
14
14
  * ```typescript
15
15
  * const config = loadConfig();
16
16
  * console.log(config.plugins); // Array of plugin configurations
17
- * console.log(config.settings.experimental.emptyMode); // 'legacy' or 'empty'
17
+ * console.log(config.settings.delimiters); // Delimiter overrides
18
18
  * ```
19
19
  *
20
20
  * @example
21
21
  * Load only settings:
22
22
  * ```typescript
23
23
  * const { settings } = loadConfig();
24
- * console.log(settings.experimental.emptyMode); // 'legacy' or 'empty'
25
24
  * ```
26
25
  *
27
26
  * @param searchFrom - Optional directory to start searching from (defaults to
@@ -43,14 +42,13 @@ export declare function loadConfig(searchFrom?: string): HL7v2Config;
43
42
  * ```typescript
44
43
  * const config = await loadConfigAsync();
45
44
  * console.log(config.plugins); // Array of plugin configurations
46
- * console.log(config.settings.experimental.emptyMode); // 'legacy' or 'empty'
45
+ * console.log(config.settings.delimiters); // Delimiter overrides
47
46
  * ```
48
47
  *
49
48
  * @example
50
49
  * Load only settings:
51
50
  * ```typescript
52
51
  * const { settings } = await loadConfigAsync();
53
- * console.log(settings.experimental.emptyMode); // 'legacy' or 'empty'
54
52
  * ```
55
53
  *
56
54
  * @param searchFrom - Optional directory to start searching from (defaults to
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AA0CD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,CAc3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,eAAe,CACnC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CActB;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AA0CD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,CAc3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,eAAe,CACnC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CActB;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC"}
package/dist/loader.js CHANGED
@@ -45,14 +45,13 @@ function validateConfig(rawConfig) {
45
45
  * ```typescript
46
46
  * const config = loadConfig();
47
47
  * console.log(config.plugins); // Array of plugin configurations
48
- * console.log(config.settings.experimental.emptyMode); // 'legacy' or 'empty'
48
+ * console.log(config.settings.delimiters); // Delimiter overrides
49
49
  * ```
50
50
  *
51
51
  * @example
52
52
  * Load only settings:
53
53
  * ```typescript
54
54
  * const { settings } = loadConfig();
55
- * console.log(settings.experimental.emptyMode); // 'legacy' or 'empty'
56
55
  * ```
57
56
  *
58
57
  * @param searchFrom - Optional directory to start searching from (defaults to
@@ -81,14 +80,13 @@ function loadConfig(searchFrom) {
81
80
  * ```typescript
82
81
  * const config = await loadConfigAsync();
83
82
  * console.log(config.plugins); // Array of plugin configurations
84
- * console.log(config.settings.experimental.emptyMode); // 'legacy' or 'empty'
83
+ * console.log(config.settings.delimiters); // Delimiter overrides
85
84
  * ```
86
85
  *
87
86
  * @example
88
87
  * Load only settings:
89
88
  * ```typescript
90
89
  * const { settings } = await loadConfigAsync();
91
- * console.log(settings.experimental.emptyMode); // 'legacy' or 'empty'
92
90
  * ```
93
91
  *
94
92
  * @param searchFrom - Optional directory to start searching from (defaults to
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","names":[],"sources":["../src/loader.ts"],"sourcesContent":["import { cosmiconfig, cosmiconfigSync } from \"cosmiconfig\";\n\nimport type { HL7v2Config } from \"./schema\";\nimport { HL7v2ConfigSchema } from \"./schema\";\n\n/**\n * Error thrown when configuration validation fails.\n */\nexport class ConfigurationError extends Error {\n override cause?: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = \"ConfigurationError\";\n this.cause = cause;\n }\n}\n\nconst searchPlaces = [\n \"package.json\",\n \".hl7v2rc\",\n \".hl7v2rc.json\",\n \".hl7v2rc.yaml\",\n \".hl7v2rc.yml\",\n \".hl7v2rc.js\",\n \".hl7v2rc.cjs\",\n \"hl7v2.config.js\",\n \"hl7v2.config.cjs\",\n];\n\nconst explorerSync = cosmiconfigSync(\"hl7v2\", {\n searchPlaces,\n});\n\nconst explorerAsync = cosmiconfig(\"hl7v2\", {\n searchPlaces: [...searchPlaces, \".hl7v2rc.mjs\", \"hl7v2.config.mjs\"],\n});\n\n/**\n * Validate configuration using Zod schema.\n */\nfunction validateConfig(rawConfig: unknown): HL7v2Config {\n const parsed = HL7v2ConfigSchema.safeParse(rawConfig);\n\n if (!parsed.success) {\n const errorMessage = parsed.error.errors\n .map((err) => ` - ${err.path.join(\".\")}: ${err.message}`)\n .join(\"\\n\");\n\n throw new ConfigurationError(\n `Invalid hl7v2 configuration:\\n${errorMessage}`,\n parsed.error\n );\n }\n\n return parsed.data;\n}\n\n/**\n * Load and validate hl7v2 configuration from configuration files (synchronous).\n *\n * @example\n * Load full configuration:\n * ```typescript\n * const config = loadConfig();\n * console.log(config.plugins); // Array of plugin configurations\n * console.log(config.settings.experimental.emptyMode); // 'legacy' or 'empty'\n * ```\n *\n * @example\n * Load only settings:\n * ```typescript\n * const { settings } = loadConfig();\n * console.log(settings.experimental.emptyMode); // 'legacy' or 'empty'\n * ```\n *\n * @param searchFrom - Optional directory to start searching from (defaults to\n * cwd)\n * @returns Validated hl7v2 configuration with defaults applied\n * @throws ConfigurationError if configuration is invalid\n */\nexport function loadConfig(searchFrom?: string): HL7v2Config {\n try {\n const result = explorerSync.search(searchFrom);\n const rawConfig = result?.config ?? {};\n return validateConfig(rawConfig);\n } catch (error) {\n if (error instanceof ConfigurationError) {\n throw error;\n }\n throw new ConfigurationError(\n `Failed to load hl7v2 configuration: ${error instanceof Error ? error.message : String(error)}`,\n error\n );\n }\n}\n\n/**\n * Load and validate hl7v2 configuration from configuration files\n * (asynchronous).\n *\n * Use this version when you need non-blocking I/O or are in an async context.\n * For most use cases (CLI tools, startup code), prefer the synchronous\n * `loadConfig()`.\n *\n * @example\n * Load full configuration:\n * ```typescript\n * const config = await loadConfigAsync();\n * console.log(config.plugins); // Array of plugin configurations\n * console.log(config.settings.experimental.emptyMode); // 'legacy' or 'empty'\n * ```\n *\n * @example\n * Load only settings:\n * ```typescript\n * const { settings } = await loadConfigAsync();\n * console.log(settings.experimental.emptyMode); // 'legacy' or 'empty'\n * ```\n *\n * @param searchFrom - Optional directory to start searching from (defaults to\n * cwd)\n * @returns Promise resolving to validated hl7v2 configuration with defaults\n * applied\n * @throws ConfigurationError if configuration is invalid\n */\nexport async function loadConfigAsync(\n searchFrom?: string\n): Promise<HL7v2Config> {\n try {\n const result = await explorerAsync.search(searchFrom);\n const rawConfig = result?.config ?? {};\n return validateConfig(rawConfig);\n } catch (error) {\n if (error instanceof ConfigurationError) {\n throw error;\n }\n throw new ConfigurationError(\n `Failed to load hl7v2 configuration: ${error instanceof Error ? error.message : String(error)}`,\n error\n );\n }\n}\n\n/**\n * Clear the configuration cache.\n * Useful for testing to ensure fresh config loads between tests.\n */\nexport function clearCaches(): void {\n explorerSync.clearCaches();\n explorerAsync.clearCaches();\n}\n"],"mappings":";;;;;;AAQA,IAAa,qBAAb,cAAwC,MAAM;CAC5C;CAEA,YAAY,SAAiB,OAAiB;AAC5C,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,QAAQ;;;AAIjB,MAAM,eAAe;CACnB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,eAAe,gBAAgB,SAAS,EAC5C,cACD,CAAC;AAEF,MAAM,gBAAgB,YAAY,SAAS,EACzC,cAAc;CAAC,GAAG;CAAc;CAAgB;CAAmB,EACpE,CAAC;;;;AAKF,SAAS,eAAe,WAAiC;CACvD,MAAM,SAAS,kBAAkB,UAAU,UAAU;AAErD,KAAI,CAAC,OAAO,QAKV,OAAM,IAAI,mBACR,iCALmB,OAAO,MAAM,OAC/B,KAAK,QAAQ,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,UAAU,CACzD,KAAK,KAAK,IAIX,OAAO,MACR;AAGH,QAAO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;AA0BhB,SAAgB,WAAW,YAAkC;AAC3D,KAAI;AAGF,SAAO,eAFQ,aAAa,OAAO,WAAW,EACpB,UAAU,EAAE,CACN;UACzB,OAAO;AACd,MAAI,iBAAiB,mBACnB,OAAM;AAER,QAAM,IAAI,mBACR,uCAAuC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,IAC7F,MACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCL,eAAsB,gBACpB,YACsB;AACtB,KAAI;AAGF,SAAO,gBAFQ,MAAM,cAAc,OAAO,WAAW,GAC3B,UAAU,EAAE,CACN;UACzB,OAAO;AACd,MAAI,iBAAiB,mBACnB,OAAM;AAER,QAAM,IAAI,mBACR,uCAAuC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,IAC7F,MACD;;;;;;;AAQL,SAAgB,cAAoB;AAClC,cAAa,aAAa;AAC1B,eAAc,aAAa"}
1
+ {"version":3,"file":"loader.js","names":[],"sources":["../src/loader.ts"],"sourcesContent":["import { cosmiconfig, cosmiconfigSync } from \"cosmiconfig\";\n\nimport type { HL7v2Config } from \"./schema\";\nimport { HL7v2ConfigSchema } from \"./schema\";\n\n/**\n * Error thrown when configuration validation fails.\n */\nexport class ConfigurationError extends Error {\n override cause?: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = \"ConfigurationError\";\n this.cause = cause;\n }\n}\n\nconst searchPlaces = [\n \"package.json\",\n \".hl7v2rc\",\n \".hl7v2rc.json\",\n \".hl7v2rc.yaml\",\n \".hl7v2rc.yml\",\n \".hl7v2rc.js\",\n \".hl7v2rc.cjs\",\n \"hl7v2.config.js\",\n \"hl7v2.config.cjs\",\n];\n\nconst explorerSync = cosmiconfigSync(\"hl7v2\", {\n searchPlaces,\n});\n\nconst explorerAsync = cosmiconfig(\"hl7v2\", {\n searchPlaces: [...searchPlaces, \".hl7v2rc.mjs\", \"hl7v2.config.mjs\"],\n});\n\n/**\n * Validate configuration using Zod schema.\n */\nfunction validateConfig(rawConfig: unknown): HL7v2Config {\n const parsed = HL7v2ConfigSchema.safeParse(rawConfig);\n\n if (!parsed.success) {\n const errorMessage = parsed.error.errors\n .map((err) => ` - ${err.path.join(\".\")}: ${err.message}`)\n .join(\"\\n\");\n\n throw new ConfigurationError(\n `Invalid hl7v2 configuration:\\n${errorMessage}`,\n parsed.error\n );\n }\n\n return parsed.data;\n}\n\n/**\n * Load and validate hl7v2 configuration from configuration files (synchronous).\n *\n * @example\n * Load full configuration:\n * ```typescript\n * const config = loadConfig();\n * console.log(config.plugins); // Array of plugin configurations\n * console.log(config.settings.delimiters); // Delimiter overrides\n * ```\n *\n * @example\n * Load only settings:\n * ```typescript\n * const { settings } = loadConfig();\n * ```\n *\n * @param searchFrom - Optional directory to start searching from (defaults to\n * cwd)\n * @returns Validated hl7v2 configuration with defaults applied\n * @throws ConfigurationError if configuration is invalid\n */\nexport function loadConfig(searchFrom?: string): HL7v2Config {\n try {\n const result = explorerSync.search(searchFrom);\n const rawConfig = result?.config ?? {};\n return validateConfig(rawConfig);\n } catch (error) {\n if (error instanceof ConfigurationError) {\n throw error;\n }\n throw new ConfigurationError(\n `Failed to load hl7v2 configuration: ${error instanceof Error ? error.message : String(error)}`,\n error\n );\n }\n}\n\n/**\n * Load and validate hl7v2 configuration from configuration files\n * (asynchronous).\n *\n * Use this version when you need non-blocking I/O or are in an async context.\n * For most use cases (CLI tools, startup code), prefer the synchronous\n * `loadConfig()`.\n *\n * @example\n * Load full configuration:\n * ```typescript\n * const config = await loadConfigAsync();\n * console.log(config.plugins); // Array of plugin configurations\n * console.log(config.settings.delimiters); // Delimiter overrides\n * ```\n *\n * @example\n * Load only settings:\n * ```typescript\n * const { settings } = await loadConfigAsync();\n * ```\n *\n * @param searchFrom - Optional directory to start searching from (defaults to\n * cwd)\n * @returns Promise resolving to validated hl7v2 configuration with defaults\n * applied\n * @throws ConfigurationError if configuration is invalid\n */\nexport async function loadConfigAsync(\n searchFrom?: string\n): Promise<HL7v2Config> {\n try {\n const result = await explorerAsync.search(searchFrom);\n const rawConfig = result?.config ?? {};\n return validateConfig(rawConfig);\n } catch (error) {\n if (error instanceof ConfigurationError) {\n throw error;\n }\n throw new ConfigurationError(\n `Failed to load hl7v2 configuration: ${error instanceof Error ? error.message : String(error)}`,\n error\n );\n }\n}\n\n/**\n * Clear the configuration cache.\n * Useful for testing to ensure fresh config loads between tests.\n */\nexport function clearCaches(): void {\n explorerSync.clearCaches();\n explorerAsync.clearCaches();\n}\n"],"mappings":";;;;;;AAQA,IAAa,qBAAb,cAAwC,MAAM;CAC5C;CAEA,YAAY,SAAiB,OAAiB;AAC5C,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,QAAQ;;;AAIjB,MAAM,eAAe;CACnB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,eAAe,gBAAgB,SAAS,EAC5C,cACD,CAAC;AAEF,MAAM,gBAAgB,YAAY,SAAS,EACzC,cAAc;CAAC,GAAG;CAAc;CAAgB;CAAmB,EACpE,CAAC;;;;AAKF,SAAS,eAAe,WAAiC;CACvD,MAAM,SAAS,kBAAkB,UAAU,UAAU;AAErD,KAAI,CAAC,OAAO,QAKV,OAAM,IAAI,mBACR,iCALmB,OAAO,MAAM,OAC/B,KAAK,QAAQ,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,UAAU,CACzD,KAAK,KAGuC,IAC7C,OAAO,MACR;AAGH,QAAO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;AAyBhB,SAAgB,WAAW,YAAkC;AAC3D,KAAI;AAGF,SAAO,eAFQ,aAAa,OAAO,WACX,EAAE,UAAU,EAAE,CACN;UACzB,OAAO;AACd,MAAI,iBAAiB,mBACnB,OAAM;AAER,QAAM,IAAI,mBACR,uCAAuC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,IAC7F,MACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCL,eAAsB,gBACpB,YACsB;AACtB,KAAI;AAGF,SAAO,gBADW,MADG,cAAc,OAAO,WAAW,GAC3B,UAAU,EAAE,CACN;UACzB,OAAO;AACd,MAAI,iBAAiB,mBACnB,OAAM;AAER,QAAM,IAAI,mBACR,uCAAuC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,IAC7F,MACD;;;;;;;AAQL,SAAgB,cAAoB;AAClC,cAAa,aAAa;AAC1B,eAAc,aAAa"}
package/dist/schema.d.ts CHANGED
@@ -70,26 +70,6 @@ declare const HL7v2SettingsSchema: z.ZodDefault<z.ZodOptional<z.ZodObject<{
70
70
  segment?: string | undefined;
71
71
  subcomponent?: string | undefined;
72
72
  }>>>;
73
- /**
74
- * Experimental features for the parser. These features are subject to
75
- * change and may become defaults in future versions.
76
- */
77
- experimental: z.ZodDefault<z.ZodOptional<z.ZodObject<{
78
- /**
79
- * Controls how empty fields/components are represented in the AST.
80
- *
81
- * - 'legacy': Empty fields create full structure (Field → Rep → Comp → Sub
82
- * with value: "")
83
- * - 'empty': Empty fields have no children (Field with children: [])
84
- *
85
- * @default "legacy"
86
- */
87
- emptyMode: z.ZodDefault<z.ZodEnum<["legacy", "empty"]>>;
88
- }, "strict", z.ZodTypeAny, {
89
- emptyMode: "legacy" | "empty";
90
- }, {
91
- emptyMode?: "legacy" | "empty" | undefined;
92
- }>>>;
93
73
  }, "strict", z.ZodTypeAny, {
94
74
  delimiters: {
95
75
  component: string;
@@ -99,9 +79,6 @@ declare const HL7v2SettingsSchema: z.ZodDefault<z.ZodOptional<z.ZodObject<{
99
79
  segment: string;
100
80
  subcomponent: string;
101
81
  };
102
- experimental: {
103
- emptyMode: "legacy" | "empty";
104
- };
105
82
  }, {
106
83
  delimiters?: {
107
84
  component?: string | undefined;
@@ -111,9 +88,6 @@ declare const HL7v2SettingsSchema: z.ZodDefault<z.ZodOptional<z.ZodObject<{
111
88
  segment?: string | undefined;
112
89
  subcomponent?: string | undefined;
113
90
  } | undefined;
114
- experimental?: {
115
- emptyMode?: "legacy" | "empty" | undefined;
116
- } | undefined;
117
91
  }>>>;
118
92
  export type HL7v2Settings = z.infer<typeof HL7v2SettingsSchema>;
119
93
  /**
@@ -207,26 +181,6 @@ export declare const HL7v2ConfigSchema: z.ZodObject<{
207
181
  segment?: string | undefined;
208
182
  subcomponent?: string | undefined;
209
183
  }>>>;
210
- /**
211
- * Experimental features for the parser. These features are subject to
212
- * change and may become defaults in future versions.
213
- */
214
- experimental: z.ZodDefault<z.ZodOptional<z.ZodObject<{
215
- /**
216
- * Controls how empty fields/components are represented in the AST.
217
- *
218
- * - 'legacy': Empty fields create full structure (Field → Rep → Comp → Sub
219
- * with value: "")
220
- * - 'empty': Empty fields have no children (Field with children: [])
221
- *
222
- * @default "legacy"
223
- */
224
- emptyMode: z.ZodDefault<z.ZodEnum<["legacy", "empty"]>>;
225
- }, "strict", z.ZodTypeAny, {
226
- emptyMode: "legacy" | "empty";
227
- }, {
228
- emptyMode?: "legacy" | "empty" | undefined;
229
- }>>>;
230
184
  }, "strict", z.ZodTypeAny, {
231
185
  delimiters: {
232
186
  component: string;
@@ -236,9 +190,6 @@ export declare const HL7v2ConfigSchema: z.ZodObject<{
236
190
  segment: string;
237
191
  subcomponent: string;
238
192
  };
239
- experimental: {
240
- emptyMode: "legacy" | "empty";
241
- };
242
193
  }, {
243
194
  delimiters?: {
244
195
  component?: string | undefined;
@@ -248,9 +199,6 @@ export declare const HL7v2ConfigSchema: z.ZodObject<{
248
199
  segment?: string | undefined;
249
200
  subcomponent?: string | undefined;
250
201
  } | undefined;
251
- experimental?: {
252
- emptyMode?: "legacy" | "empty" | undefined;
253
- } | undefined;
254
202
  }>>>;
255
203
  }, "strip", z.ZodTypeAny, {
256
204
  settings: {
@@ -262,9 +210,6 @@ export declare const HL7v2ConfigSchema: z.ZodObject<{
262
210
  segment: string;
263
211
  subcomponent: string;
264
212
  };
265
- experimental: {
266
- emptyMode: "legacy" | "empty";
267
- };
268
213
  };
269
214
  $schema?: string | undefined;
270
215
  plugins?: any[] | undefined;
@@ -280,9 +225,6 @@ export declare const HL7v2ConfigSchema: z.ZodObject<{
280
225
  segment?: string | undefined;
281
226
  subcomponent?: string | undefined;
282
227
  } | undefined;
283
- experimental?: {
284
- emptyMode?: "legacy" | "empty" | undefined;
285
- } | undefined;
286
228
  } | undefined;
287
229
  }>;
288
230
  export type HL7v2Config = z.infer<typeof HL7v2ConfigSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkHxB;;;;;;GAMG;AACH,QAAA,MAAM,mBAAmB;IAErB;;;;;;;;;;OAUG;;QApHH;;;;WAIG;;QAOH;;;;WAIG;;QAQH;;;;WAIG;;QAOH;;;;WAIG;;QAQH;;;;WAIG;;QAOH;;;;WAIG;;;;;;;;;;;;;;;;;IA0DH;;;OAGG;;QA/CH;;;;;;;;WAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4CO,CAAC;AAEf,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;;OAGG;;IAOH;;;;;;;;;;OAUG;;IASH;;OAEG;;QA/DD;;;;;;;;;;WAUG;;YApHH;;;;eAIG;;YAOH;;;;eAIG;;YAQH;;;;eAIG;;YAOH;;;;eAIG;;YAQH;;;;eAIG;;YAOH;;;;eAIG;;;;;;;;;;;;;;;;;QA0DH;;;WAGG;;YA/CH;;;;;;;;eAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwFL,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0FxB;;;;;;GAMG;AACH,QAAA,MAAM,mBAAmB;IAErB;;;;;;;;;;OAUG;;QA5FH;;;;WAIG;;QAOH;;;;WAIG;;QAQH;;;;WAIG;;QAOH;;;;WAIG;;QAQH;;;;WAIG;;QAOH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoCO,CAAC;AAEf,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;;OAGG;;IAOH;;;;;;;;;;OAUG;;IASH;;OAEG;;QAzDD;;;;;;;;;;WAUG;;YA5FH;;;;eAIG;;YAOH;;;;eAIG;;YAQH;;;;eAIG;;YAOH;;;;eAIG;;YAQH;;;;eAIG;;YAOH;;;;eAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgFL,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
package/dist/schema.js CHANGED
@@ -15,14 +15,43 @@ import { z } from "zod";
15
15
  * 4. MSH auto-detection (if message starts with MSH)
16
16
  */
17
17
  const DelimitersSchema = z.object({
18
+ /**
19
+ * Component separator character.
20
+ *
21
+ * @default "^"
22
+ */
18
23
  component: z.string().length(1).optional().default(DEFAULT_DELIMITERS.component).describe("Component separator character"),
24
+ /**
25
+ * Escape character.
26
+ *
27
+ * @default "\\"
28
+ */
19
29
  escape: z.string().length(1).optional().default(DEFAULT_DELIMITERS.escape).describe("Escape character"),
30
+ /**
31
+ * Field separator character.
32
+ *
33
+ * @default "|"
34
+ */
20
35
  field: z.string().length(1).optional().default(DEFAULT_DELIMITERS.field).describe("Field separator character"),
36
+ /**
37
+ * Repetition separator character.
38
+ *
39
+ * @default "~"
40
+ */
21
41
  repetition: z.string().length(1).optional().default(DEFAULT_DELIMITERS.repetition).describe("Repetition separator character"),
42
+ /**
43
+ * Segment terminator character.
44
+ *
45
+ * @default "\\r"
46
+ */
22
47
  segment: z.string().length(1).optional().default(DEFAULT_DELIMITERS.segment).describe("Segment terminator character"),
48
+ /**
49
+ * Subcomponent separator character.
50
+ *
51
+ * @default "&"
52
+ */
23
53
  subcomponent: z.string().length(1).optional().default(DEFAULT_DELIMITERS.subcomponent).describe("Subcomponent separator character")
24
54
  }).strict().optional().default(DEFAULT_DELIMITERS);
25
- const ExperimentalSchema = z.object({ emptyMode: z.enum(["legacy", "empty"]).default("legacy").describe("Control how empty values are represented in the parser. 'legacy' creates full structure with empty strings, 'empty' creates empty children arrays.") }).strict().optional().default({ emptyMode: "legacy" });
26
55
  /**
27
56
  * Schema for hl7v2-specific settings (NOT for plugins/linting).
28
57
  *
@@ -30,10 +59,19 @@ const ExperimentalSchema = z.object({ emptyMode: z.enum(["legacy", "empty"]).def
30
59
  * unified-args configuration files. The `plugins` field is handled
31
60
  * by unified-args and should not be validated here.
32
61
  */
33
- const HL7v2SettingsSchema = z.object({
34
- delimiters: DelimitersSchema,
35
- experimental: ExperimentalSchema
36
- }).strict().optional().default({});
62
+ const HL7v2SettingsSchema = z.object({
63
+ /**
64
+ * Custom delimiters to use as defaults.
65
+ *
66
+ * These delimiters serve as fallbacks when:
67
+ * - Processing non-MSH message fragments
68
+ * - Working with systems that use non-standard delimiters
69
+ * - CLI/batch processing where all messages use the same delimiters
70
+ *
71
+ * Note: MSH auto-detection will override these if the message starts with
72
+ * MSH.
73
+ */
74
+ delimiters: DelimitersSchema }).strict().optional().default({});
37
75
  /**
38
76
  * Full config schema (for documentation/validation).
39
77
  *
@@ -41,8 +79,26 @@ const HL7v2SettingsSchema = z.object({
41
79
  * We document it here but don't deeply validate its structure.
42
80
  */
43
81
  const HL7v2ConfigSchema = z.object({
82
+ /**
83
+ * JSON Schema reference for IDE support. Use:
84
+ * https://raw.githubusercontent.com/rethinkhealth/hl7v2/main/packages/hl7v2-config/schema.json
85
+ */
44
86
  $schema: z.string().url().optional().describe("JSON Schema URL for IDE autocomplete support"),
87
+ /**
88
+ * Plugins configuration - handled by unified-args.
89
+ *
90
+ * Format examples:
91
+ *
92
+ * - ["preset-lint-recommended"]
93
+ * - ["lint-max-message-size", { "maxBytes": 5000000 }]
94
+ * - ["lint-message-version", ["error", { "expression": ">=2.3 <3.0.0" }]]
95
+ *
96
+ * Severity levels: "off" (0), "on"/"warn" (1), "error" (2)
97
+ */
45
98
  plugins: z.array(z.any()).optional().describe("Plugins configuration - handled by unified-args. Format: [pluginName] or [pluginName, options] or [pluginName, [severity, options]]"),
99
+ /**
100
+ * Hl7v2-specific settings (validated by this package).
101
+ */
46
102
  settings: HL7v2SettingsSchema
47
103
  });
48
104
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","names":[],"sources":["../src/schema.ts"],"sourcesContent":["import { DEFAULT_DELIMITERS } from \"@glion/utils\";\nimport { z } from \"zod\";\n\n/**\n * Schema for delimiter configuration.\n *\n * Each delimiter must be exactly one character. All fields are optional,\n * allowing partial overrides (e.g., only override the field separator).\n *\n * Priority order (lowest to highest):\n *\n * 1. DEFAULT_DELIMITERS (hardcoded in hl7v2-utils)\n * 2. Settings.delimiters (from config file)\n * 3. Opts.delimiters (direct API parameter)\n * 4. MSH auto-detection (if message starts with MSH)\n */\nconst DelimitersSchema = z\n .object({\n /**\n * Component separator character.\n *\n * @default \"^\"\n */\n component: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.component)\n .describe(\"Component separator character\"),\n /**\n * Escape character.\n *\n * @default \"\\\\\"\n */\n escape: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.escape)\n .describe(\"Escape character\"),\n\n /**\n * Field separator character.\n *\n * @default \"|\"\n */\n field: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.field)\n .describe(\"Field separator character\"),\n /**\n * Repetition separator character.\n *\n * @default \"~\"\n */\n repetition: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.repetition)\n .describe(\"Repetition separator character\"),\n\n /**\n * Segment terminator character.\n *\n * @default \"\\\\r\"\n */\n segment: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.segment)\n .describe(\"Segment terminator character\"),\n /**\n * Subcomponent separator character.\n *\n * @default \"&\"\n */\n subcomponent: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.subcomponent)\n .describe(\"Subcomponent separator character\"),\n })\n .strict()\n .optional()\n .default(DEFAULT_DELIMITERS);\n\nconst ExperimentalSchema = z\n .object({\n /**\n * Controls how empty fields/components are represented in the AST.\n *\n * - 'legacy': Empty fields create full structure (Field → Rep → Comp → Sub\n * with value: \"\")\n * - 'empty': Empty fields have no children (Field with children: [])\n *\n * @default \"legacy\"\n */\n emptyMode: z\n .enum([\"legacy\", \"empty\"])\n .default(\"legacy\")\n .describe(\n \"Control how empty values are represented in the parser. \" +\n \"'legacy' creates full structure with empty strings, \" +\n \"'empty' creates empty children arrays.\"\n ),\n })\n .strict()\n .optional()\n .default({ emptyMode: \"legacy\" });\n\n/**\n * Schema for hl7v2-specific settings (NOT for plugins/linting).\n *\n * This schema defines the `settings` field that can be added to\n * unified-args configuration files. The `plugins` field is handled\n * by unified-args and should not be validated here.\n */\nconst HL7v2SettingsSchema = z\n .object({\n /**\n * Custom delimiters to use as defaults.\n *\n * These delimiters serve as fallbacks when:\n * - Processing non-MSH message fragments\n * - Working with systems that use non-standard delimiters\n * - CLI/batch processing where all messages use the same delimiters\n *\n * Note: MSH auto-detection will override these if the message starts with\n * MSH.\n */\n delimiters: DelimitersSchema,\n\n /**\n * Experimental features for the parser. These features are subject to\n * change and may become defaults in future versions.\n */\n experimental: ExperimentalSchema,\n })\n .strict()\n .optional()\n .default({});\n\nexport type HL7v2Settings = z.infer<typeof HL7v2SettingsSchema>;\n\n/**\n * Full config schema (for documentation/validation).\n *\n * Note: The `plugins` field is handled by unified-args.\n * We document it here but don't deeply validate its structure.\n */\nexport const HL7v2ConfigSchema = z.object({\n /**\n * JSON Schema reference for IDE support. Use:\n * https://raw.githubusercontent.com/rethinkhealth/hl7v2/main/packages/hl7v2-config/schema.json\n */\n $schema: z\n .string()\n .url()\n .optional()\n .describe(\"JSON Schema URL for IDE autocomplete support\"),\n\n /**\n * Plugins configuration - handled by unified-args.\n *\n * Format examples:\n *\n * - [\"preset-lint-recommended\"]\n * - [\"lint-max-message-size\", { \"maxBytes\": 5000000 }]\n * - [\"lint-message-version\", [\"error\", { \"expression\": \">=2.3 <3.0.0\" }]]\n *\n * Severity levels: \"off\" (0), \"on\"/\"warn\" (1), \"error\" (2)\n */\n plugins: z\n .array(z.any())\n .optional()\n .describe(\n \"Plugins configuration - handled by unified-args. \" +\n \"Format: [pluginName] or [pluginName, options] or [pluginName, [severity, options]]\"\n ),\n\n /**\n * Hl7v2-specific settings (validated by this package).\n */\n settings: HL7v2SettingsSchema,\n});\n\nexport type HL7v2Config = z.infer<typeof HL7v2ConfigSchema>;\n\n/** Input type for config (before defaults are applied) */\nexport type HL7v2ConfigInput = z.input<typeof HL7v2ConfigSchema>;\n"],"mappings":";;;;;;;;;;;;;;;;AAgBA,MAAM,mBAAmB,EACtB,OAAO;CAMN,WAAW,EACR,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,UAAU,CACrC,SAAS,gCAAgC;CAM5C,QAAQ,EACL,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,OAAO,CAClC,SAAS,mBAAmB;CAO/B,OAAO,EACJ,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,MAAM,CACjC,SAAS,4BAA4B;CAMxC,YAAY,EACT,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,WAAW,CACtC,SAAS,iCAAiC;CAO7C,SAAS,EACN,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,QAAQ,CACnC,SAAS,+BAA+B;CAM3C,cAAc,EACX,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,aAAa,CACxC,SAAS,mCAAmC;CAChD,CAAC,CACD,QAAQ,CACR,UAAU,CACV,QAAQ,mBAAmB;AAE9B,MAAM,qBAAqB,EACxB,OAAO,EAUN,WAAW,EACR,KAAK,CAAC,UAAU,QAAQ,CAAC,CACzB,QAAQ,SAAS,CACjB,SACC,qJAGD,EACJ,CAAC,CACD,QAAQ,CACR,UAAU,CACV,QAAQ,EAAE,WAAW,UAAU,CAAC;;;;;;;;AASnC,MAAM,sBAAsB,EACzB,OAAO;CAYN,YAAY;CAMZ,cAAc;CACf,CAAC,CACD,QAAQ,CACR,UAAU,CACV,QAAQ,EAAE,CAAC;;;;;;;AAUd,MAAa,oBAAoB,EAAE,OAAO;CAKxC,SAAS,EACN,QAAQ,CACR,KAAK,CACL,UAAU,CACV,SAAS,+CAA+C;CAa3D,SAAS,EACN,MAAM,EAAE,KAAK,CAAC,CACd,UAAU,CACV,SACC,sIAED;CAKH,UAAU;CACX,CAAC"}
1
+ {"version":3,"file":"schema.js","names":[],"sources":["../src/schema.ts"],"sourcesContent":["import { DEFAULT_DELIMITERS } from \"@glion/utils\";\nimport { z } from \"zod\";\n\n/**\n * Schema for delimiter configuration.\n *\n * Each delimiter must be exactly one character. All fields are optional,\n * allowing partial overrides (e.g., only override the field separator).\n *\n * Priority order (lowest to highest):\n *\n * 1. DEFAULT_DELIMITERS (hardcoded in hl7v2-utils)\n * 2. Settings.delimiters (from config file)\n * 3. Opts.delimiters (direct API parameter)\n * 4. MSH auto-detection (if message starts with MSH)\n */\nconst DelimitersSchema = z\n .object({\n /**\n * Component separator character.\n *\n * @default \"^\"\n */\n component: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.component)\n .describe(\"Component separator character\"),\n /**\n * Escape character.\n *\n * @default \"\\\\\"\n */\n escape: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.escape)\n .describe(\"Escape character\"),\n\n /**\n * Field separator character.\n *\n * @default \"|\"\n */\n field: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.field)\n .describe(\"Field separator character\"),\n /**\n * Repetition separator character.\n *\n * @default \"~\"\n */\n repetition: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.repetition)\n .describe(\"Repetition separator character\"),\n\n /**\n * Segment terminator character.\n *\n * @default \"\\\\r\"\n */\n segment: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.segment)\n .describe(\"Segment terminator character\"),\n /**\n * Subcomponent separator character.\n *\n * @default \"&\"\n */\n subcomponent: z\n .string()\n .length(1)\n .optional()\n .default(DEFAULT_DELIMITERS.subcomponent)\n .describe(\"Subcomponent separator character\"),\n })\n .strict()\n .optional()\n .default(DEFAULT_DELIMITERS);\n\n/**\n * Schema for hl7v2-specific settings (NOT for plugins/linting).\n *\n * This schema defines the `settings` field that can be added to\n * unified-args configuration files. The `plugins` field is handled\n * by unified-args and should not be validated here.\n */\nconst HL7v2SettingsSchema = z\n .object({\n /**\n * Custom delimiters to use as defaults.\n *\n * These delimiters serve as fallbacks when:\n * - Processing non-MSH message fragments\n * - Working with systems that use non-standard delimiters\n * - CLI/batch processing where all messages use the same delimiters\n *\n * Note: MSH auto-detection will override these if the message starts with\n * MSH.\n */\n delimiters: DelimitersSchema,\n })\n .strict()\n .optional()\n .default({});\n\nexport type HL7v2Settings = z.infer<typeof HL7v2SettingsSchema>;\n\n/**\n * Full config schema (for documentation/validation).\n *\n * Note: The `plugins` field is handled by unified-args.\n * We document it here but don't deeply validate its structure.\n */\nexport const HL7v2ConfigSchema = z.object({\n /**\n * JSON Schema reference for IDE support. Use:\n * https://raw.githubusercontent.com/rethinkhealth/hl7v2/main/packages/hl7v2-config/schema.json\n */\n $schema: z\n .string()\n .url()\n .optional()\n .describe(\"JSON Schema URL for IDE autocomplete support\"),\n\n /**\n * Plugins configuration - handled by unified-args.\n *\n * Format examples:\n *\n * - [\"preset-lint-recommended\"]\n * - [\"lint-max-message-size\", { \"maxBytes\": 5000000 }]\n * - [\"lint-message-version\", [\"error\", { \"expression\": \">=2.3 <3.0.0\" }]]\n *\n * Severity levels: \"off\" (0), \"on\"/\"warn\" (1), \"error\" (2)\n */\n plugins: z\n .array(z.any())\n .optional()\n .describe(\n \"Plugins configuration - handled by unified-args. \" +\n \"Format: [pluginName] or [pluginName, options] or [pluginName, [severity, options]]\"\n ),\n\n /**\n * Hl7v2-specific settings (validated by this package).\n */\n settings: HL7v2SettingsSchema,\n});\n\nexport type HL7v2Config = z.infer<typeof HL7v2ConfigSchema>;\n\n/** Input type for config (before defaults are applied) */\nexport type HL7v2ConfigInput = z.input<typeof HL7v2ConfigSchema>;\n"],"mappings":";;;;;;;;;;;;;;;;AAgBA,MAAM,mBAAmB,EACtB,OAAO;;;;;;CAMN,WAAW,EACR,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,UAAU,CACrC,SAAS,gCAAgC;;;;;;CAM5C,QAAQ,EACL,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,OAAO,CAClC,SAAS,mBAAmB;;;;;;CAO/B,OAAO,EACJ,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,MAAM,CACjC,SAAS,4BAA4B;;;;;;CAMxC,YAAY,EACT,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,WAAW,CACtC,SAAS,iCAAiC;;;;;;CAO7C,SAAS,EACN,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,QAAQ,CACnC,SAAS,+BAA+B;;;;;;CAM3C,cAAc,EACX,QAAQ,CACR,OAAO,EAAE,CACT,UAAU,CACV,QAAQ,mBAAmB,aAAa,CACxC,SAAS,mCAAmC;CAChD,CAAC,CACD,QAAQ,CACR,UAAU,CACV,QAAQ,mBAAmB;;;;;;;;AAS9B,MAAM,sBAAsB,EACzB,OAAO;;;;;;;;;;;;AAYN,YAAY,kBACb,CAAC,CACD,QAAQ,CACR,UAAU,CACV,QAAQ,EAAE,CAAC;;;;;;;AAUd,MAAa,oBAAoB,EAAE,OAAO;;;;;CAKxC,SAAS,EACN,QAAQ,CACR,KAAK,CACL,UAAU,CACV,SAAS,+CAA+C;;;;;;;;;;;;CAa3D,SAAS,EACN,MAAM,EAAE,KAAK,CAAC,CACd,UAAU,CACV,SACC,sIAED;;;;CAKH,UAAU;CACX,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glion/config",
3
- "version": "0.15.3",
3
+ "version": "0.19.0",
4
4
  "description": "Configuration schema and loader for hl7v2",
5
5
  "keywords": [
6
6
  "config",
@@ -37,28 +37,27 @@
37
37
  "cosmiconfig": "9.0.1",
38
38
  "unified": "11.0.5",
39
39
  "zod": "3.25.76",
40
- "@glion/utils": "0.15.3"
40
+ "@glion/utils": "0.19.0"
41
41
  },
42
42
  "devDependencies": {
43
- "@types/node": "^25.5.0",
44
- "@vitest/coverage-v8": "4.1.2",
43
+ "@types/node": "25.6.0",
44
+ "@vitest/coverage-v8": "4.1.11",
45
45
  "publint": "0.3.18",
46
- "tsdown": "0.21.7",
47
- "typescript": "^5.9.3",
48
- "vitest": "4.1.2",
46
+ "tsdown": "0.21.10",
47
+ "typescript": "6.0.3",
48
+ "vitest": "4.1.11",
49
49
  "zod-to-json-schema": "3.25.0",
50
- "@glion/check-readme": "0.15.3",
51
- "@glion/tsconfig": "0.15.3",
52
- "@glion/testing": "0.15.3"
50
+ "@glion/check-readme": "0.18.0",
51
+ "@glion/testing": "0.18.0",
52
+ "@glion/tsconfig": "0.18.0"
53
53
  },
54
54
  "engines": {
55
- "node": ">=18"
55
+ "node": ">=22"
56
56
  },
57
- "packageManager": "pnpm@10.14.0",
58
57
  "scripts": {
59
58
  "build": "tsdown && tsc --emitDeclarationOnly && pnpm build:schema",
60
59
  "build:schema": "node --input-type=module -e \"import{writeFileSync}from'fs';import{jsonSchema}from'./dist/json-schema.js';writeFileSync('schema.json',JSON.stringify(jsonSchema,null,2));\"",
61
- "check-types": "tsc --noEmit",
60
+ "check-types": "tsc --noEmit && tsc --noEmit -p tests/tsconfig.json",
62
61
  "check:readme": "glion-check-readme",
63
62
  "test": "vitest run",
64
63
  "test:coverage": "vitest run --coverage",
package/schema.json CHANGED
@@ -71,24 +71,6 @@
71
71
  "segment": "\r",
72
72
  "subcomponent": "&"
73
73
  }
74
- },
75
- "experimental": {
76
- "type": "object",
77
- "properties": {
78
- "emptyMode": {
79
- "type": "string",
80
- "enum": [
81
- "legacy",
82
- "empty"
83
- ],
84
- "default": "legacy",
85
- "description": "Control how empty values are represented in the parser. 'legacy' creates full structure with empty strings, 'empty' creates empty children arrays."
86
- }
87
- },
88
- "additionalProperties": false,
89
- "default": {
90
- "emptyMode": "legacy"
91
- }
92
74
  }
93
75
  },
94
76
  "additionalProperties": false,