typesea 0.1.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.
Files changed (271) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +21 -0
  3. package/README.md +320 -0
  4. package/dist/adapters/index.d.ts +152 -0
  5. package/dist/adapters/index.d.ts.map +1 -0
  6. package/dist/adapters/index.js +396 -0
  7. package/dist/aot/index.d.ts +33 -0
  8. package/dist/aot/index.d.ts.map +1 -0
  9. package/dist/aot/index.js +295 -0
  10. package/dist/async/index.d.ts +111 -0
  11. package/dist/async/index.d.ts.map +1 -0
  12. package/dist/async/index.js +221 -0
  13. package/dist/builders/composite.d.ts +31 -0
  14. package/dist/builders/composite.d.ts.map +1 -0
  15. package/dist/builders/composite.js +165 -0
  16. package/dist/builders/index.d.ts +11 -0
  17. package/dist/builders/index.d.ts.map +1 -0
  18. package/dist/builders/index.js +9 -0
  19. package/dist/builders/modifier.d.ts +26 -0
  20. package/dist/builders/modifier.d.ts.map +1 -0
  21. package/dist/builders/modifier.js +67 -0
  22. package/dist/builders/object/guard.d.ts +62 -0
  23. package/dist/builders/object/guard.d.ts.map +1 -0
  24. package/dist/builders/object/guard.js +113 -0
  25. package/dist/builders/object/index.d.ts +7 -0
  26. package/dist/builders/object/index.d.ts.map +1 -0
  27. package/dist/builders/object/index.js +5 -0
  28. package/dist/builders/object/schema.d.ts +44 -0
  29. package/dist/builders/object/schema.d.ts.map +1 -0
  30. package/dist/builders/object/schema.js +257 -0
  31. package/dist/builders/object/types.d.ts +63 -0
  32. package/dist/builders/object/types.d.ts.map +1 -0
  33. package/dist/builders/object/types.js +5 -0
  34. package/dist/builders/scalar.d.ts +39 -0
  35. package/dist/builders/scalar.d.ts.map +1 -0
  36. package/dist/builders/scalar.js +63 -0
  37. package/dist/builders/table.d.ts +53 -0
  38. package/dist/builders/table.d.ts.map +1 -0
  39. package/dist/builders/table.js +48 -0
  40. package/dist/builders/types.d.ts +26 -0
  41. package/dist/builders/types.d.ts.map +1 -0
  42. package/dist/builders/types.js +5 -0
  43. package/dist/compile/check-composite.d.ts +34 -0
  44. package/dist/compile/check-composite.d.ts.map +1 -0
  45. package/dist/compile/check-composite.js +117 -0
  46. package/dist/compile/check-scalar.d.ts +24 -0
  47. package/dist/compile/check-scalar.d.ts.map +1 -0
  48. package/dist/compile/check-scalar.js +73 -0
  49. package/dist/compile/check.d.ts +15 -0
  50. package/dist/compile/check.d.ts.map +1 -0
  51. package/dist/compile/check.js +98 -0
  52. package/dist/compile/context.d.ts +35 -0
  53. package/dist/compile/context.d.ts.map +1 -0
  54. package/dist/compile/context.js +72 -0
  55. package/dist/compile/graph-predicate.d.ts +19 -0
  56. package/dist/compile/graph-predicate.d.ts.map +1 -0
  57. package/dist/compile/graph-predicate.js +460 -0
  58. package/dist/compile/guard.d.ts +41 -0
  59. package/dist/compile/guard.d.ts.map +1 -0
  60. package/dist/compile/guard.js +180 -0
  61. package/dist/compile/index.d.ts +8 -0
  62. package/dist/compile/index.d.ts.map +1 -0
  63. package/dist/compile/index.js +6 -0
  64. package/dist/compile/issue.d.ts +18 -0
  65. package/dist/compile/issue.d.ts.map +1 -0
  66. package/dist/compile/issue.js +28 -0
  67. package/dist/compile/names.d.ts +16 -0
  68. package/dist/compile/names.d.ts.map +1 -0
  69. package/dist/compile/names.js +82 -0
  70. package/dist/compile/predicate.d.ts +23 -0
  71. package/dist/compile/predicate.d.ts.map +1 -0
  72. package/dist/compile/predicate.js +317 -0
  73. package/dist/compile/runtime.d.ts +55 -0
  74. package/dist/compile/runtime.d.ts.map +1 -0
  75. package/dist/compile/runtime.js +63 -0
  76. package/dist/compile/source.d.ts +11 -0
  77. package/dist/compile/source.d.ts.map +1 -0
  78. package/dist/compile/source.js +51 -0
  79. package/dist/compile/types.d.ts +52 -0
  80. package/dist/compile/types.d.ts.map +1 -0
  81. package/dist/compile/types.js +5 -0
  82. package/dist/decoder/index.d.ts +106 -0
  83. package/dist/decoder/index.d.ts.map +1 -0
  84. package/dist/decoder/index.js +262 -0
  85. package/dist/evaluate/check-composite.d.ts +39 -0
  86. package/dist/evaluate/check-composite.d.ts.map +1 -0
  87. package/dist/evaluate/check-composite.js +184 -0
  88. package/dist/evaluate/check-scalar.d.ts +20 -0
  89. package/dist/evaluate/check-scalar.d.ts.map +1 -0
  90. package/dist/evaluate/check-scalar.js +81 -0
  91. package/dist/evaluate/check.d.ts +11 -0
  92. package/dist/evaluate/check.d.ts.map +1 -0
  93. package/dist/evaluate/check.js +126 -0
  94. package/dist/evaluate/index.d.ts +7 -0
  95. package/dist/evaluate/index.d.ts.map +1 -0
  96. package/dist/evaluate/index.js +6 -0
  97. package/dist/evaluate/issue.d.ts +10 -0
  98. package/dist/evaluate/issue.d.ts.map +1 -0
  99. package/dist/evaluate/issue.js +11 -0
  100. package/dist/evaluate/predicate.d.ts +26 -0
  101. package/dist/evaluate/predicate.d.ts.map +1 -0
  102. package/dist/evaluate/predicate.js +37 -0
  103. package/dist/evaluate/shared.d.ts +59 -0
  104. package/dist/evaluate/shared.d.ts.map +1 -0
  105. package/dist/evaluate/shared.js +96 -0
  106. package/dist/evaluate/state.d.ts +65 -0
  107. package/dist/evaluate/state.d.ts.map +1 -0
  108. package/dist/evaluate/state.js +66 -0
  109. package/dist/guard/base.d.ts +72 -0
  110. package/dist/guard/base.d.ts.map +1 -0
  111. package/dist/guard/base.js +136 -0
  112. package/dist/guard/error.d.ts +19 -0
  113. package/dist/guard/error.d.ts.map +1 -0
  114. package/dist/guard/error.js +22 -0
  115. package/dist/guard/index.d.ts +10 -0
  116. package/dist/guard/index.d.ts.map +1 -0
  117. package/dist/guard/index.js +8 -0
  118. package/dist/guard/number.d.ts +32 -0
  119. package/dist/guard/number.d.ts.map +1 -0
  120. package/dist/guard/number.js +71 -0
  121. package/dist/guard/props.d.ts +18 -0
  122. package/dist/guard/props.d.ts.map +1 -0
  123. package/dist/guard/props.js +35 -0
  124. package/dist/guard/read.d.ts +42 -0
  125. package/dist/guard/read.d.ts.map +1 -0
  126. package/dist/guard/read.js +114 -0
  127. package/dist/guard/registry.d.ts +15 -0
  128. package/dist/guard/registry.d.ts.map +1 -0
  129. package/dist/guard/registry.js +21 -0
  130. package/dist/guard/string.d.ts +36 -0
  131. package/dist/guard/string.d.ts.map +1 -0
  132. package/dist/guard/string.js +95 -0
  133. package/dist/guard/types.d.ts +103 -0
  134. package/dist/guard/types.d.ts.map +1 -0
  135. package/dist/guard/types.js +5 -0
  136. package/dist/index.d.ts +14 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +10 -0
  139. package/dist/internal/index.d.ts +34 -0
  140. package/dist/internal/index.d.ts.map +1 -0
  141. package/dist/internal/index.js +56 -0
  142. package/dist/ir/builder.d.ts +173 -0
  143. package/dist/ir/builder.d.ts.map +1 -0
  144. package/dist/ir/builder.js +481 -0
  145. package/dist/ir/freeze.d.ts +10 -0
  146. package/dist/ir/freeze.d.ts.map +1 -0
  147. package/dist/ir/freeze.js +102 -0
  148. package/dist/ir/index.d.ts +9 -0
  149. package/dist/ir/index.d.ts.map +1 -0
  150. package/dist/ir/index.js +7 -0
  151. package/dist/ir/regexp.d.ts +6 -0
  152. package/dist/ir/regexp.d.ts.map +1 -0
  153. package/dist/ir/regexp.js +12 -0
  154. package/dist/ir/types.d.ts +215 -0
  155. package/dist/ir/types.d.ts.map +1 -0
  156. package/dist/ir/types.js +5 -0
  157. package/dist/ir/validate.d.ts +10 -0
  158. package/dist/ir/validate.d.ts.map +1 -0
  159. package/dist/ir/validate.js +271 -0
  160. package/dist/issue/index.d.ts +44 -0
  161. package/dist/issue/index.d.ts.map +1 -0
  162. package/dist/issue/index.js +152 -0
  163. package/dist/json-schema/emit-combinator.d.ts +28 -0
  164. package/dist/json-schema/emit-combinator.d.ts.map +1 -0
  165. package/dist/json-schema/emit-combinator.js +96 -0
  166. package/dist/json-schema/emit-composite.d.ts +28 -0
  167. package/dist/json-schema/emit-composite.d.ts.map +1 -0
  168. package/dist/json-schema/emit-composite.js +127 -0
  169. package/dist/json-schema/emit-scalar.d.ts +25 -0
  170. package/dist/json-schema/emit-scalar.d.ts.map +1 -0
  171. package/dist/json-schema/emit-scalar.js +104 -0
  172. package/dist/json-schema/emit-types.d.ts +12 -0
  173. package/dist/json-schema/emit-types.d.ts.map +1 -0
  174. package/dist/json-schema/emit-types.js +5 -0
  175. package/dist/json-schema/emit.d.ts +12 -0
  176. package/dist/json-schema/emit.d.ts.map +1 -0
  177. package/dist/json-schema/emit.js +62 -0
  178. package/dist/json-schema/freeze.d.ts +14 -0
  179. package/dist/json-schema/freeze.d.ts.map +1 -0
  180. package/dist/json-schema/freeze.js +114 -0
  181. package/dist/json-schema/index.d.ts +20 -0
  182. package/dist/json-schema/index.d.ts.map +1 -0
  183. package/dist/json-schema/index.js +76 -0
  184. package/dist/json-schema/issue.d.ts +11 -0
  185. package/dist/json-schema/issue.d.ts.map +1 -0
  186. package/dist/json-schema/issue.js +14 -0
  187. package/dist/json-schema/read.d.ts +29 -0
  188. package/dist/json-schema/read.d.ts.map +1 -0
  189. package/dist/json-schema/read.js +87 -0
  190. package/dist/json-schema/types.d.ts +106 -0
  191. package/dist/json-schema/types.d.ts.map +1 -0
  192. package/dist/json-schema/types.js +5 -0
  193. package/dist/kind/index.d.ts +119 -0
  194. package/dist/kind/index.d.ts.map +1 -0
  195. package/dist/kind/index.js +94 -0
  196. package/dist/lower/index.d.ts +7 -0
  197. package/dist/lower/index.d.ts.map +1 -0
  198. package/dist/lower/index.js +199 -0
  199. package/dist/message/index.d.ts +51 -0
  200. package/dist/message/index.d.ts.map +1 -0
  201. package/dist/message/index.js +269 -0
  202. package/dist/optimize/compact.d.ts +10 -0
  203. package/dist/optimize/compact.d.ts.map +1 -0
  204. package/dist/optimize/compact.js +60 -0
  205. package/dist/optimize/fold-boolean.d.ts +15 -0
  206. package/dist/optimize/fold-boolean.d.ts.map +1 -0
  207. package/dist/optimize/fold-boolean.js +75 -0
  208. package/dist/optimize/fold-common.d.ts +45 -0
  209. package/dist/optimize/fold-common.d.ts.map +1 -0
  210. package/dist/optimize/fold-common.js +71 -0
  211. package/dist/optimize/fold-scalar.d.ts +59 -0
  212. package/dist/optimize/fold-scalar.d.ts.map +1 -0
  213. package/dist/optimize/fold-scalar.js +174 -0
  214. package/dist/optimize/fold.d.ts +10 -0
  215. package/dist/optimize/fold.d.ts.map +1 -0
  216. package/dist/optimize/fold.js +103 -0
  217. package/dist/optimize/index.d.ts +10 -0
  218. package/dist/optimize/index.d.ts.map +1 -0
  219. package/dist/optimize/index.js +23 -0
  220. package/dist/optimize/map-node.d.ts +21 -0
  221. package/dist/optimize/map-node.d.ts.map +1 -0
  222. package/dist/optimize/map-node.js +222 -0
  223. package/dist/optimize/remap.d.ts +30 -0
  224. package/dist/optimize/remap.d.ts.map +1 -0
  225. package/dist/optimize/remap.js +46 -0
  226. package/dist/optimize/rewrite.d.ts +22 -0
  227. package/dist/optimize/rewrite.d.ts.map +1 -0
  228. package/dist/optimize/rewrite.js +34 -0
  229. package/dist/plan/cache.d.ts +20 -0
  230. package/dist/plan/cache.d.ts.map +1 -0
  231. package/dist/plan/cache.js +122 -0
  232. package/dist/plan/index.d.ts +8 -0
  233. package/dist/plan/index.d.ts.map +1 -0
  234. package/dist/plan/index.js +6 -0
  235. package/dist/plan/predicate.d.ts +27 -0
  236. package/dist/plan/predicate.d.ts.map +1 -0
  237. package/dist/plan/predicate.js +415 -0
  238. package/dist/plan/schema-predicate.d.ts +15 -0
  239. package/dist/plan/schema-predicate.d.ts.map +1 -0
  240. package/dist/plan/schema-predicate.js +277 -0
  241. package/dist/plan/types.d.ts +18 -0
  242. package/dist/plan/types.d.ts.map +1 -0
  243. package/dist/plan/types.js +5 -0
  244. package/dist/result/index.d.ts +27 -0
  245. package/dist/result/index.d.ts.map +1 -0
  246. package/dist/result/index.js +20 -0
  247. package/dist/schema/common.d.ts +30 -0
  248. package/dist/schema/common.d.ts.map +1 -0
  249. package/dist/schema/common.js +102 -0
  250. package/dist/schema/freeze.d.ts +10 -0
  251. package/dist/schema/freeze.d.ts.map +1 -0
  252. package/dist/schema/freeze.js +163 -0
  253. package/dist/schema/index.d.ts +11 -0
  254. package/dist/schema/index.d.ts.map +1 -0
  255. package/dist/schema/index.js +9 -0
  256. package/dist/schema/lazy.d.ts +10 -0
  257. package/dist/schema/lazy.d.ts.map +1 -0
  258. package/dist/schema/lazy.js +25 -0
  259. package/dist/schema/literal.d.ts +10 -0
  260. package/dist/schema/literal.d.ts.map +1 -0
  261. package/dist/schema/literal.js +17 -0
  262. package/dist/schema/types.d.ts +243 -0
  263. package/dist/schema/types.d.ts.map +1 -0
  264. package/dist/schema/types.js +9 -0
  265. package/dist/schema/validate.d.ts +10 -0
  266. package/dist/schema/validate.d.ts.map +1 -0
  267. package/dist/schema/validate.js +268 -0
  268. package/docs/api.md +301 -0
  269. package/docs/engine-notes.md +153 -0
  270. package/docs/index.html +1242 -0
  271. package/package.json +68 -0
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @file emit.ts
3
+ * @brief TypeSea schema to JSON Schema emitter dispatcher.
4
+ */
5
+ import { SchemaTag } from "../kind/index.js";
6
+ import { emitDiscriminatedUnion, emitIntersection, emitNullable, emitUnion } from "./emit-combinator.js";
7
+ import { emitArray, emitObject, emitRecord, emitTuple } from "./emit-composite.js";
8
+ import { emitLiteral, emitNumber, emitString } from "./emit-scalar.js";
9
+ import { pushJsonSchemaIssue } from "./issue.js";
10
+ /**
11
+ * @brief emit schema.
12
+ */
13
+ export function emitSchema(schema, path, issues, dialect) {
14
+ switch (schema.tag) {
15
+ case SchemaTag.Unknown:
16
+ return true;
17
+ case SchemaTag.Never:
18
+ return false;
19
+ case SchemaTag.String:
20
+ return emitString(schema, path, issues);
21
+ case SchemaTag.Number:
22
+ return emitNumber(schema, path, issues);
23
+ case SchemaTag.BigInt:
24
+ pushJsonSchemaIssue(path, issues, "unsupported_bigint", "JSON Schema has no bigint type");
25
+ return undefined;
26
+ case SchemaTag.Symbol:
27
+ pushJsonSchemaIssue(path, issues, "unsupported_symbol", "JSON Schema has no symbol type");
28
+ return undefined;
29
+ case SchemaTag.Boolean:
30
+ return { type: "boolean" };
31
+ case SchemaTag.Literal:
32
+ return emitLiteral(schema.value, path, issues);
33
+ case SchemaTag.Array:
34
+ return emitArray(schema.item, path, issues, emitSchema, dialect);
35
+ case SchemaTag.Tuple:
36
+ return emitTuple(schema.items, path, issues, emitSchema, dialect);
37
+ case SchemaTag.Record:
38
+ return emitRecord(schema.value, path, issues, emitSchema, dialect);
39
+ case SchemaTag.Object:
40
+ return emitObject(schema, path, issues, emitSchema, dialect);
41
+ case SchemaTag.Union:
42
+ return emitUnion(schema.options, path, issues, emitSchema, dialect);
43
+ case SchemaTag.Intersection:
44
+ return emitIntersection(schema.left, schema.right, path, issues, emitSchema, dialect);
45
+ case SchemaTag.Optional:
46
+ case SchemaTag.Undefinedable:
47
+ pushJsonSchemaIssue(path, issues, "unsupported_undefined", "JSON Schema cannot represent undefined as a value");
48
+ return undefined;
49
+ case SchemaTag.Nullable:
50
+ return emitNullable(schema.inner, path, issues, emitSchema, dialect);
51
+ case SchemaTag.DiscriminatedUnion:
52
+ return emitDiscriminatedUnion(schema.cases, path, issues, emitSchema, dialect);
53
+ case SchemaTag.Brand:
54
+ return emitSchema(schema.inner, path, issues, dialect);
55
+ case SchemaTag.Lazy:
56
+ pushJsonSchemaIssue(path, issues, "unsupported_lazy", "Lazy schemas require recursion support");
57
+ return undefined;
58
+ case SchemaTag.Refine:
59
+ pushJsonSchemaIssue(path, issues, "unsupported_refine", "Refinement predicates cannot be represented as JSON Schema");
60
+ return undefined;
61
+ }
62
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file freeze.ts
3
+ * @brief Immutable JSON Schema export results.
4
+ */
5
+ import type { JsonSchema, JsonSchemaExportIssue } from "./types.js";
6
+ /**
7
+ * @brief freeze json schema.
8
+ */
9
+ export declare function freezeJsonSchema(schema: JsonSchema): JsonSchema;
10
+ /**
11
+ * @brief freeze json schema issues.
12
+ */
13
+ export declare function freezeJsonSchemaIssues(issues: readonly JsonSchemaExportIssue[]): readonly JsonSchemaExportIssue[];
14
+ //# sourceMappingURL=freeze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../src/json-schema/freeze.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAK/D;AA8GD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,qBAAqB,EAAE,GACvC,SAAS,qBAAqB,EAAE,CASlC"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @file freeze.ts
3
+ * @brief Immutable JSON Schema export results.
4
+ */
5
+ /**
6
+ * @brief freeze json schema.
7
+ */
8
+ export function freezeJsonSchema(schema) {
9
+ if (typeof schema === "boolean") {
10
+ return schema;
11
+ }
12
+ return freezeJsonSchemaInner(schema, new WeakSet());
13
+ }
14
+ /**
15
+ * @brief freeze json schema inner.
16
+ */
17
+ function freezeJsonSchemaInner(schema, frozen) {
18
+ if (frozen.has(schema)) {
19
+ return schema;
20
+ }
21
+ frozen.add(schema);
22
+ const type = schema.type;
23
+ if (Array.isArray(type)) {
24
+ Object.freeze(type);
25
+ }
26
+ if (schema.items !== undefined) {
27
+ freezeJsonSchemaItems(schema.items, frozen);
28
+ }
29
+ if (schema.prefixItems !== undefined) {
30
+ freezeJsonSchemaArray(schema.prefixItems, frozen);
31
+ }
32
+ if (schema.properties !== undefined) {
33
+ freezeJsonSchemaProperties(schema.properties, frozen);
34
+ }
35
+ if (schema.required !== undefined) {
36
+ Object.freeze(schema.required);
37
+ }
38
+ if (schema.additionalProperties !== undefined &&
39
+ typeof schema.additionalProperties !== "boolean") {
40
+ freezeJsonSchemaInner(schema.additionalProperties, frozen);
41
+ }
42
+ if (schema.additionalItems !== undefined &&
43
+ typeof schema.additionalItems !== "boolean") {
44
+ freezeJsonSchemaInner(schema.additionalItems, frozen);
45
+ }
46
+ if (schema.anyOf !== undefined) {
47
+ freezeJsonSchemaArray(schema.anyOf, frozen);
48
+ }
49
+ if (schema.allOf !== undefined) {
50
+ freezeJsonSchemaArray(schema.allOf, frozen);
51
+ }
52
+ return Object.freeze(schema);
53
+ }
54
+ /**
55
+ * @brief freeze json schema items.
56
+ * @details Handles both homogeneous `items` schemas and draft-07 tuple item arrays.
57
+ */
58
+ function freezeJsonSchemaItems(items, frozen) {
59
+ if (Array.isArray(items)) {
60
+ freezeJsonSchemaArray(items, frozen);
61
+ return;
62
+ }
63
+ const schema = items;
64
+ freezeJsonSchemaValue(schema, frozen);
65
+ }
66
+ /**
67
+ * @brief freeze json schema value.
68
+ */
69
+ function freezeJsonSchemaValue(schema, frozen) {
70
+ if (typeof schema !== "boolean") {
71
+ freezeJsonSchemaInner(schema, frozen);
72
+ }
73
+ }
74
+ /**
75
+ * @brief freeze json schema array.
76
+ */
77
+ function freezeJsonSchemaArray(schemas, frozen) {
78
+ for (let index = 0; index < schemas.length; index += 1) {
79
+ const schema = schemas[index];
80
+ if (schema !== undefined) {
81
+ freezeJsonSchemaValue(schema, frozen);
82
+ }
83
+ }
84
+ Object.freeze(schemas);
85
+ }
86
+ /**
87
+ * @brief freeze json schema properties.
88
+ */
89
+ function freezeJsonSchemaProperties(properties, frozen) {
90
+ const keys = Object.keys(properties);
91
+ for (let index = 0; index < keys.length; index += 1) {
92
+ const key = keys[index];
93
+ if (key !== undefined) {
94
+ const schema = properties[key];
95
+ if (schema !== undefined) {
96
+ freezeJsonSchemaValue(schema, frozen);
97
+ }
98
+ }
99
+ }
100
+ Object.freeze(properties);
101
+ }
102
+ /**
103
+ * @brief freeze json schema issues.
104
+ */
105
+ export function freezeJsonSchemaIssues(issues) {
106
+ for (let index = 0; index < issues.length; index += 1) {
107
+ const issue = issues[index];
108
+ if (issue !== undefined) {
109
+ Object.freeze(issue.path);
110
+ Object.freeze(issue);
111
+ }
112
+ }
113
+ return Object.freeze(issues);
114
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file index.ts
3
+ * @brief Public JSON Schema export module.
4
+ */
5
+ import { type AsyncDecoder } from "../async/index.js";
6
+ import { type Decoder } from "../decoder/index.js";
7
+ import type { Guard, Presence } from "../guard/index.js";
8
+ import { type Result } from "../result/index.js";
9
+ import type { Schema } from "../schema/index.js";
10
+ import type { JsonSchema, JsonSchemaExportIssue, JsonSchemaOptions } from "./types.js";
11
+ export type { JsonSchema, JsonSchemaDialect, JsonSchemaExportCode, JsonSchemaExportIssue, JsonSchemaObject, JsonSchemaOptions, JsonSchemaPrimitive, JsonSchemaTypeName } from "./types.js";
12
+ /**
13
+ * @brief to json schema.
14
+ */
15
+ export declare function toJsonSchema<TValue>(guard: Guard<TValue, Presence> | Decoder<TValue> | AsyncDecoder<TValue>, options?: Partial<JsonSchemaOptions>): Result<JsonSchema, readonly JsonSchemaExportIssue[]>;
16
+ /**
17
+ * @brief schema to json schema.
18
+ */
19
+ export declare function schemaToJsonSchema(schema: Schema, options?: Partial<JsonSchemaOptions>): Result<JsonSchema, readonly JsonSchemaExportIssue[]>;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/json-schema/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAajD,OAAO,KAAK,EACV,UAAU,EAEV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EACjC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,EACvE,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACnC,MAAM,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC,CAsBtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACnC,MAAM,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC,CAEtD"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @file index.ts
3
+ * @brief Public JSON Schema export module.
4
+ */
5
+ import { isAsyncDecoderValue } from "../async/index.js";
6
+ import { isDecoderValue } from "../decoder/index.js";
7
+ import { err, ok } from "../result/index.js";
8
+ import { emitSchema } from "./emit.js";
9
+ import { freezeJsonSchema, freezeJsonSchemaIssues } from "./freeze.js";
10
+ import { JSON_SCHEMA_2020_12_ID, JSON_SCHEMA_DRAFT_07_ID, readJsonSchemaGuardSchema, readJsonSchemaOptions, readJsonSchemaSchema } from "./read.js";
11
+ /**
12
+ * @brief to json schema.
13
+ */
14
+ export function toJsonSchema(guard, options) {
15
+ if (isAsyncDecoderValue(guard)) {
16
+ readJsonSchemaOptions(options);
17
+ return err(freezeJsonSchemaIssues([
18
+ {
19
+ path: Object.freeze([]),
20
+ code: "unsupported_async_decoder",
21
+ message: "Async decoders cannot be represented as JSON Schema"
22
+ }
23
+ ]));
24
+ }
25
+ if (isDecoderValue(guard)) {
26
+ readJsonSchemaOptions(options);
27
+ return err(freezeJsonSchemaIssues([
28
+ {
29
+ path: Object.freeze([]),
30
+ code: "unsupported_decoder",
31
+ message: "Decoder transforms and coercions cannot be represented as JSON Schema"
32
+ }
33
+ ]));
34
+ }
35
+ return exportJsonSchema(readJsonSchemaGuardSchema(guard), options);
36
+ }
37
+ /**
38
+ * @brief schema to json schema.
39
+ */
40
+ export function schemaToJsonSchema(schema, options) {
41
+ return exportJsonSchema(readJsonSchemaSchema(schema), options);
42
+ }
43
+ /**
44
+ * @brief export json schema.
45
+ */
46
+ function exportJsonSchema(schema, options) {
47
+ const config = readJsonSchemaOptions(options);
48
+ const issues = [];
49
+ const path = [];
50
+ const emitted = emitSchema(schema, path, issues, config.dialect);
51
+ if (emitted === undefined || issues.length !== 0) {
52
+ return err(freezeJsonSchemaIssues(issues));
53
+ }
54
+ const schemaId = config.schemaId ?? defaultJsonSchemaSchemaId(config.dialect);
55
+ if (typeof emitted === "boolean") {
56
+ return ok(freezeJsonSchema({
57
+ $schema: schemaId,
58
+ anyOf: [emitted]
59
+ }));
60
+ }
61
+ return ok(freezeJsonSchema({
62
+ ...emitted,
63
+ $schema: schemaId
64
+ }));
65
+ }
66
+ /**
67
+ * @brief default json schema schema id.
68
+ * @details Maps each TypeSea emitter dialect to the matching `$schema` marker.
69
+ * @returns Stable schema identifier for the selected dialect.
70
+ */
71
+ function defaultJsonSchemaSchemaId(dialect) {
72
+ if (dialect === "2020-12") {
73
+ return JSON_SCHEMA_2020_12_ID;
74
+ }
75
+ return JSON_SCHEMA_DRAFT_07_ID;
76
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file issue.ts
3
+ * @brief JSON Schema export issue construction.
4
+ */
5
+ import type { PathSegment } from "../issue/index.js";
6
+ import type { JsonSchemaExportCode, JsonSchemaExportIssue } from "./types.js";
7
+ /**
8
+ * @brief push json schema issue.
9
+ */
10
+ export declare function pushJsonSchemaIssue(path: readonly PathSegment[], issues: JsonSchemaExportIssue[], code: JsonSchemaExportCode, message: string): void;
11
+ //# sourceMappingURL=issue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../src/json-schema/issue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,MAAM,EAAE,qBAAqB,EAAE,EAC/B,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,MAAM,GACd,IAAI,CAMN"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file issue.ts
3
+ * @brief JSON Schema export issue construction.
4
+ */
5
+ /**
6
+ * @brief push json schema issue.
7
+ */
8
+ export function pushJsonSchemaIssue(path, issues, code, message) {
9
+ issues.push({
10
+ path: path.slice(),
11
+ code,
12
+ message
13
+ });
14
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @file read.ts
3
+ * @brief Input normalization for JSON Schema export.
4
+ */
5
+ import { type Schema } from "../schema/index.js";
6
+ import type { JsonSchemaOptions } from "./types.js";
7
+ /**
8
+ * @brief draft 07 schema id.
9
+ * @invariant The value is the default dialect marker for TypeSea JSON Schema output.
10
+ */
11
+ export declare const JSON_SCHEMA_DRAFT_07_ID = "http://json-schema.org/draft-07/schema#";
12
+ /**
13
+ * @brief draft 2020 12 schema id.
14
+ * @invariant The value selects the `prefixItems` tuple keyword set.
15
+ */
16
+ export declare const JSON_SCHEMA_2020_12_ID = "https://json-schema.org/draft/2020-12/schema";
17
+ /**
18
+ * @brief read json schema guard schema.
19
+ */
20
+ export declare function readJsonSchemaGuardSchema(guard: unknown): Schema;
21
+ /**
22
+ * @brief read json schema schema.
23
+ */
24
+ export declare function readJsonSchemaSchema(schema: unknown): Schema;
25
+ /**
26
+ * @brief read json schema options.
27
+ */
28
+ export declare function readJsonSchemaOptions(options: unknown): JsonSchemaOptions;
29
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/json-schema/read.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,uBAAuB,4CAA4C,CAAC;AAEjF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,iDAAiD,CAAC;AAErF;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAK5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAmBzE"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @file read.ts
3
+ * @brief Input normalization for JSON Schema export.
4
+ */
5
+ import { freezeSchema, isSchemaValue } from "../schema/index.js";
6
+ /**
7
+ * @brief draft 07 schema id.
8
+ * @invariant The value is the default dialect marker for TypeSea JSON Schema output.
9
+ */
10
+ export const JSON_SCHEMA_DRAFT_07_ID = "http://json-schema.org/draft-07/schema#";
11
+ /**
12
+ * @brief draft 2020 12 schema id.
13
+ * @invariant The value selects the `prefixItems` tuple keyword set.
14
+ */
15
+ export const JSON_SCHEMA_2020_12_ID = "https://json-schema.org/draft/2020-12/schema";
16
+ /**
17
+ * @brief read json schema guard schema.
18
+ */
19
+ export function readJsonSchemaGuardSchema(guard) {
20
+ if (!isRecord(guard)) {
21
+ throw new TypeError("JSON Schema guard must be a TypeSea guard");
22
+ }
23
+ return readJsonSchemaSchema(guard["schema"]);
24
+ }
25
+ /**
26
+ * @brief read json schema schema.
27
+ */
28
+ export function readJsonSchemaSchema(schema) {
29
+ if (!isSchemaValue(schema)) {
30
+ throw new TypeError("JSON Schema export requires a valid TypeSea schema");
31
+ }
32
+ return freezeSchema(schema);
33
+ }
34
+ /**
35
+ * @brief read json schema options.
36
+ */
37
+ export function readJsonSchemaOptions(options) {
38
+ if (options === undefined) {
39
+ return {
40
+ dialect: "draft-07",
41
+ schemaId: undefined
42
+ };
43
+ }
44
+ if (!isRecord(options)) {
45
+ throw new TypeError("JSON Schema options must be an object");
46
+ }
47
+ const schemaId = options["schemaId"];
48
+ const dialect = readJsonSchemaDialect(options["dialect"], schemaId);
49
+ if (schemaId !== undefined && typeof schemaId !== "string") {
50
+ throw new TypeError("JSON Schema schemaId must be a string");
51
+ }
52
+ return {
53
+ dialect,
54
+ schemaId
55
+ };
56
+ }
57
+ /**
58
+ * @brief read json schema dialect.
59
+ * @details Derives the emitter keyword set from the requested JSON Schema dialect.
60
+ * @returns Normalized JSON Schema dialect.
61
+ */
62
+ function readJsonSchemaDialect(value, schemaId) {
63
+ if (value === undefined) {
64
+ return inferJsonSchemaDialect(schemaId);
65
+ }
66
+ if (value === "draft-07" || value === "2020-12") {
67
+ return value;
68
+ }
69
+ throw new TypeError("JSON Schema dialect must be draft-07 or 2020-12");
70
+ }
71
+ /**
72
+ * @brief infer json schema dialect.
73
+ * @details Chooses a keyword set from well-known schema identifiers without trusting arbitrary strings.
74
+ * @returns Normalized JSON Schema dialect.
75
+ */
76
+ function inferJsonSchemaDialect(schemaId) {
77
+ if (typeof schemaId === "string" && schemaId.includes("2020-12")) {
78
+ return "2020-12";
79
+ }
80
+ return "draft-07";
81
+ }
82
+ /**
83
+ * @brief is record.
84
+ */
85
+ function isRecord(value) {
86
+ return typeof value === "object" && value !== null && !Array.isArray(value);
87
+ }
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @file types.ts
3
+ * @brief JSON Schema export data contracts.
4
+ */
5
+ import type { PathSegment } from "../issue/index.js";
6
+ /**
7
+ * @brief json schema.
8
+ */
9
+ export type JsonSchema = boolean | JsonSchemaObject;
10
+ /**
11
+ * @brief json schema primitive.
12
+ */
13
+ export type JsonSchemaPrimitive = string | number | boolean | null;
14
+ /**
15
+ * @brief json schema type name.
16
+ */
17
+ export type JsonSchemaTypeName = "null" | "boolean" | "object" | "array" | "number" | "integer" | "string";
18
+ /**
19
+ * @brief json schema dialect.
20
+ * @details Defines the keyword set selected for emitted schemas.
21
+ * @invariant Each dialect maps to one stable tuple representation.
22
+ */
23
+ export type JsonSchemaDialect = "draft-07" | "2020-12";
24
+ /**
25
+ * @brief json schema object.
26
+ */
27
+ export interface JsonSchemaObject {
28
+ readonly $schema?: string;
29
+ readonly type?: JsonSchemaTypeName | readonly JsonSchemaTypeName[];
30
+ readonly const?: JsonSchemaPrimitive;
31
+ readonly format?: string;
32
+ readonly pattern?: string;
33
+ readonly minLength?: number;
34
+ readonly maxLength?: number;
35
+ readonly minimum?: number;
36
+ readonly maximum?: number;
37
+ readonly items?: JsonSchema | readonly JsonSchema[];
38
+ /**
39
+ * @brief additional items.
40
+ * @details Documents draft-07 tuple tail validation so older validators do not silently skip tuple element schemas.
41
+ * @invariant When `items` is an array, this field controls values past the fixed tuple length.
42
+ */
43
+ readonly additionalItems?: JsonSchema;
44
+ readonly prefixItems?: readonly JsonSchema[];
45
+ readonly minItems?: number;
46
+ readonly maxItems?: number;
47
+ readonly properties?: Readonly<Record<string, JsonSchema>>;
48
+ readonly required?: readonly string[];
49
+ readonly additionalProperties?: JsonSchema;
50
+ readonly anyOf?: readonly JsonSchema[];
51
+ readonly allOf?: readonly JsonSchema[];
52
+ }
53
+ /**
54
+ * @brief json schema export code.
55
+ */
56
+ export type JsonSchemaExportCode = "unsupported_bigint" | "unsupported_symbol" | "unsupported_undefined" | "unsupported_number_literal" | "unsupported_number_bound" | "unsupported_regex_flags" | "unsupported_lazy" | "unsupported_refine" | "unsupported_decoder" | "unsupported_async_decoder" | "unsupported_child";
57
+ /**
58
+ * @brief json schema export issue.
59
+ */
60
+ export interface JsonSchemaExportIssue {
61
+ readonly path: readonly PathSegment[];
62
+ readonly code: JsonSchemaExportCode;
63
+ readonly message: string;
64
+ }
65
+ /**
66
+ * @brief json schema options.
67
+ */
68
+ export interface JsonSchemaOptions {
69
+ /**
70
+ * @brief dialect.
71
+ * @details Selects the JSON Schema keyword set before emission begins.
72
+ * @invariant Tuple schemas use `items` arrays for draft-07 and `prefixItems` for 2020-12.
73
+ */
74
+ readonly dialect: JsonSchemaDialect;
75
+ readonly schemaId: string | undefined;
76
+ }
77
+ /**
78
+ * @brief mutable json schema object.
79
+ */
80
+ export interface MutableJsonSchemaObject {
81
+ $schema?: string;
82
+ type?: JsonSchemaTypeName | readonly JsonSchemaTypeName[];
83
+ const?: JsonSchemaPrimitive;
84
+ format?: string;
85
+ pattern?: string;
86
+ minLength?: number;
87
+ maxLength?: number;
88
+ minimum?: number;
89
+ maximum?: number;
90
+ items?: JsonSchema | readonly JsonSchema[];
91
+ /**
92
+ * @brief additional items.
93
+ * @details Documents draft-07 tuple tail validation so older validators do not silently skip tuple element schemas.
94
+ * @invariant When `items` is an array, this field controls values past the fixed tuple length.
95
+ */
96
+ additionalItems?: JsonSchema;
97
+ prefixItems?: readonly JsonSchema[];
98
+ minItems?: number;
99
+ maxItems?: number;
100
+ properties?: Readonly<Record<string, JsonSchema>>;
101
+ required?: readonly string[];
102
+ additionalProperties?: JsonSchema;
103
+ anyOf?: readonly JsonSchema[];
104
+ allOf?: readonly JsonSchema[];
105
+ }
106
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/json-schema/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @file types.ts
3
+ * @brief JSON Schema export data contracts.
4
+ */
5
+ export {};