@arpproject/recrate 0.1.7-test5 → 0.1.7-test7
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.
- package/dist/app/App.d.ts +2 -0
- package/dist/app/EmbeddedComponent.d.ts +3 -0
- package/dist/app/index.d.ts +0 -0
- package/dist/app/lookup.d.ts +82 -0
- package/dist/crate-builder/CrateManager/contexts.d.ts +6 -0
- package/dist/crate-builder/CrateManager/crate-manager-benchmarking.spec.d.ts +1 -0
- package/dist/crate-builder/CrateManager/crate-manager-loading-exporting.spec.d.ts +1 -0
- package/dist/crate-builder/CrateManager/crate-manager-operations.spec.d.ts +0 -0
- package/dist/crate-builder/CrateManager/crate-manager.d.ts +641 -0
- package/dist/crate-builder/CrateManager/crate-manager.spec.d.ts +1 -0
- package/dist/crate-builder/CrateManager/lib.d.ts +26 -0
- package/dist/crate-builder/CrateManager/lib.spec.d.ts +1 -0
- package/dist/crate-builder/CrateManager/profile-manager.d.ts +143 -0
- package/dist/crate-builder/CrateManager/profile-manager.spec.d.ts +1 -0
- package/{src/crate-builder/CrateManager/schema-type-definitions.json → dist/crate-builder/CrateManager/schema-type-definitions.json.d.ts} +4 -1
- package/dist/crate-builder/CrateManager/validate-identifier.d.ts +10 -0
- package/dist/crate-builder/CrateManager/validate-identifier.spec.d.ts +1 -0
- package/dist/crate-builder/RenderEntity/Add.d.ts +26 -0
- package/dist/crate-builder/RenderEntity/AddControl.d.ts +14 -0
- package/dist/crate-builder/RenderEntity/AddControl.stories.d.ts +29 -0
- package/dist/crate-builder/RenderEntity/AutoComplete.d.ts +12 -0
- package/dist/crate-builder/RenderEntity/BulkAdd.d.ts +10 -0
- package/dist/crate-builder/RenderEntity/DeleteProperty.d.ts +8 -0
- package/dist/crate-builder/RenderEntity/DialogAddProperty.d.ts +9 -0
- package/dist/crate-builder/RenderEntity/DialogBrowseEntities.d.ts +8 -0
- package/dist/crate-builder/RenderEntity/DialogEditContext.d.ts +8 -0
- package/dist/crate-builder/RenderEntity/DialogPreviewCrate.d.ts +7 -0
- package/dist/crate-builder/RenderEntity/DialogSaveCrateAsTemplate.d.ts +13 -0
- package/dist/crate-builder/RenderEntity/DialogSaveEntityTemplate.d.ts +14 -0
- package/dist/crate-builder/RenderEntity/DisplayPropertyName.d.ts +8 -0
- package/dist/crate-builder/RenderEntity/DisplayPropertyName.stories.d.ts +6 -0
- package/dist/crate-builder/RenderEntity/EntityId.d.ts +13 -0
- package/dist/crate-builder/RenderEntity/EntityName.d.ts +13 -0
- package/dist/crate-builder/RenderEntity/EntityProperty.d.ts +19 -0
- package/dist/crate-builder/RenderEntity/EntityPropertyInstance.d.ts +25 -0
- package/dist/crate-builder/RenderEntity/EntityType.d.ts +12 -0
- package/dist/crate-builder/RenderEntity/ItemLink.d.ts +14 -0
- package/dist/crate-builder/RenderEntity/PaginateLinkedEntities.d.ts +23 -0
- package/dist/crate-builder/RenderEntity/PaginateLinkedEntities.stories.d.ts +7 -0
- package/dist/crate-builder/RenderEntity/PropertyHelp.d.ts +6 -0
- package/dist/crate-builder/RenderEntity/RenderControls.d.ts +22 -0
- package/dist/crate-builder/RenderEntity/RenderLinkedItem.d.ts +20 -0
- package/dist/crate-builder/RenderEntity/RenderPropertyHelp.d.ts +6 -0
- package/dist/crate-builder/RenderEntity/RenderReverseConnections.d.ts +16 -0
- package/dist/crate-builder/RenderEntity/RenderTypes.d.ts +6 -0
- package/dist/crate-builder/RenderEntity/Shell2.d.ts +14 -0
- package/dist/crate-builder/RenderEntity/UnlinkEntity.d.ts +14 -0
- package/dist/crate-builder/RenderEntity/auto-complete.lib.d.ts +25 -0
- package/dist/crate-builder/RenderEntity/keys.d.ts +4 -0
- package/dist/crate-builder/RenderEntity/layout.d.ts +14 -0
- package/dist/crate-builder/RenderEntity/layout.spec.d.ts +1 -0
- package/dist/crate-builder/Shell.d.ts +40 -0
- package/dist/crate-builder/editor-state.d.ts +72 -0
- package/dist/crate-builder/emotionCache.d.ts +1 -0
- package/dist/crate-builder/helpers.d.ts +9 -0
- package/dist/crate-builder/i18n.d.ts +2 -0
- package/dist/crate-builder/lib/validate-iri.d.ts +6 -0
- package/dist/crate-builder/locales/en.d.ts +79 -0
- package/dist/crate-builder/locales/hu.d.ts +79 -0
- package/dist/crate-builder/primitives/Boolean.d.ts +11 -0
- package/dist/crate-builder/primitives/Boolean.stories.d.ts +7 -0
- package/dist/crate-builder/primitives/Date.d.ts +11 -0
- package/dist/crate-builder/primitives/Date.stories.d.ts +5 -0
- package/dist/crate-builder/primitives/DateTime.d.ts +11 -0
- package/dist/crate-builder/primitives/DateTime.stories.d.ts +5 -0
- package/dist/crate-builder/primitives/Geo.d.ts +12 -0
- package/dist/crate-builder/primitives/Geo.stories.d.ts +26 -0
- package/dist/crate-builder/primitives/Map.SelectArea.d.ts +9 -0
- package/dist/crate-builder/primitives/Map.d.ts +15 -0
- package/dist/crate-builder/primitives/Map.stories.d.ts +6 -0
- package/dist/crate-builder/primitives/Number.d.ts +16 -0
- package/dist/crate-builder/primitives/Number.stories.d.ts +10 -0
- package/dist/crate-builder/primitives/Select.d.ts +15 -0
- package/dist/crate-builder/primitives/Select.stories.d.ts +9 -0
- package/dist/crate-builder/primitives/SelectObject.d.ts +13 -0
- package/dist/crate-builder/primitives/SelectObject.stories.d.ts +5 -0
- package/dist/crate-builder/primitives/SelectUrl.d.ts +14 -0
- package/dist/crate-builder/primitives/SelectUrl.stories.d.ts +7 -0
- package/dist/crate-builder/primitives/Text.d.ts +19 -0
- package/dist/crate-builder/primitives/Text.stories.d.ts +13 -0
- package/dist/crate-builder/primitives/Time.d.ts +11 -0
- package/dist/crate-builder/primitives/Time.stories.d.ts +7 -0
- package/dist/crate-builder/primitives/Url.d.ts +11 -0
- package/dist/crate-builder/primitives/Url.stories.d.ts +7 -0
- package/dist/crate-builder/primitives/Value.d.ts +7 -0
- package/dist/crate-builder/primitives/Value.stories.d.ts +7 -0
- package/dist/crate-builder/primitives/date-libs.d.ts +1 -0
- package/dist/crate-builder/property-definitions.d.ts +78 -0
- package/dist/crate-builder/store.d.ts +8 -0
- package/dist/index.d.ts +5 -0
- package/dist/recrate.css +1896 -0
- package/dist/recrate.es.js +38508 -0
- package/dist/types.d.ts +42 -0
- package/package.json +41 -28
- package/.eslintrc.json +0 -37
- package/.storybook/main.ts +0 -40
- package/.storybook/preview.tsx +0 -46
- package/babel.config.json +0 -5
- package/docker-compose.yml +0 -30
- package/docs/.nojekyll +0 -1
- package/docs/assets/highlight.css +0 -99
- package/docs/assets/icons.js +0 -18
- package/docs/assets/icons.svg +0 -1
- package/docs/assets/main.js +0 -60
- package/docs/assets/navigation.js +0 -1
- package/docs/assets/search.js +0 -1
- package/docs/assets/style.css +0 -1448
- package/docs/classes/src_crate_builder_CrateManager_crate_manager.CrateManager.html +0 -240
- package/docs/classes/src_crate_builder_CrateManager_profile_manager.ProfileManager.html +0 -42
- package/docs/classes/src_crate_builder_editor_state.EditorState.html +0 -28
- package/docs/classes/src_crate_builder_types.CrateManagerType.html +0 -57
- package/docs/classes/src_crate_builder_types.ProfileManagerType.html +0 -13
- package/docs/functions/src_crate_builder_CrateManager_lib.isURL.html +0 -2
- package/docs/functions/src_crate_builder_CrateManager_lib.mintNewCrate.html +0 -3
- package/docs/functions/src_crate_builder_CrateManager_lib.normalise.html +0 -5
- package/docs/functions/src_crate_builder_CrateManager_lib.normaliseEntityType.html +0 -1
- package/docs/index.html +0 -58
- package/docs/interfaces/src_crate_builder_types.NormalisedCrate.html +0 -3
- package/docs/interfaces/src_crate_builder_types.NormalisedEntityDefinition.html +0 -4
- package/docs/interfaces/src_crate_builder_types.NormalisedProfile.html +0 -9
- package/docs/interfaces/src_crate_builder_types.ProfileLayout.html +0 -2
- package/docs/interfaces/src_crate_builder_types.ProfileLayoutGroup.html +0 -9
- package/docs/interfaces/src_crate_builder_types.UnverifiedCrate.html +0 -3
- package/docs/interfaces/src_crate_builder_types.UnverifiedEntityDefinition.html +0 -4
- package/docs/modules/src_crate_builder_CrateManager_crate_manager.html +0 -2
- package/docs/modules/src_crate_builder_CrateManager_lib.html +0 -6
- package/docs/modules/src_crate_builder_CrateManager_profile_manager.html +0 -2
- package/docs/modules/src_crate_builder_editor_state.html +0 -2
- package/docs/modules/src_crate_builder_types.html +0 -16
- package/docs/types/src_crate_builder_types.EntityReference.html +0 -1
- package/docs/types/src_crate_builder_types.NormalisedContext.html +0 -1
- package/docs/types/src_crate_builder_types.PrimitiveType.html +0 -1
- package/docs/types/src_crate_builder_types.ProfileAssociation.html +0 -1
- package/docs/types/src_crate_builder_types.ProfileInput.html +0 -1
- package/docs/types/src_crate_builder_types.UnverifiedContext.html +0 -1
- package/docs/variables/src_crate_builder_CrateManager_lib.urlProtocols.html +0 -1
- package/index.html +0 -13
- package/load-data-packs.cjs +0 -38
- package/postcss.config.cjs +0 -6
- package/react-app-env.d.ts +0 -1
- package/rollup.config.js +0 -26
- package/src/app/App.tsx +0 -13
- package/src/app/EmbeddedComponent.tsx +0 -432
- package/src/app/index.html +0 -20
- package/src/app/index.tsx +0 -19
- package/src/app/lookup.ts +0 -141
- package/src/app/override-styles.css +0 -96
- package/src/crate-builder/CrateManager/contexts/1.1-context.jsonld +0 -2660
- package/src/crate-builder/CrateManager/contexts/1.2-DRAFT-context.jsonld +0 -2918
- package/src/crate-builder/CrateManager/contexts.ts +0 -42
- package/src/crate-builder/CrateManager/crate-manager-benchmarking.spec.ts +0 -31
- package/src/crate-builder/CrateManager/crate-manager-loading-exporting.spec.ts +0 -431
- package/src/crate-builder/CrateManager/crate-manager-operations.spec.ts +0 -298
- package/src/crate-builder/CrateManager/crate-manager.spec.ts +0 -2336
- package/src/crate-builder/CrateManager/crate-manager.ts +0 -2111
- package/src/crate-builder/CrateManager/lib.spec.ts +0 -133
- package/src/crate-builder/CrateManager/lib.ts +0 -170
- package/src/crate-builder/CrateManager/profile-manager.spec.ts +0 -593
- package/src/crate-builder/CrateManager/profile-manager.ts +0 -367
- package/src/crate-builder/CrateManager/validate-identifier.spec.ts +0 -82
- package/src/crate-builder/CrateManager/validate-identifier.ts +0 -65
- package/src/crate-builder/RenderEntity/Add.tsx +0 -249
- package/src/crate-builder/RenderEntity/AddControl.stories.tsx +0 -126
- package/src/crate-builder/RenderEntity/AddControl.tsx +0 -84
- package/src/crate-builder/RenderEntity/AutoComplete.tsx +0 -215
- package/src/crate-builder/RenderEntity/BulkAdd.tsx +0 -136
- package/src/crate-builder/RenderEntity/DeleteProperty.tsx +0 -33
- package/src/crate-builder/RenderEntity/DialogAddProperty.tsx +0 -83
- package/src/crate-builder/RenderEntity/DialogBrowseEntities.tsx +0 -136
- package/src/crate-builder/RenderEntity/DialogEditContext.tsx +0 -107
- package/src/crate-builder/RenderEntity/DialogPreviewCrate.tsx +0 -54
- package/src/crate-builder/RenderEntity/DialogSaveCrateAsTemplate.tsx +0 -65
- package/src/crate-builder/RenderEntity/DialogSaveEntityTemplate.tsx +0 -87
- package/src/crate-builder/RenderEntity/DisplayPropertyName.stories.tsx +0 -30
- package/src/crate-builder/RenderEntity/DisplayPropertyName.tsx +0 -21
- package/src/crate-builder/RenderEntity/EntityId.tsx +0 -75
- package/src/crate-builder/RenderEntity/EntityName.tsx +0 -49
- package/src/crate-builder/RenderEntity/EntityProperty.tsx +0 -188
- package/src/crate-builder/RenderEntity/EntityPropertyInstance.tsx +0 -255
- package/src/crate-builder/RenderEntity/EntityType.tsx +0 -95
- package/src/crate-builder/RenderEntity/ItemLink.tsx +0 -37
- package/src/crate-builder/RenderEntity/PaginateLinkedEntities.stories.tsx +0 -43
- package/src/crate-builder/RenderEntity/PaginateLinkedEntities.tsx +0 -141
- package/src/crate-builder/RenderEntity/PropertyHelp.tsx +0 -39
- package/src/crate-builder/RenderEntity/RenderControls.tsx +0 -278
- package/src/crate-builder/RenderEntity/RenderLinkedItem.tsx +0 -139
- package/src/crate-builder/RenderEntity/RenderPropertyHelp.tsx +0 -41
- package/src/crate-builder/RenderEntity/RenderReverseConnections.tsx +0 -150
- package/src/crate-builder/RenderEntity/RenderTypes.tsx +0 -102
- package/src/crate-builder/RenderEntity/Shell2.tsx +0 -576
- package/src/crate-builder/RenderEntity/UnlinkEntity.tsx +0 -30
- package/src/crate-builder/RenderEntity/auto-complete.lib.ts +0 -184
- package/src/crate-builder/RenderEntity/keys.ts +0 -4
- package/src/crate-builder/RenderEntity/layout.spec.js +0 -593
- package/src/crate-builder/RenderEntity/layout.ts +0 -220
- package/src/crate-builder/Shell.tsx +0 -337
- package/src/crate-builder/component.css +0 -65
- package/src/crate-builder/editor-state.ts +0 -114
- package/src/crate-builder/emotionCache.ts +0 -8
- package/src/crate-builder/helpers.ts +0 -16
- package/src/crate-builder/i18n.ts +0 -22
- package/src/crate-builder/lib/validate-iri.ts +0 -57
- package/src/crate-builder/locales/en.js +0 -149
- package/src/crate-builder/locales/hu.js +0 -147
- package/src/crate-builder/primitives/Boolean.stories.tsx +0 -33
- package/src/crate-builder/primitives/Boolean.tsx +0 -67
- package/src/crate-builder/primitives/Date.stories.tsx +0 -32
- package/src/crate-builder/primitives/Date.tsx +0 -58
- package/src/crate-builder/primitives/DateTime.stories.tsx +0 -32
- package/src/crate-builder/primitives/DateTime.tsx +0 -64
- package/src/crate-builder/primitives/Geo.stories.tsx +0 -57
- package/src/crate-builder/primitives/Geo.tsx +0 -225
- package/src/crate-builder/primitives/Map.SelectArea.js +0 -359
- package/src/crate-builder/primitives/Map.stories.tsx +0 -61
- package/src/crate-builder/primitives/Map.tsx +0 -124
- package/src/crate-builder/primitives/Number.stories.tsx +0 -74
- package/src/crate-builder/primitives/Number.tsx +0 -166
- package/src/crate-builder/primitives/Select.stories.tsx +0 -66
- package/src/crate-builder/primitives/Select.tsx +0 -121
- package/src/crate-builder/primitives/SelectObject.stories.tsx +0 -29
- package/src/crate-builder/primitives/SelectObject.tsx +0 -105
- package/src/crate-builder/primitives/SelectUrl.stories.tsx +0 -42
- package/src/crate-builder/primitives/SelectUrl.tsx +0 -110
- package/src/crate-builder/primitives/Text.stories.tsx +0 -106
- package/src/crate-builder/primitives/Text.tsx +0 -197
- package/src/crate-builder/primitives/Time.stories.tsx +0 -38
- package/src/crate-builder/primitives/Time.tsx +0 -71
- package/src/crate-builder/primitives/Url.stories.tsx +0 -43
- package/src/crate-builder/primitives/Url.tsx +0 -75
- package/src/crate-builder/primitives/Value.stories.tsx +0 -37
- package/src/crate-builder/primitives/Value.tsx +0 -30
- package/src/crate-builder/primitives/date-libs.ts +0 -12
- package/src/crate-builder/profile-schema.json +0 -145
- package/src/crate-builder/property-definitions.ts +0 -78
- package/src/crate-builder/recrate.css +0 -3
- package/src/crate-builder/store.ts +0 -14
- package/src/crate-builder/tailwind.css +0 -5
- package/src/crate-builder/types.d.ts +0 -318
- package/src/examples/collection/collections-entity-example.json +0 -131
- package/src/examples/collection/crate-builder-entity-example.json +0 -33
- package/src/examples/item/complex-collection/ro-crate-metadata.json +0 -174
- package/src/examples/item/complex-item/ro-crate-metadata.json +0 -769
- package/src/examples/item/crate-with-language.json +0 -38
- package/src/examples/item/empty/ro-crate-metadata.json +0 -20
- package/src/examples/item/item-with-relationship-and-action/ro-crate-metadata.json +0 -66
- package/src/examples/item/large-crate/ro-crate-metadata.json +0 -5762
- package/src/examples/item/multiple-types/ro-crate-metadata.json +0 -20
- package/src/examples/item/ridiculously-big-collection/ro-crate-metadata.json +0 -162977
- package/src/examples/profile/aroma.complex.profile.json +0 -11098
- package/src/examples/profile/aroma.profile.json +0 -9158
- package/src/examples/profile/nyingarn-item-profile.json +0 -426
- package/src/examples/profile/profile-to-test-inverse-associations.json +0 -73
- package/src/examples/profile/profile-to-test-multiple-types.json +0 -31
- package/src/examples/profile/profile-with-all-primitives-and-groups.json +0 -207
- package/src/examples/profile/profile-with-all-primitives.json +0 -244
- package/src/examples/profile/profile-with-constraints.json +0 -446
- package/src/examples/profile/profile-with-resolve.json +0 -57
- package/src/examples/profile/vocabulary-creation-profile.json +0 -231
- package/src/images.d.ts +0 -5
- package/src/index.ts +0 -12
- package/src/types.ts +0 -104
- package/tailwind.config.js +0 -21
- package/tsconfig.app.json +0 -31
- package/tsconfig.json +0 -26
- package/typedoc.json +0 -11
- package/update-deps.sh +0 -4
- package/vite-env.d.ts +0 -1
- package/vite.config.ts +0 -67
- /package/{public → dist}/favicon.ico +0 -0
- /package/{public → dist}/index.html +0 -0
- /package/{public → dist}/logo192.png +0 -0
- /package/{public → dist}/logo512.png +0 -0
- /package/{public → dist}/manifest.json +0 -0
- /package/{public → dist}/marker-icon.png +0 -0
- /package/{public → dist}/marker-shadow.png +0 -0
- /package/{public → dist}/robots.txt +0 -0
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
// Context setup - load all of the defined contexts
|
|
2
|
-
const modules: {
|
|
3
|
-
[key: string]: string;
|
|
4
|
-
} = (import.meta as any).glob("./contexts/*.jsonld", {
|
|
5
|
-
eager: true,
|
|
6
|
-
query: "?raw",
|
|
7
|
-
import: "default",
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
// The RO Crate context can be referenced in different ways in a crate
|
|
11
|
-
// so this mapping allows us to find the definitions loaded above
|
|
12
|
-
// based on any of them
|
|
13
|
-
const contextMappings: { [key: string]: string } = {
|
|
14
|
-
"https://www.researchobject.org/ro-crate/1.1/context.jsonld":
|
|
15
|
-
"https://w3id.org/ro/crate/1.1/context",
|
|
16
|
-
"https://w3id.org/ro/crate/1.1/context": "https://w3id.org/ro/crate/1.1/context",
|
|
17
|
-
"https://www.researchobject.org/ro-crate/1.2-DRAFT/context.jsonld":
|
|
18
|
-
"https://w3id.org/ro/crate/1.2-DRAFT/context",
|
|
19
|
-
"https://w3id.org/ro/crate/1.2-DRAFT/context": "https://w3id.org/ro/crate/1.2-DRAFT/context",
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
// Then create a data structure for use by CrateManager
|
|
23
|
-
const contexts: { [key: string]: any } = {};
|
|
24
|
-
Object.keys(modules).forEach((key) => {
|
|
25
|
-
const context = JSON.parse(modules[key]);
|
|
26
|
-
|
|
27
|
-
// create a definitions lookup
|
|
28
|
-
contexts[context["@id"]] = { href: context["@id"] };
|
|
29
|
-
|
|
30
|
-
const definitions: { [key: string]: boolean } = {};
|
|
31
|
-
Object.keys(context["@context"]).forEach((key) => {
|
|
32
|
-
definitions[context["@context"][key]] = true;
|
|
33
|
-
});
|
|
34
|
-
contexts[context["@id"]].definitions = definitions;
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
export function getContextDefinition(id: string): {
|
|
38
|
-
href: string;
|
|
39
|
-
definitions: { [key: string]: boolean };
|
|
40
|
-
} {
|
|
41
|
-
return contexts[contextMappings[id]];
|
|
42
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect, beforeAll, vi } from "vitest";
|
|
2
|
-
|
|
3
|
-
import { Bench } from "tinybench";
|
|
4
|
-
import { CrateManager } from "./crate-manager";
|
|
5
|
-
import { readJSON } from "fs-extra";
|
|
6
|
-
|
|
7
|
-
describe.skip("Benchmarking", () => {
|
|
8
|
-
beforeAll(() => {
|
|
9
|
-
vi.spyOn(console, "debug").mockImplementation(() => {});
|
|
10
|
-
});
|
|
11
|
-
test(`test operations on a massive crate - cooee corpus`, async () => {
|
|
12
|
-
const bench = new Bench({ time: 100, iterations: 20 });
|
|
13
|
-
let crate = await readJSON(
|
|
14
|
-
`./src/examples/item/ridiculously-big-collection/ro-crate-metadata.json`
|
|
15
|
-
);
|
|
16
|
-
let cm = new CrateManager({ crate });
|
|
17
|
-
bench
|
|
18
|
-
.add("crate loading", async () => {
|
|
19
|
-
let cm = new CrateManager({ crate });
|
|
20
|
-
})
|
|
21
|
-
.add("crate export", async () => {
|
|
22
|
-
let exportedCrate = cm.exportCrate();
|
|
23
|
-
})
|
|
24
|
-
.add("get root dataset", async () => {
|
|
25
|
-
let rd = cm.getRootDataset();
|
|
26
|
-
});
|
|
27
|
-
await bench.warmup();
|
|
28
|
-
await bench.run();
|
|
29
|
-
console.table(bench.table());
|
|
30
|
-
});
|
|
31
|
-
});
|
|
@@ -1,431 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect, beforeAll, vi } from "vitest";
|
|
2
|
-
import { CrateManager } from "./crate-manager";
|
|
3
|
-
import { readJSON } from "fs-extra";
|
|
4
|
-
import type { UnverifiedCrate } from "../types";
|
|
5
|
-
|
|
6
|
-
describe("Test loading / exporting crate files", () => {
|
|
7
|
-
beforeAll(() => {
|
|
8
|
-
vi.spyOn(console, "debug").mockImplementation(() => {});
|
|
9
|
-
});
|
|
10
|
-
test("a simple crate file", async () => {
|
|
11
|
-
let crate = getBaseCrate();
|
|
12
|
-
crate = addRootDataset({ crate });
|
|
13
|
-
let cm = new CrateManager({ crate });
|
|
14
|
-
let exportedCrate = cm.exportCrate();
|
|
15
|
-
expect(crate["@graph"].length).toEqual(exportedCrate["@graph"].length);
|
|
16
|
-
});
|
|
17
|
-
test("a simple crate file - test id remapping", async () => {
|
|
18
|
-
let crate = getBaseCrate();
|
|
19
|
-
crate["@graph"].push({
|
|
20
|
-
"@id": "./",
|
|
21
|
-
"@type": "Dataset",
|
|
22
|
-
name: "root dataset",
|
|
23
|
-
author: { "@id": "invalid id" },
|
|
24
|
-
});
|
|
25
|
-
crate["@graph"].push({
|
|
26
|
-
"@id": "invalid id",
|
|
27
|
-
"@type": "Person",
|
|
28
|
-
name: "person",
|
|
29
|
-
other: { "@id": "second invalid id" },
|
|
30
|
-
});
|
|
31
|
-
crate["@graph"].push({
|
|
32
|
-
"@id": "second invalid id",
|
|
33
|
-
"@type": "Person",
|
|
34
|
-
name: "person",
|
|
35
|
-
});
|
|
36
|
-
let cm = new CrateManager({ crate });
|
|
37
|
-
let exportedCrate = cm.exportCrate();
|
|
38
|
-
expect(exportedCrate["@graph"]).toMatchObject([
|
|
39
|
-
{
|
|
40
|
-
"@id": "ro-crate-metadata.json",
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"@id": "./",
|
|
44
|
-
author: {
|
|
45
|
-
"@id": "#invalid%20id",
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"@id": "#invalid%20id",
|
|
50
|
-
other: {
|
|
51
|
-
"@id": "#second%20invalid%20id",
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"@id": "#second%20invalid%20id",
|
|
56
|
-
"@reverse": {
|
|
57
|
-
other: {
|
|
58
|
-
"@id": "#invalid%20id",
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
]);
|
|
63
|
-
});
|
|
64
|
-
test("a simple crate file with the data in various forms", () => {
|
|
65
|
-
// test 1: @type, name not array
|
|
66
|
-
let crate = getBaseCrate();
|
|
67
|
-
crate["@graph"].push({ "@id": "./", "@type": "Dataset", name: "something" });
|
|
68
|
-
let cm = new CrateManager({ crate });
|
|
69
|
-
let rd = cm.getRootDataset();
|
|
70
|
-
expect(rd).toMatchObject({ "@id": "./", "@type": ["Dataset"], name: "something" });
|
|
71
|
-
|
|
72
|
-
// test 2: no name
|
|
73
|
-
crate = getBaseCrate();
|
|
74
|
-
crate["@graph"].push({ "@id": "./", "@type": "Dataset" });
|
|
75
|
-
cm = new CrateManager({ crate });
|
|
76
|
-
rd = cm.getRootDataset();
|
|
77
|
-
expect(rd).toMatchObject({ "@id": "./", "@type": ["Dataset"], name: "./" });
|
|
78
|
-
|
|
79
|
-
// test 3: @type, name array
|
|
80
|
-
crate = getBaseCrate();
|
|
81
|
-
crate["@graph"].push({ "@id": "./", "@type": ["Dataset"], name: ["something"] as any });
|
|
82
|
-
cm = new CrateManager({ crate });
|
|
83
|
-
rd = cm.getRootDataset();
|
|
84
|
-
expect(rd).toMatchObject({ "@id": "./", "@type": ["Dataset"], name: "something" });
|
|
85
|
-
|
|
86
|
-
// test 4: property as array
|
|
87
|
-
crate = getBaseCrate();
|
|
88
|
-
crate["@graph"].push({
|
|
89
|
-
"@id": "./",
|
|
90
|
-
"@type": ["Dataset"],
|
|
91
|
-
name: ["something"] as any,
|
|
92
|
-
author: [{ "@id": "http:/schema.org/something" }],
|
|
93
|
-
});
|
|
94
|
-
cm = new CrateManager({ crate });
|
|
95
|
-
rd = cm.getRootDataset();
|
|
96
|
-
expect(rd).toMatchObject({
|
|
97
|
-
"@id": "./",
|
|
98
|
-
"@type": ["Dataset"],
|
|
99
|
-
name: "something",
|
|
100
|
-
author: [{ "@id": "http:/schema.org/something" }],
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
// test 5: property not array
|
|
104
|
-
crate = getBaseCrate();
|
|
105
|
-
crate["@graph"].push({
|
|
106
|
-
"@id": "./",
|
|
107
|
-
"@type": ["Dataset"],
|
|
108
|
-
name: ["something"] as any,
|
|
109
|
-
author: { "@id": "http:/schema.org/something" },
|
|
110
|
-
});
|
|
111
|
-
cm = new CrateManager({ crate });
|
|
112
|
-
rd = cm.getRootDataset();
|
|
113
|
-
expect(rd).toMatchObject({
|
|
114
|
-
"@id": "./",
|
|
115
|
-
"@type": ["Dataset"],
|
|
116
|
-
name: "something",
|
|
117
|
-
author: [{ "@id": "http:/schema.org/something" }],
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
test("a simple crate file with root dataset before the root descriptor", async () => {
|
|
121
|
-
let crate = getBaseCrate();
|
|
122
|
-
crate["@graph"] = [
|
|
123
|
-
{ "@id": "./", "@type": ["Dataset"], name: "Dataset" },
|
|
124
|
-
...crate["@graph"],
|
|
125
|
-
];
|
|
126
|
-
let crateManager = new CrateManager({ crate });
|
|
127
|
-
let exportedCrate = crateManager.exportCrate();
|
|
128
|
-
expect(crate["@graph"].length).toEqual(exportedCrate["@graph"].length);
|
|
129
|
-
});
|
|
130
|
-
test("a crate file with non standard root dataset id - like arcp rubbish", async () => {
|
|
131
|
-
let crate: UnverifiedCrate = {
|
|
132
|
-
"@context": ["https://w3id.org/ro/crate/1.1/context"],
|
|
133
|
-
"@graph": [
|
|
134
|
-
{
|
|
135
|
-
"@id": "ro-crate-metadata.json",
|
|
136
|
-
"@type": "CreativeWork",
|
|
137
|
-
conformsTo: {
|
|
138
|
-
"@id": "https://w3id.org/ro/crate/1.1/context",
|
|
139
|
-
},
|
|
140
|
-
about: {
|
|
141
|
-
"@id": "arcp://name,cooee-corpus/corpus/root",
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
"@id": "arcp://name,cooee-corpus/corpus/root",
|
|
146
|
-
"@type": "Dataset",
|
|
147
|
-
name: "rubbish",
|
|
148
|
-
},
|
|
149
|
-
],
|
|
150
|
-
};
|
|
151
|
-
let cm = new CrateManager({ crate });
|
|
152
|
-
let exportedCrate = cm.exportCrate();
|
|
153
|
-
expect(crate["@graph"].length).toEqual(exportedCrate["@graph"].length);
|
|
154
|
-
});
|
|
155
|
-
test(`test loading a massive crate file - cooee corpus`, async () => {
|
|
156
|
-
let crate = await readJSON(
|
|
157
|
-
`./src/examples/item/ridiculously-big-collection/ro-crate-metadata.json`
|
|
158
|
-
);
|
|
159
|
-
let cm = new CrateManager({ crate });
|
|
160
|
-
let exportedCrate = cm.exportCrate();
|
|
161
|
-
expect(exportedCrate["@graph"].length).toEqual(7331);
|
|
162
|
-
});
|
|
163
|
-
test("should fail on a crate file without @context", async () => {
|
|
164
|
-
let cm = new CrateManager({ crate: {} as UnverifiedCrate });
|
|
165
|
-
expect(cm.getErrors().init).toMatchObject({
|
|
166
|
-
description: "Errors encountered on crate load. These need to be fixed manually.",
|
|
167
|
-
messages: ["The crate file does not have a '@context'."],
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
test("should not fail when entities don't have id's", async () => {
|
|
171
|
-
let crate = getBaseCrate();
|
|
172
|
-
crate = addRootDataset({ crate });
|
|
173
|
-
crate["@graph"].push({});
|
|
174
|
-
new CrateManager({ crate });
|
|
175
|
-
});
|
|
176
|
-
test("should fail - no root descriptor", async () => {
|
|
177
|
-
let crate = getBaseCrate();
|
|
178
|
-
crate["@graph"] = [];
|
|
179
|
-
let cm = new CrateManager({ crate });
|
|
180
|
-
let errors = cm.getErrors();
|
|
181
|
-
expect(errors.init.messages[0]).toEqual(
|
|
182
|
-
`This crate is invalid. A root descriptor can not been identified.`
|
|
183
|
-
);
|
|
184
|
-
});
|
|
185
|
-
test("should fail - no root dataset", async () => {
|
|
186
|
-
let crate = getBaseCrate();
|
|
187
|
-
let cm = new CrateManager({ crate });
|
|
188
|
-
let errors = cm.getErrors();
|
|
189
|
-
expect(errors.init.messages[0]).toEqual(
|
|
190
|
-
`This crate is invalid. A root dataset can not be identified.`
|
|
191
|
-
);
|
|
192
|
-
});
|
|
193
|
-
test("should fail on a crate file without @graph", async () => {
|
|
194
|
-
let cm = new CrateManager({ crate: { "@context": {} } as UnverifiedCrate });
|
|
195
|
-
let errors = cm.getErrors();
|
|
196
|
-
expect(errors.init.messages[0]).toEqual(
|
|
197
|
-
`The crate file does not have '@graph' or it's not an array.`
|
|
198
|
-
);
|
|
199
|
-
});
|
|
200
|
-
test("should fail on a crate file without @graph as array", async () => {
|
|
201
|
-
let cm = new CrateManager({ crate: { "@context": {}, "@graph": {} } as UnverifiedCrate });
|
|
202
|
-
let errors = cm.getErrors();
|
|
203
|
-
expect(errors.init.messages[0]).toEqual(
|
|
204
|
-
`The crate file does not have '@graph' or it's not an array.`
|
|
205
|
-
);
|
|
206
|
-
});
|
|
207
|
-
test("should handle crate file without conformsTo in root descriptor", async () => {
|
|
208
|
-
let crate: UnverifiedCrate = {
|
|
209
|
-
"@context": ["https://w3id.org/ro/crate/1.1/context"],
|
|
210
|
-
"@graph": [
|
|
211
|
-
{
|
|
212
|
-
"@id": "ro-crate-metadata.json",
|
|
213
|
-
"@type": "CreativeWork",
|
|
214
|
-
about: {
|
|
215
|
-
"@id": "./",
|
|
216
|
-
},
|
|
217
|
-
},
|
|
218
|
-
],
|
|
219
|
-
};
|
|
220
|
-
let cm = new CrateManager({ crate });
|
|
221
|
-
let warnings = cm.getWarnings();
|
|
222
|
-
expect(warnings).toMatchObject({
|
|
223
|
-
hasWarning: true,
|
|
224
|
-
init: {
|
|
225
|
-
description:
|
|
226
|
-
"Issues encountered on crate load that should be fixed but aren't breaking",
|
|
227
|
-
messages: [
|
|
228
|
-
"This root descriptor does not specify 'conformsTo'. It will be set to RO Crate v1.1",
|
|
229
|
-
],
|
|
230
|
-
},
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
test("should fail on a crate with bad @id's and no @type", async () => {
|
|
234
|
-
let crate = getBaseCrate();
|
|
235
|
-
crate["@graph"].push({
|
|
236
|
-
"@id": "not expected",
|
|
237
|
-
"@type": ["Person"],
|
|
238
|
-
name: "Dataset",
|
|
239
|
-
});
|
|
240
|
-
let cm = new CrateManager({ crate });
|
|
241
|
-
let errors = cm.getErrors();
|
|
242
|
-
expect(errors.init.messages[0]).toEqual(
|
|
243
|
-
`This crate is invalid. A root dataset can not be identified.`
|
|
244
|
-
);
|
|
245
|
-
|
|
246
|
-
crate = getBaseCrate();
|
|
247
|
-
crate["@graph"].push({
|
|
248
|
-
"@id": "#valid id",
|
|
249
|
-
name: "Person",
|
|
250
|
-
});
|
|
251
|
-
cm = new CrateManager({ crate });
|
|
252
|
-
errors = cm.getErrors();
|
|
253
|
-
expect(errors.init.messages[0]).toEqual(
|
|
254
|
-
`This crate is invalid. A root dataset can not be identified.`
|
|
255
|
-
);
|
|
256
|
-
});
|
|
257
|
-
test("with root dataset, one type", async () => {
|
|
258
|
-
let crate = getBaseCrate();
|
|
259
|
-
crate["@graph"].push({
|
|
260
|
-
"@id": "./",
|
|
261
|
-
"@type": ["Dataset"],
|
|
262
|
-
name: "Dataset",
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
let crateManager = new CrateManager({ crate });
|
|
266
|
-
let exportedCrate = crateManager.exportCrate();
|
|
267
|
-
expect(exportedCrate["@graph"]).toMatchObject([
|
|
268
|
-
{ "@id": "ro-crate-metadata.json" },
|
|
269
|
-
{ "@id": "./", "@type": "Dataset", name: "Dataset" },
|
|
270
|
-
]);
|
|
271
|
-
});
|
|
272
|
-
test("with root dataset, multiple types", async () => {
|
|
273
|
-
let crate = getBaseCrate();
|
|
274
|
-
crate["@graph"].push({
|
|
275
|
-
"@id": "./",
|
|
276
|
-
"@type": ["Dataset", "Something Else"],
|
|
277
|
-
name: "Dataset",
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
let crateManager = new CrateManager({ crate });
|
|
281
|
-
let exportedCrate = crateManager.exportCrate();
|
|
282
|
-
expect(exportedCrate["@graph"]).toMatchObject([
|
|
283
|
-
{ "@id": "ro-crate-metadata.json" },
|
|
284
|
-
{ "@id": "./", "@type": ["Dataset", "Something Else"], name: "Dataset" },
|
|
285
|
-
]);
|
|
286
|
-
});
|
|
287
|
-
test("with root dataset and one text property", async () => {
|
|
288
|
-
let crate = getBaseCrate();
|
|
289
|
-
crate["@graph"].push({
|
|
290
|
-
"@id": "./",
|
|
291
|
-
"@type": ["Dataset"],
|
|
292
|
-
name: "Dataset",
|
|
293
|
-
text: "some text",
|
|
294
|
-
});
|
|
295
|
-
|
|
296
|
-
let crateManager = new CrateManager({ crate });
|
|
297
|
-
let exportedCrate = crateManager.exportCrate();
|
|
298
|
-
expect(exportedCrate["@graph"]).toMatchObject([
|
|
299
|
-
{ "@id": "ro-crate-metadata.json" },
|
|
300
|
-
{
|
|
301
|
-
"@id": "./",
|
|
302
|
-
"@type": "Dataset",
|
|
303
|
-
name: "Dataset",
|
|
304
|
-
text: "some text",
|
|
305
|
-
},
|
|
306
|
-
]);
|
|
307
|
-
});
|
|
308
|
-
test("with root dataset and one text property in array", async () => {
|
|
309
|
-
let crate = getBaseCrate();
|
|
310
|
-
crate["@graph"].push({
|
|
311
|
-
"@id": "./",
|
|
312
|
-
"@type": ["Dataset"],
|
|
313
|
-
name: "Dataset",
|
|
314
|
-
text: ["some text"],
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
let crateManager = new CrateManager({ crate });
|
|
318
|
-
let exportedCrate = crateManager.exportCrate();
|
|
319
|
-
expect(exportedCrate["@graph"]).toMatchObject([
|
|
320
|
-
{ "@id": "ro-crate-metadata.json" },
|
|
321
|
-
{
|
|
322
|
-
"@id": "./",
|
|
323
|
-
"@type": "Dataset",
|
|
324
|
-
name: "Dataset",
|
|
325
|
-
text: "some text",
|
|
326
|
-
},
|
|
327
|
-
]);
|
|
328
|
-
});
|
|
329
|
-
test("with root dataset and one reference to another object", async () => {
|
|
330
|
-
let crate = getBaseCrate();
|
|
331
|
-
crate["@graph"].push({
|
|
332
|
-
"@id": "./",
|
|
333
|
-
"@type": ["Dataset"],
|
|
334
|
-
name: "Dataset",
|
|
335
|
-
author: { "@id": "http://entity.com/something" },
|
|
336
|
-
});
|
|
337
|
-
crate["@graph"].push({
|
|
338
|
-
"@id": "http://entity.com/something",
|
|
339
|
-
"@type": "Person",
|
|
340
|
-
name: "Person",
|
|
341
|
-
});
|
|
342
|
-
|
|
343
|
-
let crateManager = new CrateManager({ crate });
|
|
344
|
-
let exportedCrate = crateManager.exportCrate();
|
|
345
|
-
expect(exportedCrate["@graph"]).toMatchObject([
|
|
346
|
-
{ "@id": "ro-crate-metadata.json" },
|
|
347
|
-
{
|
|
348
|
-
"@id": "./",
|
|
349
|
-
"@type": "Dataset",
|
|
350
|
-
name: "Dataset",
|
|
351
|
-
author: { "@id": "http://entity.com/something" },
|
|
352
|
-
},
|
|
353
|
-
{ "@id": "http://entity.com/something" },
|
|
354
|
-
]);
|
|
355
|
-
});
|
|
356
|
-
test("with root dataset and one reference to object not in crate", async () => {
|
|
357
|
-
let crate = getBaseCrate();
|
|
358
|
-
crate["@graph"].push({
|
|
359
|
-
"@id": "./",
|
|
360
|
-
"@type": ["Dataset"],
|
|
361
|
-
name: "Dataset",
|
|
362
|
-
author: { "@id": "http://entity.com/something" },
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
let crateManager = new CrateManager({ crate });
|
|
366
|
-
let exportedCrate = crateManager.exportCrate();
|
|
367
|
-
expect(exportedCrate["@graph"]).toMatchObject([
|
|
368
|
-
{ "@id": "ro-crate-metadata.json" },
|
|
369
|
-
{
|
|
370
|
-
"@id": "./",
|
|
371
|
-
"@type": "Dataset",
|
|
372
|
-
name: "Dataset",
|
|
373
|
-
author: { "@id": "http://entity.com/something" },
|
|
374
|
-
},
|
|
375
|
-
]);
|
|
376
|
-
});
|
|
377
|
-
test("with root dataset and mixed type values for a property", async () => {
|
|
378
|
-
let crate = getBaseCrate();
|
|
379
|
-
crate["@graph"].push({
|
|
380
|
-
"@id": "./",
|
|
381
|
-
"@type": ["Dataset"],
|
|
382
|
-
name: "Dataset",
|
|
383
|
-
author: [{ "@id": "http://entity.com/something" }, "some text"],
|
|
384
|
-
});
|
|
385
|
-
crate["@graph"].push({
|
|
386
|
-
"@id": "http://entity.com/something",
|
|
387
|
-
"@type": "Person",
|
|
388
|
-
name: "Person",
|
|
389
|
-
});
|
|
390
|
-
|
|
391
|
-
let crateManager = new CrateManager({ crate });
|
|
392
|
-
let exportedCrate = crateManager.exportCrate();
|
|
393
|
-
expect(exportedCrate["@graph"]).toMatchObject([
|
|
394
|
-
{ "@id": "ro-crate-metadata.json" },
|
|
395
|
-
{
|
|
396
|
-
"@id": "./",
|
|
397
|
-
"@type": "Dataset",
|
|
398
|
-
name: "Dataset",
|
|
399
|
-
author: [{ "@id": "http://entity.com/something" }, "some text"],
|
|
400
|
-
},
|
|
401
|
-
{ "@id": "http://entity.com/something" },
|
|
402
|
-
]);
|
|
403
|
-
});
|
|
404
|
-
});
|
|
405
|
-
|
|
406
|
-
function getBaseCrate(): UnverifiedCrate {
|
|
407
|
-
return {
|
|
408
|
-
"@context": ["https://w3id.org/ro/crate/1.1/context"],
|
|
409
|
-
"@graph": [
|
|
410
|
-
{
|
|
411
|
-
"@id": "ro-crate-metadata.json",
|
|
412
|
-
"@type": "CreativeWork",
|
|
413
|
-
conformsTo: {
|
|
414
|
-
"@id": "https://w3id.org/ro/crate/1.1/context",
|
|
415
|
-
},
|
|
416
|
-
about: {
|
|
417
|
-
"@id": "./",
|
|
418
|
-
},
|
|
419
|
-
},
|
|
420
|
-
],
|
|
421
|
-
};
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
function addRootDataset({ crate }: { crate: UnverifiedCrate }) {
|
|
425
|
-
crate["@graph"].push({
|
|
426
|
-
"@id": "./",
|
|
427
|
-
"@type": "Dataset",
|
|
428
|
-
name: "Dataset",
|
|
429
|
-
});
|
|
430
|
-
return crate;
|
|
431
|
-
}
|