@arpproject/recrate 0.1.7-test3 → 0.1.7-test6

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 (276) hide show
  1. package/dist/app/App.d.ts +2 -0
  2. package/dist/app/EmbeddedComponent.d.ts +3 -0
  3. package/dist/app/index.d.ts +0 -0
  4. package/dist/app/lookup.d.ts +82 -0
  5. package/dist/crate-builder/CrateManager/contexts.d.ts +6 -0
  6. package/dist/crate-builder/CrateManager/crate-manager-benchmarking.spec.d.ts +1 -0
  7. package/dist/crate-builder/CrateManager/crate-manager-loading-exporting.spec.d.ts +1 -0
  8. package/dist/crate-builder/CrateManager/crate-manager-operations.spec.d.ts +0 -0
  9. package/dist/crate-builder/CrateManager/crate-manager.d.ts +641 -0
  10. package/dist/crate-builder/CrateManager/crate-manager.spec.d.ts +1 -0
  11. package/dist/crate-builder/CrateManager/lib.d.ts +26 -0
  12. package/dist/crate-builder/CrateManager/lib.spec.d.ts +1 -0
  13. package/dist/crate-builder/CrateManager/profile-manager.d.ts +143 -0
  14. package/dist/crate-builder/CrateManager/profile-manager.spec.d.ts +1 -0
  15. package/{src/crate-builder/CrateManager/schema-type-definitions.json → dist/crate-builder/CrateManager/schema-type-definitions.json.d.ts} +4 -1
  16. package/dist/crate-builder/CrateManager/validate-identifier.d.ts +10 -0
  17. package/dist/crate-builder/CrateManager/validate-identifier.spec.d.ts +1 -0
  18. package/dist/crate-builder/RenderEntity/Add.d.ts +26 -0
  19. package/dist/crate-builder/RenderEntity/AddControl.d.ts +14 -0
  20. package/dist/crate-builder/RenderEntity/AddControl.stories.d.ts +29 -0
  21. package/dist/crate-builder/RenderEntity/AutoComplete.d.ts +12 -0
  22. package/dist/crate-builder/RenderEntity/BulkAdd.d.ts +10 -0
  23. package/dist/crate-builder/RenderEntity/DeleteProperty.d.ts +8 -0
  24. package/dist/crate-builder/RenderEntity/DialogAddProperty.d.ts +9 -0
  25. package/dist/crate-builder/RenderEntity/DialogBrowseEntities.d.ts +8 -0
  26. package/dist/crate-builder/RenderEntity/DialogEditContext.d.ts +8 -0
  27. package/dist/crate-builder/RenderEntity/DialogPreviewCrate.d.ts +7 -0
  28. package/dist/crate-builder/RenderEntity/DialogSaveCrateAsTemplate.d.ts +13 -0
  29. package/dist/crate-builder/RenderEntity/DialogSaveEntityTemplate.d.ts +14 -0
  30. package/dist/crate-builder/RenderEntity/DisplayPropertyName.d.ts +8 -0
  31. package/dist/crate-builder/RenderEntity/DisplayPropertyName.stories.d.ts +6 -0
  32. package/dist/crate-builder/RenderEntity/EntityId.d.ts +13 -0
  33. package/dist/crate-builder/RenderEntity/EntityName.d.ts +13 -0
  34. package/dist/crate-builder/RenderEntity/EntityProperty.d.ts +19 -0
  35. package/dist/crate-builder/RenderEntity/EntityPropertyInstance.d.ts +25 -0
  36. package/dist/crate-builder/RenderEntity/EntityType.d.ts +12 -0
  37. package/dist/crate-builder/RenderEntity/ItemLink.d.ts +14 -0
  38. package/dist/crate-builder/RenderEntity/PaginateLinkedEntities.d.ts +23 -0
  39. package/dist/crate-builder/RenderEntity/PaginateLinkedEntities.stories.d.ts +7 -0
  40. package/dist/crate-builder/RenderEntity/PropertyHelp.d.ts +6 -0
  41. package/dist/crate-builder/RenderEntity/RenderControls.d.ts +22 -0
  42. package/dist/crate-builder/RenderEntity/RenderLinkedItem.d.ts +20 -0
  43. package/dist/crate-builder/RenderEntity/RenderPropertyHelp.d.ts +6 -0
  44. package/dist/crate-builder/RenderEntity/RenderReverseConnections.d.ts +16 -0
  45. package/dist/crate-builder/RenderEntity/RenderTypes.d.ts +6 -0
  46. package/dist/crate-builder/RenderEntity/Shell2.d.ts +14 -0
  47. package/dist/crate-builder/RenderEntity/UnlinkEntity.d.ts +14 -0
  48. package/dist/crate-builder/RenderEntity/auto-complete.lib.d.ts +25 -0
  49. package/dist/crate-builder/RenderEntity/keys.d.ts +4 -0
  50. package/dist/crate-builder/RenderEntity/layout.d.ts +14 -0
  51. package/dist/crate-builder/RenderEntity/layout.spec.d.ts +1 -0
  52. package/dist/crate-builder/Shell.d.ts +40 -0
  53. package/dist/crate-builder/editor-state.d.ts +72 -0
  54. package/dist/crate-builder/emotionCache.d.ts +1 -0
  55. package/dist/crate-builder/helpers.d.ts +9 -0
  56. package/dist/crate-builder/i18n.d.ts +2 -0
  57. package/dist/crate-builder/lib/validate-iri.d.ts +6 -0
  58. package/dist/crate-builder/locales/en.d.ts +79 -0
  59. package/dist/crate-builder/locales/hu.d.ts +79 -0
  60. package/dist/crate-builder/primitives/Boolean.d.ts +11 -0
  61. package/dist/crate-builder/primitives/Boolean.stories.d.ts +7 -0
  62. package/dist/crate-builder/primitives/Date.d.ts +11 -0
  63. package/dist/crate-builder/primitives/Date.stories.d.ts +5 -0
  64. package/dist/crate-builder/primitives/DateTime.d.ts +11 -0
  65. package/dist/crate-builder/primitives/DateTime.stories.d.ts +5 -0
  66. package/dist/crate-builder/primitives/Geo.d.ts +12 -0
  67. package/dist/crate-builder/primitives/Geo.stories.d.ts +26 -0
  68. package/dist/crate-builder/primitives/Map.SelectArea.d.ts +9 -0
  69. package/dist/crate-builder/primitives/Map.d.ts +15 -0
  70. package/dist/crate-builder/primitives/Map.stories.d.ts +6 -0
  71. package/dist/crate-builder/primitives/Number.d.ts +16 -0
  72. package/dist/crate-builder/primitives/Number.stories.d.ts +10 -0
  73. package/dist/crate-builder/primitives/Select.d.ts +15 -0
  74. package/dist/crate-builder/primitives/Select.stories.d.ts +9 -0
  75. package/dist/crate-builder/primitives/SelectObject.d.ts +13 -0
  76. package/dist/crate-builder/primitives/SelectObject.stories.d.ts +5 -0
  77. package/dist/crate-builder/primitives/SelectUrl.d.ts +14 -0
  78. package/dist/crate-builder/primitives/SelectUrl.stories.d.ts +7 -0
  79. package/dist/crate-builder/primitives/Text.d.ts +19 -0
  80. package/dist/crate-builder/primitives/Text.stories.d.ts +13 -0
  81. package/dist/crate-builder/primitives/Time.d.ts +11 -0
  82. package/dist/crate-builder/primitives/Time.stories.d.ts +7 -0
  83. package/dist/crate-builder/primitives/Url.d.ts +11 -0
  84. package/dist/crate-builder/primitives/Url.stories.d.ts +7 -0
  85. package/dist/crate-builder/primitives/Value.d.ts +7 -0
  86. package/dist/crate-builder/primitives/Value.stories.d.ts +7 -0
  87. package/dist/crate-builder/primitives/date-libs.d.ts +1 -0
  88. package/dist/crate-builder/property-definitions.d.ts +78 -0
  89. package/dist/crate-builder/store.d.ts +8 -0
  90. package/dist/index.d.ts +5 -0
  91. package/dist/recrate.css +1896 -0
  92. package/dist/recrate.es.js +38508 -0
  93. package/dist/types.d.ts +42 -0
  94. package/package.json +31 -28
  95. package/.eslintrc.json +0 -37
  96. package/.storybook/main.ts +0 -40
  97. package/.storybook/preview.tsx +0 -46
  98. package/babel.config.json +0 -5
  99. package/docker-compose.yml +0 -30
  100. package/docs/.nojekyll +0 -1
  101. package/docs/assets/highlight.css +0 -99
  102. package/docs/assets/icons.js +0 -18
  103. package/docs/assets/icons.svg +0 -1
  104. package/docs/assets/main.js +0 -60
  105. package/docs/assets/navigation.js +0 -1
  106. package/docs/assets/search.js +0 -1
  107. package/docs/assets/style.css +0 -1448
  108. package/docs/classes/src_crate_builder_CrateManager_crate_manager.CrateManager.html +0 -240
  109. package/docs/classes/src_crate_builder_CrateManager_profile_manager.ProfileManager.html +0 -42
  110. package/docs/classes/src_crate_builder_editor_state.EditorState.html +0 -28
  111. package/docs/classes/src_crate_builder_types.CrateManagerType.html +0 -57
  112. package/docs/classes/src_crate_builder_types.ProfileManagerType.html +0 -13
  113. package/docs/functions/src_crate_builder_CrateManager_lib.isURL.html +0 -2
  114. package/docs/functions/src_crate_builder_CrateManager_lib.mintNewCrate.html +0 -3
  115. package/docs/functions/src_crate_builder_CrateManager_lib.normalise.html +0 -5
  116. package/docs/functions/src_crate_builder_CrateManager_lib.normaliseEntityType.html +0 -1
  117. package/docs/index.html +0 -58
  118. package/docs/interfaces/src_crate_builder_types.NormalisedCrate.html +0 -3
  119. package/docs/interfaces/src_crate_builder_types.NormalisedEntityDefinition.html +0 -4
  120. package/docs/interfaces/src_crate_builder_types.NormalisedProfile.html +0 -9
  121. package/docs/interfaces/src_crate_builder_types.ProfileLayout.html +0 -2
  122. package/docs/interfaces/src_crate_builder_types.ProfileLayoutGroup.html +0 -9
  123. package/docs/interfaces/src_crate_builder_types.UnverifiedCrate.html +0 -3
  124. package/docs/interfaces/src_crate_builder_types.UnverifiedEntityDefinition.html +0 -4
  125. package/docs/modules/src_crate_builder_CrateManager_crate_manager.html +0 -2
  126. package/docs/modules/src_crate_builder_CrateManager_lib.html +0 -6
  127. package/docs/modules/src_crate_builder_CrateManager_profile_manager.html +0 -2
  128. package/docs/modules/src_crate_builder_editor_state.html +0 -2
  129. package/docs/modules/src_crate_builder_types.html +0 -16
  130. package/docs/types/src_crate_builder_types.EntityReference.html +0 -1
  131. package/docs/types/src_crate_builder_types.NormalisedContext.html +0 -1
  132. package/docs/types/src_crate_builder_types.PrimitiveType.html +0 -1
  133. package/docs/types/src_crate_builder_types.ProfileAssociation.html +0 -1
  134. package/docs/types/src_crate_builder_types.ProfileInput.html +0 -1
  135. package/docs/types/src_crate_builder_types.UnverifiedContext.html +0 -1
  136. package/docs/variables/src_crate_builder_CrateManager_lib.urlProtocols.html +0 -1
  137. package/index.html +0 -13
  138. package/load-data-packs.cjs +0 -38
  139. package/postcss.config.cjs +0 -6
  140. package/react-app-env.d.ts +0 -1
  141. package/rollup.config.js +0 -26
  142. package/src/app/App.tsx +0 -13
  143. package/src/app/EmbeddedComponent.tsx +0 -432
  144. package/src/app/index.html +0 -20
  145. package/src/app/index.tsx +0 -19
  146. package/src/app/lookup.ts +0 -141
  147. package/src/app/override-styles.css +0 -96
  148. package/src/crate-builder/CrateManager/contexts/1.1-context.jsonld +0 -2660
  149. package/src/crate-builder/CrateManager/contexts/1.2-DRAFT-context.jsonld +0 -2918
  150. package/src/crate-builder/CrateManager/contexts.ts +0 -42
  151. package/src/crate-builder/CrateManager/crate-manager-benchmarking.spec.ts +0 -31
  152. package/src/crate-builder/CrateManager/crate-manager-loading-exporting.spec.ts +0 -431
  153. package/src/crate-builder/CrateManager/crate-manager-operations.spec.ts +0 -298
  154. package/src/crate-builder/CrateManager/crate-manager.spec.ts +0 -2336
  155. package/src/crate-builder/CrateManager/crate-manager.ts +0 -2111
  156. package/src/crate-builder/CrateManager/lib.spec.ts +0 -133
  157. package/src/crate-builder/CrateManager/lib.ts +0 -170
  158. package/src/crate-builder/CrateManager/profile-manager.spec.ts +0 -593
  159. package/src/crate-builder/CrateManager/profile-manager.ts +0 -367
  160. package/src/crate-builder/CrateManager/validate-identifier.spec.ts +0 -82
  161. package/src/crate-builder/CrateManager/validate-identifier.ts +0 -65
  162. package/src/crate-builder/RenderEntity/Add.tsx +0 -249
  163. package/src/crate-builder/RenderEntity/AddControl.stories.tsx +0 -126
  164. package/src/crate-builder/RenderEntity/AddControl.tsx +0 -84
  165. package/src/crate-builder/RenderEntity/AutoComplete.tsx +0 -215
  166. package/src/crate-builder/RenderEntity/BulkAdd.tsx +0 -136
  167. package/src/crate-builder/RenderEntity/DeleteProperty.tsx +0 -33
  168. package/src/crate-builder/RenderEntity/DialogAddProperty.tsx +0 -83
  169. package/src/crate-builder/RenderEntity/DialogBrowseEntities.tsx +0 -136
  170. package/src/crate-builder/RenderEntity/DialogEditContext.tsx +0 -107
  171. package/src/crate-builder/RenderEntity/DialogPreviewCrate.tsx +0 -54
  172. package/src/crate-builder/RenderEntity/DialogSaveCrateAsTemplate.tsx +0 -65
  173. package/src/crate-builder/RenderEntity/DialogSaveEntityTemplate.tsx +0 -87
  174. package/src/crate-builder/RenderEntity/DisplayPropertyName.stories.tsx +0 -30
  175. package/src/crate-builder/RenderEntity/DisplayPropertyName.tsx +0 -21
  176. package/src/crate-builder/RenderEntity/EntityId.tsx +0 -75
  177. package/src/crate-builder/RenderEntity/EntityName.tsx +0 -49
  178. package/src/crate-builder/RenderEntity/EntityProperty.tsx +0 -188
  179. package/src/crate-builder/RenderEntity/EntityPropertyInstance.tsx +0 -255
  180. package/src/crate-builder/RenderEntity/EntityType.tsx +0 -95
  181. package/src/crate-builder/RenderEntity/ItemLink.tsx +0 -37
  182. package/src/crate-builder/RenderEntity/PaginateLinkedEntities.stories.tsx +0 -43
  183. package/src/crate-builder/RenderEntity/PaginateLinkedEntities.tsx +0 -141
  184. package/src/crate-builder/RenderEntity/PropertyHelp.tsx +0 -39
  185. package/src/crate-builder/RenderEntity/RenderControls.tsx +0 -278
  186. package/src/crate-builder/RenderEntity/RenderLinkedItem.tsx +0 -139
  187. package/src/crate-builder/RenderEntity/RenderPropertyHelp.tsx +0 -41
  188. package/src/crate-builder/RenderEntity/RenderReverseConnections.tsx +0 -150
  189. package/src/crate-builder/RenderEntity/RenderTypes.tsx +0 -102
  190. package/src/crate-builder/RenderEntity/Shell2.tsx +0 -576
  191. package/src/crate-builder/RenderEntity/UnlinkEntity.tsx +0 -30
  192. package/src/crate-builder/RenderEntity/auto-complete.lib.ts +0 -184
  193. package/src/crate-builder/RenderEntity/keys.ts +0 -4
  194. package/src/crate-builder/RenderEntity/layout.spec.js +0 -593
  195. package/src/crate-builder/RenderEntity/layout.ts +0 -220
  196. package/src/crate-builder/Shell.tsx +0 -337
  197. package/src/crate-builder/component.css +0 -65
  198. package/src/crate-builder/editor-state.ts +0 -114
  199. package/src/crate-builder/emotionCache.ts +0 -8
  200. package/src/crate-builder/helpers.ts +0 -16
  201. package/src/crate-builder/i18n.ts +0 -22
  202. package/src/crate-builder/lib/validate-iri.ts +0 -57
  203. package/src/crate-builder/locales/en.js +0 -149
  204. package/src/crate-builder/locales/hu.js +0 -147
  205. package/src/crate-builder/primitives/Boolean.stories.tsx +0 -33
  206. package/src/crate-builder/primitives/Boolean.tsx +0 -67
  207. package/src/crate-builder/primitives/Date.stories.tsx +0 -32
  208. package/src/crate-builder/primitives/Date.tsx +0 -58
  209. package/src/crate-builder/primitives/DateTime.stories.tsx +0 -32
  210. package/src/crate-builder/primitives/DateTime.tsx +0 -64
  211. package/src/crate-builder/primitives/Geo.stories.tsx +0 -57
  212. package/src/crate-builder/primitives/Geo.tsx +0 -225
  213. package/src/crate-builder/primitives/Map.SelectArea.js +0 -359
  214. package/src/crate-builder/primitives/Map.stories.tsx +0 -61
  215. package/src/crate-builder/primitives/Map.tsx +0 -124
  216. package/src/crate-builder/primitives/Number.stories.tsx +0 -74
  217. package/src/crate-builder/primitives/Number.tsx +0 -166
  218. package/src/crate-builder/primitives/Select.stories.tsx +0 -66
  219. package/src/crate-builder/primitives/Select.tsx +0 -121
  220. package/src/crate-builder/primitives/SelectObject.stories.tsx +0 -29
  221. package/src/crate-builder/primitives/SelectObject.tsx +0 -105
  222. package/src/crate-builder/primitives/SelectUrl.stories.tsx +0 -42
  223. package/src/crate-builder/primitives/SelectUrl.tsx +0 -110
  224. package/src/crate-builder/primitives/Text.stories.tsx +0 -106
  225. package/src/crate-builder/primitives/Text.tsx +0 -197
  226. package/src/crate-builder/primitives/Time.stories.tsx +0 -38
  227. package/src/crate-builder/primitives/Time.tsx +0 -71
  228. package/src/crate-builder/primitives/Url.stories.tsx +0 -43
  229. package/src/crate-builder/primitives/Url.tsx +0 -75
  230. package/src/crate-builder/primitives/Value.stories.tsx +0 -37
  231. package/src/crate-builder/primitives/Value.tsx +0 -30
  232. package/src/crate-builder/primitives/date-libs.ts +0 -12
  233. package/src/crate-builder/profile-schema.json +0 -145
  234. package/src/crate-builder/property-definitions.ts +0 -78
  235. package/src/crate-builder/recrate.css +0 -3
  236. package/src/crate-builder/store.ts +0 -14
  237. package/src/crate-builder/tailwind.css +0 -5
  238. package/src/crate-builder/types.d.ts +0 -318
  239. package/src/examples/collection/collections-entity-example.json +0 -131
  240. package/src/examples/collection/crate-builder-entity-example.json +0 -33
  241. package/src/examples/item/complex-collection/ro-crate-metadata.json +0 -174
  242. package/src/examples/item/complex-item/ro-crate-metadata.json +0 -769
  243. package/src/examples/item/crate-with-language.json +0 -38
  244. package/src/examples/item/empty/ro-crate-metadata.json +0 -20
  245. package/src/examples/item/item-with-relationship-and-action/ro-crate-metadata.json +0 -66
  246. package/src/examples/item/large-crate/ro-crate-metadata.json +0 -5762
  247. package/src/examples/item/multiple-types/ro-crate-metadata.json +0 -20
  248. package/src/examples/item/ridiculously-big-collection/ro-crate-metadata.json +0 -162977
  249. package/src/examples/profile/aroma.complex.profile.json +0 -11098
  250. package/src/examples/profile/aroma.profile.json +0 -9158
  251. package/src/examples/profile/nyingarn-item-profile.json +0 -426
  252. package/src/examples/profile/profile-to-test-inverse-associations.json +0 -73
  253. package/src/examples/profile/profile-to-test-multiple-types.json +0 -31
  254. package/src/examples/profile/profile-with-all-primitives-and-groups.json +0 -207
  255. package/src/examples/profile/profile-with-all-primitives.json +0 -244
  256. package/src/examples/profile/profile-with-constraints.json +0 -446
  257. package/src/examples/profile/profile-with-resolve.json +0 -57
  258. package/src/examples/profile/vocabulary-creation-profile.json +0 -231
  259. package/src/images.d.ts +0 -5
  260. package/src/index.ts +0 -12
  261. package/src/types.ts +0 -104
  262. package/tailwind.config.js +0 -21
  263. package/tsconfig.app.json +0 -31
  264. package/tsconfig.json +0 -26
  265. package/typedoc.json +0 -11
  266. package/update-deps.sh +0 -4
  267. package/vite-env.d.ts +0 -1
  268. package/vite.config.ts +0 -104
  269. /package/{public → dist}/favicon.ico +0 -0
  270. /package/{public → dist}/index.html +0 -0
  271. /package/{public → dist}/logo192.png +0 -0
  272. /package/{public → dist}/logo512.png +0 -0
  273. /package/{public → dist}/manifest.json +0 -0
  274. /package/{public → dist}/marker-icon.png +0 -0
  275. /package/{public → dist}/marker-shadow.png +0 -0
  276. /package/{public → dist}/robots.txt +0 -0
