@frictionless-ts/dataset 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 (242) hide show
  1. package/README.md +3 -0
  2. package/build/file/copy.d.ts +4 -0
  3. package/build/file/copy.js +7 -0
  4. package/build/file/copy.spec.d.ts +1 -0
  5. package/build/file/copy.spec.js +104 -0
  6. package/build/file/describe.d.ts +7 -0
  7. package/build/file/describe.js +9 -0
  8. package/build/file/fetch.d.ts +2 -0
  9. package/build/file/fetch.js +21 -0
  10. package/build/file/index.d.ts +9 -0
  11. package/build/file/index.js +10 -0
  12. package/build/file/infer.d.ts +10 -0
  13. package/build/file/infer.js +48 -0
  14. package/build/file/infer.spec.d.ts +1 -0
  15. package/build/file/infer.spec.js +141 -0
  16. package/build/file/load.d.ts +3 -0
  17. package/build/file/load.js +7 -0
  18. package/build/file/path.d.ts +2 -0
  19. package/build/file/path.js +17 -0
  20. package/build/file/save.d.ts +3 -0
  21. package/build/file/save.js +7 -0
  22. package/build/file/temp.d.ts +11 -0
  23. package/build/file/temp.js +23 -0
  24. package/build/file/validate.d.ts +6 -0
  25. package/build/file/validate.js +47 -0
  26. package/build/file/validate.spec.d.ts +1 -0
  27. package/build/file/validate.spec.js +180 -0
  28. package/build/folder/create.d.ts +1 -0
  29. package/build/folder/create.js +5 -0
  30. package/build/folder/index.d.ts +2 -0
  31. package/build/folder/index.js +3 -0
  32. package/build/folder/temp.d.ts +3 -0
  33. package/build/folder/temp.js +16 -0
  34. package/build/index.d.ts +36 -0
  35. package/build/index.js +35 -0
  36. package/build/package/index.d.ts +2 -0
  37. package/build/package/index.js +3 -0
  38. package/build/package/merge.d.ts +23 -0
  39. package/build/package/merge.js +12 -0
  40. package/build/package/path.d.ts +3 -0
  41. package/build/package/path.js +43 -0
  42. package/build/package/path.spec.d.ts +1 -0
  43. package/build/package/path.spec.js +56 -0
  44. package/build/plugin.d.ts +11 -0
  45. package/build/plugin.js +2 -0
  46. package/build/plugins/ckan/ckan/index.d.ts +1 -0
  47. package/build/plugins/ckan/ckan/index.js +2 -0
  48. package/build/plugins/ckan/ckan/request.d.ts +11 -0
  49. package/build/plugins/ckan/ckan/request.js +35 -0
  50. package/build/plugins/ckan/index.d.ts +4 -0
  51. package/build/plugins/ckan/index.js +5 -0
  52. package/build/plugins/ckan/package/Organization.d.ts +21 -0
  53. package/build/plugins/ckan/package/Organization.js +2 -0
  54. package/build/plugins/ckan/package/Package.d.ts +76 -0
  55. package/build/plugins/ckan/package/Package.js +2 -0
  56. package/build/plugins/ckan/package/Tag.d.ts +17 -0
  57. package/build/plugins/ckan/package/Tag.js +2 -0
  58. package/build/plugins/ckan/package/convert/fromCkan.d.ts +3 -0
  59. package/build/plugins/ckan/package/convert/fromCkan.js +63 -0
  60. package/build/plugins/ckan/package/convert/fromCkan.spec.d.ts +1 -0
  61. package/build/plugins/ckan/package/convert/fromCkan.spec.js +80 -0
  62. package/build/plugins/ckan/package/convert/toCkan.d.ts +22 -0
  63. package/build/plugins/ckan/package/convert/toCkan.js +51 -0
  64. package/build/plugins/ckan/package/convert/toCkan.spec.d.ts +1 -0
  65. package/build/plugins/ckan/package/convert/toCkan.spec.js +153 -0
  66. package/build/plugins/ckan/package/fixtures/ckan-package.json +308 -0
  67. package/build/plugins/ckan/package/index.d.ts +7 -0
  68. package/build/plugins/ckan/package/index.js +5 -0
  69. package/build/plugins/ckan/package/load.d.ts +21 -0
  70. package/build/plugins/ckan/package/load.js +74 -0
  71. package/build/plugins/ckan/package/load.spec.d.ts +1 -0
  72. package/build/plugins/ckan/package/load.spec.js +11 -0
  73. package/build/plugins/ckan/package/save.d.ts +10 -0
  74. package/build/plugins/ckan/package/save.js +83 -0
  75. package/build/plugins/ckan/package/save.spec.d.ts +1 -0
  76. package/build/plugins/ckan/package/save.spec.js +319 -0
  77. package/build/plugins/ckan/plugin.d.ts +19 -0
  78. package/build/plugins/ckan/plugin.js +18 -0
  79. package/build/plugins/ckan/plugin.spec.d.ts +1 -0
  80. package/build/plugins/ckan/plugin.spec.js +83 -0
  81. package/build/plugins/ckan/resource/Resource.d.ts +56 -0
  82. package/build/plugins/ckan/resource/Resource.js +2 -0
  83. package/build/plugins/ckan/resource/convert/fromCkan.d.ts +3 -0
  84. package/build/plugins/ckan/resource/convert/fromCkan.js +39 -0
  85. package/build/plugins/ckan/resource/convert/toCkan.d.ts +3 -0
  86. package/build/plugins/ckan/resource/convert/toCkan.js +20 -0
  87. package/build/plugins/ckan/resource/index.d.ts +3 -0
  88. package/build/plugins/ckan/resource/index.js +3 -0
  89. package/build/plugins/ckan/schema/Field.d.ts +34 -0
  90. package/build/plugins/ckan/schema/Field.js +2 -0
  91. package/build/plugins/ckan/schema/Schema.d.ts +10 -0
  92. package/build/plugins/ckan/schema/Schema.js +2 -0
  93. package/build/plugins/ckan/schema/convert/fixtures/ckan-schema.json +115 -0
  94. package/build/plugins/ckan/schema/convert/fromCkan.d.ts +3 -0
  95. package/build/plugins/ckan/schema/convert/fromCkan.js +47 -0
  96. package/build/plugins/ckan/schema/convert/fromCkan.spec.d.ts +1 -0
  97. package/build/plugins/ckan/schema/convert/fromCkan.spec.js +157 -0
  98. package/build/plugins/ckan/schema/convert/toCkan.d.ts +3 -0
  99. package/build/plugins/ckan/schema/convert/toCkan.js +50 -0
  100. package/build/plugins/ckan/schema/convert/toCkan.spec.d.ts +1 -0
  101. package/build/plugins/ckan/schema/convert/toCkan.spec.js +278 -0
  102. package/build/plugins/ckan/schema/index.d.ts +4 -0
  103. package/build/plugins/ckan/schema/index.js +3 -0
  104. package/build/plugins/datahub/index.d.ts +2 -0
  105. package/build/plugins/datahub/index.js +3 -0
  106. package/build/plugins/datahub/package/index.d.ts +1 -0
  107. package/build/plugins/datahub/package/index.js +2 -0
  108. package/build/plugins/datahub/package/load.d.ts +1 -0
  109. package/build/plugins/datahub/package/load.js +9 -0
  110. package/build/plugins/datahub/package/load.spec.d.ts +1 -0
  111. package/build/plugins/datahub/package/load.spec.js +11 -0
  112. package/build/plugins/datahub/plugin.d.ts +4 -0
  113. package/build/plugins/datahub/plugin.js +18 -0
  114. package/build/plugins/datahub/plugin.spec.d.ts +1 -0
  115. package/build/plugins/datahub/plugin.spec.js +78 -0
  116. package/build/plugins/descriptor/index.d.ts +1 -0
  117. package/build/plugins/descriptor/index.js +2 -0
  118. package/build/plugins/descriptor/plugin.d.ts +11 -0
  119. package/build/plugins/descriptor/plugin.js +29 -0
  120. package/build/plugins/descriptor/plugin.spec.d.ts +1 -0
  121. package/build/plugins/descriptor/plugin.spec.js +169 -0
  122. package/build/plugins/folder/index.d.ts +2 -0
  123. package/build/plugins/folder/index.js +3 -0
  124. package/build/plugins/folder/package/index.d.ts +2 -0
  125. package/build/plugins/folder/package/index.js +3 -0
  126. package/build/plugins/folder/package/load.d.ts +1 -0
  127. package/build/plugins/folder/package/load.js +6 -0
  128. package/build/plugins/folder/package/load.spec.d.ts +1 -0
  129. package/build/plugins/folder/package/load.spec.js +175 -0
  130. package/build/plugins/folder/package/save.d.ts +7 -0
  131. package/build/plugins/folder/package/save.js +35 -0
  132. package/build/plugins/folder/package/save.spec.d.ts +1 -0
  133. package/build/plugins/folder/package/save.spec.js +328 -0
  134. package/build/plugins/folder/plugin.d.ts +4 -0
  135. package/build/plugins/folder/plugin.js +19 -0
  136. package/build/plugins/folder/plugin.spec.d.ts +1 -0
  137. package/build/plugins/folder/plugin.spec.js +53 -0
  138. package/build/plugins/github/github/index.d.ts +1 -0
  139. package/build/plugins/github/github/index.js +2 -0
  140. package/build/plugins/github/github/path.d.ts +1 -0
  141. package/build/plugins/github/github/path.js +4 -0
  142. package/build/plugins/github/github/request.d.ts +15 -0
  143. package/build/plugins/github/github/request.js +43 -0
  144. package/build/plugins/github/index.d.ts +3 -0
  145. package/build/plugins/github/index.js +4 -0
  146. package/build/plugins/github/package/License.d.ts +21 -0
  147. package/build/plugins/github/package/License.js +2 -0
  148. package/build/plugins/github/package/Owner.d.ts +25 -0
  149. package/build/plugins/github/package/Owner.js +2 -0
  150. package/build/plugins/github/package/Package.d.ts +87 -0
  151. package/build/plugins/github/package/Package.js +2 -0
  152. package/build/plugins/github/package/convert/fromGithub.d.ts +3 -0
  153. package/build/plugins/github/package/convert/fromGithub.js +50 -0
  154. package/build/plugins/github/package/index.d.ts +6 -0
  155. package/build/plugins/github/package/index.js +4 -0
  156. package/build/plugins/github/package/load.d.ts +23 -0
  157. package/build/plugins/github/package/load.js +48 -0
  158. package/build/plugins/github/package/load.spec.d.ts +1 -0
  159. package/build/plugins/github/package/load.spec.js +15 -0
  160. package/build/plugins/github/package/save.d.ts +14 -0
  161. package/build/plugins/github/package/save.js +69 -0
  162. package/build/plugins/github/package/save.spec.d.ts +1 -0
  163. package/build/plugins/github/package/save.spec.js +566 -0
  164. package/build/plugins/github/plugin.d.ts +19 -0
  165. package/build/plugins/github/plugin.js +18 -0
  166. package/build/plugins/github/plugin.spec.d.ts +1 -0
  167. package/build/plugins/github/plugin.spec.js +73 -0
  168. package/build/plugins/github/resource/Resource.d.ts +29 -0
  169. package/build/plugins/github/resource/Resource.js +2 -0
  170. package/build/plugins/github/resource/convert/fromGithub.d.ts +5 -0
  171. package/build/plugins/github/resource/convert/fromGithub.js +24 -0
  172. package/build/plugins/github/resource/convert/toGithub.d.ts +3 -0
  173. package/build/plugins/github/resource/convert/toGithub.js +10 -0
  174. package/build/plugins/github/resource/index.d.ts +3 -0
  175. package/build/plugins/github/resource/index.js +3 -0
  176. package/build/plugins/zenodo/index.d.ts +3 -0
  177. package/build/plugins/zenodo/index.js +4 -0
  178. package/build/plugins/zenodo/package/Creator.d.ts +20 -0
  179. package/build/plugins/zenodo/package/Creator.js +2 -0
  180. package/build/plugins/zenodo/package/Package.d.ts +94 -0
  181. package/build/plugins/zenodo/package/Package.js +2 -0
  182. package/build/plugins/zenodo/package/convert/fromZenodo.d.ts +3 -0
  183. package/build/plugins/zenodo/package/convert/fromZenodo.js +43 -0
  184. package/build/plugins/zenodo/package/convert/toZenodo.d.ts +3 -0
  185. package/build/plugins/zenodo/package/convert/toZenodo.js +79 -0
  186. package/build/plugins/zenodo/package/index.d.ts +6 -0
  187. package/build/plugins/zenodo/package/index.js +5 -0
  188. package/build/plugins/zenodo/package/load.d.ts +23 -0
  189. package/build/plugins/zenodo/package/load.js +45 -0
  190. package/build/plugins/zenodo/package/load.spec.d.ts +1 -0
  191. package/build/plugins/zenodo/package/load.spec.js +15 -0
  192. package/build/plugins/zenodo/package/save.d.ts +13 -0
  193. package/build/plugins/zenodo/package/save.js +74 -0
  194. package/build/plugins/zenodo/package/save.spec.d.ts +1 -0
  195. package/build/plugins/zenodo/package/save.spec.js +524 -0
  196. package/build/plugins/zenodo/plugin.d.ts +19 -0
  197. package/build/plugins/zenodo/plugin.js +18 -0
  198. package/build/plugins/zenodo/plugin.spec.d.ts +1 -0
  199. package/build/plugins/zenodo/plugin.spec.js +78 -0
  200. package/build/plugins/zenodo/resource/Resource.d.ts +27 -0
  201. package/build/plugins/zenodo/resource/Resource.js +2 -0
  202. package/build/plugins/zenodo/resource/convert/fromZenodo.d.ts +10 -0
  203. package/build/plugins/zenodo/resource/convert/fromZenodo.js +18 -0
  204. package/build/plugins/zenodo/resource/convert/toZenodo.d.ts +3 -0
  205. package/build/plugins/zenodo/resource/convert/toZenodo.js +13 -0
  206. package/build/plugins/zenodo/resource/index.d.ts +3 -0
  207. package/build/plugins/zenodo/resource/index.js +3 -0
  208. package/build/plugins/zenodo/zenodo/index.d.ts +1 -0
  209. package/build/plugins/zenodo/zenodo/index.js +2 -0
  210. package/build/plugins/zenodo/zenodo/request.d.ts +12 -0
  211. package/build/plugins/zenodo/zenodo/request.js +36 -0
  212. package/build/plugins/zip/index.d.ts +2 -0
  213. package/build/plugins/zip/index.js +3 -0
  214. package/build/plugins/zip/package/index.d.ts +2 -0
  215. package/build/plugins/zip/package/index.js +3 -0
  216. package/build/plugins/zip/package/load.d.ts +1 -0
  217. package/build/plugins/zip/package/load.js +30 -0
  218. package/build/plugins/zip/package/load.spec.d.ts +1 -0
  219. package/build/plugins/zip/package/load.spec.js +173 -0
  220. package/build/plugins/zip/package/save.d.ts +5 -0
  221. package/build/plugins/zip/package/save.js +50 -0
  222. package/build/plugins/zip/package/save.spec.d.ts +1 -0
  223. package/build/plugins/zip/package/save.spec.js +287 -0
  224. package/build/plugins/zip/plugin.d.ts +11 -0
  225. package/build/plugins/zip/plugin.js +24 -0
  226. package/build/plugins/zip/plugin.spec.d.ts +1 -0
  227. package/build/plugins/zip/plugin.spec.js +158 -0
  228. package/build/resource/index.d.ts +1 -0
  229. package/build/resource/index.js +2 -0
  230. package/build/resource/save.d.ts +13 -0
  231. package/build/resource/save.js +53 -0
  232. package/build/resource/save.spec.d.ts +1 -0
  233. package/build/resource/save.spec.js +107 -0
  234. package/build/stream/concat.d.ts +3 -0
  235. package/build/stream/concat.js +5 -0
  236. package/build/stream/index.d.ts +3 -0
  237. package/build/stream/index.js +4 -0
  238. package/build/stream/load.d.ts +5 -0
  239. package/build/stream/load.js +46 -0
  240. package/build/stream/save.d.ts +5 -0
  241. package/build/stream/save.js +13 -0
  242. package/package.json +48 -0
