@power-plant/schema 0.0.31 → 0.0.33

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.
@@ -1,4 +1,4 @@
1
- import { U as JsonSchemaType, a as JsonSchema } from "./types-CjF4wIDK.mjs";
1
+ import { U as JsonSchemaType, a as JsonSchema } from "./types-CyvYSCHO.mjs";
2
2
  //#region src/codegen.d.ts
3
3
  /**
4
4
  * Stringifies a value for generated TypeScript code.
package/dist/index.cjs CHANGED
@@ -11,16 +11,17 @@ let _stryke_fs_resolve = require("@stryke/fs/resolve");
11
11
  let _stryke_hash = require("@stryke/hash");
12
12
  let _stryke_helpers_deep_clone = require("@stryke/helpers/deep-clone");
13
13
  let _stryke_json = require("@stryke/json");
14
+ let _stryke_path_append = require("@stryke/path/append");
14
15
  let _stryke_path_find = require("@stryke/path/find");
15
- let _stryke_path_replace = require("@stryke/path/replace");
16
+ let _stryke_path_join = require("@stryke/path/join");
16
17
  let _stryke_resolve_constants = require("@stryke/resolve/constants");
17
18
  let _stryke_resolve_load = require("@stryke/resolve/load");
18
19
  let _stryke_string_format_list = require("@stryke/string-format/list");
19
20
  let _stryke_zod = require("@stryke/zod");
20
- let _typescript_vfs = require("@typescript/vfs");
21
+ require("@typescript/vfs");
21
22
  let _valibot_to_json_schema = require("@valibot/to-json-schema");
22
- let node_path = require("node:path");
23
23
  let ts_json_schema_generator_dist_factory_generator_js = require("ts-json-schema-generator/dist/factory/generator.js");
24
+ let ts_json_schema_generator_dist_src_Config_js = require("ts-json-schema-generator/dist/src/Config.js");
24
25
  let typescript = require("typescript");
25
26
  typescript = require_rolldown_runtime.__toESM(typescript, 1);
26
27
 
@@ -129,104 +130,7 @@ function assertSchemasDoNotContradict(base, override, label = "schema") {
129
130
  //#endregion
130
131
  //#region src/extract.ts
131
132
  const SCHEMA_BUNDLE_BASE_URI = "https://power-plant.invalid/";
132
- const DEFAULT_TS_COMPILER_OPTIONS = {
133
- noEmit: true,
134
- emitDecoratorMetadata: true,
135
- experimentalDecorators: true,
136
- target: typescript.default.ScriptTarget.ES2022,
137
- module: typescript.default.ModuleKind.ESNext,
138
- strictNullChecks: false,
139
- skipLibCheck: true,
140
- skipDefaultLibCheck: true,
141
- esModuleInterop: true
142
- };
143
- function readFileAsString(fs, fileName) {
144
- if (!fs.readFileSync) return;
145
- try {
146
- const content = fs.readFileSync(fileName, "utf8");
147
- return typeof content === "string" ? content : void 0;
148
- } catch {
149
- return;
150
- }
151
- }
152
- function fileExistsOnFs(fs, fileName) {
153
- if (fs.existsSync) try {
154
- return fs.existsSync(fileName);
155
- } catch {
156
- return false;
157
- }
158
- if (fs.statSync) try {
159
- fs.statSync(fileName);
160
- return true;
161
- } catch {
162
- return false;
163
- }
164
- return readFileAsString(fs, fileName) !== void 0;
165
- }
166
- /**
167
- * Prefers `options.fs` for System I/O so virtual storage-backed files resolve
168
- * through createFSBackedSystem instead of only the real disk.
169
- */
170
- function bindFileSystemToSystem(system, fs) {
171
- const baseFileExists = system.fileExists.bind(system);
172
- const baseReadFile = system.readFile.bind(system);
173
- const baseDirectoryExists = system.directoryExists.bind(system);
174
- const baseRealpath = system.realpath?.bind(system);
175
- system.fileExists = (fileName) => fileExistsOnFs(fs, fileName) || baseFileExists(fileName);
176
- system.readFile = (fileName) => {
177
- if (fileExistsOnFs(fs, fileName)) {
178
- const content = readFileAsString(fs, fileName);
179
- if (content !== void 0) return content;
180
- }
181
- return baseReadFile(fileName);
182
- };
183
- system.directoryExists = (directory) => {
184
- try {
185
- if (fs.statSync) {
186
- if (fs.statSync(directory)?.isDirectory?.()) return true;
187
- } else if (fs.existsSync?.(directory)) return true;
188
- } catch {}
189
- return baseDirectoryExists(directory);
190
- };
191
- if (system.realpath && fs.realpathSync) system.realpath = (path) => {
192
- try {
193
- return String(fs.realpathSync(path));
194
- } catch {
195
- return baseRealpath?.(path) ?? path;
196
- }
197
- };
198
- }
199
- function resolveCompilerOptions(system, tsconfig, fs) {
200
- if (!tsconfig) return { ...DEFAULT_TS_COMPILER_OPTIONS };
201
- const raw = (fs ? readFileAsString(fs, tsconfig) : void 0) ?? typescript.default.sys.readFile(tsconfig);
202
- if (!raw) return { ...DEFAULT_TS_COMPILER_OPTIONS };
203
- const parsed = typescript.default.parseConfigFileTextToJson(tsconfig, raw);
204
- if (!parsed.config) return { ...DEFAULT_TS_COMPILER_OPTIONS };
205
- const options = {
206
- ...typescript.default.parseJsonConfigFileContent(parsed.config, system, (0, node_path.dirname)(tsconfig), {}, tsconfig).options,
207
- noEmit: true
208
- };
209
- delete options.out;
210
- delete options.outDir;
211
- delete options.outFile;
212
- delete options.declaration;
213
- delete options.declarationDir;
214
- delete options.declarationMap;
215
- return options;
216
- }
217
- function createProgramFromFileSystem(file, options) {
218
- const projectRoot = options.cwd ?? (0, _stryke_path_find.findFilePath)(file);
219
- const createHost = _typescript_vfs.createVirtualCompilerHost;
220
- const system = (0, _typescript_vfs.createFSBackedSystem)(/* @__PURE__ */ new Map(), projectRoot, typescript.default);
221
- if (options.fs) bindFileSystemToSystem(system, options.fs);
222
- const compilerOptions = resolveCompilerOptions(system, options.tsconfig, options.fs);
223
- const { compilerHost } = createHost(system, compilerOptions, typescript.default);
224
- return typescript.default.createProgram({
225
- rootNames: [file],
226
- options: compilerOptions,
227
- host: compilerHost
228
- });
229
- }
133
+ typescript.default.ScriptTarget.ES2022, typescript.default.ModuleKind.ESNext;
230
134
  function isWrappedSchemaConfig(input) {
231
135
  if (!(0, _stryke_type_checks_is_set_object.isSetObject)(input) || !("schema" in input)) return false;
232
136
  if ("hash" in input || "variant" in input || "source" in input) return false;
@@ -562,24 +466,20 @@ async function extractTSType(input, options = {}) {
562
466
  const exportName = fileReference.export ?? "*";
563
467
  const resolvedPath = await (0, _stryke_fs_resolve.resolveSafe)(fileReference.file, { fs: options.fs });
564
468
  const filePath = resolvedPath || fileReference.file;
565
- const tsconfig = options.tsconfig ? (0, _stryke_path_replace.replacePath)(options.tsconfig, options.cwd || process.cwd()) : void 0;
469
+ const tsconfig = options.tsconfig ? (0, _stryke_path_append.appendPath)(options.tsconfig, options.cwd || process.cwd()) : (0, _stryke_path_join.joinPaths)(options.cwd || process.cwd(), "tsconfig.json");
566
470
  try {
567
471
  const generatorConfig = {
472
+ ...ts_json_schema_generator_dist_src_Config_js.DEFAULT_CONFIG,
568
473
  path: filePath,
569
474
  type: exportName,
570
475
  expose: "all",
571
476
  jsDoc: "extended",
572
477
  markdownDescription: true,
573
478
  fullDescription: true,
574
- skipTypeCheck: false,
575
- tsProgram: createProgramFromFileSystem(filePath, {
576
- ...options,
577
- tsconfig
578
- }),
579
479
  ...options,
580
480
  tsconfig
581
481
  };
582
- options.logger?.debug?.(`Generating JSON schema for "${filePath}" using the type "${exportName}" with the following configuration: ${JSON.stringify(generatorConfig, null, 2)}`);
482
+ console.log(`Generating JSON schema for "${filePath}" using the type "${exportName}" with the following configuration: ${JSON.stringify(generatorConfig, null, 2)}`);
583
483
  return (0, ts_json_schema_generator_dist_factory_generator_js.createGenerator)(generatorConfig).createSchema(exportName);
584
484
  } catch (error) {
585
485
  throw new Error(`Failed to generate a JSON schema for "${fileReference.file}"${resolvedPath && resolvedPath !== fileReference.file ? ` (resolved: ${resolvedPath})` : ""} using the type "${exportName}". Error: ${error.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/compatibility.ts","../src/extract.ts","../src/helpers.ts","../src/metadata.ts","../src/type-checks.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/compatibility.ts","../src/extract.ts","../src/helpers.ts","../src/metadata.ts","../src/type-checks.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as SchemaSourceVariant, A as JsonSchemaNumberFormat, B as JsonSchemaString, C as JsonSchemaMap, D as JsonSchemaNull, E as JsonSchemaNever, F as JsonSchemaRecord, G as JsonSchemaUnion, H as JsonSchemaTuple, I as JsonSchemaRecordPropertyNames, J as SchemaConfigVariant, K as JsonSchemaUnknown, L as JsonSchemaRef, M as JsonSchemaOf, N as JsonSchemaPrimitiveType, O as JsonSchemaNullable, P as JsonSchemaPrimitiveUnion, Q as SchemaSourceConfig, R as JsonSchemaSchemaSource, S as JsonSchemaLogicKeywords, T as JsonSchemaNativeEnum, U as JsonSchemaType, V as JsonSchemaStringFormat, W as JsonSchemaUndefined, X as SchemaEnvelopeOf, Y as SchemaEnvelope, Z as SchemaSource, _ as JsonSchemaInteger, a as JsonSchema, at as ValibotSchema, b as JsonSchemaLike, c as JsonSchemaAnyOf, ct as JSON_SCHEMA_METADATA_KEYS, d as JsonSchemaBoolean, dt as JsonSchemaTypeNames, et as SpecOf, f as JsonSchemaConditionalKeywords, ft as SCHEMA_ARRAY_CONCAT_KEYWORDS, g as JsonSchemaEnum, h as JsonSchemaDecimalFormat, i as InferExtractOptions, it as UntypedSchemaSource, j as JsonSchemaObject, k as JsonSchemaNumber, l as JsonSchemaArray, lt as JSON_SCHEMA_PRIMITIVE_TYPES, m as JsonSchemaDecimal, mt as SCHEMA_SINGLE_KEYWORDS, n as BaseSchemaSource, nt as UntypedConfigObject, o as JsonSchemaAllOf, ot as ValibotSchemaSource, p as JsonSchemaDate, pt as SCHEMA_RECORD_KEYWORDS, q as SchemaConfig, r as ExtractedSchemaEnvelope, rt as UntypedSchema, s as JsonSchemaAny, st as Zod3SchemaSource, t as BaseExtractOptions, tt as StandardSchemaSchemaSource, u as JsonSchemaBigint, ut as JSON_SCHEMA_TYPES, v as JsonSchemaIntegerFormat, w as JsonSchemaMetadataKeywords, x as JsonSchemaLiteral, y as JsonSchemaKeywords, z as JsonSchemaSet } from "./types-CjF4wIDK.mjs";
1
+ import { $ as SchemaSourceVariant, A as JsonSchemaNumberFormat, B as JsonSchemaString, C as JsonSchemaMap, D as JsonSchemaNull, E as JsonSchemaNever, F as JsonSchemaRecord, G as JsonSchemaUnion, H as JsonSchemaTuple, I as JsonSchemaRecordPropertyNames, J as SchemaConfigVariant, K as JsonSchemaUnknown, L as JsonSchemaRef, M as JsonSchemaOf, N as JsonSchemaPrimitiveType, O as JsonSchemaNullable, P as JsonSchemaPrimitiveUnion, Q as SchemaSourceConfig, R as JsonSchemaSchemaSource, S as JsonSchemaLogicKeywords, T as JsonSchemaNativeEnum, U as JsonSchemaType, V as JsonSchemaStringFormat, W as JsonSchemaUndefined, X as SchemaEnvelopeOf, Y as SchemaEnvelope, Z as SchemaSource, _ as JsonSchemaInteger, a as JsonSchema, at as ValibotSchema, b as JsonSchemaLike, c as JsonSchemaAnyOf, ct as JSON_SCHEMA_METADATA_KEYS, d as JsonSchemaBoolean, dt as JsonSchemaTypeNames, et as SpecOf, f as JsonSchemaConditionalKeywords, ft as SCHEMA_ARRAY_CONCAT_KEYWORDS, g as JsonSchemaEnum, h as JsonSchemaDecimalFormat, i as InferExtractOptions, it as UntypedSchemaSource, j as JsonSchemaObject, k as JsonSchemaNumber, l as JsonSchemaArray, lt as JSON_SCHEMA_PRIMITIVE_TYPES, m as JsonSchemaDecimal, mt as SCHEMA_SINGLE_KEYWORDS, n as BaseSchemaSource, nt as UntypedConfigObject, o as JsonSchemaAllOf, ot as ValibotSchemaSource, p as JsonSchemaDate, pt as SCHEMA_RECORD_KEYWORDS, q as SchemaConfig, r as ExtractedSchemaEnvelope, rt as UntypedSchema, s as JsonSchemaAny, st as Zod3SchemaSource, t as BaseExtractOptions, tt as StandardSchemaSchemaSource, u as JsonSchemaBigint, ut as JSON_SCHEMA_TYPES, v as JsonSchemaIntegerFormat, w as JsonSchemaMetadataKeywords, x as JsonSchemaLiteral, y as JsonSchemaKeywords, z as JsonSchemaSet } from "./types-CyvYSCHO.mjs";
2
2
  import { n as createStoragePromises, r as normalizeKey, t as mapStorageToFileSystem } from "./index-C7q4X7Bo.mjs";
3
3
  import { BaseSchema } from "valibot";
4
4
  import { StandardSchemaV1 } from "@standard-schema/spec";
package/dist/index.mjs CHANGED
@@ -9,16 +9,17 @@ import { resolveSafe } from "@stryke/fs/resolve";
9
9
  import { murmurhash } from "@stryke/hash";
10
10
  import { deepClone } from "@stryke/helpers/deep-clone";
11
11
  import { isStandardJsonSchema } from "@stryke/json";
12
- import { findFileExtensionSafe, findFilePath } from "@stryke/path/find";
13
- import { replacePath } from "@stryke/path/replace";
12
+ import { appendPath } from "@stryke/path/append";
13
+ import { findFileExtensionSafe } from "@stryke/path/find";
14
+ import { joinPaths } from "@stryke/path/join";
14
15
  import { VALID_OBJECT_SOURCE_EXTENSIONS } from "@stryke/resolve/constants";
15
16
  import { loadSafe } from "@stryke/resolve/load";
16
17
  import { list } from "@stryke/string-format/list";
17
18
  import { extractJsonSchema as extractJsonSchema$1, isZod3Type } from "@stryke/zod";
18
- import { createFSBackedSystem, createVirtualCompilerHost } from "@typescript/vfs";
19
+ import "@typescript/vfs";
19
20
  import { toJsonSchema } from "@valibot/to-json-schema";
20
- import { dirname } from "node:path";
21
21
  import { createGenerator } from "ts-json-schema-generator/dist/factory/generator.js";
22
+ import { DEFAULT_CONFIG } from "ts-json-schema-generator/dist/src/Config.js";
22
23
  import ts from "typescript";
23
24
 
24
25
  //#region src/compatibility.ts
@@ -126,104 +127,7 @@ function assertSchemasDoNotContradict(base, override, label = "schema") {
126
127
  //#endregion
127
128
  //#region src/extract.ts
128
129
  const SCHEMA_BUNDLE_BASE_URI = "https://power-plant.invalid/";
129
- const DEFAULT_TS_COMPILER_OPTIONS = {
130
- noEmit: true,
131
- emitDecoratorMetadata: true,
132
- experimentalDecorators: true,
133
- target: ts.ScriptTarget.ES2022,
134
- module: ts.ModuleKind.ESNext,
135
- strictNullChecks: false,
136
- skipLibCheck: true,
137
- skipDefaultLibCheck: true,
138
- esModuleInterop: true
139
- };
140
- function readFileAsString(fs, fileName) {
141
- if (!fs.readFileSync) return;
142
- try {
143
- const content = fs.readFileSync(fileName, "utf8");
144
- return typeof content === "string" ? content : void 0;
145
- } catch {
146
- return;
147
- }
148
- }
149
- function fileExistsOnFs(fs, fileName) {
150
- if (fs.existsSync) try {
151
- return fs.existsSync(fileName);
152
- } catch {
153
- return false;
154
- }
155
- if (fs.statSync) try {
156
- fs.statSync(fileName);
157
- return true;
158
- } catch {
159
- return false;
160
- }
161
- return readFileAsString(fs, fileName) !== void 0;
162
- }
163
- /**
164
- * Prefers `options.fs` for System I/O so virtual storage-backed files resolve
165
- * through createFSBackedSystem instead of only the real disk.
166
- */
167
- function bindFileSystemToSystem(system, fs) {
168
- const baseFileExists = system.fileExists.bind(system);
169
- const baseReadFile = system.readFile.bind(system);
170
- const baseDirectoryExists = system.directoryExists.bind(system);
171
- const baseRealpath = system.realpath?.bind(system);
172
- system.fileExists = (fileName) => fileExistsOnFs(fs, fileName) || baseFileExists(fileName);
173
- system.readFile = (fileName) => {
174
- if (fileExistsOnFs(fs, fileName)) {
175
- const content = readFileAsString(fs, fileName);
176
- if (content !== void 0) return content;
177
- }
178
- return baseReadFile(fileName);
179
- };
180
- system.directoryExists = (directory) => {
181
- try {
182
- if (fs.statSync) {
183
- if (fs.statSync(directory)?.isDirectory?.()) return true;
184
- } else if (fs.existsSync?.(directory)) return true;
185
- } catch {}
186
- return baseDirectoryExists(directory);
187
- };
188
- if (system.realpath && fs.realpathSync) system.realpath = (path) => {
189
- try {
190
- return String(fs.realpathSync(path));
191
- } catch {
192
- return baseRealpath?.(path) ?? path;
193
- }
194
- };
195
- }
196
- function resolveCompilerOptions(system, tsconfig, fs) {
197
- if (!tsconfig) return { ...DEFAULT_TS_COMPILER_OPTIONS };
198
- const raw = (fs ? readFileAsString(fs, tsconfig) : void 0) ?? ts.sys.readFile(tsconfig);
199
- if (!raw) return { ...DEFAULT_TS_COMPILER_OPTIONS };
200
- const parsed = ts.parseConfigFileTextToJson(tsconfig, raw);
201
- if (!parsed.config) return { ...DEFAULT_TS_COMPILER_OPTIONS };
202
- const options = {
203
- ...ts.parseJsonConfigFileContent(parsed.config, system, dirname(tsconfig), {}, tsconfig).options,
204
- noEmit: true
205
- };
206
- delete options.out;
207
- delete options.outDir;
208
- delete options.outFile;
209
- delete options.declaration;
210
- delete options.declarationDir;
211
- delete options.declarationMap;
212
- return options;
213
- }
214
- function createProgramFromFileSystem(file, options) {
215
- const projectRoot = options.cwd ?? findFilePath(file);
216
- const createHost = createVirtualCompilerHost;
217
- const system = createFSBackedSystem(/* @__PURE__ */ new Map(), projectRoot, ts);
218
- if (options.fs) bindFileSystemToSystem(system, options.fs);
219
- const compilerOptions = resolveCompilerOptions(system, options.tsconfig, options.fs);
220
- const { compilerHost } = createHost(system, compilerOptions, ts);
221
- return ts.createProgram({
222
- rootNames: [file],
223
- options: compilerOptions,
224
- host: compilerHost
225
- });
226
- }
130
+ ts.ScriptTarget.ES2022, ts.ModuleKind.ESNext;
227
131
  function isWrappedSchemaConfig(input) {
228
132
  if (!isSetObject(input) || !("schema" in input)) return false;
229
133
  if ("hash" in input || "variant" in input || "source" in input) return false;
@@ -559,24 +463,20 @@ async function extractTSType(input, options = {}) {
559
463
  const exportName = fileReference.export ?? "*";
560
464
  const resolvedPath = await resolveSafe(fileReference.file, { fs: options.fs });
561
465
  const filePath = resolvedPath || fileReference.file;
562
- const tsconfig = options.tsconfig ? replacePath(options.tsconfig, options.cwd || process.cwd()) : void 0;
466
+ const tsconfig = options.tsconfig ? appendPath(options.tsconfig, options.cwd || process.cwd()) : joinPaths(options.cwd || process.cwd(), "tsconfig.json");
563
467
  try {
564
468
  const generatorConfig = {
469
+ ...DEFAULT_CONFIG,
565
470
  path: filePath,
566
471
  type: exportName,
567
472
  expose: "all",
568
473
  jsDoc: "extended",
569
474
  markdownDescription: true,
570
475
  fullDescription: true,
571
- skipTypeCheck: false,
572
- tsProgram: createProgramFromFileSystem(filePath, {
573
- ...options,
574
- tsconfig
575
- }),
576
476
  ...options,
577
477
  tsconfig
578
478
  };
579
- options.logger?.debug?.(`Generating JSON schema for "${filePath}" using the type "${exportName}" with the following configuration: ${JSON.stringify(generatorConfig, null, 2)}`);
479
+ console.log(`Generating JSON schema for "${filePath}" using the type "${exportName}" with the following configuration: ${JSON.stringify(generatorConfig, null, 2)}`);
580
480
  return createGenerator(generatorConfig).createSchema(exportName);
581
481
  } catch (error) {
582
482
  throw new Error(`Failed to generate a JSON schema for "${fileReference.file}"${resolvedPath && resolvedPath !== fileReference.file ? ` (resolved: ${resolvedPath})` : ""} using the type "${exportName}". Error: ${error.message}`);
@@ -1,7 +1,7 @@
1
+ import { Config } from "ts-json-schema-generator/dist/src/Config.js";
1
2
  import { BaseIssue, BaseSchema } from "valibot";
2
3
  import { StandardJSONSchemaV1 } from "@standard-schema/spec";
3
4
  import { InferLoadOptions, LoadReference } from "@stryke/resolve/types";
4
- import { Config } from "ts-json-schema-generator/dist/src/Config.js";
5
5
  import { Storage } from "unstorage";
6
6
  import { InputObject, Schema } from "untyped";
7
7
  import * as z3 from "zod/v3";
@@ -1347,4 +1347,4 @@ declare module "zod" {
1347
1347
  }
1348
1348
  //#endregion
1349
1349
  export { SchemaSourceVariant as $, JsonSchemaNumberFormat as A, JsonSchemaString as B, JsonSchemaMap as C, JsonSchemaNull as D, JsonSchemaNever as E, JsonSchemaRecord as F, JsonSchemaUnion as G, JsonSchemaTuple as H, JsonSchemaRecordPropertyNames as I, SchemaConfigVariant as J, JsonSchemaUnknown as K, JsonSchemaRef as L, JsonSchemaOf as M, JsonSchemaPrimitiveType as N, JsonSchemaNullable as O, JsonSchemaPrimitiveUnion as P, SchemaSourceConfig as Q, JsonSchemaSchemaSource as R, JsonSchemaLogicKeywords as S, JsonSchemaNativeEnum as T, JsonSchemaType as U, JsonSchemaStringFormat as V, JsonSchemaUndefined as W, SchemaEnvelopeOf as X, SchemaEnvelope as Y, SchemaSource as Z, JsonSchemaInteger as _, JsonSchema as a, ValibotSchema as at, JsonSchemaLike as b, JsonSchemaAnyOf as c, JSON_SCHEMA_METADATA_KEYS as ct, JsonSchemaBoolean as d, JsonSchemaTypeNames as dt, SpecOf as et, JsonSchemaConditionalKeywords as f, SCHEMA_ARRAY_CONCAT_KEYWORDS as ft, JsonSchemaEnum as g, JsonSchemaDecimalFormat as h, InferExtractOptions as i, UntypedSchemaSource as it, JsonSchemaObject as j, JsonSchemaNumber as k, JsonSchemaArray as l, JSON_SCHEMA_PRIMITIVE_TYPES as lt, JsonSchemaDecimal as m, SCHEMA_SINGLE_KEYWORDS as mt, BaseSchemaSource as n, UntypedConfigObject as nt, JsonSchemaAllOf as o, ValibotSchemaSource as ot, JsonSchemaDate as p, SCHEMA_RECORD_KEYWORDS as pt, SchemaConfig as q, ExtractedSchemaEnvelope as r, UntypedSchema as rt, JsonSchemaAny as s, Zod3SchemaSource as st, BaseExtractOptions as t, StandardSchemaSchemaSource as tt, JsonSchemaBigint as u, JSON_SCHEMA_TYPES as ut, JsonSchemaIntegerFormat as v, JsonSchemaMetadataKeywords as w, JsonSchemaLiteral as x, JsonSchemaKeywords as y, JsonSchemaSet as z };
1350
- //# sourceMappingURL=types-CjF4wIDK.d.mts.map
1350
+ //# sourceMappingURL=types-CyvYSCHO.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-CyvYSCHO.d.mts","names":[],"sources":["../src/constants.ts","../src/types.ts"],"mappings":""}
@@ -1,4 +1,4 @@
1
- import { a as JsonSchema } from "./types-CjF4wIDK.mjs";
1
+ import { a as JsonSchema } from "./types-CyvYSCHO.mjs";
2
2
  import * as v from "valibot";
3
3
  //#region src/valibot.d.ts
4
4
  declare const referenceSchema: v.ObjectSchema<{
package/dist/zod.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { Y as SchemaEnvelope, a as JsonSchema } from "./types-CjF4wIDK.mjs";
1
+ import { Y as SchemaEnvelope, a as JsonSchema } from "./types-CyvYSCHO.mjs";
2
2
  import * as z from "zod/mini";
3
3
  import * as z4 from "zod/v4";
4
4
  //#region src/zod.d.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@power-plant/schema",
3
- "version": "0.0.31",
3
+ "version": "0.0.33",
4
4
  "private": false,
5
5
  "description": "A Power Plant utility package to help managing schemas.",
6
6
  "keywords": [
@@ -142,9 +142,9 @@
142
142
  "untyped": "^1.5.2"
143
143
  },
144
144
  "devDependencies": {
145
- "@powerlines/plugin-tsdown": "^0.1.554",
145
+ "@powerlines/plugin-tsdown": "^0.1.558",
146
146
  "@types/node": "^25.9.5",
147
- "powerlines": "^0.47.153",
147
+ "powerlines": "^0.47.157",
148
148
  "valibot": "^1.4.2",
149
149
  "zod": "^4.4.3"
150
150
  },
@@ -157,5 +157,5 @@
157
157
  "zod": { "optional": true }
158
158
  },
159
159
  "publishConfig": { "access": "public" },
160
- "gitHead": "eae5f87c86522d68475715d2eadb96ab50fff7b3"
160
+ "gitHead": "f4be99d1455bd72e5ae31a9dc55341a637b6cb43"
161
161
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-CjF4wIDK.d.mts","names":[],"sources":["../src/constants.ts","../src/types.ts"],"mappings":""}