@frictionless-ts/metadata 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/README.md +3 -0
  2. package/build/assets/dialect-1.0.json +58 -0
  3. package/build/assets/dialect-2.0.json +98 -0
  4. package/build/assets/package-1.0.json +1517 -0
  5. package/build/assets/package-2.0.json +2168 -0
  6. package/build/assets/resource-1.0.json +1353 -0
  7. package/build/assets/resource-2.0.json +1987 -0
  8. package/build/assets/schema-1.0.json +1126 -0
  9. package/build/assets/schema-2.0.json +1715 -0
  10. package/build/descriptor/Descriptor.d.ts +2 -0
  11. package/build/descriptor/Descriptor.js +4 -0
  12. package/build/descriptor/index.d.ts +6 -0
  13. package/build/descriptor/index.js +6 -0
  14. package/build/descriptor/load.d.ts +8 -0
  15. package/build/descriptor/load.js +36 -0
  16. package/build/descriptor/load.spec.d.ts +1 -0
  17. package/build/descriptor/load.spec.js +44 -0
  18. package/build/descriptor/process/parse.d.ts +2 -0
  19. package/build/descriptor/process/parse.js +8 -0
  20. package/build/descriptor/process/stringify.d.ts +2 -0
  21. package/build/descriptor/process/stringify.js +4 -0
  22. package/build/descriptor/save.d.ts +9 -0
  23. package/build/descriptor/save.js +19 -0
  24. package/build/descriptor/save.spec.d.ts +1 -0
  25. package/build/descriptor/save.spec.js +99 -0
  26. package/build/dialect/Dialect.d.ts +89 -0
  27. package/build/dialect/Dialect.js +2 -0
  28. package/build/dialect/assert.d.ts +6 -0
  29. package/build/dialect/assert.js +12 -0
  30. package/build/dialect/assert.spec.d.ts +1 -0
  31. package/build/dialect/assert.spec.js +22 -0
  32. package/build/dialect/convert/fromDescriptor.d.ts +2 -0
  33. package/build/dialect/convert/fromDescriptor.js +20 -0
  34. package/build/dialect/convert/toDescriptor.d.ts +3 -0
  35. package/build/dialect/convert/toDescriptor.js +5 -0
  36. package/build/dialect/index.d.ts +8 -0
  37. package/build/dialect/index.js +8 -0
  38. package/build/dialect/load.d.ts +5 -0
  39. package/build/dialect/load.js +12 -0
  40. package/build/dialect/load.spec.d.ts +1 -0
  41. package/build/dialect/load.spec.js +18 -0
  42. package/build/dialect/resolve.d.ts +2 -0
  43. package/build/dialect/resolve.js +11 -0
  44. package/build/dialect/save.d.ts +9 -0
  45. package/build/dialect/save.js +16 -0
  46. package/build/dialect/save.spec.d.ts +1 -0
  47. package/build/dialect/save.spec.js +52 -0
  48. package/build/dialect/validate.d.ts +10 -0
  49. package/build/dialect/validate.js +25 -0
  50. package/build/dialect/validate.spec.d.ts +1 -0
  51. package/build/dialect/validate.spec.js +28 -0
  52. package/build/error/Bound.d.ts +4 -0
  53. package/build/error/Bound.js +2 -0
  54. package/build/error/Error.d.ts +3 -0
  55. package/build/error/Error.js +2 -0
  56. package/build/error/Unbound.d.ts +6 -0
  57. package/build/error/Unbound.js +2 -0
  58. package/build/error/index.d.ts +16 -0
  59. package/build/error/index.js +2 -0
  60. package/build/error/types/Base.d.ts +3 -0
  61. package/build/error/types/Base.js +2 -0
  62. package/build/error/types/Bytes.d.ts +6 -0
  63. package/build/error/types/Bytes.js +2 -0
  64. package/build/error/types/Cell.d.ts +56 -0
  65. package/build/error/types/Cell.js +2 -0
  66. package/build/error/types/Data.d.ts +5 -0
  67. package/build/error/types/Data.js +2 -0
  68. package/build/error/types/Document.d.ts +7 -0
  69. package/build/error/types/Document.js +2 -0
  70. package/build/error/types/Encoding.d.ts +6 -0
  71. package/build/error/types/Encoding.js +2 -0
  72. package/build/error/types/Field.d.ts +15 -0
  73. package/build/error/types/Field.js +2 -0
  74. package/build/error/types/Fields.d.ts +11 -0
  75. package/build/error/types/Fields.js +2 -0
  76. package/build/error/types/File.d.ts +4 -0
  77. package/build/error/types/File.js +2 -0
  78. package/build/error/types/ForeignKey.d.ts +7 -0
  79. package/build/error/types/ForeignKey.js +2 -0
  80. package/build/error/types/Hash.d.ts +6 -0
  81. package/build/error/types/Hash.js +2 -0
  82. package/build/error/types/Metadata.d.ts +9 -0
  83. package/build/error/types/Metadata.js +2 -0
  84. package/build/error/types/Row.d.ts +9 -0
  85. package/build/error/types/Row.js +2 -0
  86. package/build/error/types/Table.d.ts +6 -0
  87. package/build/error/types/Table.js +2 -0
  88. package/build/field/Field.d.ts +5 -0
  89. package/build/field/Field.js +2 -0
  90. package/build/field/Type.d.ts +2 -0
  91. package/build/field/Type.js +2 -0
  92. package/build/field/convert/fromDescriptor.d.ts +2 -0
  93. package/build/field/convert/fromDescriptor.js +61 -0
  94. package/build/field/convert/fromDescriptor.spec.d.ts +1 -0
  95. package/build/field/convert/fromDescriptor.spec.js +241 -0
  96. package/build/field/convert/toDescriptor.d.ts +3 -0
  97. package/build/field/convert/toDescriptor.js +5 -0
  98. package/build/field/convert/toDescriptor.spec.d.ts +1 -0
  99. package/build/field/convert/toDescriptor.spec.js +291 -0
  100. package/build/field/index.d.ts +5 -0
  101. package/build/field/index.js +3 -0
  102. package/build/field/types/Any.d.ts +20 -0
  103. package/build/field/types/Any.js +2 -0
  104. package/build/field/types/Array.d.ts +32 -0
  105. package/build/field/types/Array.js +2 -0
  106. package/build/field/types/Base.d.ts +60 -0
  107. package/build/field/types/Base.js +2 -0
  108. package/build/field/types/Boolean.d.ts +28 -0
  109. package/build/field/types/Boolean.js +2 -0
  110. package/build/field/types/Date.d.ts +43 -0
  111. package/build/field/types/Date.js +2 -0
  112. package/build/field/types/Datetime.d.ts +43 -0
  113. package/build/field/types/Datetime.js +2 -0
  114. package/build/field/types/Duration.d.ts +28 -0
  115. package/build/field/types/Duration.js +2 -0
  116. package/build/field/types/Geojson.d.ts +30 -0
  117. package/build/field/types/Geojson.js +2 -0
  118. package/build/field/types/Geopoint.d.ts +27 -0
  119. package/build/field/types/Geopoint.js +2 -0
  120. package/build/field/types/Integer.d.ts +57 -0
  121. package/build/field/types/Integer.js +2 -0
  122. package/build/field/types/List.d.ts +36 -0
  123. package/build/field/types/List.js +2 -0
  124. package/build/field/types/Number.d.ts +48 -0
  125. package/build/field/types/Number.js +2 -0
  126. package/build/field/types/Object.d.ts +32 -0
  127. package/build/field/types/Object.js +2 -0
  128. package/build/field/types/String.d.ts +51 -0
  129. package/build/field/types/String.js +2 -0
  130. package/build/field/types/Time.d.ts +43 -0
  131. package/build/field/types/Time.js +2 -0
  132. package/build/field/types/Year.d.ts +36 -0
  133. package/build/field/types/Year.js +2 -0
  134. package/build/field/types/Yearmonth.d.ts +36 -0
  135. package/build/field/types/Yearmonth.js +2 -0
  136. package/build/field/types/index.d.ts +16 -0
  137. package/build/field/types/index.js +17 -0
  138. package/build/index.d.ts +112 -0
  139. package/build/index.js +32 -0
  140. package/build/json/Schema.d.ts +2 -0
  141. package/build/json/Schema.js +2 -0
  142. package/build/json/Value.d.ts +1 -0
  143. package/build/json/Value.js +2 -0
  144. package/build/json/ajv.d.ts +2 -0
  145. package/build/json/ajv.js +10 -0
  146. package/build/json/assert.d.ts +2 -0
  147. package/build/json/assert.js +10 -0
  148. package/build/json/cache.d.ts +2 -0
  149. package/build/json/cache.js +5 -0
  150. package/build/json/index.d.ts +5 -0
  151. package/build/json/index.js +4 -0
  152. package/build/json/inspect/schema.d.ts +4 -0
  153. package/build/json/inspect/schema.js +10 -0
  154. package/build/json/inspect/schema.spec.d.ts +1 -0
  155. package/build/json/inspect/schema.spec.js +132 -0
  156. package/build/json/inspect/value.d.ts +11 -0
  157. package/build/json/inspect/value.js +21 -0
  158. package/build/json/inspect/value.spec.d.ts +1 -0
  159. package/build/json/inspect/value.spec.js +121 -0
  160. package/build/json/load.d.ts +3 -0
  161. package/build/json/load.js +13 -0
  162. package/build/json/resolve.d.ts +2 -0
  163. package/build/json/resolve.js +11 -0
  164. package/build/metadata/Metadata.d.ts +3 -0
  165. package/build/metadata/Metadata.js +2 -0
  166. package/build/metadata/index.d.ts +1 -0
  167. package/build/metadata/index.js +2 -0
  168. package/build/package/Contributor.d.ts +21 -0
  169. package/build/package/Contributor.js +2 -0
  170. package/build/package/Package.d.ts +64 -0
  171. package/build/package/Package.js +2 -0
  172. package/build/package/assert.d.ts +8 -0
  173. package/build/package/assert.js +12 -0
  174. package/build/package/assert.spec.d.ts +1 -0
  175. package/build/package/assert.spec.js +26 -0
  176. package/build/package/convert/fromDescriptor.d.ts +4 -0
  177. package/build/package/convert/fromDescriptor.js +36 -0
  178. package/build/package/convert/toDescriptor.d.ts +5 -0
  179. package/build/package/convert/toDescriptor.js +7 -0
  180. package/build/package/index.d.ts +8 -0
  181. package/build/package/index.js +7 -0
  182. package/build/package/load.d.ts +5 -0
  183. package/build/package/load.js +14 -0
  184. package/build/package/load.spec.d.ts +1 -0
  185. package/build/package/load.spec.js +28 -0
  186. package/build/package/save.d.ts +9 -0
  187. package/build/package/save.js +18 -0
  188. package/build/package/save.spec.d.ts +1 -0
  189. package/build/package/save.spec.js +311 -0
  190. package/build/package/validate.d.ts +12 -0
  191. package/build/package/validate.js +27 -0
  192. package/build/package/validate.spec.d.ts +1 -0
  193. package/build/package/validate.spec.js +41 -0
  194. package/build/path/basepath.d.ts +2 -0
  195. package/build/path/basepath.js +25 -0
  196. package/build/path/basepath.spec.d.ts +1 -0
  197. package/build/path/basepath.spec.js +55 -0
  198. package/build/path/denormalize.d.ts +3 -0
  199. package/build/path/denormalize.js +29 -0
  200. package/build/path/denormalize.spec.d.ts +1 -0
  201. package/build/path/denormalize.spec.js +45 -0
  202. package/build/path/index.d.ts +5 -0
  203. package/build/path/index.js +6 -0
  204. package/build/path/normalize.d.ts +6 -0
  205. package/build/path/normalize.js +54 -0
  206. package/build/path/normalize.spec.d.ts +1 -0
  207. package/build/path/normalize.spec.js +71 -0
  208. package/build/path/path.d.ts +5 -0
  209. package/build/path/path.js +48 -0
  210. package/build/path/path.spec.d.ts +1 -0
  211. package/build/path/path.spec.js +111 -0
  212. package/build/platform/index.d.ts +1 -0
  213. package/build/platform/index.js +2 -0
  214. package/build/platform/node.d.ts +130 -0
  215. package/build/platform/node.js +10 -0
  216. package/build/platform/node.spec.d.ts +1 -0
  217. package/build/platform/node.spec.js +16 -0
  218. package/build/profile/@minify.d.ts +1 -0
  219. package/build/profile/@minify.js +58 -0
  220. package/build/profile/Profile.d.ts +9 -0
  221. package/build/profile/Profile.js +2 -0
  222. package/build/profile/assert.d.ts +6 -0
  223. package/build/profile/assert.js +36 -0
  224. package/build/profile/assert.spec.d.ts +1 -0
  225. package/build/profile/assert.spec.js +115 -0
  226. package/build/profile/index.d.ts +2 -0
  227. package/build/profile/index.js +2 -0
  228. package/build/profile/load.d.ts +4 -0
  229. package/build/profile/load.js +12 -0
  230. package/build/profile/registry.d.ts +2 -0
  231. package/build/profile/registry.js +83 -0
  232. package/build/profile/resolve.d.ts +2 -0
  233. package/build/profile/resolve.js +8 -0
  234. package/build/profile/validate.d.ts +9 -0
  235. package/build/profile/validate.js +12 -0
  236. package/build/report/Report.d.ts +5 -0
  237. package/build/report/Report.js +2 -0
  238. package/build/report/create.d.ts +7 -0
  239. package/build/report/create.js +6 -0
  240. package/build/report/index.d.ts +2 -0
  241. package/build/report/index.js +2 -0
  242. package/build/resource/License.d.ts +18 -0
  243. package/build/resource/License.js +2 -0
  244. package/build/resource/Resource.d.ts +93 -0
  245. package/build/resource/Resource.js +2 -0
  246. package/build/resource/Source.d.ts +17 -0
  247. package/build/resource/Source.js +2 -0
  248. package/build/resource/assert.d.ts +8 -0
  249. package/build/resource/assert.js +12 -0
  250. package/build/resource/assert.spec.d.ts +1 -0
  251. package/build/resource/assert.spec.js +23 -0
  252. package/build/resource/convert/fromDescriptor.d.ts +4 -0
  253. package/build/resource/convert/fromDescriptor.js +69 -0
  254. package/build/resource/convert/toDescriptor.d.ts +5 -0
  255. package/build/resource/convert/toDescriptor.js +36 -0
  256. package/build/resource/helpers.d.ts +2 -0
  257. package/build/resource/helpers.js +6 -0
  258. package/build/resource/index.d.ts +11 -0
  259. package/build/resource/index.js +9 -0
  260. package/build/resource/infer.d.ts +3 -0
  261. package/build/resource/infer.js +35 -0
  262. package/build/resource/infer.spec.d.ts +1 -0
  263. package/build/resource/infer.spec.js +103 -0
  264. package/build/resource/load.d.ts +5 -0
  265. package/build/resource/load.js +14 -0
  266. package/build/resource/load.spec.d.ts +1 -0
  267. package/build/resource/load.spec.js +22 -0
  268. package/build/resource/save.d.ts +9 -0
  269. package/build/resource/save.js +18 -0
  270. package/build/resource/save.spec.d.ts +1 -0
  271. package/build/resource/save.spec.js +170 -0
  272. package/build/resource/validate.d.ts +13 -0
  273. package/build/resource/validate.js +57 -0
  274. package/build/resource/validate.spec.d.ts +1 -0
  275. package/build/resource/validate.spec.js +30 -0
  276. package/build/schema/ForeignKey.d.ts +23 -0
  277. package/build/schema/ForeignKey.js +2 -0
  278. package/build/schema/Schema.d.ts +56 -0
  279. package/build/schema/Schema.js +2 -0
  280. package/build/schema/assert.d.ts +6 -0
  281. package/build/schema/assert.js +12 -0
  282. package/build/schema/assert.spec.d.ts +1 -0
  283. package/build/schema/assert.spec.js +34 -0
  284. package/build/schema/convert/fromDescriptor.d.ts +2 -0
  285. package/build/schema/convert/fromDescriptor.js +70 -0
  286. package/build/schema/convert/fromJsonSchema.d.ts +3 -0
  287. package/build/schema/convert/fromJsonSchema.js +105 -0
  288. package/build/schema/convert/fromJsonSchema.spec.d.ts +1 -0
  289. package/build/schema/convert/fromJsonSchema.spec.js +156 -0
  290. package/build/schema/convert/toDescriptor.d.ts +3 -0
  291. package/build/schema/convert/toDescriptor.js +5 -0
  292. package/build/schema/convert/toJsonSchema.d.ts +3 -0
  293. package/build/schema/convert/toJsonSchema.js +173 -0
  294. package/build/schema/convert/toJsonSchema.spec.d.ts +1 -0
  295. package/build/schema/convert/toJsonSchema.spec.js +403 -0
  296. package/build/schema/index.d.ts +11 -0
  297. package/build/schema/index.js +10 -0
  298. package/build/schema/load.d.ts +5 -0
  299. package/build/schema/load.js +12 -0
  300. package/build/schema/load.spec.d.ts +1 -0
  301. package/build/schema/load.spec.js +55 -0
  302. package/build/schema/resolve.d.ts +2 -0
  303. package/build/schema/resolve.js +11 -0
  304. package/build/schema/save.d.ts +9 -0
  305. package/build/schema/save.js +16 -0
  306. package/build/schema/save.spec.d.ts +1 -0
  307. package/build/schema/save.spec.js +58 -0
  308. package/build/schema/validate.d.ts +10 -0
  309. package/build/schema/validate.js +25 -0
  310. package/build/schema/validate.spec.d.ts +1 -0
  311. package/build/schema/validate.spec.js +41 -0
  312. package/package.json +37 -0
