@twin.org/dataspace-test-app 0.0.3-next.16 → 0.0.3-next.18
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.
|
@@ -81,8 +81,8 @@ export class TestDataspaceDataPlaneApp {
|
|
|
81
81
|
"dcterms:publisher": organizationId,
|
|
82
82
|
hasPolicy: [
|
|
83
83
|
{
|
|
84
|
+
"@id": "urn:policy:test-offer-read-consignment",
|
|
84
85
|
"@type": "Offer",
|
|
85
|
-
uid: "urn:uuid:test-policy-offer-1",
|
|
86
86
|
assigner: organizationId,
|
|
87
87
|
permission: [
|
|
88
88
|
{
|
|
@@ -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 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\"@type\": \"Offer\",\n\t\t\t\t\t\tuid: \"urn:uuid:test-policy-offer-1\",\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: IActivityStreamsActivity): 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\"@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,7 +1,6 @@
|
|
|
1
1
|
import type { IJsonLdDocument } from "@twin.org/data-json-ld";
|
|
2
|
-
import { type IActivityQuery, type IDataRequest, type IDataspaceApp } from "@twin.org/dataspace-models";
|
|
2
|
+
import { type IDataspaceActivity, type IActivityQuery, type IDataRequest, type IDataspaceApp } from "@twin.org/dataspace-models";
|
|
3
3
|
import { type IDataspaceProtocolDataset } from "@twin.org/standards-dataspace-protocol";
|
|
4
|
-
import type { IActivityStreamsActivity } from "@twin.org/standards-w3c-activity-streams";
|
|
5
4
|
import type { ITestAppConstructorOptions } from "./ITestAppConstructorOptions.js";
|
|
6
5
|
/**
|
|
7
6
|
* Test App Activity Handler.
|
|
@@ -50,7 +49,7 @@ export declare class TestDataspaceDataPlaneApp implements IDataspaceApp {
|
|
|
50
49
|
* @param activity Activity
|
|
51
50
|
* @returns Activity processing result
|
|
52
51
|
*/
|
|
53
|
-
handleActivity<T>(activity:
|
|
52
|
+
handleActivity<T>(activity: IDataspaceActivity): Promise<T>;
|
|
54
53
|
/**
|
|
55
54
|
* Handles the Data Request.
|
|
56
55
|
* @param dataRequest The data request
|
package/docs/changelog.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.3-next.18](https://github.com/twinfoundation/dataspace/compare/dataspace-test-app-v0.0.3-next.17...dataspace-test-app-v0.0.3-next.18) (2026-03-09)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* resolve DSP transfer flow bugs for cross-node communication ([#76](https://github.com/twinfoundation/dataspace/issues/76)) ([506a45c](https://github.com/twinfoundation/dataspace/commit/506a45c94e63d5f958b1fc7131adfe452c3e2974))
|
|
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.17 to 0.0.3-next.18
|
|
16
|
+
|
|
17
|
+
## [0.0.3-next.17](https://github.com/twinfoundation/dataspace/compare/dataspace-test-app-v0.0.3-next.16...dataspace-test-app-v0.0.3-next.17) (2026-03-06)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* docs update ([8b44c7a](https://github.com/twinfoundation/dataspace/commit/8b44c7a75afb8d377a6f606616f8a78d58439ab4))
|
|
23
|
+
* types update ([77c338e](https://github.com/twinfoundation/dataspace/commit/77c338e9244dcc7e3d597fdb06229513b1f13eac))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Bug Fixes
|
|
27
|
+
|
|
28
|
+
* avoid compaction of incoming activities ([#77](https://github.com/twinfoundation/dataspace/issues/77)) ([ff43d6a](https://github.com/twinfoundation/dataspace/commit/ff43d6a3e1563eb9cb185501134b2a53ae88787c))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Dependencies
|
|
32
|
+
|
|
33
|
+
* The following workspace dependencies were updated
|
|
34
|
+
* dependencies
|
|
35
|
+
* @twin.org/dataspace-models bumped from 0.0.3-next.16 to 0.0.3-next.17
|
|
36
|
+
|
|
3
37
|
## [0.0.3-next.16](https://github.com/twinfoundation/dataspace/compare/dataspace-test-app-v0.0.3-next.15...dataspace-test-app-v0.0.3-next.16) (2026-03-02)
|
|
4
38
|
|
|
5
39
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@twin.org/dataspace-test-app",
|
|
3
|
-
"version": "0.0.3-next.
|
|
3
|
+
"version": "0.0.3-next.18",
|
|
4
4
|
"description": "Dataspace Test App",
|
|
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
|
+
"@twin.org/dataspace-models": "0.0.3-next.18",
|
|
22
22
|
"@twin.org/engine-models": "next",
|
|
23
23
|
"@twin.org/engine-types": "next",
|
|
24
24
|
"@twin.org/logging-models": "next",
|