@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 @@
1
+ export {};
@@ -0,0 +1,121 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { inspectJsonValue } from "./value.js";
3
+ describe("inspectJsonValue", () => {
4
+ it("returns empty array for valid value", async () => {
5
+ const value = {
6
+ name: "test-package",
7
+ version: "1.0.0",
8
+ description: "A test package",
9
+ };
10
+ const jsonSchema = {
11
+ type: "object",
12
+ required: ["name", "version"],
13
+ properties: {
14
+ name: { type: "string" },
15
+ version: { type: "string" },
16
+ description: { type: "string" },
17
+ },
18
+ };
19
+ const errors = await inspectJsonValue(value, { jsonSchema });
20
+ expect(errors).toEqual([]);
21
+ });
22
+ it("returns validation errors for invalid value", async () => {
23
+ const jsonSchema = {
24
+ type: "object",
25
+ properties: {
26
+ name: { type: "string" },
27
+ version: { type: "string" },
28
+ },
29
+ };
30
+ const value = {
31
+ name: "test-package",
32
+ version: 123,
33
+ };
34
+ const errors = await inspectJsonValue(value, { jsonSchema });
35
+ expect(errors.length).toBeGreaterThan(0);
36
+ expect(errors[0]?.pointer).toBe("/version");
37
+ expect(errors[0]?.message).toContain("string");
38
+ });
39
+ it("returns errors when required fields are missing", async () => {
40
+ const jsonSchema = {
41
+ type: "object",
42
+ required: ["name", "version", "required_field"],
43
+ properties: {
44
+ name: { type: "string" },
45
+ version: { type: "string" },
46
+ required_field: { type: "string" },
47
+ },
48
+ };
49
+ const value = {
50
+ name: "test-package",
51
+ version: "1.0.0",
52
+ };
53
+ const errors = await inspectJsonValue(value, { jsonSchema });
54
+ expect(errors.length).toBeGreaterThan(0);
55
+ expect(errors[0]?.pointer).toBe("");
56
+ expect(errors[0]?.message).toContain("required_field");
57
+ });
58
+ it("validates nested objects in the value", async () => {
59
+ const jsonSchema = {
60
+ type: "object",
61
+ properties: {
62
+ name: { type: "string" },
63
+ version: { type: "string" },
64
+ author: {
65
+ type: "object",
66
+ properties: {
67
+ name: { type: "string" },
68
+ email: {
69
+ type: "string",
70
+ pattern: "^[^@]+@[^@]+\\.[^@]+$",
71
+ },
72
+ },
73
+ },
74
+ },
75
+ };
76
+ const value = {
77
+ name: "test-package",
78
+ version: "1.0.0",
79
+ author: {
80
+ name: "Test Author",
81
+ email: "invalid-email",
82
+ },
83
+ };
84
+ const errors = await inspectJsonValue(value, { jsonSchema });
85
+ expect(errors.length).toBeGreaterThan(0);
86
+ expect(errors.some(error => error.pointer === "/author/email" &&
87
+ error.message.includes("pattern"))).toBe(true);
88
+ });
89
+ it("returns multiple errors for value with multiple issues", async () => {
90
+ const jsonSchema = {
91
+ type: "object",
92
+ required: ["license"],
93
+ additionalProperties: false,
94
+ properties: {
95
+ name: { type: "string", minLength: 3 },
96
+ version: { type: "string", pattern: "^\\d+\\.\\d+\\.\\d+$" },
97
+ license: { type: "string" },
98
+ description: { type: "string" },
99
+ keywords: {
100
+ type: "array",
101
+ items: { type: "string" },
102
+ },
103
+ },
104
+ };
105
+ const value = {
106
+ name: "ab",
107
+ version: "not-a-version",
108
+ description: 123,
109
+ keywords: ["valid", 456, "another"],
110
+ extra_field: "should not be here",
111
+ };
112
+ const errors = await inspectJsonValue(value, { jsonSchema });
113
+ expect(errors.length).toBeGreaterThan(3);
114
+ const errorPointers = errors.map(err => err.pointer);
115
+ expect(errorPointers).toContain("");
116
+ expect(errorPointers).toContain("/name");
117
+ expect(errorPointers).toContain("/version");
118
+ expect(errorPointers).toContain("/description");
119
+ });
120
+ });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2pzb24vaW5zcGVjdC92YWx1ZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFN0MsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtJQUNoQyxFQUFFLENBQUMscUNBQXFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbkQsTUFBTSxLQUFLLEdBQUc7WUFDWixJQUFJLEVBQUUsY0FBYztZQUNwQixPQUFPLEVBQUUsT0FBTztZQUNoQixXQUFXLEVBQUUsZ0JBQWdCO1NBQzlCLENBQUE7UUFFRCxNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7WUFDN0IsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQ3hCLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQzNCLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7YUFDaEM7U0FDRixDQUFBO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBRTVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDNUIsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0QsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLFFBQVE7WUFDZCxVQUFVLEVBQUU7Z0JBQ1YsSUFB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Q0FBQTtRQUU1RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUV4QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3BELE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDbkMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN4QyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzNDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDakQsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBpbnNwZWN0SnNvblZhbHVlIH0gZnJvbSBcIi4vdmFsdWUudHNcIlxuXG5kZXNjcmliZShcImluc3BlY3RKc29uVmFsdWVcIiwgKCkgPT4ge1xuICBpdChcInJldHVybnMgZW1wdHkgYXJyYXkgZm9yIHZhbGlkIHZhbHVlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIG5hbWU6IFwidGVzdC1wYWNrYWdlXCIsXG4gICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBIHRlc3QgcGFja2FnZVwiLFxuICAgIH1cblxuICAgIGNvbnN0IGpzb25TY2hlbWEgPSB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgcmVxdWlyZWQ6IFtcIm5hbWVcIiwgXCJ2ZXJzaW9uXCJdLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBuYW1lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgdmVyc2lvbjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzID0gYXdhaXQgaW5zcGVjdEpzb25WYWx1ZSh2YWx1ZSwgeyBqc29uU2NoZW1hIH0pXG5cbiAgICBleHBlY3QoZXJyb3JzKS50b0VxdWFsKFtdKVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyB2YWxpZGF0aW9uIGVycm9ycyBmb3IgaW52YWxpZCB2YWx1ZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QganNvblNjaGVtYSA9IHtcbiAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIG5hbWU6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICB2ZXJzaW9uOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB7XG4gICAgICBuYW1lOiBcInRlc3QtcGFja2FnZVwiLFxuICAgICAgdmVyc2lvbjogMTIzLFxuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IGF3YWl0IGluc3BlY3RKc29uVmFsdWUodmFsdWUsIHsganNvblNjaGVtYSB9KVxuXG4gICAgZXhwZWN0KGVycm9ycy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKVxuICAgIGV4cGVjdChlcnJvcnNbMF0/LnBvaW50ZXIpLnRvQmUoXCIvdmVyc2lvblwiKVxuICAgIGV4cGVjdChlcnJvcnNbMF0/Lm1lc3NhZ2UpLnRvQ29udGFpbihcInN0cmluZ1wiKVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyBlcnJvcnMgd2hlbiByZXF1aXJlZCBmaWVsZHMgYXJlIG1pc3NpbmdcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGpzb25TY2hlbWEgPSB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgcmVxdWlyZWQ6IFtcIm5hbWVcIiwgXCJ2ZXJzaW9uXCIsIFwicmVxdWlyZWRfZmllbGRcIl0sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIG5hbWU6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICB2ZXJzaW9uOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgcmVxdWlyZWRfZmllbGQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIG5hbWU6IFwidGVzdC1wYWNrYWdlXCIsXG4gICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzID0gYXdhaXQgaW5zcGVjdEpzb25WYWx1ZSh2YWx1ZSwgeyBqc29uU2NoZW1hIH0pXG5cbiAgICBleHBlY3QoZXJyb3JzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApXG4gICAgZXhwZWN0KGVycm9yc1swXT8ucG9pbnRlcikudG9CZShcIlwiKVxuICAgIGV4cGVjdChlcnJvcnNbMF0/Lm1lc3NhZ2UpLnRvQ29udGFpbihcInJlcXVpcmVkX2ZpZWxkXCIpXG4gIH0pXG5cbiAgaXQoXCJ2YWxpZGF0ZXMgbmVzdGVkIG9iamVjdHMgaW4gdGhlIHZhbHVlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBqc29uU2NoZW1hID0ge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgbmFtZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIHZlcnNpb246IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICBhdXRob3I6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgcGF0dGVybjogXCJeW15AXStAW15AXStcXFxcLlteQF0rJFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIG5hbWU6IFwidGVzdC1wYWNrYWdlXCIsXG4gICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgICBhdXRob3I6IHtcbiAgICAgICAgbmFtZTogXCJUZXN0IEF1dGhvclwiLFxuICAgICAgICBlbWFpbDogXCJpbnZhbGlkLWVtYWlsXCIsXG4gICAgICB9LFxuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IGF3YWl0IGluc3BlY3RKc29uVmFsdWUodmFsdWUsIHsganNvblNjaGVtYSB9KVxuXG4gICAgZXhwZWN0KGVycm9ycy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKVxuICAgIGV4cGVjdChcbiAgICAgIGVycm9ycy5zb21lKFxuICAgICAgICBlcnJvciA9PlxuICAgICAgICAgIGVycm9yLnBvaW50ZXIgPT09IFwiL2F1dGhvci9lbWFpbFwiICYmXG4gICAgICAgICAgZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhcInBhdHRlcm5cIiksXG4gICAgICApLFxuICAgICkudG9CZSh0cnVlKVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyBtdWx0aXBsZSBlcnJvcnMgZm9yIHZhbHVlIHdpdGggbXVsdGlwbGUgaXNzdWVzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBqc29uU2NoZW1hID0ge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIHJlcXVpcmVkOiBbXCJsaWNlbnNlXCJdLFxuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBuYW1lOiB7IHR5cGU6IFwic3RyaW5nXCIsIG1pbkxlbmd0aDogMyB9LFxuICAgICAgICB2ZXJzaW9uOiB7IHR5cGU6IFwic3RyaW5nXCIsIHBhdHRlcm46IFwiXlxcXFxkK1xcXFwuXFxcXGQrXFxcXC5cXFxcZCskXCIgfSxcbiAgICAgICAgbGljZW5zZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIG5hbWU6IFwiYWJcIixcbiAgICAgIHZlcnNpb246IFwibm90LWEtdmVyc2lvblwiLFxuICAgICAgZGVzY3JpcHRpb246IDEyMyxcbiAgICAgIGtleXdvcmRzOiBbXCJ2YWxpZFwiLCA0NTYsIFwiYW5vdGhlclwiXSxcbiAgICAgIGV4dHJhX2ZpZWxkOiBcInNob3VsZCBub3QgYmUgaGVyZVwiLFxuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IGF3YWl0IGluc3BlY3RKc29uVmFsdWUodmFsdWUsIHsganNvblNjaGVtYSB9KVxuXG4gICAgZXhwZWN0KGVycm9ycy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigzKVxuXG4gICAgY29uc3QgZXJyb3JQb2ludGVycyA9IGVycm9ycy5tYXAoZXJyID0+IGVyci5wb2ludGVyKVxuICAgIGV4cGVjdChlcnJvclBvaW50ZXJzKS50b0NvbnRhaW4oXCJcIilcbiAgICBleHBlY3QoZXJyb3JQb2ludGVycykudG9Db250YWluKFwiL25hbWVcIilcbiAgICBleHBlY3QoZXJyb3JQb2ludGVycykudG9Db250YWluKFwiL3ZlcnNpb25cIilcbiAgICBleHBlY3QoZXJyb3JQb2ludGVycykudG9Db250YWluKFwiL2Rlc2NyaXB0aW9uXCIpXG4gIH0pXG59KVxuIl19
@@ -0,0 +1,3 @@
1
+ export declare function loadJsonSchema(path: string, options?: {
2
+ onlyRemote?: boolean;
3
+ }): Promise<import("../descriptor/Descriptor.ts").Descriptor>;
@@ -0,0 +1,13 @@
1
+ import { loadDescriptor } from "../descriptor/index.js";
2
+ import { cache } from "./cache.js";
3
+ import { assertJsonSchema } from "./assert.js";
4
+ export async function loadJsonSchema(path, options) {
5
+ let jsonSchema = cache.get(path);
6
+ if (!jsonSchema) {
7
+ const descriptor = await loadDescriptor(path, options);
8
+ jsonSchema = await assertJsonSchema(descriptor);
9
+ cache.set(path, jsonSchema);
10
+ }
11
+ return jsonSchema;
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2pzb24vbG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFOUMsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLElBQVksRUFDWixPQUFrQztJQUVsQyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRWhDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLFVBQVUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDdEQsVUFBVSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDL0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2FkRGVzY3JpcHRvciB9IGZyb20gXCIuLi9kZXNjcmlwdG9yL2luZGV4LnRzXCJcbmltcG9ydCB7IGNhY2hlIH0gZnJvbSBcIi4vY2FjaGUudHNcIlxuaW1wb3J0IHsgYXNzZXJ0SnNvblNjaGVtYSB9IGZyb20gXCIuL2Fzc2VydC50c1wiXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkSnNvblNjaGVtYShcbiAgcGF0aDogc3RyaW5nLFxuICBvcHRpb25zPzogeyBvbmx5UmVtb3RlPzogYm9vbGVhbiB9LFxuKSB7XG4gIGxldCBqc29uU2NoZW1hID0gY2FjaGUuZ2V0KHBhdGgpXG5cbiAgaWYgKCFqc29uU2NoZW1hKSB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IGF3YWl0IGxvYWREZXNjcmlwdG9yKHBhdGgsIG9wdGlvbnMpXG4gICAganNvblNjaGVtYSA9IGF3YWl0IGFzc2VydEpzb25TY2hlbWEoZGVzY3JpcHRvcilcbiAgICBjYWNoZS5zZXQocGF0aCwganNvblNjaGVtYSlcbiAgfVxuXG4gIHJldHVybiBqc29uU2NoZW1hXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import type { JsonSchema } from "./Schema.ts";
2
+ export declare function resolveJsonSchema(jsonSchema?: JsonSchema | string): Promise<import("../index.ts").Descriptor | undefined>;
@@ -0,0 +1,11 @@
1
+ import { loadJsonSchema } from "./load.js";
2
+ export async function resolveJsonSchema(jsonSchema) {
3
+ if (!jsonSchema) {
4
+ return undefined;
5
+ }
6
+ if (typeof jsonSchema !== "string") {
7
+ return jsonSchema;
8
+ }
9
+ return await loadJsonSchema(jsonSchema);
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2pzb24vcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRTFDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQUMsVUFBZ0M7SUFDdEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLE9BQU8sVUFBVSxDQUFBO0lBQ25CLENBQUM7SUFFRCxPQUFPLE1BQU0sY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tIFwiLi9TY2hlbWEudHNcIlxuaW1wb3J0IHsgbG9hZEpzb25TY2hlbWEgfSBmcm9tIFwiLi9sb2FkLnRzXCJcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVKc29uU2NoZW1hKGpzb25TY2hlbWE/OiBKc29uU2NoZW1hIHwgc3RyaW5nKSB7XG4gIGlmICghanNvblNjaGVtYSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGlmICh0eXBlb2YganNvblNjaGVtYSAhPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBqc29uU2NoZW1hXG4gIH1cblxuICByZXR1cm4gYXdhaXQgbG9hZEpzb25TY2hlbWEoanNvblNjaGVtYSlcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export type Metadata = {
2
+ [key in `${string}:${string}`]?: any;
3
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9tZXRhZGF0YS9NZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSB7XG4gIC8qKlxuICAgKiBDdXN0b20gcHJvcGVydGllc1xuICAgKi9cbiAgW2tleSBpbiBgJHtzdHJpbmd9OiR7c3RyaW5nfWBdPzogYW55XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export type { Metadata } from "./Metadata.ts";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9tZXRhZGF0YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgeyBNZXRhZGF0YSB9IGZyb20gXCIuL01ldGFkYXRhLnRzXCJcbiJdfQ==
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Contributor information
3
+ */
4
+ export interface Contributor {
5
+ /**
6
+ * Full name of the contributor
7
+ */
8
+ title: string;
9
+ /**
10
+ * Email address of the contributor
11
+ */
12
+ email?: string;
13
+ /**
14
+ * Path to relevant contributor information
15
+ */
16
+ path?: string;
17
+ /**
18
+ * Role of the contributor
19
+ */
20
+ role?: string;
21
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJpYnV0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wYWNrYWdlL0NvbnRyaWJ1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRyaWJ1dG9yIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJpYnV0b3Ige1xuICAvKipcbiAgICogRnVsbCBuYW1lIG9mIHRoZSBjb250cmlidXRvclxuICAgKi9cbiAgdGl0bGU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBFbWFpbCBhZGRyZXNzIG9mIHRoZSBjb250cmlidXRvclxuICAgKi9cbiAgZW1haWw/OiBzdHJpbmdcblxuICAvKipcbiAgICogUGF0aCB0byByZWxldmFudCBjb250cmlidXRvciBpbmZvcm1hdGlvblxuICAgKi9cbiAgcGF0aD86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBSb2xlIG9mIHRoZSBjb250cmlidXRvclxuICAgKi9cbiAgcm9sZT86IHN0cmluZ1xufVxuIl19
@@ -0,0 +1,64 @@
1
+ import type { Metadata } from "../metadata/index.ts";
2
+ import type { License, Resource, Source } from "../resource/index.ts";
3
+ import type { Contributor } from "./Contributor.ts";
4
+ /**
5
+ * Data Package interface built on top of the Frictionless Data specification
6
+ * @see https://datapackage.org/standard/data-package/
7
+ */
8
+ export interface Package extends Metadata {
9
+ /**
10
+ * URL of profile (optional)
11
+ */
12
+ $schema?: string;
13
+ /**
14
+ * Data resources in this package (required)
15
+ */
16
+ resources: Resource[];
17
+ /**
18
+ * Unique package identifier
19
+ * Should use lowercase alphanumeric characters, periods, hyphens, and underscores
20
+ */
21
+ name?: string;
22
+ /**
23
+ * Human-readable title
24
+ */
25
+ title?: string;
26
+ /**
27
+ * A description of the package
28
+ */
29
+ description?: string;
30
+ /**
31
+ * A URL for the home page of the package
32
+ */
33
+ homepage?: string;
34
+ /**
35
+ * Version of the package using SemVer
36
+ * @example "1.0.0"
37
+ */
38
+ version?: string;
39
+ /**
40
+ * License information
41
+ */
42
+ licenses?: License[];
43
+ /**
44
+ * List of contributors
45
+ */
46
+ contributors?: Contributor[];
47
+ /**
48
+ * Data sources for this package
49
+ */
50
+ sources?: Source[];
51
+ /**
52
+ * Keywords for the package
53
+ */
54
+ keywords?: string[];
55
+ /**
56
+ * Create time of the package
57
+ * @format ISO 8601 format
58
+ */
59
+ created?: string;
60
+ /**
61
+ * Package image
62
+ */
63
+ image?: string;
64
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2thZ2UvUGFja2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IExpY2Vuc2UsIFJlc291cmNlLCBTb3VyY2UgfSBmcm9tIFwiLi4vcmVzb3VyY2UvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBDb250cmlidXRvciB9IGZyb20gXCIuL0NvbnRyaWJ1dG9yLnRzXCJcblxuLyoqXG4gKiBEYXRhIFBhY2thZ2UgaW50ZXJmYWNlIGJ1aWx0IG9uIHRvcCBvZiB0aGUgRnJpY3Rpb25sZXNzIERhdGEgc3BlY2lmaWNhdGlvblxuICogQHNlZSBodHRwczovL2RhdGFwYWNrYWdlLm9yZy9zdGFuZGFyZC9kYXRhLXBhY2thZ2UvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZSBleHRlbmRzIE1ldGFkYXRhIHtcbiAgLyoqXG4gICAqIFVSTCBvZiBwcm9maWxlIChvcHRpb25hbClcbiAgICovXG4gICRzY2hlbWE/OiBzdHJpbmdcblxuICAvKipcbiAgICogRGF0YSByZXNvdXJjZXMgaW4gdGhpcyBwYWNrYWdlIChyZXF1aXJlZClcbiAgICovXG4gIHJlc291cmNlczogUmVzb3VyY2VbXVxuXG4gIC8qKlxuICAgKiBVbmlxdWUgcGFja2FnZSBpZGVudGlmaWVyXG4gICAqIFNob3VsZCB1c2UgbG93ZXJjYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLCBwZXJpb2RzLCBoeXBoZW5zLCBhbmQgdW5kZXJzY29yZXNcbiAgICovXG4gIG5hbWU/OiBzdHJpbmdcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgdGl0bGVcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgdGhlIHBhY2thZ2VcbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEEgVVJMIGZvciB0aGUgaG9tZSBwYWdlIG9mIHRoZSBwYWNrYWdlXG4gICAqL1xuICBob21lcGFnZT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBwYWNrYWdlIHVzaW5nIFNlbVZlclxuICAgKiBAZXhhbXBsZSBcIjEuMC4wXCJcbiAgICovXG4gIHZlcnNpb24/OiBzdHJpbmdcblxuICAvKipcbiAgICogTGljZW5zZSBpbmZvcm1hdGlvblxuICAgKi9cbiAgbGljZW5zZXM/OiBMaWNlbnNlW11cblxuICAvKipcbiAgICogTGlzdCBvZiBjb250cmlidXRvcnNcbiAgICovXG4gIGNvbnRyaWJ1dG9ycz86IENvbnRyaWJ1dG9yW11cblxuICAvKipcbiAgICogRGF0YSBzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2VcbiAgICovXG4gIHNvdXJjZXM/OiBTb3VyY2VbXVxuXG4gIC8qKlxuICAgKiBLZXl3b3JkcyBmb3IgdGhlIHBhY2thZ2VcbiAgICovXG4gIGtleXdvcmRzPzogc3RyaW5nW11cblxuICAvKipcbiAgICogQ3JlYXRlIHRpbWUgb2YgdGhlIHBhY2thZ2VcbiAgICogQGZvcm1hdCBJU08gODYwMSBmb3JtYXRcbiAgICovXG4gIGNyZWF0ZWQ/OiBzdHJpbmdcblxuICAvKipcbiAgICogUGFja2FnZSBpbWFnZVxuICAgKi9cbiAgaW1hZ2U/OiBzdHJpbmdcbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import type { Descriptor } from "../descriptor/index.ts";
2
+ import type { Package } from "./Package.ts";
3
+ /**
4
+ * Assert a Package descriptor (JSON Object) against its profile
5
+ */
6
+ export declare function assertPackage(source: Descriptor | Package, options?: {
7
+ basepath?: string;
8
+ }): Promise<Package>;
@@ -0,0 +1,12 @@
1
+ import { validatePackageMetadata } from "./validate.js";
2
+ /**
3
+ * Assert a Package descriptor (JSON Object) against its profile
4
+ */
5
+ export async function assertPackage(source, options) {
6
+ const report = await validatePackageMetadata(source, options);
7
+ if (!report.dataPackage) {
8
+ throw new Error(`Package "${JSON.stringify(source).slice(0, 100)}" is not valid`);
9
+ }
10
+ return report.dataPackage;
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcGFja2FnZS9hc3NlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLE1BQTRCLEVBQzVCLE9BRUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUU3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQ2IsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUNqRSxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQTtBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEZXNjcmlwdG9yIH0gZnJvbSBcIi4uL2Rlc2NyaXB0b3IvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBQYWNrYWdlIH0gZnJvbSBcIi4vUGFja2FnZS50c1wiXG5pbXBvcnQgeyB2YWxpZGF0ZVBhY2thZ2VNZXRhZGF0YSB9IGZyb20gXCIuL3ZhbGlkYXRlLnRzXCJcblxuLyoqXG4gKiBBc3NlcnQgYSBQYWNrYWdlIGRlc2NyaXB0b3IgKEpTT04gT2JqZWN0KSBhZ2FpbnN0IGl0cyBwcm9maWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3NlcnRQYWNrYWdlKFxuICBzb3VyY2U6IERlc2NyaXB0b3IgfCBQYWNrYWdlLFxuICBvcHRpb25zPzoge1xuICAgIGJhc2VwYXRoPzogc3RyaW5nXG4gIH0sXG4pIHtcbiAgY29uc3QgcmVwb3J0ID0gYXdhaXQgdmFsaWRhdGVQYWNrYWdlTWV0YWRhdGEoc291cmNlLCBvcHRpb25zKVxuXG4gIGlmICghcmVwb3J0LmRhdGFQYWNrYWdlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFBhY2thZ2UgXCIke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgMTAwKX1cIiBpcyBub3QgdmFsaWRgLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiByZXBvcnQuZGF0YVBhY2thZ2Vcbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ import { describe, expect, expectTypeOf, it } from "vitest";
2
+ import { assertPackage } from "./assert.js";
3
+ describe("assertPackage", () => {
4
+ it("returns typed package when valid", async () => {
5
+ const descriptor = {
6
+ name: "example-package",
7
+ resources: [
8
+ {
9
+ name: "resource-1",
10
+ path: "data.csv",
11
+ },
12
+ ],
13
+ };
14
+ const datapackage = await assertPackage(descriptor);
15
+ expectTypeOf(datapackage).toEqualTypeOf();
16
+ expect(datapackage).toEqual(descriptor);
17
+ });
18
+ it("throws Error when package is invalid", async () => {
19
+ const descriptor = {
20
+ name: 123,
21
+ resources: "not-an-array",
22
+ };
23
+ await expect(assertPackage(descriptor)).rejects.toThrow(Error);
24
+ });
25
+ });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wYWNrYWdlL2Fzc2VydC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUUzQyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUM3QixFQUFFLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDaEQsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRSxVQUFVO2lCQUNqQjthQUNGO1NBQ0YsQ0FBQTtRQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRW5ELFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLEVBQVcsQ0FBQTtRQUNsRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3pDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3BELE1BQU0sVUFBVSxHQUFHO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsU0FBUyxFQUFFLGNBQWM7U0FDMUIsQ0FBQTtRQUVELE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEUsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGV4cGVjdFR5cGVPZiwgaXQgfSBmcm9tIFwidml0ZXN0XCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZSB9IGZyb20gXCIuL1BhY2thZ2UudHNcIlxuaW1wb3J0IHsgYXNzZXJ0UGFja2FnZSB9IGZyb20gXCIuL2Fzc2VydC50c1wiXG5cbmRlc2NyaWJlKFwiYXNzZXJ0UGFja2FnZVwiLCAoKSA9PiB7XG4gIGl0KFwicmV0dXJucyB0eXBlZCBwYWNrYWdlIHdoZW4gdmFsaWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSB7XG4gICAgICBuYW1lOiBcImV4YW1wbGUtcGFja2FnZVwiLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInJlc291cmNlLTFcIixcbiAgICAgICAgICBwYXRoOiBcImRhdGEuY3N2XCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IGRhdGFwYWNrYWdlID0gYXdhaXQgYXNzZXJ0UGFja2FnZShkZXNjcmlwdG9yKVxuXG4gICAgZXhwZWN0VHlwZU9mKGRhdGFwYWNrYWdlKS50b0VxdWFsVHlwZU9mPFBhY2thZ2U+KClcbiAgICBleHBlY3QoZGF0YXBhY2thZ2UpLnRvRXF1YWwoZGVzY3JpcHRvcilcbiAgfSlcblxuICBpdChcInRocm93cyBFcnJvciB3aGVuIHBhY2thZ2UgaXMgaW52YWxpZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHtcbiAgICAgIG5hbWU6IDEyMyxcbiAgICAgIHJlc291cmNlczogXCJub3QtYW4tYXJyYXlcIixcbiAgICB9XG5cbiAgICBhd2FpdCBleHBlY3QoYXNzZXJ0UGFja2FnZShkZXNjcmlwdG9yKSkucmVqZWN0cy50b1Rocm93KEVycm9yKVxuICB9KVxufSlcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ import type { Descriptor } from "../../descriptor/index.ts";
2
+ export declare function convertPackageFromDescriptor(descriptor: Descriptor, options: {
3
+ basepath?: string;
4
+ }): Descriptor;
@@ -0,0 +1,36 @@
1
+ import { isRemotePath } from "../../path/index.js";
2
+ import { convertResourceFromDescriptor } from "../../resource/index.js";
3
+ export function convertPackageFromDescriptor(descriptor, options) {
4
+ descriptor = globalThis.structuredClone(descriptor);
5
+ convertProfile(descriptor);
6
+ convertResources(descriptor, options);
7
+ convertContributors(descriptor);
8
+ return descriptor;
9
+ }
10
+ function convertProfile(descriptor) {
11
+ const remoteProfile = typeof descriptor.profile === "string" && isRemotePath(descriptor.profile)
12
+ ? descriptor.profile
13
+ : undefined;
14
+ descriptor.$schema = descriptor.$schema ?? remoteProfile;
15
+ }
16
+ function convertResources(descriptor, options) {
17
+ if (Array.isArray(descriptor.resources)) {
18
+ descriptor.resources = descriptor.resources.map((resource) => convertResourceFromDescriptor(resource, { basepath: options.basepath }));
19
+ }
20
+ }
21
+ function convertContributors(descriptor) {
22
+ const contributors = descriptor.contributors;
23
+ if (!contributors) {
24
+ return;
25
+ }
26
+ if (Array.isArray(contributors)) {
27
+ for (const contributor of contributors) {
28
+ const role = contributor.role;
29
+ if (role) {
30
+ contributor.roles = [role];
31
+ contributor.role = undefined;
32
+ }
33
+ }
34
+ }
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbURlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlL2NvbnZlcnQvZnJvbURlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2xELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRXZFLE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsVUFBc0IsRUFDdEIsT0FFQztJQUVELFVBQVUsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRW5ELGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUMxQixnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDckMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUE7SUFFL0IsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLFVBQXNCO0lBQzVDLE1BQU0sYUFBYSxHQUNqQixPQUFPLFVBQVUsQ0FBQyxPQUFPLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztRQUNwQixDQUFDLENBQUMsU0FBUyxDQUFBO0lBRWYsVUFBVSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQTtBQUMxRCxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FDdkIsVUFBc0IsRUFDdEIsT0FFQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxVQUFVLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBb0IsRUFBRSxFQUFFLENBQ3ZFLDZCQUE2QixDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDeEUsQ0FBQTtJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxVQUFzQjtJQUNqRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFBO0lBQzVDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ2hDLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQTtZQUM3QixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDMUIsV0FBVyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUE7WUFDOUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGVzY3JpcHRvciB9IGZyb20gXCIuLi8uLi9kZXNjcmlwdG9yL2luZGV4LnRzXCJcbmltcG9ydCB7IGlzUmVtb3RlUGF0aCB9IGZyb20gXCIuLi8uLi9wYXRoL2luZGV4LnRzXCJcbmltcG9ydCB7IGNvbnZlcnRSZXNvdXJjZUZyb21EZXNjcmlwdG9yIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlL2luZGV4LnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRQYWNrYWdlRnJvbURlc2NyaXB0b3IoXG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsXG4gIG9wdGlvbnM6IHtcbiAgICBiYXNlcGF0aD86IHN0cmluZ1xuICB9LFxuKSB7XG4gIGRlc2NyaXB0b3IgPSBnbG9iYWxUaGlzLnN0cnVjdHVyZWRDbG9uZShkZXNjcmlwdG9yKVxuXG4gIGNvbnZlcnRQcm9maWxlKGRlc2NyaXB0b3IpXG4gIGNvbnZlcnRSZXNvdXJjZXMoZGVzY3JpcHRvciwgb3B0aW9ucylcbiAgY29udmVydENvbnRyaWJ1dG9ycyhkZXNjcmlwdG9yKVxuXG4gIHJldHVybiBkZXNjcmlwdG9yXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRQcm9maWxlKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpIHtcbiAgY29uc3QgcmVtb3RlUHJvZmlsZSA9XG4gICAgdHlwZW9mIGRlc2NyaXB0b3IucHJvZmlsZSA9PT0gXCJzdHJpbmdcIiAmJiBpc1JlbW90ZVBhdGgoZGVzY3JpcHRvci5wcm9maWxlKVxuICAgICAgPyBkZXNjcmlwdG9yLnByb2ZpbGVcbiAgICAgIDogdW5kZWZpbmVkXG5cbiAgZGVzY3JpcHRvci4kc2NoZW1hID0gZGVzY3JpcHRvci4kc2NoZW1hID8/IHJlbW90ZVByb2ZpbGVcbn1cblxuZnVuY3Rpb24gY29udmVydFJlc291cmNlcyhcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgb3B0aW9uczoge1xuICAgIGJhc2VwYXRoPzogc3RyaW5nXG4gIH0sXG4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZGVzY3JpcHRvci5yZXNvdXJjZXMpKSB7XG4gICAgZGVzY3JpcHRvci5yZXNvdXJjZXMgPSBkZXNjcmlwdG9yLnJlc291cmNlcy5tYXAoKHJlc291cmNlOiBEZXNjcmlwdG9yKSA9PlxuICAgICAgY29udmVydFJlc291cmNlRnJvbURlc2NyaXB0b3IocmVzb3VyY2UsIHsgYmFzZXBhdGg6IG9wdGlvbnMuYmFzZXBhdGggfSksXG4gICAgKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRDb250cmlidXRvcnMoZGVzY3JpcHRvcjogRGVzY3JpcHRvcikge1xuICBjb25zdCBjb250cmlidXRvcnMgPSBkZXNjcmlwdG9yLmNvbnRyaWJ1dG9yc1xuICBpZiAoIWNvbnRyaWJ1dG9ycykge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY29udHJpYnV0b3JzKSkge1xuICAgIGZvciAoY29uc3QgY29udHJpYnV0b3Igb2YgY29udHJpYnV0b3JzKSB7XG4gICAgICBjb25zdCByb2xlID0gY29udHJpYnV0b3Iucm9sZVxuICAgICAgaWYgKHJvbGUpIHtcbiAgICAgICAgY29udHJpYnV0b3Iucm9sZXMgPSBbcm9sZV1cbiAgICAgICAgY29udHJpYnV0b3Iucm9sZSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ import type { Descriptor } from "../../descriptor/index.ts";
2
+ import type { Package } from "../Package.ts";
3
+ export declare function convertPackageToDescriptor(dataPackage: Package, options?: {
4
+ basepath?: string;
5
+ }): Descriptor;
@@ -0,0 +1,7 @@
1
+ import { convertResourceToDescriptor } from "../../resource/index.js";
2
+ export function convertPackageToDescriptor(dataPackage, options) {
3
+ dataPackage = globalThis.structuredClone(dataPackage);
4
+ const resources = dataPackage.resources.map((resource) => convertResourceToDescriptor(resource, { basepath: options?.basepath }));
5
+ return { ...dataPackage, resources };
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9EZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZS9jb252ZXJ0L3RvRGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUdyRSxNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLFdBQW9CLEVBQ3BCLE9BRUM7SUFFRCxXQUFXLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUVyRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQzVELDJCQUEyQixDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FDdkUsQ0FBQTtJQUVELE9BQU8sRUFBRSxHQUFHLFdBQVcsRUFBRSxTQUFTLEVBQWdCLENBQUE7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGVzY3JpcHRvciB9IGZyb20gXCIuLi8uLi9kZXNjcmlwdG9yL2luZGV4LnRzXCJcbmltcG9ydCB7IGNvbnZlcnRSZXNvdXJjZVRvRGVzY3JpcHRvciB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZS9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2UgfSBmcm9tIFwiLi4vUGFja2FnZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UGFja2FnZVRvRGVzY3JpcHRvcihcbiAgZGF0YVBhY2thZ2U6IFBhY2thZ2UsXG4gIG9wdGlvbnM/OiB7XG4gICAgYmFzZXBhdGg/OiBzdHJpbmdcbiAgfSxcbikge1xuICBkYXRhUGFja2FnZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lKGRhdGFQYWNrYWdlKVxuXG4gIGNvbnN0IHJlc291cmNlcyA9IGRhdGFQYWNrYWdlLnJlc291cmNlcy5tYXAoKHJlc291cmNlOiBhbnkpID0+XG4gICAgY29udmVydFJlc291cmNlVG9EZXNjcmlwdG9yKHJlc291cmNlLCB7IGJhc2VwYXRoOiBvcHRpb25zPy5iYXNlcGF0aCB9KSxcbiAgKVxuXG4gIHJldHVybiB7IC4uLmRhdGFQYWNrYWdlLCByZXNvdXJjZXMgfSBhcyBEZXNjcmlwdG9yXG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export type { Package } from "./Package.ts";
2
+ export { assertPackage } from "./assert.ts";
3
+ export { loadPackageDescriptor } from "./load.ts";
4
+ export { savePackageDescriptor } from "./save.ts";
5
+ export { validatePackageMetadata } from "./validate.ts";
6
+ export { convertPackageFromDescriptor } from "./convert/fromDescriptor.ts";
7
+ export { convertPackageToDescriptor } from "./convert/toDescriptor.ts";
8
+ export type { Contributor } from "./Contributor.ts";
@@ -0,0 +1,7 @@
1
+ export { assertPackage } from "./assert.js";
2
+ export { loadPackageDescriptor } from "./load.js";
3
+ export { savePackageDescriptor } from "./save.js";
4
+ export { validatePackageMetadata } from "./validate.js";
5
+ export { convertPackageFromDescriptor } from "./convert/fromDescriptor.js";
6
+ export { convertPackageToDescriptor } from "./convert/toDescriptor.js";
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wYWNrYWdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IFBhY2thZ2UgfSBmcm9tIFwiLi9QYWNrYWdlLnRzXCJcbmV4cG9ydCB7IGFzc2VydFBhY2thZ2UgfSBmcm9tIFwiLi9hc3NlcnQudHNcIlxuZXhwb3J0IHsgbG9hZFBhY2thZ2VEZXNjcmlwdG9yIH0gZnJvbSBcIi4vbG9hZC50c1wiXG5leHBvcnQgeyBzYXZlUGFja2FnZURlc2NyaXB0b3IgfSBmcm9tIFwiLi9zYXZlLnRzXCJcbmV4cG9ydCB7IHZhbGlkYXRlUGFja2FnZU1ldGFkYXRhIH0gZnJvbSBcIi4vdmFsaWRhdGUudHNcIlxuZXhwb3J0IHsgY29udmVydFBhY2thZ2VGcm9tRGVzY3JpcHRvciB9IGZyb20gXCIuL2NvbnZlcnQvZnJvbURlc2NyaXB0b3IudHNcIlxuZXhwb3J0IHsgY29udmVydFBhY2thZ2VUb0Rlc2NyaXB0b3IgfSBmcm9tIFwiLi9jb252ZXJ0L3RvRGVzY3JpcHRvci50c1wiXG5leHBvcnQgdHlwZSB7IENvbnRyaWJ1dG9yIH0gZnJvbSBcIi4vQ29udHJpYnV0b3IudHNcIlxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Load a Package descriptor (JSON Object) from a file or URL
3
+ * Ensures the descriptor is valid against its profile
4
+ */
5
+ export declare function loadPackageDescriptor(path: string): Promise<import("./Package.ts").Package>;
@@ -0,0 +1,14 @@
1
+ import { loadDescriptor } from "../descriptor/index.js";
2
+ import { resolveBasepath } from "../path/index.js";
3
+ import { assertPackage } from "./assert.js";
4
+ /**
5
+ * Load a Package descriptor (JSON Object) from a file or URL
6
+ * Ensures the descriptor is valid against its profile
7
+ */
8
+ export async function loadPackageDescriptor(path) {
9
+ const basepath = await resolveBasepath(path);
10
+ const descriptor = await loadDescriptor(path);
11
+ const dataPackage = await assertPackage(descriptor, { basepath });
12
+ return dataPackage;
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2thZ2UvbG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFM0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxJQUFZO0lBQ3RELE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzVDLE1BQU0sVUFBVSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzdDLE1BQU0sV0FBVyxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDakUsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvYWREZXNjcmlwdG9yIH0gZnJvbSBcIi4uL2Rlc2NyaXB0b3IvaW5kZXgudHNcIlxuaW1wb3J0IHsgcmVzb2x2ZUJhc2VwYXRoIH0gZnJvbSBcIi4uL3BhdGgvaW5kZXgudHNcIlxuaW1wb3J0IHsgYXNzZXJ0UGFja2FnZSB9IGZyb20gXCIuL2Fzc2VydC50c1wiXG5cbi8qKlxuICogTG9hZCBhIFBhY2thZ2UgZGVzY3JpcHRvciAoSlNPTiBPYmplY3QpIGZyb20gYSBmaWxlIG9yIFVSTFxuICogRW5zdXJlcyB0aGUgZGVzY3JpcHRvciBpcyB2YWxpZCBhZ2FpbnN0IGl0cyBwcm9maWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUGFja2FnZURlc2NyaXB0b3IocGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGJhc2VwYXRoID0gYXdhaXQgcmVzb2x2ZUJhc2VwYXRoKHBhdGgpXG4gIGNvbnN0IGRlc2NyaXB0b3IgPSBhd2FpdCBsb2FkRGVzY3JpcHRvcihwYXRoKVxuICBjb25zdCBkYXRhUGFja2FnZSA9IGF3YWl0IGFzc2VydFBhY2thZ2UoZGVzY3JpcHRvciwgeyBiYXNlcGF0aCB9KVxuICByZXR1cm4gZGF0YVBhY2thZ2Vcbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ import { join, relative } from "node:path";
2
+ import { describe, expect, expectTypeOf, it } from "vitest";
3
+ import { loadPackageDescriptor } from "./load.js";
4
+ describe("loadPackageDescriptor", async () => {
5
+ const getFixturePath = (name) => relative(process.cwd(), join(import.meta.dirname, "fixtures", name));
6
+ it("loads a package from a local file path", async () => {
7
+ const datapackage = await loadPackageDescriptor(getFixturePath("package.json"));
8
+ expectTypeOf(datapackage).toEqualTypeOf();
9
+ expect(datapackage.name).toBe("name");
10
+ expect(datapackage.resources.length).toBeGreaterThan(0);
11
+ const resource = datapackage.resources[0];
12
+ expect(resource).toBeDefined();
13
+ if (resource) {
14
+ expect(resource).toEqual({
15
+ type: "table",
16
+ name: "name",
17
+ format: "csv",
18
+ path: getFixturePath("table.csv"),
19
+ dialect: getFixturePath("dialect.json"),
20
+ schema: getFixturePath("schema.json"),
21
+ });
22
+ }
23
+ });
24
+ it("throws an error when package is invalid", async () => {
25
+ await expect(loadPackageDescriptor(getFixturePath("package-invalid.json"))).rejects.toThrow();
26
+ });
27
+ });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcGFja2FnZS9sb2FkLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUUzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFakQsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzNDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDdEMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7SUFFdEUsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RELE1BQU0sV0FBVyxHQUFHLE1BQU0scUJBQXFCLENBQzdDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FDL0IsQ0FBQTtRQUVELFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLEVBQVcsQ0FBQTtRQUNsRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFdkQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6QyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFOUIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFBRSxNQUFNO2dCQUNaLE1BQU0sRUFBRSxLQUFLO2dCQUNiLElBQUksRUFBRSxjQUFjLENBQUMsV0FBVyxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsY0FBYyxDQUFDLGNBQWMsQ0FBQztnQkFDdkMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxhQUFhLENBQUM7YUFDdEMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3ZELE1BQU0sTUFBTSxDQUNWLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQzlELENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3JCLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luLCByZWxhdGl2ZSB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgZXhwZWN0VHlwZU9mLCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHR5cGUgeyBQYWNrYWdlIH0gZnJvbSBcIi4vUGFja2FnZS50c1wiXG5pbXBvcnQgeyBsb2FkUGFja2FnZURlc2NyaXB0b3IgfSBmcm9tIFwiLi9sb2FkLnRzXCJcblxuZGVzY3JpYmUoXCJsb2FkUGFja2FnZURlc2NyaXB0b3JcIiwgYXN5bmMgKCkgPT4ge1xuICBjb25zdCBnZXRGaXh0dXJlUGF0aCA9IChuYW1lOiBzdHJpbmcpID0+XG4gICAgcmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgam9pbihpbXBvcnQubWV0YS5kaXJuYW1lLCBcImZpeHR1cmVzXCIsIG5hbWUpKVxuXG4gIGl0KFwibG9hZHMgYSBwYWNrYWdlIGZyb20gYSBsb2NhbCBmaWxlIHBhdGhcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGFwYWNrYWdlID0gYXdhaXQgbG9hZFBhY2thZ2VEZXNjcmlwdG9yKFxuICAgICAgZ2V0Rml4dHVyZVBhdGgoXCJwYWNrYWdlLmpzb25cIiksXG4gICAgKVxuXG4gICAgZXhwZWN0VHlwZU9mKGRhdGFwYWNrYWdlKS50b0VxdWFsVHlwZU9mPFBhY2thZ2U+KClcbiAgICBleHBlY3QoZGF0YXBhY2thZ2UubmFtZSkudG9CZShcIm5hbWVcIilcbiAgICBleHBlY3QoZGF0YXBhY2thZ2UucmVzb3VyY2VzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApXG5cbiAgICBjb25zdCByZXNvdXJjZSA9IGRhdGFwYWNrYWdlLnJlc291cmNlc1swXVxuICAgIGV4cGVjdChyZXNvdXJjZSkudG9CZURlZmluZWQoKVxuXG4gICAgaWYgKHJlc291cmNlKSB7XG4gICAgICBleHBlY3QocmVzb3VyY2UpLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiBcInRhYmxlXCIsXG4gICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICBmb3JtYXQ6IFwiY3N2XCIsXG4gICAgICAgIHBhdGg6IGdldEZpeHR1cmVQYXRoKFwidGFibGUuY3N2XCIpLFxuICAgICAgICBkaWFsZWN0OiBnZXRGaXh0dXJlUGF0aChcImRpYWxlY3QuanNvblwiKSxcbiAgICAgICAgc2NoZW1hOiBnZXRGaXh0dXJlUGF0aChcInNjaGVtYS5qc29uXCIpLFxuICAgICAgfSlcbiAgICB9XG4gIH0pXG5cbiAgaXQoXCJ0aHJvd3MgYW4gZXJyb3Igd2hlbiBwYWNrYWdlIGlzIGludmFsaWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIGxvYWRQYWNrYWdlRGVzY3JpcHRvcihnZXRGaXh0dXJlUGF0aChcInBhY2thZ2UtaW52YWxpZC5qc29uXCIpKSxcbiAgICApLnJlamVjdHMudG9UaHJvdygpXG4gIH0pXG59KVxuIl19
@@ -0,0 +1,9 @@
1
+ import type { Package } from "./Package.ts";
2
+ /**
3
+ * Save a Package to a file path
4
+ * Works in Node.js environments
5
+ */
6
+ export declare function savePackageDescriptor(dataPackage: Package, options: {
7
+ path: string;
8
+ overwrite?: boolean;
9
+ }): Promise<void>;
@@ -0,0 +1,18 @@
1
+ import { saveDescriptor } from "../descriptor/index.js";
2
+ import { getBasepath } from "../path/index.js";
3
+ import { convertPackageToDescriptor } from "./convert/toDescriptor.js";
4
+ const CURRENT_PROFILE = "https://datapackage.org/profiles/2.0/datapackage.json";
5
+ /**
6
+ * Save a Package to a file path
7
+ * Works in Node.js environments
8
+ */
9
+ export async function savePackageDescriptor(dataPackage, options) {
10
+ const basepath = getBasepath(options.path);
11
+ const descriptor = convertPackageToDescriptor(dataPackage, { basepath });
12
+ descriptor.$schema = descriptor.$schema ?? CURRENT_PROFILE;
13
+ await saveDescriptor(descriptor, {
14
+ path: options.path,
15
+ overwrite: options.overwrite,
16
+ });
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2thZ2Uvc2F2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRXRFLE1BQU0sZUFBZSxHQUFHLHVEQUF1RCxDQUFBO0FBRS9FOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLFdBQW9CLEVBQ3BCLE9BR0M7SUFFRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRTFDLE1BQU0sVUFBVSxHQUFHLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDeEUsVUFBVSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQTtJQUUxRCxNQUFNLGNBQWMsQ0FBQyxVQUFVLEVBQUU7UUFDL0IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztLQUM3QixDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2F2ZURlc2NyaXB0b3IgfSBmcm9tIFwiLi4vZGVzY3JpcHRvci9pbmRleC50c1wiXG5pbXBvcnQgeyBnZXRCYXNlcGF0aCB9IGZyb20gXCIuLi9wYXRoL2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZSB9IGZyb20gXCIuL1BhY2thZ2UudHNcIlxuaW1wb3J0IHsgY29udmVydFBhY2thZ2VUb0Rlc2NyaXB0b3IgfSBmcm9tIFwiLi9jb252ZXJ0L3RvRGVzY3JpcHRvci50c1wiXG5cbmNvbnN0IENVUlJFTlRfUFJPRklMRSA9IFwiaHR0cHM6Ly9kYXRhcGFja2FnZS5vcmcvcHJvZmlsZXMvMi4wL2RhdGFwYWNrYWdlLmpzb25cIlxuXG4vKipcbiAqIFNhdmUgYSBQYWNrYWdlIHRvIGEgZmlsZSBwYXRoXG4gKiBXb3JrcyBpbiBOb2RlLmpzIGVudmlyb25tZW50c1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZVBhY2thZ2VEZXNjcmlwdG9yKFxuICBkYXRhUGFja2FnZTogUGFja2FnZSxcbiAgb3B0aW9uczoge1xuICAgIHBhdGg6IHN0cmluZ1xuICAgIG92ZXJ3cml0ZT86IGJvb2xlYW5cbiAgfSxcbikge1xuICBjb25zdCBiYXNlcGF0aCA9IGdldEJhc2VwYXRoKG9wdGlvbnMucGF0aClcblxuICBjb25zdCBkZXNjcmlwdG9yID0gY29udmVydFBhY2thZ2VUb0Rlc2NyaXB0b3IoZGF0YVBhY2thZ2UsIHsgYmFzZXBhdGggfSlcbiAgZGVzY3JpcHRvci4kc2NoZW1hID0gZGVzY3JpcHRvci4kc2NoZW1hID8/IENVUlJFTlRfUFJPRklMRVxuXG4gIGF3YWl0IHNhdmVEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIHtcbiAgICBwYXRoOiBvcHRpb25zLnBhdGgsXG4gICAgb3ZlcndyaXRlOiBvcHRpb25zLm92ZXJ3cml0ZSxcbiAgfSlcbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};