@@ -0,0 +1,105 @@
1
+ export function convertSchemaFromJsonSchema(jsonSchema) {
2
+ const fields = [];
3
+ const requiredFields = new Set(Array.isArray(jsonSchema.required) ? jsonSchema.required : []);
4
+ for (const [name, property] of Object.entries(jsonSchema.properties || {})) {
5
+ if (typeof property === "boolean") {
6
+ continue;
7
+ }
8
+ const field = convertPropertyToField(name, property, requiredFields.has(name));
9
+ if (field) {
10
+ fields.push(field);
11
+ }
12
+ }
13
+ const schema = {
14
+ fields,
15
+ };
16
+ if (typeof jsonSchema.title === "string") {
17
+ schema.title = jsonSchema.title;
18
+ }
19
+ if (typeof jsonSchema.description === "string") {
20
+ schema.description = jsonSchema.description;
21
+ }
22
+ return schema;
23
+ }
24
+ function convertPropertyToField(name, property, isRequired) {
25
+ if (typeof property === "boolean") {
26
+ return null;
27
+ }
28
+ const baseField = {
29
+ name,
30
+ title: property.title,
31
+ description: property.description,
32
+ constraints: isRequired ? { required: true } : undefined,
33
+ };
34
+ switch (property.type) {
35
+ case "string":
36
+ return {
37
+ ...baseField,
38
+ type: "string",
39
+ constraints: {
40
+ ...baseField.constraints,
41
+ minLength: property.minLength,
42
+ maxLength: property.maxLength,
43
+ pattern: property.pattern,
44
+ enum: property.enum,
45
+ },
46
+ };
47
+ case "number":
48
+ return {
49
+ ...baseField,
50
+ type: "number",
51
+ constraints: {
52
+ ...baseField.constraints,
53
+ minimum: property.minimum,
54
+ maximum: property.maximum,
55
+ },
56
+ };
57
+ case "integer":
58
+ return {
59
+ ...baseField,
60
+ type: "integer",
61
+ constraints: {
62
+ ...baseField.constraints,
63
+ minimum: property.minimum,
64
+ maximum: property.maximum,
65
+ },
66
+ };
67
+ case "boolean":
68
+ return {
69
+ ...baseField,
70
+ type: "boolean",
71
+ };
72
+ case "array":
73
+ return {
74
+ ...baseField,
75
+ type: "array",
76
+ constraints: {
77
+ ...baseField.constraints,
78
+ minLength: property.minItems,
79
+ maxLength: property.maxItems,
80
+ jsonSchema: property.items,
81
+ },
82
+ };
83
+ case "object":
84
+ return {
85
+ ...baseField,
86
+ type: "object",
87
+ constraints: {
88
+ ...baseField.constraints,
89
+ jsonSchema: property,
90
+ },
91
+ };
92
+ default:
93
+ if (Array.isArray(property.type)) {
94
+ const nonNullType = property.type.find(t => t !== "null");
95
+ if (nonNullType) {
96
+ return convertPropertyToField(name, { ...property, type: nonNullType }, isRequired);
97
+ }
98
+ }
99
+ return {
100
+ ...baseField,
101
+ type: "string",
102
+ };
103
+ }
104
+ }
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zY2hlbWEvY29udmVydC9mcm9tSnNvblNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLFVBQVUsMkJBQTJCLENBQUMsVUFBdUI7SUFDakUsTUFBTSxNQUFNLEdBQVksRUFBRSxDQUFBO0lBQzFCLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM5RCxDQUFBO0lBRUQsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNFLElBQUksT0FBTyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEMsU0FBUTtRQUNWLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxzQkFBc0IsQ0FDbEMsSUFBSSxFQUNKLFFBQVEsRUFDUixjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUN6QixDQUFBO1FBQ0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBc0Q7UUFDaEUsTUFBTTtLQUNQLENBQUE7SUFFRCxJQUFJLE9BQU8sVUFBVSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxNQUFNLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUE7SUFDakMsQ0FBQztJQUVELElBQUksT0FBTyxVQUFVLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxX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QkFDWixJQUFJLEVBQUUsUUFBUTthQUNOLENBQUE7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTcgfSBmcm9tIFwianNvbi1zY2hlbWFcIlxuaW1wb3J0IHR5cGUgeyBGaWVsZCB9IGZyb20gXCIuLi8uLi9maWVsZC9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IFNjaGVtYSB9IGZyb20gXCIuLi9TY2hlbWEudHNcIlxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFNjaGVtYUZyb21Kc29uU2NoZW1hKGpzb25TY2hlbWE6IEpTT05TY2hlbWE3KTogU2NoZW1hIHtcbiAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW11cbiAgY29uc3QgcmVxdWlyZWRGaWVsZHMgPSBuZXcgU2V0KFxuICAgIEFycmF5LmlzQXJyYXkoanNvblNjaGVtYS5yZXF1aXJlZCkgPyBqc29uU2NoZW1hLnJlcXVpcmVkIDogW10sXG4gIClcblxuICBmb3IgKGNvbnN0IFtuYW1lLCBwcm9wZXJ0eV0gb2YgT2JqZWN0LmVudHJpZXMoanNvblNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9KSkge1xuICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkID0gY29udmVydFByb3BlcnR5VG9GaWVsZChcbiAgICAgIG5hbWUsXG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIHJlcXVpcmVkRmllbGRzLmhhcyhuYW1lKSxcbiAgICApXG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICBmaWVsZHMucHVzaChmaWVsZClcbiAgICB9XG4gIH1cblxuICBjb25zdCBzY2hlbWE6IFNjaGVtYSAmIHsgdGl0bGU/OiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nIH0gPSB7XG4gICAgZmllbGRzLFxuICB9XG5cbiAgaWYgKHR5cGVvZiBqc29uU2NoZW1hLnRpdGxlID09PSBcInN0cmluZ1wiKSB7XG4gICAgc2NoZW1hLnRpdGxlID0ganNvblNjaGVtYS50aXRsZVxuICB9XG5cbiAgaWYgKHR5cGVvZiBqc29uU2NoZW1hLmRlc2NyaXB0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgc2NoZW1hLmRlc2NyaXB0aW9uID0ganNvblNjaGVtYS5kZXNjcmlwdGlvblxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYVxufVxuXG5mdW5jdGlvbiBjb252ZXJ0UHJvcGVydHlUb0ZpZWxkKFxuICBuYW1lOiBzdHJpbmcsXG4gIHByb3BlcnR5OiBKU09OU2NoZW1hNyxcbiAgaXNSZXF1aXJlZDogYm9vbGVhbixcbik6IEZpZWxkIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgcHJvcGVydHkgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IGJhc2VGaWVsZCA9IHtcbiAgICBuYW1lLFxuICAgIHRpdGxlOiBwcm9wZXJ0eS50aXRsZSxcbiAgICBkZXNjcmlwdGlvbjogcHJvcGVydHkuZGVzY3JpcHRpb24sXG4gICAgY29uc3RyYWludHM6IGlzUmVxdWlyZWQgPyB7IHJlcXVpcmVkOiB0cnVlIH0gOiB1bmRlZmluZWQsXG4gIH1cblxuICBzd2l0Y2ggKHByb3BlcnR5LnR5cGUpIHtcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlRmllbGQsXG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGNvbnN0cmFpbnRzOiB7XG4gICAgICAgICAgLi4uYmFzZUZpZWxkLmNvbnN0cmFpbnRzLFxuICAgICAgICAgIG1pbkxlbmd0aDogcHJvcGVydHkubWluTGVuZ3RoLFxuICAgICAgICAgIG1heExlbmd0aDogcHJvcGVydHkubWF4TGVuZ3RoLFxuICAgICAgICAgIHBhdHRlcm46IHByb3BlcnR5LnBhdHRlcm4sXG4gICAgICAgICAgZW51bTogcHJvcGVydHkuZW51bSBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgRmllbGRcblxuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2VGaWVsZCxcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgY29uc3RyYWludHM6IHtcbiAgICAgICAgICAuLi5iYXNlRmllbGQuY29uc3RyYWludHMsXG4gICAgICAgICAgbWluaW11bTogcHJvcGVydHkubWluaW11bSxcbiAgICAgICAgICBtYXhpbXVtOiBwcm9wZXJ0eS5tYXhpbXVtLFxuICAgICAgICB9LFxuICAgICAgfSBhcyBGaWVsZFxuXG4gICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2VGaWVsZCxcbiAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCIsXG4gICAgICAgIGNvbnN0cmFpbnRzOiB7XG4gICAgICAgICAgLi4uYmFzZUZpZWxkLmNvbnN0cmFpbnRzLFxuICAgICAgICAgIG1pbmltdW06IHByb3BlcnR5Lm1pbmltdW0sXG4gICAgICAgICAgbWF4aW11bTogcHJvcGVydHkubWF4aW11bSxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgRmllbGRcblxuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlRmllbGQsXG4gICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgfSBhcyBGaWVsZFxuXG4gICAgY2FzZSBcImFycmF5XCI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlRmllbGQsXG4gICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgY29uc3RyYWludHM6IHtcbiAgICAgICAgICAuLi5iYXNlRmllbGQuY29uc3RyYWludHMsXG4gICAgICAgICAgbWluTGVuZ3RoOiBwcm9wZXJ0eS5taW5JdGVtcyxcbiAgICAgICAgICBtYXhMZW5ndGg6IHByb3BlcnR5Lm1heEl0ZW1zLFxuICAgICAgICAgIGpzb25TY2hlbWE6IHByb3BlcnR5Lml0ZW1zIGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIEZpZWxkXG5cbiAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlRmllbGQsXG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIGNvbnN0cmFpbnRzOiB7XG4gICAgICAgICAgLi4uYmFzZUZpZWxkLmNvbnN0cmFpbnRzLFxuICAgICAgICAgIGpzb25TY2hlbWE6IHByb3BlcnR5IGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIEZpZWxkXG5cbiAgICBkZWZhdWx0OlxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcGVydHkudHlwZSkpIHtcbiAgICAgICAgY29uc3Qgbm9uTnVsbFR5cGUgPSBwcm9wZXJ0eS50eXBlLmZpbmQodCA9PiB0ICE9PSBcIm51bGxcIilcbiAgICAgICAgaWYgKG5vbk51bGxUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnZlcnRQcm9wZXJ0eVRvRmllbGQoXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgeyAuLi5wcm9wZXJ0eSwgdHlwZTogbm9uTnVsbFR5cGUgfSxcbiAgICAgICAgICAgIGlzUmVxdWlyZWQsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2VGaWVsZCxcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0gYXMgRmllbGRcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,156 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { convertSchemaFromJsonSchema } from "./fromJsonSchema.js";
3
+ describe("convertSchemaFromJsonSchema", () => {
4
+ it("converts JSONSchema object to Table Schema", () => {
5
+ const jsonSchema = {
6
+ type: "object",
7
+ title: "User Schema",
8
+ description: "Schema for user data",
9
+ required: ["id", "name"],
10
+ properties: {
11
+ id: {
12
+ type: "integer",
13
+ title: "User ID",
14
+ description: "Unique identifier",
15
+ minimum: 1,
16
+ },
17
+ name: {
18
+ type: "string",
19
+ title: "Full Name",
20
+ maxLength: 100,
21
+ },
22
+ email: {
23
+ type: "string",
24
+ pattern: "^[^@]+@[^@]+\\.[^@]+$",
25
+ },
26
+ age: {
27
+ type: "integer",
28
+ minimum: 0,
29
+ maximum: 150,
30
+ },
31
+ isActive: {
32
+ type: "boolean",
33
+ },
34
+ tags: {
35
+ type: "array",
36
+ minItems: 0,
37
+ maxItems: 10,
38
+ },
39
+ metadata: {
40
+ type: "object",
41
+ },
42
+ },
43
+ };
44
+ const tableSchema = convertSchemaFromJsonSchema(jsonSchema);
45
+ expect(tableSchema.title).toBe("User Schema");
46
+ expect(tableSchema.description).toBe("Schema for user data");
47
+ expect(tableSchema.fields).toHaveLength(7);
48
+ const idField = tableSchema.fields.find(f => f.name === "id");
49
+ expect(idField).toEqual({
50
+ name: "id",
51
+ type: "integer",
52
+ title: "User ID",
53
+ description: "Unique identifier",
54
+ constraints: {
55
+ required: true,
56
+ minimum: 1,
57
+ },
58
+ });
59
+ const nameField = tableSchema.fields.find(f => f.name === "name");
60
+ expect(nameField).toEqual({
61
+ name: "name",
62
+ type: "string",
63
+ title: "Full Name",
64
+ constraints: {
65
+ required: true,
66
+ maxLength: 100,
67
+ },
68
+ });
69
+ const emailField = tableSchema.fields.find(f => f.name === "email");
70
+ expect(emailField).toEqual({
71
+ name: "email",
72
+ type: "string",
73
+ constraints: {
74
+ pattern: "^[^@]+@[^@]+\\.[^@]+$",
75
+ },
76
+ });
77
+ const ageField = tableSchema.fields.find(f => f.name === "age");
78
+ expect(ageField).toEqual({
79
+ name: "age",
80
+ type: "integer",
81
+ constraints: {
82
+ minimum: 0,
83
+ maximum: 150,
84
+ },
85
+ });
86
+ const isActiveField = tableSchema.fields.find(f => f.name === "isActive");
87
+ expect(isActiveField).toEqual({
88
+ name: "isActive",
89
+ type: "boolean",
90
+ });
91
+ const tagsField = tableSchema.fields.find(f => f.name === "tags");
92
+ expect(tagsField).toEqual({
93
+ name: "tags",
94
+ type: "array",
95
+ constraints: {
96
+ minLength: 0,
97
+ maxLength: 10,
98
+ },
99
+ });
100
+ const metadataField = tableSchema.fields.find(f => f.name === "metadata");
101
+ expect(metadataField).toEqual({
102
+ name: "metadata",
103
+ type: "object",
104
+ constraints: {
105
+ jsonSchema: {
106
+ type: "object",
107
+ },
108
+ },
109
+ });
110
+ });
111
+ it("handles union types by picking first non-null type", () => {
112
+ const jsonSchema = {
113
+ type: "object",
114
+ properties: {
115
+ nullableString: {
116
+ type: ["string", "null"],
117
+ },
118
+ multiType: {
119
+ type: ["number", "string"],
120
+ },
121
+ },
122
+ };
123
+ const tableSchema = convertSchemaFromJsonSchema(jsonSchema);
124
+ const nullableField = tableSchema.fields.find(f => f.name === "nullableString");
125
+ expect(nullableField?.type).toBe("string");
126
+ const multiField = tableSchema.fields.find(f => f.name === "multiType");
127
+ expect(multiField?.type).toBe("number");
128
+ });
129
+ it("defaults to string type for unknown types", () => {
130
+ const jsonSchema = {
131
+ type: "object",
132
+ properties: {
133
+ unknownField: {},
134
+ },
135
+ };
136
+ const tableSchema = convertSchemaFromJsonSchema(jsonSchema);
137
+ const unknownField = tableSchema.fields.find(f => f.name === "unknownField");
138
+ expect(unknownField?.type).toBe("string");
139
+ });
140
+ it("skips boolean schema properties", () => {
141
+ const jsonSchema = {
142
+ type: "object",
143
+ properties: {
144
+ validField: {
145
+ type: "string",
146
+ },
147
+ booleanSchema: true,
148
+ falseBooleanSchema: false,
149
+ },
150
+ };
151
+ const tableSchema = convertSchemaFromJsonSchema(jsonSchema);
152
+ expect(tableSchema.fields).toHaveLength(1);
153
+ expect(tableSchema.fields[0]?.name).toBe("validField");
154
+ });
155
+ });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUpzb25TY2hlbWEuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NjaGVtYS9jb252ZXJ0L2Zyb21Kc29uU2NoZW1hLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRWpFLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7SUFDM0MsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtRQUNwRCxNQUFNLFVBQVUsR0FBZ0I7WUFDOUIsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsYUFBYTtZQUNwQixXQUFXLEVBQUUsc0JBQXNCO1lBQ25DLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7WUFDeEIsVUFBVSxFQUFFO2dCQUNWLEVBQUUsRUFBRTtvQkFDRixJQUFJLEVBQUUsU0FBUztvQkFDZixLQUFLLEVBQUUsU0FBUztvQkFDaEIsV0FBVyxFQUFFLG1CQUFtQjtvQkFDaEMsT0FBTyxFQUFFLENBQUM7aUJBQ1g7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxXQUFXO29CQUNsQixTQUFTLEVBQUUsR0FBRztpQkFDZjtnQkFDRCxLQUFLLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsT0FBTyxFQUFFLHVCQUF1QjtpQkFDakM7Z0JBQ0QsR0FBRyxFQUFFO29CQUNILElBQUksRUFBRSxTQUFTO29CQUNmLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxHQUFHO2lCQUNiO2dCQUNELFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsU0FBUztpQkFDaEI7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLElBQUksRUFBRSxPQUFPO29C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SSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ3hELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEpTT05TY2hlbWE3IH0gZnJvbSBcImpzb24tc2NoZW1hXCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBjb252ZXJ0U2NoZW1hRnJvbUpzb25TY2hlbWEgfSBmcm9tIFwiLi9mcm9tSnNvblNjaGVtYS50c1wiXG5cbmRlc2NyaWJlKFwiY29udmVydFNjaGVtYUZyb21Kc29uU2NoZW1hXCIsICgpID0+IHtcbiAgaXQoXCJjb252ZXJ0cyBKU09OU2NoZW1hIG9iamVjdCB0byBUYWJsZSBTY2hlbWFcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGpzb25TY2hlbWE6IEpTT05TY2hlbWE3ID0ge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIHRpdGxlOiBcIlVzZXIgU2NoZW1hXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTY2hlbWEgZm9yIHVzZXIgZGF0YVwiLFxuICAgICAgcmVxdWlyZWQ6IFtcImlkXCIsIFwibmFtZVwiXSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgaWQ6IHtcbiAgICAgICAgICB0eXBlOiBcImludGVnZXJcIixcbiAgICAgICAgICB0aXRsZTogXCJVc2VyIElEXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiVW5pcXVlIGlkZW50aWZpZXJcIixcbiAgICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICB9LFxuICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICB0aXRsZTogXCJGdWxsIE5hbWVcIixcbiAgICAgICAgICBtYXhMZW5ndGg6IDEwMCxcbiAgICAgICAgfSxcbiAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgIHBhdHRlcm46IFwiXlteQF0rQFteQF0rXFxcXC5bXkBdKyRcIixcbiAgICAgICAgfSxcbiAgICAgICAgYWdlOiB7XG4gICAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgbWluaW11bTogMCxcbiAgICAgICAgICBtYXhpbXVtOiAxNTAsXG4gICAgICAgIH0sXG4gICAgICAgIGlzQWN0aXZlOiB7XG4gICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgbWluSXRlbXM6IDAsXG4gICAgICAgICAgbWF4SXRlbXM6IDEwLFxuICAgICAgICB9LFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlU2NoZW1hID0gY29udmVydFNjaGVtYUZyb21Kc29uU2NoZW1hKGpzb25TY2hlbWEpXG5cbiAgICBleHBlY3QodGFibGVTY2hlbWEudGl0bGUpLnRvQmUoXCJVc2VyIFNjaGVtYVwiKVxuICAgIGV4cGVjdCh0YWJsZVNjaGVtYS5kZXNjcmlwdGlvbikudG9CZShcIlNjaGVtYSBmb3IgdXNlciBkYXRhXCIpXG4gICAgZXhwZWN0KHRhYmxlU2NoZW1hLmZpZWxkcykudG9IYXZlTGVuZ3RoKDcpXG5cbiAgICBjb25zdCBpZEZpZWxkID0gdGFibGVTY2hlbWEuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwiaWRcIilcbiAgICBleHBlY3QoaWRGaWVsZCkudG9FcXVhbCh7XG4gICAgICBuYW1lOiBcImlkXCIsXG4gICAgICB0eXBlOiBcImludGVnZXJcIixcbiAgICAgIHRpdGxlOiBcIlVzZXIgSURcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlVuaXF1ZSBpZGVudGlmaWVyXCIsXG4gICAgICBjb25zdHJhaW50czoge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgbWluaW11bTogMSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGNvbnN0IG5hbWVGaWVsZCA9IHRhYmxlU2NoZW1hLmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBcIm5hbWVcIilcbiAgICBleHBlY3QobmFtZUZpZWxkKS50b0VxdWFsKHtcbiAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRpdGxlOiBcIkZ1bGwgTmFtZVwiLFxuICAgICAgY29uc3RyYWludHM6IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIG1heExlbmd0aDogMTAwLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3QgZW1haWxGaWVsZCA9IHRhYmxlU2NoZW1hLmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBcImVtYWlsXCIpXG4gICAgZXhwZWN0KGVtYWlsRmllbGQpLnRvRXF1YWwoe1xuICAgICAgbmFtZTogXCJlbWFpbFwiLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGNvbnN0cmFpbnRzOiB7XG4gICAgICAgIHBhdHRlcm46IFwiXlteQF0rQFteQF0rXFxcXC5bXkBdKyRcIixcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGNvbnN0IGFnZUZpZWxkID0gdGFibGVTY2hlbWEuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwiYWdlXCIpXG4gICAgZXhwZWN0KGFnZUZpZWxkKS50b0VxdWFsKHtcbiAgICAgIG5hbWU6IFwiYWdlXCIsXG4gICAgICB0eXBlOiBcImludGVnZXJcIixcbiAgICAgIGNvbnN0cmFpbnRzOiB7XG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDE1MCxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGNvbnN0IGlzQWN0aXZlRmllbGQgPSB0YWJsZVNjaGVtYS5maWVsZHMuZmluZChmID0+IGYubmFtZSA9PT0gXCJpc0FjdGl2ZVwiKVxuICAgIGV4cGVjdChpc0FjdGl2ZUZpZWxkKS50b0VxdWFsKHtcbiAgICAgIG5hbWU6IFwiaXNBY3RpdmVcIixcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIH0pXG5cbiAgICBjb25zdCB0YWdzRmllbGQgPSB0YWJsZVNjaGVtYS5maWVsZHMuZmluZChmID0+IGYubmFtZSA9PT0gXCJ0YWdzXCIpXG4gICAgZXhwZWN0KHRhZ3NGaWVsZCkudG9FcXVhbCh7XG4gICAgICBuYW1lOiBcInRhZ3NcIixcbiAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgIGNvbnN0cmFpbnRzOiB7XG4gICAgICAgIG1pbkxlbmd0aDogMCxcbiAgICAgICAgbWF4TGVuZ3RoOiAxMCxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGNvbnN0IG1ldGFkYXRhRmllbGQgPSB0YWJsZVNjaGVtYS5maWVsZHMuZmluZChmID0+IGYubmFtZSA9PT0gXCJtZXRhZGF0YVwiKVxuICAgIGV4cGVjdChtZXRhZGF0YUZpZWxkKS50b0VxdWFsKHtcbiAgICAgIG5hbWU6IFwibWV0YWRhdGFcIixcbiAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBjb25zdHJhaW50czoge1xuICAgICAgICBqc29uU2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcblxuICBpdChcImhhbmRsZXMgdW5pb24gdHlwZXMgYnkgcGlja2luZyBmaXJzdCBub24tbnVsbCB0eXBlXCIsICgpID0+IHtcbiAgICBjb25zdCBqc29uU2NoZW1hOiBKU09OU2NoZW1hNyA9IHtcbiAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIG51bGxhYmxlU3RyaW5nOiB7XG4gICAgICAgICAgdHlwZTogW1wic3RyaW5nXCIsIFwibnVsbFwiXSxcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlUeXBlOiB7XG4gICAgICAgICAgdHlwZTogW1wibnVtYmVyXCIsIFwic3RyaW5nXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBjb25zdCB0YWJsZVNjaGVtYSA9IGNvbnZlcnRTY2hlbWFGcm9tSnNvblNjaGVtYShqc29uU2NoZW1hKVxuXG4gICAgY29uc3QgbnVsbGFibGVGaWVsZCA9IHRhYmxlU2NoZW1hLmZpZWxkcy5maW5kKFxuICAgICAgZiA9PiBmLm5hbWUgPT09IFwibnVsbGFibGVTdHJpbmdcIixcbiAgICApXG4gICAgZXhwZWN0KG51bGxhYmxlRmllbGQ/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcblxuICAgIGNvbnN0IG11bHRpRmllbGQgPSB0YWJsZVNjaGVtYS5maWVsZHMuZmluZChmID0+IGYubmFtZSA9PT0gXCJtdWx0aVR5cGVcIilcbiAgICBleHBlY3QobXVsdGlGaWVsZD8udHlwZSkudG9CZShcIm51bWJlclwiKVxuICB9KVxuXG4gIGl0KFwiZGVmYXVsdHMgdG8gc3RyaW5nIHR5cGUgZm9yIHVua25vd24gdHlwZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGpzb25TY2hlbWE6IEpTT05TY2hlbWE3ID0ge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgdW5rbm93bkZpZWxkOiB7fSxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgY29uc3QgdGFibGVTY2hlbWEgPSBjb252ZXJ0U2NoZW1hRnJvbUpzb25TY2hlbWEoanNvblNjaGVtYSlcblxuICAgIGNvbnN0IHVua25vd25GaWVsZCA9IHRhYmxlU2NoZW1hLmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBcInVua25vd25GaWVsZFwiKVxuICAgIGV4cGVjdCh1bmtub3duRmllbGQ/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgfSlcblxuICBpdChcInNraXBzIGJvb2xlYW4gc2NoZW1hIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGpzb25TY2hlbWE6IEpTT05TY2hlbWE3ID0ge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgdmFsaWRGaWVsZDoge1xuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGJvb2xlYW5TY2hlbWE6IHRydWUsXG4gICAgICAgIGZhbHNlQm9vbGVhblNjaGVtYTogZmFsc2UsXG4gICAgICB9LFxuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlU2NoZW1hID0gY29udmVydFNjaGVtYUZyb21Kc29uU2NoZW1hKGpzb25TY2hlbWEpXG5cbiAgICBleHBlY3QodGFibGVTY2hlbWEuZmllbGRzKS50b0hhdmVMZW5ndGgoMSlcbiAgICBleHBlY3QodGFibGVTY2hlbWEuZmllbGRzWzBdPy5uYW1lKS50b0JlKFwidmFsaWRGaWVsZFwiKVxuICB9KVxufSlcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import type { Descriptor } from "../../descriptor/index.ts";
2
+ import type { Schema } from "../Schema.ts";
3
+ export declare function convertSchemaToDescriptor(schema: Schema): Descriptor;
@@ -0,0 +1,5 @@
1
+ export function convertSchemaToDescriptor(schema) {
2
+ schema = globalThis.structuredClone(schema);
3
+ return schema;
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9EZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc2NoZW1hL2NvbnZlcnQvdG9EZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxNQUFjO0lBQ3RELE1BQU0sR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRTNDLE9BQU8sTUFBK0IsQ0FBQTtBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEZXNjcmlwdG9yIH0gZnJvbSBcIi4uLy4uL2Rlc2NyaXB0b3IvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBTY2hlbWEgfSBmcm9tIFwiLi4vU2NoZW1hLnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTY2hlbWFUb0Rlc2NyaXB0b3Ioc2NoZW1hOiBTY2hlbWEpIHtcbiAgc2NoZW1hID0gZ2xvYmFsVGhpcy5zdHJ1Y3R1cmVkQ2xvbmUoc2NoZW1hKVxuXG4gIHJldHVybiBzY2hlbWEgYXMgdW5rbm93biBhcyBEZXNjcmlwdG9yXG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import type { JSONSchema7 } from "json-schema";
2
+ import type { Schema } from "../Schema.ts";
3
+ export declare function convertSchemaToJsonSchema(schema: Schema): JSONSchema7;
@@ -0,0 +1,173 @@
1
+ export function convertSchemaToJsonSchema(schema) {
2
+ const properties = {};
3
+ const required = [];
4
+ for (const field of schema.fields) {
5
+ const property = convertFieldToProperty(field);
6
+ if (property) {
7
+ properties[field.name] = property;
8
+ if (field.constraints?.required) {
9
+ required.push(field.name);
10
+ }
11
+ }
12
+ }
13
+ const jsonSchema = {
14
+ $schema: "http://json-schema.org/draft-07/schema",
15
+ type: "object",
16
+ properties,
17
+ };
18
+ if (required.length > 0) {
19
+ jsonSchema.required = required;
20
+ }
21
+ if (schema.title) {
22
+ jsonSchema.title = schema.title;
23
+ }
24
+ if (schema.description) {
25
+ jsonSchema.description = schema.description;
26
+ }
27
+ return jsonSchema;
28
+ }
29
+ function convertFieldToProperty(field) {
30
+ const baseProperty = {};
31
+ if (field.title) {
32
+ baseProperty.title = field.title;
33
+ }
34
+ if (field.description) {
35
+ baseProperty.description = field.description;
36
+ }
37
+ switch (field.type) {
38
+ case "string": {
39
+ const property = {
40
+ ...baseProperty,
41
+ type: "string",
42
+ };
43
+ if (field.constraints?.minLength !== undefined) {
44
+ property.minLength = field.constraints.minLength;
45
+ }
46
+ if (field.constraints?.maxLength !== undefined) {
47
+ property.maxLength = field.constraints.maxLength;
48
+ }
49
+ if (field.constraints?.pattern) {
50
+ property.pattern = field.constraints.pattern;
51
+ }
52
+ if (field.constraints?.enum) {
53
+ property.enum = field.constraints.enum;
54
+ }
55
+ return property;
56
+ }
57
+ case "number": {
58
+ const property = {
59
+ ...baseProperty,
60
+ type: "number",
61
+ };
62
+ if (field.constraints?.minimum !== undefined &&
63
+ typeof field.constraints.minimum === "number") {
64
+ property.minimum = field.constraints.minimum;
65
+ }
66
+ if (field.constraints?.maximum !== undefined &&
67
+ typeof field.constraints.maximum === "number") {
68
+ property.maximum = field.constraints.maximum;
69
+ }
70
+ return property;
71
+ }
72
+ case "integer": {
73
+ const property = {
74
+ ...baseProperty,
75
+ type: "integer",
76
+ };
77
+ if (field.constraints?.minimum !== undefined &&
78
+ typeof field.constraints.minimum === "number") {
79
+ property.minimum = field.constraints.minimum;
80
+ }
81
+ if (field.constraints?.maximum !== undefined &&
82
+ typeof field.constraints.maximum === "number") {
83
+ property.maximum = field.constraints.maximum;
84
+ }
85
+ return property;
86
+ }
87
+ case "boolean": {
88
+ return {
89
+ ...baseProperty,
90
+ type: "boolean",
91
+ };
92
+ }
93
+ case "array": {
94
+ const property = {
95
+ ...baseProperty,
96
+ type: "array",
97
+ };
98
+ if (field.constraints?.minLength !== undefined) {
99
+ property.minItems = field.constraints.minLength;
100
+ }
101
+ if (field.constraints?.maxLength !== undefined) {
102
+ property.maxItems = field.constraints.maxLength;
103
+ }
104
+ if (field.constraints?.jsonSchema) {
105
+ property.items = field.constraints.jsonSchema;
106
+ }
107
+ return property;
108
+ }
109
+ case "object": {
110
+ const property = {
111
+ ...baseProperty,
112
+ type: "object",
113
+ };
114
+ if (field.constraints?.jsonSchema) {
115
+ return {
116
+ ...property,
117
+ ...field.constraints.jsonSchema,
118
+ };
119
+ }
120
+ return property;
121
+ }
122
+ case "date":
123
+ return {
124
+ ...baseProperty,
125
+ type: "string",
126
+ format: "date",
127
+ };
128
+ case "datetime":
129
+ return {
130
+ ...baseProperty,
131
+ type: "string",
132
+ format: "date-time",
133
+ };
134
+ case "time":
135
+ return {
136
+ ...baseProperty,
137
+ type: "string",
138
+ format: "time",
139
+ };
140
+ case "year":
141
+ case "yearmonth":
142
+ case "duration":
143
+ return {
144
+ ...baseProperty,
145
+ type: "string",
146
+ format: field.type,
147
+ };
148
+ case "geopoint":
149
+ return {
150
+ ...baseProperty,
151
+ type: "string",
152
+ format: "geopoint",
153
+ };
154
+ case "geojson":
155
+ return {
156
+ ...baseProperty,
157
+ type: "object",
158
+ format: "geojson",
159
+ };
160
+ case "list":
161
+ return {
162
+ ...baseProperty,
163
+ type: "array",
164
+ format: "list",
165
+ };
166
+ default:
167
+ return {
168
+ ...baseProperty,
169
+ type: "string",
170
+ };
171
+ }
172
+ }
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9Kc29uU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc2NoZW1hL2NvbnZlcnQvdG9Kc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxNQUFjO0lBQ3RELE1BQU0sVUFBVSxHQUFnQyxFQUFFLENBQUE7SUFDbEQsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFBO0lBRTdCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzlDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQTtZQUVqQyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ2hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzNCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFnQjtRQUM5QixPQUFPLEVBQUUsd0NBQXdDO1FBQ2pELElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVTtLQUNYLENBQUE7SUFFRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDeEIsVUFBVSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDaEMsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQTtJQUNqQyxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkIsVUFBVSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFBO0lBQzdDLENBQUM7SUFFRCxPQUFP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QUssTUFBTTtZQUNULE9BQU87Z0JBQ0wsR0FBRyxZQUFZO2dCQUNmLElBQUksRUFBRSxRQUFRO2dCQUNkLE1BQU0sRUFBRSxNQUFNO2FBQ2YsQ0FBQTtRQUVILEtBQUssVUFBVTtZQUNiLE9BQU87Z0JBQ0wsR0FBRyxZQUFZO2dCQUNmLElBQUksRUFBRSxRQUFRO2dCQUNkLE1BQU0sRUFBRSxXQUFXO2FBQ3BCLENBQUE7UUFFSCxLQUFLLE1BQU07WUFDVCxPQUFPO2dCQUNMLEdBQUcsWUFBWTtnQkFDZixJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsTUFBTTthQUNmLENBQUE7UUFFSCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssV0FBVyxDQUFDO1FBQ2pCLEtBQUssVUFBVTtZQUNiLE9BQU87Z0JBQ0wsR0FBRyxZQUFZO2dCQUNmLElBQUksRUFBRSxRQUFRO2dCQUNkLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSTthQUNuQixDQUFBO1FBRUgsS0FBSyxVQUFVO1lBQ2IsT0FBTztnQkFDTCxHQUFHLFlBQVk7Z0JBQ2YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsTUFBTSxFQUFFLFVBQVU7YUFDbkIsQ0FBQTtRQUVILEtBQUssU0FBUztZQUNaLE9BQU87Z0JBQ0wsR0FBRyxZQUFZO2dCQUNmLElBQUksRUFBRSxRQUFRO2dCQUNkLE1BQU0sRUFBRSxTQUFTO2FBQ2xCLENBQUE7UUFFSCxLQUFLLE1BQU07WUFDVCxPQUFPO2dCQUNMLEdBQUcsWUFBWTtnQkFDZixJQUFJLEVBQUUsT0FBTztnQkFDYixNQUFNLEVBQUUsTUFBTTthQUNmLENBQUE7UUFFSDtZQUNFLE9BQU87Z0JBQ0wsR0FBRyxZQUFZO2dCQUNmLElBQUksRUFBRSxRQUFRO2FBQ2YsQ0FBQTtJQUNMLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBKU09OU2NoZW1hNyB9IGZyb20gXCJqc29uLXNjaGVtYVwiXG5pbXBvcnQgdHlwZSB7IEZpZWxkIH0gZnJvbSBcIi4uLy4uL2ZpZWxkL2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgU2NoZW1hIH0gZnJvbSBcIi4uL1NjaGVtYS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U2NoZW1hVG9Kc29uU2NoZW1hKHNjaGVtYTogU2NoZW1hKTogSlNPTlNjaGVtYTcge1xuICBjb25zdCBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBKU09OU2NoZW1hNz4gPSB7fVxuICBjb25zdCByZXF1aXJlZDogc3RyaW5nW10gPSBbXVxuXG4gIGZvciAoY29uc3QgZmllbGQgb2Ygc2NoZW1hLmZpZWxkcykge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gY29udmVydEZpZWxkVG9Qcm9wZXJ0eShmaWVsZClcbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIHByb3BlcnRpZXNbZmllbGQubmFtZV0gPSBwcm9wZXJ0eVxuXG4gICAgICBpZiAoZmllbGQuY29uc3RyYWludHM/LnJlcXVpcmVkKSB7XG4gICAgICAgIHJlcXVpcmVkLnB1c2goZmllbGQubmFtZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBqc29uU2NoZW1hOiBKU09OU2NoZW1hNyA9IHtcbiAgICAkc2NoZW1hOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hXCIsXG4gICAgdHlwZTogXCJvYmplY3RcIixcbiAgICBwcm9wZXJ0aWVzLFxuICB9XG5cbiAgaWYgKHJlcXVpcmVkLmxlbmd0aCA+IDApIHtcbiAgICBqc29uU2NoZW1hLnJlcXVpcmVkID0gcmVxdWlyZWRcbiAgfVxuXG4gIGlmIChzY2hlbWEudGl0bGUpIHtcbiAgICBqc29uU2NoZW1hLnRpdGxlID0gc2NoZW1hLnRpdGxlXG4gIH1cblxuICBpZiAoc2NoZW1hLmRlc2NyaXB0aW9uKSB7XG4gICAganNvblNjaGVtYS5kZXNjcmlwdGlvbiA9IHNjaGVtYS5kZXNjcmlwdGlvblxuICB9XG5cbiAgcmV0dXJuIGpzb25TY2hlbWFcbn1cblxuZnVuY3Rpb24gY29udmVydEZpZWxkVG9Qcm9wZXJ0eShmaWVsZDogRmllbGQpOiBKU09OU2NoZW1hNyB8IG51bGwge1xuICBjb25zdCBiYXNlUHJvcGVydHk6IFBhcnRpYWw8SlNPTlNjaGVtYTc+ID0ge31cblxuICBpZiAoZmllbGQudGl0bGUpIHtcbiAgICBiYXNlUHJvcGVydHkudGl0bGUgPSBmaWVsZC50aXRsZVxuICB9XG5cbiAgaWYgKGZpZWxkLmRlc2NyaXB0aW9uKSB7XG4gICAgYmFzZVByb3BlcnR5LmRlc2NyaXB0aW9uID0gZmllbGQuZGVzY3JpcHRpb25cbiAgfVxuXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgXCJzdHJpbmdcIjoge1xuICAgICAgY29uc3QgcHJvcGVydHk6IEpTT05TY2hlbWE3ID0ge1xuICAgICAgICAuLi5iYXNlUHJvcGVydHksXG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC5jb25zdHJhaW50cz8ubWluTGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcGVydHkubWluTGVuZ3RoID0gZmllbGQuY29uc3RyYWludHMubWluTGVuZ3RoXG4gICAgICB9XG4gICAgICBpZiAoZmllbGQuY29uc3RyYWludHM/Lm1heExlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByb3BlcnR5Lm1heExlbmd0aCA9IGZpZWxkLmNvbnN0cmFpbnRzLm1heExlbmd0aFxuICAgICAgfVxuICAgICAgaWYgKGZpZWxkLmNvbnN0cmFpbnRzPy5wYXR0ZXJuKSB7XG4gICAgICAgIHByb3BlcnR5LnBhdHRlcm4gPSBmaWVsZC5jb25zdHJhaW50cy5wYXR0ZXJuXG4gICAgICB9XG4gICAgICBpZiAoZmllbGQuY29uc3RyYWludHM/LmVudW0pIHtcbiAgICAgICAgcHJvcGVydHkuZW51bSA9IGZpZWxkLmNvbnN0cmFpbnRzLmVudW1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByb3BlcnR5XG4gICAgfVxuXG4gICAgY2FzZSBcIm51bWJlclwiOiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eTogSlNPTlNjaGVtYTcgPSB7XG4gICAgICAgIC4uLmJhc2VQcm9wZXJ0eSxcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBmaWVsZC5jb25zdHJhaW50cz8ubWluaW11bSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIHR5cGVvZiBmaWVsZC5jb25zdHJhaW50cy5taW5pbXVtID09PSBcIm51bWJlclwiXG4gICAgICApIHtcbiAgICAgICAgcHJvcGVydHkubWluaW11bSA9IGZpZWxkLmNvbnN0cmFpbnRzLm1pbmltdW1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZmllbGQuY29uc3RyYWludHM/Lm1heGltdW0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICB0eXBlb2YgZmllbGQuY29uc3RyYWludHMubWF4aW11bSA9PT0gXCJudW1iZXJcIlxuICAgICAgKSB7XG4gICAgICAgIHByb3BlcnR5Lm1heGltdW0gPSBmaWVsZC5jb25zdHJhaW50cy5tYXhpbXVtXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9wZXJ0eVxuICAgIH1cblxuICAgIGNhc2UgXCJpbnRlZ2VyXCI6IHtcbiAgICAgIGNvbnN0IHByb3BlcnR5OiBKU09OU2NoZW1hNyA9IHtcbiAgICAgICAgLi4uYmFzZVByb3BlcnR5LFxuICAgICAgICB0eXBlOiBcImludGVnZXJcIixcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBmaWVsZC5jb25zdHJhaW50cz8ubWluaW11bSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIHR5cGVvZiBmaWVsZC5jb25zdHJhaW50cy5taW5pbXVtID09PSBcIm51bWJlclwiXG4gICAgICApIHtcbiAgICAgICAgcHJvcGVydHkubWluaW11bSA9IGZpZWxkLmNvbnN0cmFpbnRzLm1pbmltdW1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZmllbGQuY29uc3RyYWludHM/Lm1heGltdW0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICB0eXBlb2YgZmllbGQuY29uc3RyYWludHMubWF4aW11bSA9PT0gXCJudW1iZXJcIlxuICAgICAgKSB7XG4gICAgICAgIHByb3BlcnR5Lm1heGltdW0gPSBmaWVsZC5jb25zdHJhaW50cy5tYXhpbXVtXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9wZXJ0eVxuICAgIH1cblxuICAgIGNhc2UgXCJib29sZWFuXCI6IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2VQcm9wZXJ0eSxcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FzZSBcImFycmF5XCI6IHtcbiAgICAgIGNvbnN0IHByb3BlcnR5OiBKU09OU2NoZW1hNyA9IHtcbiAgICAgICAgLi4uYmFzZVByb3BlcnR5LFxuICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC5jb25zdHJhaW50cz8ubWluTGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcGVydHkubWluSXRlbXMgPSBmaWVsZC5jb25zdHJhaW50cy5taW5MZW5ndGhcbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZC5jb25zdHJhaW50cz8ubWF4TGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcGVydHkubWF4SXRlbXMgPSBmaWVsZC5jb25zdHJhaW50cy5tYXhMZW5ndGhcbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZC5jb25zdHJhaW50cz8uanNvblNjaGVtYSkge1xuICAgICAgICBwcm9wZXJ0eS5pdGVtcyA9IGZpZWxkLmNvbnN0cmFpbnRzLmpzb25TY2hlbWFcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByb3BlcnR5XG4gICAgfVxuXG4gICAgY2FzZSBcIm9iamVjdFwiOiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eTogSlNPTlNjaGVtYTcgPSB7XG4gICAgICAgIC4uLmJhc2VQcm9wZXJ0eSxcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLmNvbnN0cmFpbnRzPy5qc29uU2NoZW1hKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucHJvcGVydHksXG4gICAgICAgICAgLi4uZmllbGQuY29uc3RyYWludHMuanNvblNjaGVtYSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJvcGVydHlcbiAgICB9XG5cbiAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYmFzZVByb3BlcnR5LFxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZGF0ZVwiLFxuICAgICAgfVxuXG4gICAgY2FzZSBcImRhdGV0aW1lXCI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlUHJvcGVydHksXG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJkYXRlLXRpbWVcIixcbiAgICAgIH1cblxuICAgIGNhc2UgXCJ0aW1lXCI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlUHJvcGVydHksXG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJ0aW1lXCIsXG4gICAgICB9XG5cbiAgICBjYXNlIFwieWVhclwiOlxuICAgIGNhc2UgXCJ5ZWFybW9udGhcIjpcbiAgICBjYXNlIFwiZHVyYXRpb25cIjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2VQcm9wZXJ0eSxcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBmaWVsZC50eXBlLFxuICAgICAgfVxuXG4gICAgY2FzZSBcImdlb3BvaW50XCI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlUHJvcGVydHksXG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJnZW9wb2ludFwiLFxuICAgICAgfVxuXG4gICAgY2FzZSBcImdlb2pzb25cIjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2VQcm9wZXJ0eSxcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgZm9ybWF0OiBcImdlb2pzb25cIixcbiAgICAgIH1cblxuICAgIGNhc2UgXCJsaXN0XCI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlUHJvcGVydHksXG4gICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgZm9ybWF0OiBcImxpc3RcIixcbiAgICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlUHJvcGVydHksXG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};