@twin.org/dataspace-test-app 0.0.3-next.21 → 0.0.3-next.22

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.
@@ -91,12 +91,14 @@ export class TestDataspaceDataPlaneApp {
91
91
  ]
92
92
  }
93
93
  ],
94
- distribution: {
95
- "@id": "https://twin.example.org/distribution-1",
96
- "@type": "Distribution",
97
- accessService: "https://twin.example.org/data-service-1",
98
- format: "Http-Pull-Query-Format"
99
- },
94
+ distribution: [
95
+ {
96
+ "@id": "https://twin.example.org/distribution-1",
97
+ "@type": "Distribution",
98
+ accessService: "https://twin.example.org/data-service-1",
99
+ format: "Http-Pull-Query-Format"
100
+ }
101
+ ],
100
102
  "dcterms:type": "https://vocabulary.uncefact.org/Consignment"
101
103
  }
102
104
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"testDataspaceDataPlaneApp.js","sourceRoot":"","sources":["../../src/testDataspaceDataPlaneApp.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { ContextIdHelper, ContextIdKeys, ContextIdStore } from \"@twin.org/context\";\nimport { ComponentFactory, Guards } from \"@twin.org/core\";\nimport { DataTypeHandlerFactory } from \"@twin.org/data-core\";\nimport type { IJsonLdDocument } from \"@twin.org/data-json-ld\";\nimport {\n\tDataRequestType,\n\ttype IDataspaceActivity,\n\ttype IActivityQuery,\n\ttype IDataRequest,\n\ttype IDataspaceApp\n} from \"@twin.org/dataspace-models\";\nimport type { ILoggingComponent } from \"@twin.org/logging-models\";\nimport { nameof } from \"@twin.org/nameof\";\nimport {\n\tDataspaceProtocolContexts,\n\ttype IDataspaceProtocolDataset\n} from \"@twin.org/standards-dataspace-protocol\";\nimport { DublinCoreContexts } from \"@twin.org/standards-dublin-core\";\nimport type { IActivityStreamsActivity } from \"@twin.org/standards-w3c-activity-streams\";\nimport type { ITestAppConstructorOptions } from \"./ITestAppConstructorOptions.js\";\n\n// Dummy Data\nconst id = \"urn:ucr:24PLP051219453I002610799053311\";\nconst entities = [\n\t{\n\t\t\"@context\": \"https://vocabulary.uncefact.org/unece-context-D23B.jsonld\",\n\t\ttype: \"Consignment\",\n\t\tid,\n\t\tdestinationCountry: {\n\t\t\ttype: \"Country\",\n\t\t\tcountryId: \"unece:CountryId#GB\"\n\t\t}\n\t},\n\t{\n\t\t\"@context\": \"https://vocabulary.uncefact.org/unece-context-D23B.jsonld\",\n\t\ttype: \"Document\",\n\t\tid: \"urn:document:a3456fddaa56\",\n\t\tdocumentTypeCode: \"unece:DocumentCodeList#853\"\n\t}\n];\n\n/**\n * Test App Activity Handler.\n */\nexport class TestDataspaceDataPlaneApp implements IDataspaceApp {\n\t/**\n\t * App Name.\n\t */\n\tpublic static readonly APP_ID = \"https://twin.example.org/app1\";\n\n\t/**\n\t * Runtime name for the class.\n\t */\n\tpublic static readonly CLASS_NAME: string = nameof<TestDataspaceDataPlaneApp>();\n\n\t/**\n\t * Logging component.\n\t * @internal\n\t */\n\tprivate readonly _logging?: ILoggingComponent;\n\n\t/**\n\t * Node Identity\n\t * @internal\n\t */\n\tprivate _nodeId?: string;\n\n\t/**\n\t * Create a new instance of TestDataspaceDataPlaneApp.\n\t * @param options The constructor options.\n\t */\n\tconstructor(options?: ITestAppConstructorOptions) {\n\t\tthis._logging = ComponentFactory.getIfExists<ILoggingComponent>(\n\t\t\toptions?.loggingComponentType ?? \"logging\"\n\t\t);\n\t}\n\n\t/**\n\t * Returns the class name of the component.\n\t * @returns The class name of the component.\n\t */\n\tpublic className(): string {\n\t\treturn TestDataspaceDataPlaneApp.CLASS_NAME;\n\t}\n\n\t/**\n\t * Datasets handled by the App.\n\t * @returns Dataspace Protocol compliant datasets\n\t */\n\tpublic async datasetsHandled(): Promise<IDataspaceProtocolDataset[]> {\n\t\tconst contextIds = await ContextIdStore.getContextIds();\n\t\tconst organizationId =\n\t\t\tcontextIds?.[ContextIdKeys.Organization] ?? contextIds?.[ContextIdKeys.Node] ?? \"\";\n\t\treturn [\n\t\t\t{\n\t\t\t\t\"@context\": [\n\t\t\t\t\tDataspaceProtocolContexts.Context,\n\t\t\t\t\t{\n\t\t\t\t\t\tdcterms: DublinCoreContexts.NamespaceTerms\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"@id\": \"https://twin.example.org/data-service-1\",\n\t\t\t\t\"@type\": \"Dataset\",\n\t\t\t\t\"dcterms:publisher\": organizationId,\n\t\t\t\thasPolicy: [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"@id\": \"urn:policy:test-offer-read-consignment\",\n\t\t\t\t\t\t\"@type\": \"Offer\",\n\t\t\t\t\t\tassigner: organizationId,\n\t\t\t\t\t\tpermission: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taction: \"read\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tdistribution: {\n\t\t\t\t\t\"@id\": \"https://twin.example.org/distribution-1\",\n\t\t\t\t\t\"@type\": \"Distribution\",\n\t\t\t\t\taccessService: \"https://twin.example.org/data-service-1\",\n\t\t\t\t\tformat: \"Http-Pull-Query-Format\"\n\t\t\t\t},\n\t\t\t\t\"dcterms:type\": \"https://vocabulary.uncefact.org/Consignment\"\n\t\t\t}\n\t\t];\n\t}\n\n\t/**\n\t * Supported query types.\n\t * @returns Types.\n\t */\n\tpublic supportedQueryTypes(): string[] {\n\t\treturn [\"TestQueryType\"];\n\t}\n\n\t/**\n\t * Start method.\n\t * @param nodeLoggingComponentType the logging component type of such a node.\n\t */\n\tpublic async start(nodeLoggingComponentType?: string): Promise<void> {\n\t\tconst contextIds = await ContextIdStore.getContextIds();\n\t\tContextIdHelper.guard(contextIds, ContextIdKeys.Node);\n\t\tthis._nodeId = contextIds[ContextIdKeys.Node];\n\n\t\tDataTypeHandlerFactory.register(\"https://twin.example.org/MyCreate\", () => ({\n\t\t\tnamespace: \"https://twin.example.org/\",\n\t\t\ttype: \"MyCreate\",\n\t\t\tdefaultValue: {},\n\t\t\tjsonSchema: async () => ({\n\t\t\t\ttype: \"object\"\n\t\t\t})\n\t\t}));\n\n\t\tDataTypeHandlerFactory.register(\"https://vocabulary.uncefact.org/Consignment\", () => ({\n\t\t\tnamespace: \"https://vocabulary.uncefact.org/\",\n\t\t\ttype: \"Consignment\",\n\t\t\tdefaultValue: {},\n\t\t\tjsonSchema: async () => ({\n\t\t\t\ttype: \"object\"\n\t\t\t})\n\t\t}));\n\t}\n\n\t/**\n\t * The activities handled by the App.\n\t * @returns The activities handled by the App.\n\t */\n\tpublic activitiesHandled(): IActivityQuery[] {\n\t\treturn [{ objectType: \"https://vocabulary.uncefact.org/Consignment\" }];\n\t}\n\n\t/**\n\t * Handle Activity.\n\t * @param activity Activity\n\t * @returns Activity processing result\n\t */\n\tpublic async handleActivity<T>(activity: IDataspaceActivity): Promise<T> {\n\t\tGuards.object<IActivityStreamsActivity>(\n\t\t\tTestDataspaceDataPlaneApp.CLASS_NAME,\n\t\t\tnameof(activity),\n\t\t\tactivity\n\t\t);\n\n\t\tawait this._logging?.log({\n\t\t\tlevel: \"info\",\n\t\t\tsource: TestDataspaceDataPlaneApp.CLASS_NAME,\n\t\t\tmessage: `App Called: ${TestDataspaceDataPlaneApp.APP_ID}`\n\t\t});\n\n\t\tawait this._logging?.log({\n\t\t\tlevel: \"info\",\n\t\t\tsource: TestDataspaceDataPlaneApp.CLASS_NAME,\n\t\t\tmessage: `Node Identity: ${this._nodeId ?? \"\"}`\n\t\t});\n\n\t\tawait new Promise(resolve => setTimeout(resolve, 500));\n\t\treturn \"1234\" as T;\n\t}\n\n\t/**\n\t * Handles the Data Request.\n\t * @param dataRequest The data request\n\t * @param cursor Cursor that points to the next item in the result set.\n\t * @param limit Maximum number of entries retrieved or to be retrieved.\n\t * @returns the Data.\n\t */\n\tpublic async handleDataRequest(\n\t\tdataRequest: IDataRequest,\n\t\tcursor?: string,\n\t\tlimit?: number\n\t): Promise<{ data: IJsonLdDocument; cursor?: string }> {\n\t\tGuards.object<IDataRequest>(\n\t\t\tTestDataspaceDataPlaneApp.CLASS_NAME,\n\t\t\tnameof(dataRequest),\n\t\t\tdataRequest\n\t\t);\n\n\t\tswitch (dataRequest.type) {\n\t\t\tcase DataRequestType.DataAssetEntities: {\n\t\t\t\tif (dataRequest.entitySet.entityType === \"https://vocabulary.uncefact.org/Consignment\") {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: [entities[0]]\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (dataRequest.entitySet.entityId?.includes(id)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: entities[0]\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn { data: [] };\n\t\t\t}\n\n\t\t\tcase DataRequestType.QueryDataAsset:\n\t\t\t\treturn { data: entities };\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"testDataspaceDataPlaneApp.js","sourceRoot":"","sources":["../../src/testDataspaceDataPlaneApp.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { ContextIdHelper, ContextIdKeys, ContextIdStore } from \"@twin.org/context\";\nimport { ComponentFactory, Guards } from \"@twin.org/core\";\nimport { DataTypeHandlerFactory } from \"@twin.org/data-core\";\nimport type { IJsonLdDocument } from \"@twin.org/data-json-ld\";\nimport {\n\tDataRequestType,\n\ttype IDataspaceActivity,\n\ttype IActivityQuery,\n\ttype IDataRequest,\n\ttype IDataspaceApp\n} from \"@twin.org/dataspace-models\";\nimport type { ILoggingComponent } from \"@twin.org/logging-models\";\nimport { nameof } from \"@twin.org/nameof\";\nimport {\n\tDataspaceProtocolContexts,\n\ttype IDataspaceProtocolDataset\n} from \"@twin.org/standards-dataspace-protocol\";\nimport { DublinCoreContexts } from \"@twin.org/standards-dublin-core\";\nimport type { IActivityStreamsActivity } from \"@twin.org/standards-w3c-activity-streams\";\nimport type { ITestAppConstructorOptions } from \"./ITestAppConstructorOptions.js\";\n\n// Dummy Data\nconst id = \"urn:ucr:24PLP051219453I002610799053311\";\nconst entities = [\n\t{\n\t\t\"@context\": \"https://vocabulary.uncefact.org/unece-context-D23B.jsonld\",\n\t\ttype: \"Consignment\",\n\t\tid,\n\t\tdestinationCountry: {\n\t\t\ttype: \"Country\",\n\t\t\tcountryId: \"unece:CountryId#GB\"\n\t\t}\n\t},\n\t{\n\t\t\"@context\": \"https://vocabulary.uncefact.org/unece-context-D23B.jsonld\",\n\t\ttype: \"Document\",\n\t\tid: \"urn:document:a3456fddaa56\",\n\t\tdocumentTypeCode: \"unece:DocumentCodeList#853\"\n\t}\n];\n\n/**\n * Test App Activity Handler.\n */\nexport class TestDataspaceDataPlaneApp implements IDataspaceApp {\n\t/**\n\t * App Name.\n\t */\n\tpublic static readonly APP_ID = \"https://twin.example.org/app1\";\n\n\t/**\n\t * Runtime name for the class.\n\t */\n\tpublic static readonly CLASS_NAME: string = nameof<TestDataspaceDataPlaneApp>();\n\n\t/**\n\t * Logging component.\n\t * @internal\n\t */\n\tprivate readonly _logging?: ILoggingComponent;\n\n\t/**\n\t * Node Identity\n\t * @internal\n\t */\n\tprivate _nodeId?: string;\n\n\t/**\n\t * Create a new instance of TestDataspaceDataPlaneApp.\n\t * @param options The constructor options.\n\t */\n\tconstructor(options?: ITestAppConstructorOptions) {\n\t\tthis._logging = ComponentFactory.getIfExists<ILoggingComponent>(\n\t\t\toptions?.loggingComponentType ?? \"logging\"\n\t\t);\n\t}\n\n\t/**\n\t * Returns the class name of the component.\n\t * @returns The class name of the component.\n\t */\n\tpublic className(): string {\n\t\treturn TestDataspaceDataPlaneApp.CLASS_NAME;\n\t}\n\n\t/**\n\t * Datasets handled by the App.\n\t * @returns Dataspace Protocol compliant datasets\n\t */\n\tpublic async datasetsHandled(): Promise<IDataspaceProtocolDataset[]> {\n\t\tconst contextIds = await ContextIdStore.getContextIds();\n\t\tconst organizationId =\n\t\t\tcontextIds?.[ContextIdKeys.Organization] ?? contextIds?.[ContextIdKeys.Node] ?? \"\";\n\t\treturn [\n\t\t\t{\n\t\t\t\t\"@context\": [\n\t\t\t\t\tDataspaceProtocolContexts.Context,\n\t\t\t\t\t{\n\t\t\t\t\t\tdcterms: DublinCoreContexts.NamespaceTerms\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"@id\": \"https://twin.example.org/data-service-1\",\n\t\t\t\t\"@type\": \"Dataset\",\n\t\t\t\t\"dcterms:publisher\": organizationId,\n\t\t\t\thasPolicy: [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"@id\": \"urn:policy:test-offer-read-consignment\",\n\t\t\t\t\t\t\"@type\": \"Offer\",\n\t\t\t\t\t\tassigner: organizationId,\n\t\t\t\t\t\tpermission: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taction: \"read\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tdistribution: [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"@id\": \"https://twin.example.org/distribution-1\",\n\t\t\t\t\t\t\"@type\": \"Distribution\",\n\t\t\t\t\t\taccessService: \"https://twin.example.org/data-service-1\",\n\t\t\t\t\t\tformat: \"Http-Pull-Query-Format\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"dcterms:type\": \"https://vocabulary.uncefact.org/Consignment\"\n\t\t\t}\n\t\t];\n\t}\n\n\t/**\n\t * Supported query types.\n\t * @returns Types.\n\t */\n\tpublic supportedQueryTypes(): string[] {\n\t\treturn [\"TestQueryType\"];\n\t}\n\n\t/**\n\t * Start method.\n\t * @param nodeLoggingComponentType the logging component type of such a node.\n\t */\n\tpublic async start(nodeLoggingComponentType?: string): Promise<void> {\n\t\tconst contextIds = await ContextIdStore.getContextIds();\n\t\tContextIdHelper.guard(contextIds, ContextIdKeys.Node);\n\t\tthis._nodeId = contextIds[ContextIdKeys.Node];\n\n\t\tDataTypeHandlerFactory.register(\"https://twin.example.org/MyCreate\", () => ({\n\t\t\tnamespace: \"https://twin.example.org/\",\n\t\t\ttype: \"MyCreate\",\n\t\t\tdefaultValue: {},\n\t\t\tjsonSchema: async () => ({\n\t\t\t\ttype: \"object\"\n\t\t\t})\n\t\t}));\n\n\t\tDataTypeHandlerFactory.register(\"https://vocabulary.uncefact.org/Consignment\", () => ({\n\t\t\tnamespace: \"https://vocabulary.uncefact.org/\",\n\t\t\ttype: \"Consignment\",\n\t\t\tdefaultValue: {},\n\t\t\tjsonSchema: async () => ({\n\t\t\t\ttype: \"object\"\n\t\t\t})\n\t\t}));\n\t}\n\n\t/**\n\t * The activities handled by the App.\n\t * @returns The activities handled by the App.\n\t */\n\tpublic activitiesHandled(): IActivityQuery[] {\n\t\treturn [{ objectType: \"https://vocabulary.uncefact.org/Consignment\" }];\n\t}\n\n\t/**\n\t * Handle Activity.\n\t * @param activity Activity\n\t * @returns Activity processing result\n\t */\n\tpublic async handleActivity<T>(activity: IDataspaceActivity): Promise<T> {\n\t\tGuards.object<IActivityStreamsActivity>(\n\t\t\tTestDataspaceDataPlaneApp.CLASS_NAME,\n\t\t\tnameof(activity),\n\t\t\tactivity\n\t\t);\n\n\t\tawait this._logging?.log({\n\t\t\tlevel: \"info\",\n\t\t\tsource: TestDataspaceDataPlaneApp.CLASS_NAME,\n\t\t\tmessage: `App Called: ${TestDataspaceDataPlaneApp.APP_ID}`\n\t\t});\n\n\t\tawait this._logging?.log({\n\t\t\tlevel: \"info\",\n\t\t\tsource: TestDataspaceDataPlaneApp.CLASS_NAME,\n\t\t\tmessage: `Node Identity: ${this._nodeId ?? \"\"}`\n\t\t});\n\n\t\tawait new Promise(resolve => setTimeout(resolve, 500));\n\t\treturn \"1234\" as T;\n\t}\n\n\t/**\n\t * Handles the Data Request.\n\t * @param dataRequest The data request\n\t * @param cursor Cursor that points to the next item in the result set.\n\t * @param limit Maximum number of entries retrieved or to be retrieved.\n\t * @returns the Data.\n\t */\n\tpublic async handleDataRequest(\n\t\tdataRequest: IDataRequest,\n\t\tcursor?: string,\n\t\tlimit?: number\n\t): Promise<{ data: IJsonLdDocument; cursor?: string }> {\n\t\tGuards.object<IDataRequest>(\n\t\t\tTestDataspaceDataPlaneApp.CLASS_NAME,\n\t\t\tnameof(dataRequest),\n\t\t\tdataRequest\n\t\t);\n\n\t\tswitch (dataRequest.type) {\n\t\t\tcase DataRequestType.DataAssetEntities: {\n\t\t\t\tif (dataRequest.entitySet.entityType === \"https://vocabulary.uncefact.org/Consignment\") {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: [entities[0]]\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (dataRequest.entitySet.entityId?.includes(id)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: entities[0]\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn { data: [] };\n\t\t\t}\n\n\t\t\tcase DataRequestType.QueryDataAsset:\n\t\t\t\treturn { data: entities };\n\t\t}\n\t}\n}\n"]}
package/docs/changelog.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.3-next.22](https://github.com/twinfoundation/dataspace/compare/dataspace-test-app-v0.0.3-next.21...dataspace-test-app-v0.0.3-next.22) (2026-03-20)
4
+
5
+
6
+ ### Miscellaneous Chores
7
+
8
+ * **dataspace-test-app:** Synchronize repo versions
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @twin.org/dataspace-models bumped from 0.0.3-next.21 to 0.0.3-next.22
16
+
3
17
  ## [0.0.3-next.21](https://github.com/twinfoundation/dataspace/compare/dataspace-test-app-v0.0.3-next.20...dataspace-test-app-v0.0.3-next.21) (2026-03-17)
4
18
 
5
19
 
@@ -6,6 +6,12 @@ Test App Constructor options.
6
6
 
7
7
  ### loggingComponentType? {#loggingcomponenttype}
8
8
 
9
- > `optional` **loggingComponentType**: `string`
9
+ > `optional` **loggingComponentType?**: `string`
10
10
 
11
11
  Logging component type.
12
+
13
+ #### Default
14
+
15
+ ```ts
16
+ logging
17
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/dataspace-test-app",
3
- "version": "0.0.3-next.21",
3
+ "version": "0.0.3-next.22",
4
4
  "description": "Provides a sample dataspace app for local integration tests and development workflows.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,7 +18,7 @@
18
18
  "@twin.org/context": "next",
19
19
  "@twin.org/core": "next",
20
20
  "@twin.org/data-core": "next",
21
- "@twin.org/dataspace-models": "0.0.3-next.21",
21
+ "@twin.org/dataspace-models": "0.0.3-next.22",
22
22
  "@twin.org/engine-models": "next",
23
23
  "@twin.org/engine-types": "next",
24
24
  "@twin.org/logging-models": "next",