@@ -1,133 +0,0 @@
1
- import { describe, expect, test } from "vitest";
2
- import { isURL, normaliseEntityType, normalise } from "./lib";
3
-
4
- describe("Test urls are correctly identified", () => {
5
- test(`expect fail- ''`, () => {
6
- let url = undefined;
7
- expect(isURL(url)).toBeFalsy;
8
- });
9
-
10
- test(`expect fail - 3`, () => {
11
- expect(isURL(3)).toBeFalsy;
12
- });
13
- test(`expect fail - true`, () => {
14
- expect(isURL(true)).toBeFalsy;
15
- });
16
- test(`expect fail - data://server.name`, () => {
17
- expect(isURL("data://server.name")).toBeFalsy;
18
- });
19
- test(`expect pass - http://schema.org/person`, () => {
20
- expect(isURL("http://schema.org/person")).toBeTruthy;
21
- });
22
- test(`expect pass - https://schema.org/person`, () => {
23
- expect(isURL("https://schema.org/person")).toBeTruthy;
24
- });
25
- test(`expect pass - ftp://server.name`, () => {
26
- expect(isURL("ftp://server.name")).toBeTruthy;
27
- });
28
- test(`expect pass - ftps://server.name`, () => {
29
- expect(isURL("ftps://server.name")).toBeTruthy;
30
- });
31
- test(`arcp://uuid,32a423d6-52ab-47e3-a9cd-54f418a48571/doc.html`, () => {
32
- expect(isURL("arcp://uuid,32a423d6-52ab-47e3-a9cd-54f418a48571/doc.html")).toBeTruthy;
33
- });
34
- test(`arcp://uuid,b7749d0b-0e47-5fc4-999d-f154abe68065/pics/`, () => {
35
- expect(isURL("arcp://uuid,b7749d0b-0e47-5fc4-999d-f154abe68065/pics/")).toBeTruthy;
36
- });
37
- test(`arcp://ni,sha-256;F-34D4TUeOfG0selz7REKRDo4XePkewPeQYtjL3vQs0/`, () => {
38
- expect(isURL("arcp://ni,sha-256;F-34D4TUeOfG0selz7REKRDo4XePkewPeQYtjL3vQs0/")).toBeTruthy;
39
- });
40
- test(`arcp://name,gallery.example.org/`, () => {
41
- expect(isURL("arcp://name,gallery.example.org/")).toBeTruthy;
42
- });
43
- });
44
-
45
- describe("Test normalising an entity type", () => {
46
- test(`no type defined - @id = ./`, () => {
47
- let entity = { "@id": "./" };
48
- expect(normaliseEntityType({ entity })).toMatchObject(["Thing"]);
49
- });
50
- test(`no type defined - @id = http://schema.org/person`, () => {
51
- let entity = { "@id": "http://schema.org/person" };
52
- expect(normaliseEntityType({ entity })).toMatchObject(["URL"]);
53
- });
54
- test(`type is boolean`, () => {
55
- let entity = { "@id": "http://schema.org/person", "@type": true };
56
- expect(normaliseEntityType({ entity })).toMatchObject(["true"]);
57
- });
58
- test(`type is number`, () => {
59
- let entity = { "@id": "http://schema.org/person", "@type": 3 };
60
- expect(normaliseEntityType({ entity })).toMatchObject(["3"]);
61
- });
62
- test(`type is string - 'Dataset'`, () => {
63
- let entity = { "@id": "http://schema.org/person", "@type": "Dataset" };
64
- expect(normaliseEntityType({ entity })).toMatchObject(["Dataset"]);
65
- });
66
- test(`type is string - 'Dataset, Collection'`, () => {
67
- let entity = { "@id": "http://schema.org/person", "@type": "Dataset,Collection" };
68
- expect(normaliseEntityType({ entity })).toMatchObject(["Dataset", "Collection"]);
69
- });
70
- });
71
-
72
- describe("Test normalising an entity", () => {
73
- test(`reject bad @type`, () => {
74
- try {
75
- // @ts-expect-error: Intentionally passing incorrect type for testing
76
- normalise({ "@type": {} }, 1);
77
- } catch (error) {
78
- expect((error as Error).message).toEqual(
79
- `'@type' property must be a string or an array or not defined at all`
80
- );
81
- }
82
- });
83
- test(`reject bad @id`, () => {
84
- try {
85
- // @ts-expect-error: Intentionally passing incorrect type for testing
86
- normalise({ "@id": {} }, 1);
87
- } catch (error) {
88
- expect((error as Error).message).toEqual(
89
- `'@id' property must be a string or not defined at all`
90
- );
91
- }
92
-
93
- try {
94
- // @ts-expect-error: Intentionally passing incorrect type for testing
95
- normalise({ "@id": 3 }, 1);
96
- } catch (error) {
97
- expect((error as Error).message).toEqual(
98
- `'@id' property must be a string or not defined at all`
99
- );
100
- }
101
- });
102
- test(`reject if @type not defined`, () => {
103
- let entity = { "@id": "./" };
104
- expect(normalise(entity, 1)).toBeFalsy;
105
- });
106
-
107
- test(`no @id set`, () => {
108
- let entity = { "@type": "Dataset" };
109
- // console.log(normalise(entity, 1));
110
- expect(normalise(entity, 1)).toEqual({ "@type": ["Dataset"], "@id": "#e1/", name: "e1/" });
111
- });
112
-
113
- test(`Dataset entity`, () => {
114
- let entity = { "@id": "somewhere", "@type": "Dataset" };
115
- // console.log(normalise(entity, 1));
116
- expect(normalise(entity, 1)).toEqual({
117
- "@type": ["Dataset"],
118
- "@id": "somewhere/",
119
- name: "somewhere/",
120
- });
121
- });
122
-
123
- test(`Entity with properties containing numbers`, () => {
124
- let entity = { "@id": "somewhere", "@type": "Dataset", name: "something", pid: 3 };
125
- // console.log(normalise(entity, 1));
126
- expect(normalise(entity, 1)).toEqual({
127
- "@type": ["Dataset"],
128
- "@id": "somewhere/",
129
- name: "something",
130
- pid: [3],
131
- });
132
- });
133
- });
@@ -1,170 +0,0 @@
1
- import isArray from "lodash/isArray.js";
2
- import isNumber from "lodash/isNumber.js";
3
- import isBoolean from "lodash/isBoolean.js";
4
- import isString from "lodash/isString.js";
5
- import isUndefined from "lodash/isUndefined.js";
6
- import isNull from "lodash/isNull.js";
7
- import { isURL as validatorIsURL } from "validator";
8
- import { validateId } from "./validate-identifier";
9
- import type { UnverifiedEntityDefinition, NormalisedEntityDefinition } from "../types.js";
10
- import { isEmpty, isObject } from "lodash";
11
-
12
- export const urlProtocols = ["http", "https", "ftp", "ftps"];
13
-
14
- /**
15
- *
16
- * @param {string} value - string to check as a URL: checks 'http','https','ftp', 'arcp'
17
- */
18
- export function isURL(value: string | number | boolean | undefined | null): boolean {
19
- if (!value) return false;
20
- if (isNumber(value)) return false;
21
- if (isBoolean(value)) return false;
22
- if (isArray(value)) return false;
23
- if (value.match(/arcp:\/\/name,.*/)) return true;
24
- if (value.match(/arcp:\/\/uuid,.*/)) return true;
25
- if (value.match(/arcp:\/\/ni,sha-256;,.*/)) return true;
26
- return validatorIsURL(value, {
27
- require_protocol: true,
28
- protocols: urlProtocols,
29
- });
30
- }
31
-
32
- /**
33
- * This method normalises an entity. It checks that the '@type' is sensible, '@id' is valid and sets the name to the '@id' if not set
34
- *
35
- * @param {Object} entity - an entity to normalise
36
- * @param {string} i - if an id is not defined, then it will be set to #e${i}
37
- *
38
- * @returns the entity ready for use
39
- */
40
- export function normalise(
41
- entity: UnverifiedEntityDefinition,
42
- i: number
43
- ): NormalisedEntityDefinition {
44
- if (!isString(entity["@type"]) && !isArray(entity["@type"]) && !isUndefined(entity["@type"])) {
45
- throw new Error(`'@type' property must be a string or an array or not defined at all`);
46
- }
47
- if (!isString(entity["@id"]) && !isUndefined(entity["@id"] && !isNull(entity["@id"]))) {
48
- throw new Error(`'@id' property must be a string or not defined at all`);
49
- }
50
-
51
- const normalisedEntity = {
52
- "@id": "",
53
- "@type": "",
54
- name: "",
55
- } as any as NormalisedEntityDefinition;
56
-
57
- if (isUndefined(entity["@id"]) || isNull(entity["@id"])) {
58
- // set it to the generated id
59
- normalisedEntity["@id"] = `#e${i}`;
60
- } else {
61
- normalisedEntity["@id"] = isEncoded(entity["@id"])
62
- ? entity["@id"]
63
- : encodeURI(entity["@id"]);
64
- }
65
-
66
- // normalise the entity['@type']
67
- normalisedEntity["@type"] = normaliseEntityType({ entity });
68
-
69
- // if it's a dataset, ensure the @id ends with /
70
- if (
71
- normalisedEntity["@type"].includes("Dataset") &&
72
- normalisedEntity["@id"].slice(-1) !== "/"
73
- ) {
74
- normalisedEntity["@id"] = `${normalisedEntity["@id"]}/`;
75
- }
76
-
77
- // there is an @id - is it valid?
78
- let { isValid, message } = validateId({
79
- id: normalisedEntity["@id"],
80
- type: normalisedEntity["@type"],
81
- });
82
- if (
83
- !isValid &&
84
- message ===
85
- "The identifier is not valid according to the RO Crate spec nor is it a valid IRI."
86
- ) {
87
- // set the id to an internal reference
88
- normalisedEntity["@id"] = `#${normalisedEntity["@id"]}`;
89
- }
90
-
91
- // is there a name?
92
- normalisedEntity.name = entity.name ? entity.name : normalisedEntity["@id"].replace(/^#/, "");
93
-
94
- // if the name is an array join it back into a string
95
- if (isArray(normalisedEntity.name)) normalisedEntity.name = normalisedEntity.name.join(" ");
96
-
97
- // set all properties other than core prop's to array
98
- // and remove any rubbish: undefined, null and empty
99
- for (let property of Object.keys(entity)) {
100
- if (["@id", "@type", "name", "@reverse"].includes(property)) continue;
101
-
102
- // set property data as array
103
- let propertyData = Array.isArray(entity[property]) ? entity[property] : [entity[property]];
104
-
105
- // iterate over the property data
106
- (normalisedEntity as any)[property] = propertyData.filter((entry) => {
107
- // remove rubbish
108
- return (
109
- !isUndefined(entry) &&
110
- !isNull(entry) &&
111
- !(isObject(entry) && isEmpty(entry)) &&
112
- !(isString(entry) && isEmpty(entry))
113
- );
114
- });
115
- if (!normalisedEntity[property].length) delete normalisedEntity[property];
116
- }
117
-
118
- return normalisedEntity;
119
- }
120
-
121
- export function normaliseEntityType({ entity }: { entity: UnverifiedEntityDefinition }): string[] {
122
- let type: string[];
123
-
124
- if (!entity["@type"]) {
125
- type = isURL(entity["@id"]) ? ["URL"] : ["Thing"];
126
- } else if (isArray(entity["@type"])) {
127
- type = entity["@type"].map((t) => "" + t);
128
- } else if (isBoolean(entity["@type"]) || isNumber(entity["@type"])) {
129
- type = ["" + entity["@type"]];
130
- } else if (isString(entity["@type"])) {
131
- type = entity["@type"].split(",").map((t) => t.trim());
132
- } else {
133
- // Handle any other unexpected cases
134
- type = ["Thing"];
135
- }
136
-
137
- return type;
138
- }
139
-
140
- /**
141
- *
142
- * Mint an empty RO-Crate that conforms to the spec
143
- *
144
- * @returns a skeleton crate ready to be used
145
- */
146
- export function mintNewCrate(): {} {
147
- return {
148
- "@context": "https://w3id.org/ro/crate/1.1/context",
149
- "@graph": [
150
- {
151
- "@type": "CreativeWork",
152
- "@id": "ro-crate-metadata.json",
153
- about: { "@id": "./" },
154
- conformsTo: { "@id": "https://w3id.org/ro/crate/1.1" },
155
- },
156
-
157
- {
158
- "@id": "./",
159
- "@type": "Dataset",
160
- name: "My Research Object Crate",
161
- },
162
- ],
163
- };
164
- }
165
-
166
- function isEncoded(uri: string) {
167
- uri = uri || "";
168
-
169
- return uri !== decodeURIComponent(uri);
170
- }