@@ -0,0 +1,35 @@
1
+ export async function makeCkanApiRequest(options) {
2
+ let body;
3
+ const headers = {};
4
+ const url = new URL(options.ckanUrl);
5
+ url.pathname = `/api/3/action/${options.action}`;
6
+ if (options.apiKey) {
7
+ headers.Authorization = options.apiKey;
8
+ }
9
+ if (options.upload) {
10
+ body = new FormData();
11
+ body.append("upload", options.upload.data, options.upload.name);
12
+ for (const [key, value] of Object.entries(options.payload)) {
13
+ body.append(key, value);
14
+ }
15
+ }
16
+ else {
17
+ body = JSON.stringify(options.payload);
18
+ headers["Content-Type"] = "application/json";
19
+ }
20
+ const response = await fetch(url.toString(), {
21
+ method: "POST",
22
+ headers,
23
+ body,
24
+ });
25
+ if (!response.ok) {
26
+ const errorText = await response.text();
27
+ throw new Error(`CKAN API error: ${response.status} ${response.statusText}\n${errorText}`);
28
+ }
29
+ const data = (await response.json());
30
+ if (!data.success) {
31
+ throw new Error(`CKAN API error: ${data.error}`);
32
+ }
33
+ return data.result;
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BsdWdpbnMvY2thbi9ja2FuL3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBaUIsT0FNeEQ7SUFDQyxJQUFJLElBQXVCLENBQUE7SUFDM0IsTUFBTSxPQUFPLEdBQXdCLEVBQUUsQ0FBQTtJQUV2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEMsR0FBRyxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBRWhELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ25CLE9BQU8sQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQTtJQUN4QyxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsSUFBSSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUE7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUUvRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdEMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLGtCQUFrQixDQUFBO0lBQzlDLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDM0MsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPO1FBQ1AsSUFBSTtLQUNMLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FDYixtQkFBbUIsUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUMxRSxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQWUsQ0FBQTtJQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxNQUFXLENBQUE7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGVzY3JpcHRvciB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1ha2VDa2FuQXBpUmVxdWVzdDxUID0gRGVzY3JpcHRvcj4ob3B0aW9uczoge1xuICBja2FuVXJsOiBzdHJpbmdcbiAgYWN0aW9uOiBzdHJpbmdcbiAgcGF5bG9hZDogRGVzY3JpcHRvclxuICB1cGxvYWQ/OiB7IG5hbWU6IHN0cmluZzsgZGF0YTogQmxvYiB9XG4gIGFwaUtleT86IHN0cmluZ1xufSkge1xuICBsZXQgYm9keTogc3RyaW5nIHwgRm9ybURhdGFcbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG5cbiAgY29uc3QgdXJsID0gbmV3IFVSTChvcHRpb25zLmNrYW5VcmwpXG4gIHVybC5wYXRobmFtZSA9IGAvYXBpLzMvYWN0aW9uLyR7b3B0aW9ucy5hY3Rpb259YFxuXG4gIGlmIChvcHRpb25zLmFwaUtleSkge1xuICAgIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IG9wdGlvbnMuYXBpS2V5XG4gIH1cblxuICBpZiAob3B0aW9ucy51cGxvYWQpIHtcbiAgICBib2R5ID0gbmV3IEZvcm1EYXRhKClcbiAgICBib2R5LmFwcGVuZChcInVwbG9hZFwiLCBvcHRpb25zLnVwbG9hZC5kYXRhLCBvcHRpb25zLnVwbG9hZC5uYW1lKVxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucy5wYXlsb2FkKSkge1xuICAgICAgYm9keS5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMucGF5bG9hZClcbiAgICBoZWFkZXJzW1wiQ29udGVudC1UeXBlXCJdID0gXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgfVxuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLnRvU3RyaW5nKCksIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGhlYWRlcnMsXG4gICAgYm9keSxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgY29uc3QgZXJyb3JUZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENLQU4gQVBJIGVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fVxcbiR7ZXJyb3JUZXh0fWAsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgZGF0YSA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIERlc2NyaXB0b3JcbiAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENLQU4gQVBJIGVycm9yOiAke2RhdGEuZXJyb3J9YClcbiAgfVxuXG4gIHJldHVybiBkYXRhLnJlc3VsdCBhcyBUXG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from "./package/index.ts";
2
+ export * from "./resource/index.ts";
3
+ export * from "./schema/index.ts";
4
+ export * from "./plugin.ts";
@@ -0,0 +1,5 @@
1
+ export * from "./package/index.js";
2
+ export * from "./resource/index.js";
3
+ export * from "./schema/index.js";
4
+ export * from "./plugin.js";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW5zL2NrYW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxhQUFhLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9wYWNrYWdlL2luZGV4LnRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL3Jlc291cmNlL2luZGV4LnRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL3NjaGVtYS9pbmRleC50c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9wbHVnaW4udHNcIlxuIl19
@@ -0,0 +1,21 @@
1
+ /**
2
+ * CKAN Organization interface
3
+ */
4
+ export interface CkanOrganization {
5
+ /**
6
+ * Organization identifier
7
+ */
8
+ id: string;
9
+ /**
10
+ * Organization name
11
+ */
12
+ name: string;
13
+ /**
14
+ * Organization title
15
+ */
16
+ title: string;
17
+ /**
18
+ * Organization description
19
+ */
20
+ description: string;
21
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JnYW5pemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGx1Z2lucy9ja2FuL3BhY2thZ2UvT3JnYW5pemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENLQU4gT3JnYW5pemF0aW9uIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENrYW5Pcmdhbml6YXRpb24ge1xuICAvKipcbiAgICogT3JnYW5pemF0aW9uIGlkZW50aWZpZXJcbiAgICovXG4gIGlkOiBzdHJpbmdcblxuICAvKipcbiAgICogT3JnYW5pemF0aW9uIG5hbWVcbiAgICovXG4gIG5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBPcmdhbml6YXRpb24gdGl0bGVcbiAgICovXG4gIHRpdGxlOiBzdHJpbmdcblxuICAvKipcbiAgICogT3JnYW5pemF0aW9uIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nXG59XG4iXX0=
@@ -0,0 +1,76 @@
1
+ import type { CkanResource } from "../resource/index.ts";
2
+ import type { CkanOrganization } from "./Organization.ts";
3
+ import type { CkanTag } from "./Tag.ts";
4
+ /**
5
+ * CKAN Package interface
6
+ */
7
+ export interface CkanPackage {
8
+ /**
9
+ * List of resources
10
+ */
11
+ resources: CkanResource[];
12
+ /**
13
+ * Organization information
14
+ */
15
+ organization?: CkanOrganization;
16
+ /**
17
+ * List of tags
18
+ */
19
+ tags: CkanTag[];
20
+ /**
21
+ * Package identifier
22
+ */
23
+ id: string;
24
+ /**
25
+ * Package name
26
+ */
27
+ name: string;
28
+ /**
29
+ * Package title
30
+ */
31
+ title?: string;
32
+ /**
33
+ * Package notes/description
34
+ */
35
+ notes?: string;
36
+ /**
37
+ * Package version
38
+ */
39
+ version?: string;
40
+ /**
41
+ * License identifier
42
+ */
43
+ license_id?: string;
44
+ /**
45
+ * License title
46
+ */
47
+ license_title?: string;
48
+ /**
49
+ * License URL
50
+ */
51
+ license_url?: string;
52
+ /**
53
+ * Package author
54
+ */
55
+ author?: string;
56
+ /**
57
+ * Package author email
58
+ */
59
+ author_email?: string;
60
+ /**
61
+ * Package maintainer
62
+ */
63
+ maintainer?: string;
64
+ /**
65
+ * Package maintainer email
66
+ */
67
+ maintainer_email?: string;
68
+ /**
69
+ * Metadata creation timestamp
70
+ */
71
+ metadata_created?: string;
72
+ /**
73
+ * Metadata modification timestamp
74
+ */
75
+ metadata_modified?: string;
76
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BsdWdpbnMvY2thbi9wYWNrYWdlL1BhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2thblJlc291cmNlIH0gZnJvbSBcIi4uL3Jlc291cmNlL2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgQ2thbk9yZ2FuaXphdGlvbiB9IGZyb20gXCIuL09yZ2FuaXphdGlvbi50c1wiXG5pbXBvcnQgdHlwZSB7IENrYW5UYWcgfSBmcm9tIFwiLi9UYWcudHNcIlxuXG4vKipcbiAqIENLQU4gUGFja2FnZSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDa2FuUGFja2FnZSB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHJlc291cmNlc1xuICAgKi9cbiAgcmVzb3VyY2VzOiBDa2FuUmVzb3VyY2VbXVxuXG4gIC8qKlxuICAgKiBPcmdhbml6YXRpb24gaW5mb3JtYXRpb25cbiAgICovXG4gIG9yZ2FuaXphdGlvbj86IENrYW5Pcmdhbml6YXRpb25cblxuICAvKipcbiAgICogTGlzdCBvZiB0YWdzXG4gICAqL1xuICB0YWdzOiBDa2FuVGFnW11cblxuICAvKipcbiAgICogUGFja2FnZSBpZGVudGlmaWVyXG4gICAqL1xuICBpZDogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFBhY2thZ2UgbmFtZVxuICAgKi9cbiAgbmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFBhY2thZ2UgdGl0bGVcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFBhY2thZ2Ugbm90ZXMvZGVzY3JpcHRpb25cbiAgICovXG4gIG5vdGVzPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFBhY2thZ2UgdmVyc2lvblxuICAgKi9cbiAgdmVyc2lvbj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBMaWNlbnNlIGlkZW50aWZpZXJcbiAgICovXG4gIGxpY2Vuc2VfaWQ/OiBzdHJpbmdcblxuICAvKipcbiAgICogTGljZW5zZSB0aXRsZVxuICAgKi9cbiAgbGljZW5zZV90aXRsZT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBMaWNlbnNlIFVSTFxuICAgKi9cbiAgbGljZW5zZV91cmw/OiBzdHJpbmdcblxuICAvKipcbiAgICogUGFja2FnZSBhdXRob3JcbiAgICovXG4gIGF1dGhvcj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBQYWNrYWdlIGF1dGhvciBlbWFpbFxuICAgKi9cbiAgYXV0aG9yX2VtYWlsPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFBhY2thZ2UgbWFpbnRhaW5lclxuICAgKi9cbiAgbWFpbnRhaW5lcj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBQYWNrYWdlIG1haW50YWluZXIgZW1haWxcbiAgICovXG4gIG1haW50YWluZXJfZW1haWw/OiBzdHJpbmdcblxuICAvKipcbiAgICogTWV0YWRhdGEgY3JlYXRpb24gdGltZXN0YW1wXG4gICAqL1xuICBtZXRhZGF0YV9jcmVhdGVkPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIG1vZGlmaWNhdGlvbiB0aW1lc3RhbXBcbiAgICovXG4gIG1ldGFkYXRhX21vZGlmaWVkPzogc3RyaW5nXG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ /**
2
+ * CKAN Tag interface
3
+ */
4
+ export interface CkanTag {
5
+ /**
6
+ * Tag identifier
7
+ */
8
+ id: string;
9
+ /**
10
+ * Tag name
11
+ */
12
+ name: string;
13
+ /**
14
+ * Tag display name
15
+ */
16
+ display_name: string;
17
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGx1Z2lucy9ja2FuL3BhY2thZ2UvVGFnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENLQU4gVGFnIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENrYW5UYWcge1xuICAvKipcbiAgICogVGFnIGlkZW50aWZpZXJcbiAgICovXG4gIGlkOiBzdHJpbmdcblxuICAvKipcbiAgICogVGFnIG5hbWVcbiAgICovXG4gIG5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUYWcgZGlzcGxheSBuYW1lXG4gICAqL1xuICBkaXNwbGF5X25hbWU6IHN0cmluZ1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ import type { Package } from "@frictionless-ts/metadata";
2
+ import type { CkanPackage } from "../Package.ts";
3
+ export declare function convertPackageFromCkan(ckanPackage: CkanPackage): Package;
@@ -0,0 +1,63 @@
1
+ import { convertResourceFromCkan } from "../../resource/index.js";
2
+ export function convertPackageFromCkan(ckanPackage) {
3
+ const datapackage = {
4
+ name: ckanPackage.name,
5
+ resources: [],
6
+ };
7
+ if (ckanPackage.title) {
8
+ datapackage.title = ckanPackage.title;
9
+ }
10
+ if (ckanPackage.notes) {
11
+ datapackage.description = ckanPackage.notes;
12
+ }
13
+ if (ckanPackage.version) {
14
+ datapackage.version = ckanPackage.version;
15
+ }
16
+ if (ckanPackage.resources && ckanPackage.resources.length > 0) {
17
+ datapackage.resources = ckanPackage.resources.map(resource => convertResourceFromCkan(resource));
18
+ }
19
+ if (ckanPackage.license_id) {
20
+ const license = {
21
+ name: ckanPackage.license_id,
22
+ };
23
+ if (ckanPackage.license_title) {
24
+ license.title = ckanPackage.license_title;
25
+ }
26
+ if (ckanPackage.license_url) {
27
+ license.path = ckanPackage.license_url;
28
+ }
29
+ datapackage.licenses = [license];
30
+ }
31
+ const contributors = [];
32
+ if (ckanPackage.author) {
33
+ const authorContributor = {
34
+ title: ckanPackage.author,
35
+ role: "author",
36
+ };
37
+ if (ckanPackage.author_email) {
38
+ authorContributor.email = ckanPackage.author_email;
39
+ }
40
+ contributors.push(authorContributor);
41
+ }
42
+ if (ckanPackage.maintainer) {
43
+ const maintainerContributor = {
44
+ title: ckanPackage.maintainer,
45
+ role: "maintainer",
46
+ };
47
+ if (ckanPackage.maintainer_email) {
48
+ maintainerContributor.email = ckanPackage.maintainer_email;
49
+ }
50
+ contributors.push(maintainerContributor);
51
+ }
52
+ if (contributors.length > 0) {
53
+ datapackage.contributors = contributors;
54
+ }
55
+ if (ckanPackage.tags && ckanPackage.tags.length > 0) {
56
+ datapackage.keywords = ckanPackage.tags.map(tag => tag.name);
57
+ }
58
+ if (ckanPackage.metadata_created) {
59
+ datapackage.created = ckanPackage.metadata_created;
60
+ }
61
+ return datapackage;
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUNrYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wbHVnaW5zL2NrYW4vcGFja2FnZS9jb252ZXJ0L2Zyb21Da2FuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBR2pFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxXQUF3QjtJQUM3RCxNQUFNLFdBQVcsR0FBWTtRQUMzQixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7UUFDdEIsU0FBUyxFQUFFLEVBQUU7S0FDZCxDQUFBO0lBRUQsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsV0FBVyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixXQUFXLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUE7SUFDN0MsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLFdBQVcsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQTtJQUMzQyxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsU0FBUyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzlELFdBQVcsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDM0QsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQ2xDLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQVk7WUFDdkIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxVQUFVO1NBQzdCLENBQUE7UUFFRCxJQUFJLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUE7UUFDM0MsQ0FBQztRQUVELElBQUksV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQTtRQUN4QyxDQUFDO1FBRUQsV0FBVyxDQUFDLFFBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBa0IsRUFBRSxDQUFBO0lBRXRDLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLE1BQU0saUJBQWlCLEdBQWdCO1lBQ3JDLEtBQUssRUFBRSxXQUFXLENBQUMsTUFBTTtZQUN6QixJQUFJLEVBQUUsUUFBUTtTQUNmLENBQUE7UUFFRCxJQUFJLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQTtRQUNwRCxDQUFDO1FBRUQsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQixNQUFNLHFCQUFxQixHQUFnQjtZQUN6QyxLQUFLLEVBQUUsV0FBVyxDQUFDLFVBQVU7WUFDN0IsSUFBSSxFQUFFLFlBQVk7U0FDbkIsQ0FBQTtRQUVELElBQUksV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakMscUJBQXFCLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQTtRQUM1RCxDQUFDO1FBRUQsWUFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUIsV0FBVyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7SUFDekMsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxXQUFXLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2pDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFBO0lBQ3BELENBQUM7SUFFRCxPQUFPLFdBQVcsQ0FBQTtBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb250cmlidXRvciwgUGFja2FnZSB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCB0eXBlIHsgTGljZW5zZSB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCB7IGNvbnZlcnRSZXNvdXJjZUZyb21Da2FuIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlL2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgQ2thblBhY2thZ2UgfSBmcm9tIFwiLi4vUGFja2FnZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UGFja2FnZUZyb21Da2FuKGNrYW5QYWNrYWdlOiBDa2FuUGFja2FnZSk6IFBhY2thZ2Uge1xuICBjb25zdCBkYXRhcGFja2FnZTogUGFja2FnZSA9IHtcbiAgICBuYW1lOiBja2FuUGFja2FnZS5uYW1lLFxuICAgIHJlc291cmNlczogW10sXG4gIH1cblxuICBpZiAoY2thblBhY2thZ2UudGl0bGUpIHtcbiAgICBkYXRhcGFja2FnZS50aXRsZSA9IGNrYW5QYWNrYWdlLnRpdGxlXG4gIH1cblxuICBpZiAoY2thblBhY2thZ2Uubm90ZXMpIHtcbiAgICBkYXRhcGFja2FnZS5kZXNjcmlwdGlvbiA9IGNrYW5QYWNrYWdlLm5vdGVzXG4gIH1cblxuICBpZiAoY2thblBhY2thZ2UudmVyc2lvbikge1xuICAgIGRhdGFwYWNrYWdlLnZlcnNpb24gPSBja2FuUGFja2FnZS52ZXJzaW9uXG4gIH1cblxuICBpZiAoY2thblBhY2thZ2UucmVzb3VyY2VzICYmIGNrYW5QYWNrYWdlLnJlc291cmNlcy5sZW5ndGggPiAwKSB7XG4gICAgZGF0YXBhY2thZ2UucmVzb3VyY2VzID0gY2thblBhY2thZ2UucmVzb3VyY2VzLm1hcChyZXNvdXJjZSA9PlxuICAgICAgY29udmVydFJlc291cmNlRnJvbUNrYW4ocmVzb3VyY2UpLFxuICAgIClcbiAgfVxuXG4gIGlmIChja2FuUGFja2FnZS5saWNlbnNlX2lkKSB7XG4gICAgY29uc3QgbGljZW5zZTogTGljZW5zZSA9IHtcbiAgICAgIG5hbWU6IGNrYW5QYWNrYWdlLmxpY2Vuc2VfaWQsXG4gICAgfVxuXG4gICAgaWYgKGNrYW5QYWNrYWdlLmxpY2Vuc2VfdGl0bGUpIHtcbiAgICAgIGxpY2Vuc2UudGl0bGUgPSBja2FuUGFja2FnZS5saWNlbnNlX3RpdGxlXG4gICAgfVxuXG4gICAgaWYgKGNrYW5QYWNrYWdlLmxpY2Vuc2VfdXJsKSB7XG4gICAgICBsaWNlbnNlLnBhdGggPSBja2FuUGFja2FnZS5saWNlbnNlX3VybFxuICAgIH1cblxuICAgIGRhdGFwYWNrYWdlLmxpY2Vuc2VzID0gW2xpY2Vuc2VdXG4gIH1cblxuICBjb25zdCBjb250cmlidXRvcnM6IENvbnRyaWJ1dG9yW10gPSBbXVxuXG4gIGlmIChja2FuUGFja2FnZS5hdXRob3IpIHtcbiAgICBjb25zdCBhdXRob3JDb250cmlidXRvcjogQ29udHJpYnV0b3IgPSB7XG4gICAgICB0aXRsZTogY2thblBhY2thZ2UuYXV0aG9yLFxuICAgICAgcm9sZTogXCJhdXRob3JcIixcbiAgICB9XG5cbiAgICBpZiAoY2thblBhY2thZ2UuYXV0aG9yX2VtYWlsKSB7XG4gICAgICBhdXRob3JDb250cmlidXRvci5lbWFpbCA9IGNrYW5QYWNrYWdlLmF1dGhvcl9lbWFpbFxuICAgIH1cblxuICAgIGNvbnRyaWJ1dG9ycy5wdXNoKGF1dGhvckNvbnRyaWJ1dG9yKVxuICB9XG5cbiAgaWYgKGNrYW5QYWNrYWdlLm1haW50YWluZXIpIHtcbiAgICBjb25zdCBtYWludGFpbmVyQ29udHJpYnV0b3I6IENvbnRyaWJ1dG9yID0ge1xuICAgICAgdGl0bGU6IGNrYW5QYWNrYWdlLm1haW50YWluZXIsXG4gICAgICByb2xlOiBcIm1haW50YWluZXJcIixcbiAgICB9XG5cbiAgICBpZiAoY2thblBhY2thZ2UubWFpbnRhaW5lcl9lbWFpbCkge1xuICAgICAgbWFpbnRhaW5lckNvbnRyaWJ1dG9yLmVtYWlsID0gY2thblBhY2thZ2UubWFpbnRhaW5lcl9lbWFpbFxuICAgIH1cblxuICAgIGNvbnRyaWJ1dG9ycy5wdXNoKG1haW50YWluZXJDb250cmlidXRvcilcbiAgfVxuXG4gIGlmIChjb250cmlidXRvcnMubGVuZ3RoID4gMCkge1xuICAgIGRhdGFwYWNrYWdlLmNvbnRyaWJ1dG9ycyA9IGNvbnRyaWJ1dG9yc1xuICB9XG5cbiAgaWYgKGNrYW5QYWNrYWdlLnRhZ3MgJiYgY2thblBhY2thZ2UudGFncy5sZW5ndGggPiAwKSB7XG4gICAgZGF0YXBhY2thZ2Uua2V5d29yZHMgPSBja2FuUGFja2FnZS50YWdzLm1hcCh0YWcgPT4gdGFnLm5hbWUpXG4gIH1cblxuICBpZiAoY2thblBhY2thZ2UubWV0YWRhdGFfY3JlYXRlZCkge1xuICAgIGRhdGFwYWNrYWdlLmNyZWF0ZWQgPSBja2FuUGFja2FnZS5tZXRhZGF0YV9jcmVhdGVkXG4gIH1cblxuICByZXR1cm4gZGF0YXBhY2thZ2Vcbn1cbiJdfQ==
@@ -0,0 +1,80 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import ckanPackageFixture from "../fixtures/ckan-package.json" with {
3
+ type: "json"
4
+ };
5
+ import { convertPackageFromCkan } from "./fromCkan.js";
6
+ describe("convertPackageFromCkan", () => {
7
+ it("converts a CKAN package to a Frictionless Data Package", () => {
8
+ const ckanPackage = ckanPackageFixture;
9
+ const result = convertPackageFromCkan(ckanPackage);
10
+ expect(result.name).toEqual(ckanPackage.name);
11
+ expect(result.title).toEqual(ckanPackage.title);
12
+ expect(result.description).toEqual(ckanPackage.notes);
13
+ expect(result.version).toEqual(ckanPackage.version);
14
+ expect(result.created).toEqual(ckanPackage.metadata_created);
15
+ expect(result.licenses).toHaveLength(1);
16
+ if (result.licenses && result.licenses.length > 0 && result.licenses[0]) {
17
+ const license = result.licenses[0];
18
+ if (ckanPackage.license_id)
19
+ expect(license.name).toEqual(ckanPackage.license_id);
20
+ if (ckanPackage.license_title)
21
+ expect(license.title).toEqual(ckanPackage.license_title);
22
+ if (ckanPackage.license_url)
23
+ expect(license.path).toEqual(ckanPackage.license_url);
24
+ }
25
+ expect(result.contributors).toHaveLength(2);
26
+ if (result.contributors) {
27
+ const author = result.contributors.find(c => c.role === "author");
28
+ expect(author).toBeTruthy();
29
+ if (author) {
30
+ expect(author.title).toEqual(ckanPackage.author);
31
+ expect(author.email).toEqual(ckanPackage.author_email);
32
+ }
33
+ const maintainer = result.contributors.find(c => c.role === "maintainer");
34
+ expect(maintainer).toBeTruthy();
35
+ if (maintainer) {
36
+ expect(maintainer.title).toEqual(ckanPackage.maintainer);
37
+ expect(maintainer.email).toEqual(ckanPackage.maintainer_email);
38
+ }
39
+ }
40
+ expect(result.keywords).toHaveLength(ckanPackage.tags.length);
41
+ expect(result.keywords).toEqual(ckanPackage.tags.map(tag => tag.name));
42
+ expect(result.resources).toHaveLength(ckanPackage.resources.length);
43
+ const firstCkanResource = ckanPackage.resources[0];
44
+ const firstResource = result.resources[0];
45
+ expect(firstCkanResource).toBeDefined();
46
+ expect(firstResource).toBeDefined();
47
+ if (firstResource && firstCkanResource) {
48
+ expect(firstResource.path).toEqual(firstCkanResource.url);
49
+ expect(firstResource.name).toMatch(/^sample[-_]linked[-_]csv$/);
50
+ expect(firstResource.description).toEqual(firstCkanResource.description);
51
+ expect(firstResource.format).toEqual(firstCkanResource.format?.toLowerCase());
52
+ expect(firstResource.mediatype).toEqual(firstCkanResource.mimetype);
53
+ }
54
+ });
55
+ it("handles empty resources array", () => {
56
+ const ckanPackage = {
57
+ ...ckanPackageFixture,
58
+ resources: [],
59
+ };
60
+ const result = convertPackageFromCkan(ckanPackage);
61
+ expect(result.resources).toEqual([]);
62
+ });
63
+ it("handles undefined optional properties", () => {
64
+ const ckanPackage = {
65
+ resources: [],
66
+ tags: [],
67
+ };
68
+ const result = convertPackageFromCkan(ckanPackage);
69
+ expect(result.name).toBeUndefined();
70
+ expect(result.title).toBeUndefined();
71
+ expect(result.description).toBeUndefined();
72
+ expect(result.version).toBeUndefined();
73
+ expect(result.created).toBeUndefined();
74
+ expect(result.licenses).toBeUndefined();
75
+ expect(result.contributors).toBeUndefined();
76
+ expect(result.keywords).toBeUndefined();
77
+ expect(result.resources).toEqual([]);
78
+ });
79
+ });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUNrYW4uc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BsdWdpbnMvY2thbi9wYWNrYWdlL2NvbnZlcnQvZnJvbUNrYW4uc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFN0MsT0FBTyxrQkFBa0IsTUFBTSwrQkFBK0IsQ0FBQztJQUM3RCxJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUE7QUFDRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFdEQsUUFBUSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtJQUN0QyxFQUFFLENBQUMsd0RBQXdELEVBQUUsR0FBRyxFQUFFO1FBQ2hFLE1BQU0sV0FBVyxHQUFHLGtCQUFpQyxDQUFBO1FBRXJELE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRWxELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNuRCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUU1RCxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN2QyxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xDLElBQUksV0FBVyxDQUFDLFVBQVU7Z0JBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN0RCxJQUFJLFdBQVcsQ0FBQyxhQUFhO2dCQUMzQixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDMUQsSUFBSSxXQUFXLENBQUMsV0FBVztnQkFDekIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3pELENBQUM7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUE7WUFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUNoRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDeEQsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQTtZQUN6RSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7WUFDL0IsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUE7Z0JBQ3hELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1lBQ2hFLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM3RCxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXRFLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFbkUsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFekMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDdkMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRW5DLElBQUksYUFBYSxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDekQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtZQUMvRCxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUN4RSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FDbEMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUN4QyxDQUFBO1lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDckUsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLCtCQUErQixFQUFFLEdBQUcsRUFBRTtRQUN2QyxNQUFNLFdBQVcsR0FBZ0I7WUFDL0IsR0FBSSxrQkFBa0M7WUFDdEMsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFBO1FBRUQsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUE7UUFFbEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDdEMsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1FBQy9DLE1BQU0sV0FBVyxHQUF5QjtZQUN4QyxTQUFTLEVBQUUsRUFBRTtZQUNiLElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLFdBQTBCLENBQUMsQ0FBQTtRQUVqRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3RDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUN2QyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDdkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDdEMsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgdHlwZSB7IENrYW5QYWNrYWdlIH0gZnJvbSBcIi4uL1BhY2thZ2UudHNcIlxuaW1wb3J0IGNrYW5QYWNrYWdlRml4dHVyZSBmcm9tIFwiLi4vZml4dHVyZXMvY2thbi1wYWNrYWdlLmpzb25cIiB3aXRoIHtcbiAgdHlwZTogXCJqc29uXCIsXG59XG5pbXBvcnQgeyBjb252ZXJ0UGFja2FnZUZyb21Da2FuIH0gZnJvbSBcIi4vZnJvbUNrYW4udHNcIlxuXG5kZXNjcmliZShcImNvbnZlcnRQYWNrYWdlRnJvbUNrYW5cIiwgKCkgPT4ge1xuICBpdChcImNvbnZlcnRzIGEgQ0tBTiBwYWNrYWdlIHRvIGEgRnJpY3Rpb25sZXNzIERhdGEgUGFja2FnZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgY2thblBhY2thZ2UgPSBja2FuUGFja2FnZUZpeHR1cmUgYXMgQ2thblBhY2thZ2VcblxuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRQYWNrYWdlRnJvbUNrYW4oY2thblBhY2thZ2UpXG5cbiAgICBleHBlY3QocmVzdWx0Lm5hbWUpLnRvRXF1YWwoY2thblBhY2thZ2UubmFtZSlcbiAgICBleHBlY3QocmVzdWx0LnRpdGxlKS50b0VxdWFsKGNrYW5QYWNrYWdlLnRpdGxlKVxuICAgIGV4cGVjdChyZXN1bHQuZGVzY3JpcHRpb24pLnRvRXF1YWwoY2thblBhY2thZ2Uubm90ZXMpXG4gICAgZXhwZWN0KHJlc3VsdC52ZXJzaW9uKS50b0VxdWFsKGNrYW5QYWNrYWdlLnZlcnNpb24pXG4gICAgZXhwZWN0KHJlc3VsdC5jcmVhdGVkKS50b0VxdWFsKGNrYW5QYWNrYWdlLm1ldGFkYXRhX2NyZWF0ZWQpXG5cbiAgICBleHBlY3QocmVzdWx0LmxpY2Vuc2VzKS50b0hhdmVMZW5ndGgoMSlcbiAgICBpZiAocmVzdWx0LmxpY2Vuc2VzICYmIHJlc3VsdC5saWNlbnNlcy5sZW5ndGggPiAwICYmIHJlc3VsdC5saWNlbnNlc1swXSkge1xuICAgICAgY29uc3QgbGljZW5zZSA9IHJlc3VsdC5saWNlbnNlc1swXVxuICAgICAgaWYgKGNrYW5QYWNrYWdlLmxpY2Vuc2VfaWQpXG4gICAgICAgIGV4cGVjdChsaWNlbnNlLm5hbWUpLnRvRXF1YWwoY2thblBhY2thZ2UubGljZW5zZV9pZClcbiAgICAgIGlmIChja2FuUGFja2FnZS5saWNlbnNlX3RpdGxlKVxuICAgICAgICBleHBlY3QobGljZW5zZS50aXRsZSkudG9FcXVhbChja2FuUGFja2FnZS5saWNlbnNlX3RpdGxlKVxuICAgICAgaWYgKGNrYW5QYWNrYWdlLmxpY2Vuc2VfdXJsKVxuICAgICAgICBleHBlY3QobGljZW5zZS5wYXRoKS50b0VxdWFsKGNrYW5QYWNrYWdlLmxpY2Vuc2VfdXJsKVxuICAgIH1cblxuICAgIGV4cGVjdChyZXN1bHQuY29udHJpYnV0b3JzKS50b0hhdmVMZW5ndGgoMilcbiAgICBpZiAocmVzdWx0LmNvbnRyaWJ1dG9ycykge1xuICAgICAgY29uc3QgYXV0aG9yID0gcmVzdWx0LmNvbnRyaWJ1dG9ycy5maW5kKGMgPT4gYy5yb2xlID09PSBcImF1dGhvclwiKVxuICAgICAgZXhwZWN0KGF1dGhvcikudG9CZVRydXRoeSgpXG4gICAgICBpZiAoYXV0aG9yKSB7XG4gICAgICAgIGV4cGVjdChhdXRob3IudGl0bGUpLnRvRXF1YWwoY2thblBhY2thZ2UuYXV0aG9yKVxuICAgICAgICBleHBlY3QoYXV0aG9yLmVtYWlsKS50b0VxdWFsKGNrYW5QYWNrYWdlLmF1dGhvcl9lbWFpbClcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFpbnRhaW5lciA9IHJlc3VsdC5jb250cmlidXRvcnMuZmluZChjID0+IGMucm9sZSA9PT0gXCJtYWludGFpbmVyXCIpXG4gICAgICBleHBlY3QobWFpbnRhaW5lcikudG9CZVRydXRoeSgpXG4gICAgICBpZiAobWFpbnRhaW5lcikge1xuICAgICAgICBleHBlY3QobWFpbnRhaW5lci50aXRsZSkudG9FcXVhbChja2FuUGFja2FnZS5tYWludGFpbmVyKVxuICAgICAgICBleHBlY3QobWFpbnRhaW5lci5lbWFpbCkudG9FcXVhbChja2FuUGFja2FnZS5tYWludGFpbmVyX2VtYWlsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGV4cGVjdChyZXN1bHQua2V5d29yZHMpLnRvSGF2ZUxlbmd0aChja2FuUGFja2FnZS50YWdzLmxlbmd0aClcbiAgICBleHBlY3QocmVzdWx0LmtleXdvcmRzKS50b0VxdWFsKGNrYW5QYWNrYWdlLnRhZ3MubWFwKHRhZyA9PiB0YWcubmFtZSkpXG5cbiAgICBleHBlY3QocmVzdWx0LnJlc291cmNlcykudG9IYXZlTGVuZ3RoKGNrYW5QYWNrYWdlLnJlc291cmNlcy5sZW5ndGgpXG5cbiAgICBjb25zdCBmaXJzdENrYW5SZXNvdXJjZSA9IGNrYW5QYWNrYWdlLnJlc291cmNlc1swXVxuICAgIGNvbnN0IGZpcnN0UmVzb3VyY2UgPSByZXN1bHQucmVzb3VyY2VzWzBdXG5cbiAgICBleHBlY3QoZmlyc3RDa2FuUmVzb3VyY2UpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QoZmlyc3RSZXNvdXJjZSkudG9CZURlZmluZWQoKVxuXG4gICAgaWYgKGZpcnN0UmVzb3VyY2UgJiYgZmlyc3RDa2FuUmVzb3VyY2UpIHtcbiAgICAgIGV4cGVjdChmaXJzdFJlc291cmNlLnBhdGgpLnRvRXF1YWwoZmlyc3RDa2FuUmVzb3VyY2UudXJsKVxuICAgICAgZXhwZWN0KGZpcnN0UmVzb3VyY2UubmFtZSkudG9NYXRjaCgvXnNhbXBsZVstX11saW5rZWRbLV9dY3N2JC8pXG4gICAgICBleHBlY3QoZmlyc3RSZXNvdXJjZS5kZXNjcmlwdGlvbikudG9FcXVhbChmaXJzdENrYW5SZXNvdXJjZS5kZXNjcmlwdGlvbilcbiAgICAgIGV4cGVjdChmaXJzdFJlc291cmNlLmZvcm1hdCkudG9FcXVhbChcbiAgICAgICAgZmlyc3RDa2FuUmVzb3VyY2UuZm9ybWF0Py50b0xvd2VyQ2FzZSgpLFxuICAgICAgKVxuICAgICAgZXhwZWN0KGZpcnN0UmVzb3VyY2UubWVkaWF0eXBlKS50b0VxdWFsKGZpcnN0Q2thblJlc291cmNlLm1pbWV0eXBlKVxuICAgIH1cbiAgfSlcblxuICBpdChcImhhbmRsZXMgZW1wdHkgcmVzb3VyY2VzIGFycmF5XCIsICgpID0+IHtcbiAgICBjb25zdCBja2FuUGFja2FnZTogQ2thblBhY2thZ2UgPSB7XG4gICAgICAuLi4oY2thblBhY2thZ2VGaXh0dXJlIGFzIENrYW5QYWNrYWdlKSxcbiAgICAgIHJlc291cmNlczogW10sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gY29udmVydFBhY2thZ2VGcm9tQ2thbihja2FuUGFja2FnZSlcblxuICAgIGV4cGVjdChyZXN1bHQucmVzb3VyY2VzKS50b0VxdWFsKFtdKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyB1bmRlZmluZWQgb3B0aW9uYWwgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgY2thblBhY2thZ2U6IFBhcnRpYWw8Q2thblBhY2thZ2U+ID0ge1xuICAgICAgcmVzb3VyY2VzOiBbXSxcbiAgICAgIHRhZ3M6IFtdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRQYWNrYWdlRnJvbUNrYW4oY2thblBhY2thZ2UgYXMgQ2thblBhY2thZ2UpXG5cbiAgICBleHBlY3QocmVzdWx0Lm5hbWUpLnRvQmVVbmRlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQudGl0bGUpLnRvQmVVbmRlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQuZGVzY3JpcHRpb24pLnRvQmVVbmRlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQudmVyc2lvbikudG9CZVVuZGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5jcmVhdGVkKS50b0JlVW5kZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LmxpY2Vuc2VzKS50b0JlVW5kZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LmNvbnRyaWJ1dG9ycykudG9CZVVuZGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5rZXl3b3JkcykudG9CZVVuZGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5yZXNvdXJjZXMpLnRvRXF1YWwoW10pXG4gIH0pXG59KVxuIl19
@@ -0,0 +1,22 @@
1
+ import type { Package } from "@frictionless-ts/metadata";
2
+ import type { CkanResource } from "../../resource/Resource.ts";
3
+ import type { CkanTag } from "../Tag.ts";
4
+ export declare function convertPackageToCkan(dataPackage: Package): {
5
+ organization?: import("../Organization.ts").CkanOrganization | undefined;
6
+ id?: string | undefined;
7
+ name?: string | undefined;
8
+ title?: string | undefined;
9
+ notes?: string | undefined;
10
+ version?: string | undefined;
11
+ license_id?: string | undefined;
12
+ license_title?: string | undefined;
13
+ license_url?: string | undefined;
14
+ author?: string | undefined;
15
+ author_email?: string | undefined;
16
+ maintainer?: string | undefined;
17
+ maintainer_email?: string | undefined;
18
+ metadata_created?: string | undefined;
19
+ metadata_modified?: string | undefined;
20
+ resources: CkanResource[];
21
+ tags: CkanTag[];
22
+ };
@@ -0,0 +1,51 @@
1
+ import { convertResourceToCkan } from "../../resource/index.js";
2
+ export function convertPackageToCkan(dataPackage) {
3
+ const ckanPackage = {
4
+ resources: [],
5
+ tags: [],
6
+ };
7
+ if (dataPackage.name)
8
+ ckanPackage.name = dataPackage.name;
9
+ if (dataPackage.title)
10
+ ckanPackage.title = dataPackage.title;
11
+ if (dataPackage.description)
12
+ ckanPackage.notes = dataPackage.description;
13
+ if (dataPackage.version)
14
+ ckanPackage.version = dataPackage.version;
15
+ if (dataPackage.licenses && dataPackage.licenses.length > 0) {
16
+ const license = dataPackage.licenses[0];
17
+ if (license?.name)
18
+ ckanPackage.license_id = license.name;
19
+ if (license?.title)
20
+ ckanPackage.license_title = license.title;
21
+ if (license?.path)
22
+ ckanPackage.license_url = license.path;
23
+ }
24
+ if (dataPackage.contributors) {
25
+ const author = dataPackage.contributors.find(c => c.role === "author");
26
+ if (author) {
27
+ ckanPackage.author = author.title;
28
+ if (author.email)
29
+ ckanPackage.author_email = author.email;
30
+ }
31
+ const maintainer = dataPackage.contributors.find(c => c.role === "maintainer");
32
+ if (maintainer) {
33
+ ckanPackage.maintainer = maintainer.title;
34
+ if (maintainer.email)
35
+ ckanPackage.maintainer_email = maintainer.email;
36
+ }
37
+ }
38
+ if (dataPackage.resources && dataPackage.resources.length > 0) {
39
+ ckanPackage.resources = dataPackage.resources
40
+ .map(resource => convertResourceToCkan(resource))
41
+ .filter((resource) => resource !== undefined);
42
+ }
43
+ if (dataPackage.keywords && dataPackage.keywords.length > 0) {
44
+ ckanPackage.tags = dataPackage.keywords.map(keyword => ({
45
+ name: keyword,
46
+ display_name: keyword,
47
+ }));
48
+ }
49
+ return ckanPackage;
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9Da2FuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGx1Z2lucy9ja2FuL3BhY2thZ2UvY29udmVydC90b0NrYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFJL0QsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFdBQW9CO0lBQ3ZELE1BQU0sV0FBVyxHQUE0RDtRQUMzRSxTQUFTLEVBQUUsRUFBRTtRQUNiLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQTtJQUVELElBQUksV0FBVyxDQUFDLElBQUk7UUFBRSxXQUFXLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUE7SUFDekQsSUFBSSxXQUFXLENBQUMsS0FBSztRQUFFLFdBQVcsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQTtJQUM1RCxJQUFJLFdBQVcsQ0FBQyxXQUFXO1FBQUUsV0FBVyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFBO0lBQ3hFLElBQUksV0FBVyxDQUFDLE9BQU87UUFBRSxXQUFXLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUE7SUFFbEUsSUFBSSxXQUFXLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFdkMsSUFBSSxPQUFPLEVBQUUsSUFBSTtZQUFFLFdBQVcsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQTtRQUN4RCxJQUFJLE9BQU8sRUFBRSxLQUFLO1lBQUUsV0FBVyxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQzdELElBQUksT0FBTyxFQUFFLElBQUk7WUFBRSxXQUFXLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7SUFDM0QsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQTtRQUN0RSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsV0FBVyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFBO1lBQ2pDLElBQUksTUFBTSxDQUFDLEtBQUs7Z0JBQUUsV0FBVyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFBO1FBQzNELENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDOUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FDN0IsQ0FBQTtRQUNELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUE7WUFDekMsSUFBSSxVQUFVLENBQUMsS0FBSztnQkFBRSxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQTtRQUN2RSxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLFNBQVMsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxXQUFXLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTO2FBQzFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2hELE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBNEIsRUFBRSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQTtJQUMzRSxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVELFdBQVcsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELElBQUksRUFBRSxPQUFPO1lBQ2IsWUFBWSxFQUFFLE9BQU87U0FDdEIsQ0FBQyxDQUFjLENBQUE7SUFDbEIsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhY2thZ2UgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgdHlwZSB7IFNldFJlcXVpcmVkIH0gZnJvbSBcInR5cGUtZmVzdFwiXG5pbXBvcnQgdHlwZSB7IENrYW5SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZS9SZXNvdXJjZS50c1wiXG5pbXBvcnQgeyBjb252ZXJ0UmVzb3VyY2VUb0NrYW4gfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2UvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBDa2FuUGFja2FnZSB9IGZyb20gXCIuLi9QYWNrYWdlLnRzXCJcbmltcG9ydCB0eXBlIHsgQ2thblRhZyB9IGZyb20gXCIuLi9UYWcudHNcIlxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFBhY2thZ2VUb0NrYW4oZGF0YVBhY2thZ2U6IFBhY2thZ2UpIHtcbiAgY29uc3QgY2thblBhY2thZ2U6IFNldFJlcXVpcmVkPFBhcnRpYWw8Q2thblBhY2thZ2U+LCBcInJlc291cmNlc1wiIHwgXCJ0YWdzXCI+ID0ge1xuICAgIHJlc291cmNlczogW10sXG4gICAgdGFnczogW10sXG4gIH1cblxuICBpZiAoZGF0YVBhY2thZ2UubmFtZSkgY2thblBhY2thZ2UubmFtZSA9IGRhdGFQYWNrYWdlLm5hbWVcbiAgaWYgKGRhdGFQYWNrYWdlLnRpdGxlKSBja2FuUGFja2FnZS50aXRsZSA9IGRhdGFQYWNrYWdlLnRpdGxlXG4gIGlmIChkYXRhUGFja2FnZS5kZXNjcmlwdGlvbikgY2thblBhY2thZ2Uubm90ZXMgPSBkYXRhUGFja2FnZS5kZXNjcmlwdGlvblxuICBpZiAoZGF0YVBhY2thZ2UudmVyc2lvbikgY2thblBhY2thZ2UudmVyc2lvbiA9IGRhdGFQYWNrYWdlLnZlcnNpb25cblxuICBpZiAoZGF0YVBhY2thZ2UubGljZW5zZXMgJiYgZGF0YVBhY2thZ2UubGljZW5zZXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGxpY2Vuc2UgPSBkYXRhUGFja2FnZS5saWNlbnNlc1swXVxuXG4gICAgaWYgKGxpY2Vuc2U/Lm5hbWUpIGNrYW5QYWNrYWdlLmxpY2Vuc2VfaWQgPSBsaWNlbnNlLm5hbWVcbiAgICBpZiAobGljZW5zZT8udGl0bGUpIGNrYW5QYWNrYWdlLmxpY2Vuc2VfdGl0bGUgPSBsaWNlbnNlLnRpdGxlXG4gICAgaWYgKGxpY2Vuc2U/LnBhdGgpIGNrYW5QYWNrYWdlLmxpY2Vuc2VfdXJsID0gbGljZW5zZS5wYXRoXG4gIH1cblxuICBpZiAoZGF0YVBhY2thZ2UuY29udHJpYnV0b3JzKSB7XG4gICAgY29uc3QgYXV0aG9yID0gZGF0YVBhY2thZ2UuY29udHJpYnV0b3JzLmZpbmQoYyA9PiBjLnJvbGUgPT09IFwiYXV0aG9yXCIpXG4gICAgaWYgKGF1dGhvcikge1xuICAgICAgY2thblBhY2thZ2UuYXV0aG9yID0gYXV0aG9yLnRpdGxlXG4gICAgICBpZiAoYXV0aG9yLmVtYWlsKSBja2FuUGFja2FnZS5hdXRob3JfZW1haWwgPSBhdXRob3IuZW1haWxcbiAgICB9XG5cbiAgICBjb25zdCBtYWludGFpbmVyID0gZGF0YVBhY2thZ2UuY29udHJpYnV0b3JzLmZpbmQoXG4gICAgICBjID0+IGMucm9sZSA9PT0gXCJtYWludGFpbmVyXCIsXG4gICAgKVxuICAgIGlmIChtYWludGFpbmVyKSB7XG4gICAgICBja2FuUGFja2FnZS5tYWludGFpbmVyID0gbWFpbnRhaW5lci50aXRsZVxuICAgICAgaWYgKG1haW50YWluZXIuZW1haWwpIGNrYW5QYWNrYWdlLm1haW50YWluZXJfZW1haWwgPSBtYWludGFpbmVyLmVtYWlsXG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGFQYWNrYWdlLnJlc291cmNlcyAmJiBkYXRhUGFja2FnZS5yZXNvdXJjZXMubGVuZ3RoID4gMCkge1xuICAgIGNrYW5QYWNrYWdlLnJlc291cmNlcyA9IGRhdGFQYWNrYWdlLnJlc291cmNlc1xuICAgICAgLm1hcChyZXNvdXJjZSA9PiBjb252ZXJ0UmVzb3VyY2VUb0NrYW4ocmVzb3VyY2UpKVxuICAgICAgLmZpbHRlcigocmVzb3VyY2UpOiByZXNvdXJjZSBpcyBDa2FuUmVzb3VyY2UgPT4gcmVzb3VyY2UgIT09IHVuZGVmaW5lZClcbiAgfVxuXG4gIGlmIChkYXRhUGFja2FnZS5rZXl3b3JkcyAmJiBkYXRhUGFja2FnZS5rZXl3b3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgY2thblBhY2thZ2UudGFncyA9IGRhdGFQYWNrYWdlLmtleXdvcmRzLm1hcChrZXl3b3JkID0+ICh7XG4gICAgICBuYW1lOiBrZXl3b3JkLFxuICAgICAgZGlzcGxheV9uYW1lOiBrZXl3b3JkLFxuICAgIH0pKSBhcyBDa2FuVGFnW11cbiAgfVxuXG4gIHJldHVybiBja2FuUGFja2FnZVxufVxuIl19