node-opcua-client-dynamic-extension-object 2.76.2 → 2.78.0

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 (30) hide show
  1. package/dist/convert_data_type_definition_to_structuretype_schema.d.ts +3 -3
  2. package/dist/convert_data_type_definition_to_structuretype_schema.js +16 -12
  3. package/dist/convert_data_type_definition_to_structuretype_schema.js.map +1 -1
  4. package/dist/convert_structuretype_schema_to_structure_definition.d.ts +3 -0
  5. package/dist/convert_structuretype_schema_to_structure_definition.js +54 -0
  6. package/dist/convert_structuretype_schema_to_structure_definition.js.map +1 -0
  7. package/dist/extra_data_type_manager.js +4 -1
  8. package/dist/extra_data_type_manager.js.map +1 -1
  9. package/dist/get_extension_object_constructor.js +3 -3
  10. package/dist/get_extension_object_constructor.js.map +1 -1
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/private/populate_data_type_manager_103.js +62 -23
  15. package/dist/private/populate_data_type_manager_103.js.map +1 -1
  16. package/dist/private/populate_data_type_manager_104.js +24 -9
  17. package/dist/private/populate_data_type_manager_104.js.map +1 -1
  18. package/dist/resolve_dynamic_extension_object.d.ts +2 -0
  19. package/dist/resolve_dynamic_extension_object.js +79 -6
  20. package/dist/resolve_dynamic_extension_object.js.map +1 -1
  21. package/package.json +18 -18
  22. package/source/convert_data_type_definition_to_structuretype_schema.ts +28 -16
  23. package/source/convert_structuretype_schema_to_structure_definition.ts +51 -0
  24. package/source/extra_data_type_manager.ts +4 -1
  25. package/source/get_extension_object_constructor.ts +3 -3
  26. package/source/index.ts +1 -0
  27. package/source/private/populate_data_type_manager_103.ts +73 -28
  28. package/source/private/populate_data_type_manager_104.ts +26 -10
  29. package/source/resolve_dynamic_extension_object.ts +94 -6
  30. package/test/test_convertStructureTypeSchemaToStructureDefinition.ts +117 -0
@@ -1 +1 @@
1
- {"version":3,"file":"populate_data_type_manager_104.js","sourceRoot":"","sources":["../../source/private/populate_data_type_manager_104.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"populate_data_type_manager_104.js","sourceRoot":"","sources":["../../source/private/populate_data_type_manager_104.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import { ExtensionObject } from "node-opcua-extension-object";
1
2
  import { Variant } from "node-opcua-variant";
2
3
  import { IBasicSession } from "node-opcua-pseudo-session";
3
4
  import { ExtraDataTypeManager } from "./extra_data_type_manager";
5
+ export declare function resolveOpaqueStructureInExtentionObject(session: IBasicSession, dataTypeManager: ExtraDataTypeManager, object: ExtensionObject): Promise<void>;
4
6
  export declare function resolveDynamicExtensionObject(session: IBasicSession, variant: Variant, dataTypeManager: ExtraDataTypeManager): Promise<void>;
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.resolveDynamicExtensionObject = void 0;
12
+ exports.resolveDynamicExtensionObject = exports.resolveOpaqueStructureInExtentionObject = void 0;
13
13
  const node_opcua_binary_stream_1 = require("node-opcua-binary-stream");
14
14
  const node_opcua_extension_object_1 = require("node-opcua-extension-object");
15
15
  const node_opcua_variant_1 = require("node-opcua-variant");
@@ -42,15 +42,87 @@ function getOrExtractConstructor(session, binaryEncodingNodeId, dataTypeManager)
42
42
  }
43
43
  const r = browseResult.references[0];
44
44
  const dataTypeNodeId = r.nodeId;
45
- if (dataTypeFactory.getConstructorForDataType(dataTypeNodeId)) {
45
+ if (dataTypeFactory.getStructureInfoForDataType(dataTypeNodeId)) {
46
46
  throw new Error("Internal Error: we are not expecting this dataType to be processed already");
47
47
  }
48
48
  yield (0, populate_data_type_manager_104_1.readDataTypeDefinitionAndBuildType)(session, dataTypeNodeId, r.browseName.name, dataTypeFactory, {});
49
- return dataTypeFactory.getConstructorForDataType(dataTypeNodeId);
49
+ const structureInfo = dataTypeFactory.getStructureInfoForDataType(dataTypeNodeId);
50
+ if (!structureInfo.constructor) {
51
+ throw new Error("Cannot find constructor for abstract DataType");
52
+ }
53
+ return structureInfo.constructor;
54
+ });
55
+ }
56
+ function resolveOpaqueStructureInExtentionObject(session, dataTypeManager, object) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ const schema = object.schema;
59
+ function fixOpaqueStructureOnElement(element, field, data, args) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ if (element instanceof node_opcua_variant_1.Variant) {
62
+ yield resolveDynamicExtensionObject(session, element, dataTypeManager);
63
+ return element;
64
+ }
65
+ if (!(element instanceof node_opcua_extension_object_1.OpaqueStructure)) {
66
+ return element;
67
+ }
68
+ const variant = new node_opcua_variant_1.Variant({ dataType: node_opcua_variant_1.DataType.ExtensionObject, value: element });
69
+ yield resolveDynamicExtensionObject(session, variant, dataTypeManager);
70
+ return variant.value;
71
+ });
72
+ }
73
+ function fixOpaqueStructure(object, field, data, args) {
74
+ if (field.category === "complex" && !field.allowSubType) {
75
+ return;
76
+ }
77
+ if (field.category === "basic" && field.fieldType !== "Variant") {
78
+ return;
79
+ }
80
+ console.log("field", field.name, field.category, field.fieldType);
81
+ const a = object[field.name];
82
+ if (!a) {
83
+ return;
84
+ }
85
+ if (field.isArray) {
86
+ for (let i = 0; i < a.length; i++) {
87
+ const x = a[i];
88
+ promises.push((() => __awaiter(this, void 0, void 0, function* () {
89
+ a[i] = yield fixOpaqueStructureOnElement(x, field, data, args);
90
+ }))());
91
+ }
92
+ }
93
+ else {
94
+ promises.push((() => __awaiter(this, void 0, void 0, function* () {
95
+ object[field.name] = yield fixOpaqueStructureOnElement(a, field, data, args);
96
+ }))());
97
+ }
98
+ }
99
+ const promises = [];
100
+ object.applyOnAllFields(fixOpaqueStructure, { dataTypeManager, promises });
101
+ yield Promise.all(promises);
50
102
  });
51
103
  }
104
+ exports.resolveOpaqueStructureInExtentionObject = resolveOpaqueStructureInExtentionObject;
105
+ // async function resolveInnerVariantType(session: IBasicSession, object: ExtensionObject, dataTypeManager: ExtraDataTypeManager) {
106
+ // console.log("object = ", object.constructor.name);
107
+ // const fields = object.schema.fields;
108
+ // const _object = object as unknown as Record<string, unknown>;
109
+ // for (const field of fields) {
110
+ // console.log("field = ", field.name);
111
+ // if (field.category !== "complex") continue;
112
+ // const p = _object[field.name];
113
+ // if (p === undefined || p === null) continue;
114
+ // console.log("=>", field.name, (p as any).toString());
115
+ // if (p instanceof ExtensionObject) {
116
+ // resolveInnerVariantType(session, p, dataTypeManager);
117
+ // }
118
+ // if (p instanceof Variant && p.value instanceof OpaqueStructure) {
119
+ // console.log("§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§");
120
+ // p.value = resolveDynamicExtensionObjectV(session, p.value, dataTypeManager);
121
+ // }
122
+ // }
123
+ // }
52
124
  function resolveDynamicExtensionObjectV(session, opaque, dataTypeManager) {
53
- var _a, _b;
125
+ var _a;
54
126
  return __awaiter(this, void 0, void 0, function* () {
55
127
  try {
56
128
  const Constructor = yield getOrExtractConstructor(session, opaque.nodeId, dataTypeManager);
@@ -58,12 +130,13 @@ function resolveDynamicExtensionObjectV(session, opaque, dataTypeManager) {
58
130
  const stream = new node_opcua_binary_stream_1.BinaryStream(opaque.buffer);
59
131
  try {
60
132
  object.decode(stream);
133
+ yield resolveOpaqueStructureInExtentionObject(session, dataTypeManager, object);
61
134
  return object;
62
135
  }
63
136
  catch (err) {
64
137
  warningLog("Constructor = ", Constructor.name);
65
138
  warningLog("opaqueStructure = ", (_a = opaque === null || opaque === void 0 ? void 0 : opaque.nodeId) === null || _a === void 0 ? void 0 : _a.toString());
66
- warningLog("opaqueStructure = ", "0x" + ((_b = opaque === null || opaque === void 0 ? void 0 : opaque.buffer) === null || _b === void 0 ? void 0 : _b.toString("hex")));
139
+ warningLog("opaqueStructure = ", (0, node_opcua_debug_1.hexDump)(opaque.buffer, 132, 100));
67
140
  warningLog((0, node_opcua_debug_1.hexDump)(opaque.buffer));
68
141
  warningLog("resolveDynamicExtensionObjectV err = ", err);
69
142
  // try again for debugging
@@ -74,7 +147,7 @@ function resolveDynamicExtensionObjectV(session, opaque, dataTypeManager) {
74
147
  catch (err) {
75
148
  warningLog("err", err);
76
149
  warningLog("opaqueStructure = ", opaque.nodeId.toString());
77
- warningLog("opaqueStructure = ", "0x" + opaque.buffer.toString("hex"));
150
+ warningLog("opaqueStructure = ", "0x" + (0, node_opcua_debug_1.hexDump)(opaque.buffer, 132, 100));
78
151
  warningLog((0, node_opcua_debug_1.hexDump)(opaque.buffer));
79
152
  warningLog(dataTypeManager.toString());
80
153
  throw err;
@@ -1 +1 @@
1
- {"version":3,"file":"resolve_dynamic_extension_object.js","sourceRoot":"","sources":["../source/resolve_dynamic_extension_object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve_dynamic_extension_object.js","sourceRoot":"","sources":["../source/resolve_dynamic_extension_object.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,31 +1,31 @@
1
1
  {
2
2
  "name": "node-opcua-client-dynamic-extension-object",
3
- "version": "2.76.2",
3
+ "version": "2.78.0",
4
4
  "description": "pure nodejs OPCUA SDK - module client-dynamic-extension-object",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "tsc -b",
9
- "clean": "npx rimraf dist *.tsbuildinfo",
9
+ "clean": "npx rimraf node_modules dist *.tsbuildinfo",
10
10
  "test": "echo no test"
11
11
  },
12
12
  "dependencies": {
13
13
  "chalk": "4.1.2",
14
- "node-opcua-assert": "2.76.0",
15
- "node-opcua-binary-stream": "2.76.2",
16
- "node-opcua-data-model": "2.76.2",
17
- "node-opcua-data-value": "2.76.2",
18
- "node-opcua-debug": "2.76.2",
19
- "node-opcua-extension-object": "2.76.2",
20
- "node-opcua-factory": "2.76.2",
21
- "node-opcua-nodeid": "2.76.2",
22
- "node-opcua-pseudo-session": "2.76.2",
23
- "node-opcua-schemas": "2.76.2",
24
- "node-opcua-service-browse": "2.76.2",
25
- "node-opcua-service-translate-browse-path": "2.76.2",
26
- "node-opcua-status-code": "2.76.2",
27
- "node-opcua-types": "2.76.2",
28
- "node-opcua-variant": "2.76.2"
14
+ "node-opcua-assert": "2.77.0",
15
+ "node-opcua-binary-stream": "2.77.0",
16
+ "node-opcua-data-model": "2.78.0",
17
+ "node-opcua-data-value": "2.78.0",
18
+ "node-opcua-debug": "2.77.0",
19
+ "node-opcua-extension-object": "2.78.0",
20
+ "node-opcua-factory": "2.78.0",
21
+ "node-opcua-nodeid": "2.77.0",
22
+ "node-opcua-pseudo-session": "2.78.0",
23
+ "node-opcua-schemas": "2.78.0",
24
+ "node-opcua-service-browse": "2.78.0",
25
+ "node-opcua-service-translate-browse-path": "2.78.0",
26
+ "node-opcua-status-code": "2.77.0",
27
+ "node-opcua-types": "2.78.0",
28
+ "node-opcua-variant": "2.78.0"
29
29
  },
30
30
  "author": "Etienne Rossignon",
31
31
  "license": "MIT",
@@ -42,5 +42,5 @@
42
42
  "internet of things"
43
43
  ],
44
44
  "homepage": "http://node-opcua.github.io/",
45
- "gitHead": "acb5ecaf1e1c71af3b63e80909d58447f3f298e7"
45
+ "gitHead": "31c6eee3c51f52427584364fff2fdb07bbac65be"
46
46
  }
@@ -3,11 +3,15 @@ import { AttributeIds, BrowseDirection, makeResultMask, NodeClassMask } from "no
3
3
  import { DataValue } from "node-opcua-data-value";
4
4
  import { make_debugLog, make_errorLog, make_warningLog } from "node-opcua-debug";
5
5
  import {
6
+ BitField,
7
+ ConstructorFuncWithSchema,
6
8
  DataTypeFactory,
7
9
  EnumerationDefinitionSchema,
10
+ extractAllPossibleFields,
8
11
  FieldCategory,
9
12
  FieldInterfaceOptions,
10
13
  getBuiltInType,
14
+ IStructuredTypeSchema,
11
15
  StructuredTypeSchema,
12
16
  TypeDefinition
13
17
  } from "node-opcua-factory";
@@ -187,7 +191,7 @@ async function resolve2(
187
191
  };
188
192
  if (category === FieldCategory.enumeration) {
189
193
  if (definition instanceof EnumDefinition) {
190
- const e = new EnumerationDefinitionSchema({
194
+ const e = new EnumerationDefinitionSchema(dataTypeNodeId, {
191
195
  enumValues: convert(definition.fields),
192
196
  name: fieldTypeName
193
197
  });
@@ -196,12 +200,14 @@ async function resolve2(
196
200
  schema = e;
197
201
  }
198
202
  } else {
203
+ const isAbstract = false;
199
204
  schema = await convertDataTypeDefinitionToStructureTypeSchema(
200
205
  session,
201
206
  dataTypeNodeId,
202
207
  fieldTypeName,
203
208
  definition,
204
209
  dataTypeFactory,
210
+ isAbstract,
205
211
  cache
206
212
  );
207
213
  }
@@ -298,7 +304,7 @@ async function resolveFieldType(
298
304
  let schema: TypeDefinition | undefined;
299
305
  let category: FieldCategory = FieldCategory.enumeration;
300
306
 
301
- if (dataTypeFactory.hasStructuredType(fieldTypeName!)) {
307
+ if (dataTypeFactory.hasStructureByTypeName(fieldTypeName!)) {
302
308
  schema = dataTypeFactory.getStructuredTypeSchema(fieldTypeName);
303
309
  category = FieldCategory.complex;
304
310
  } else if (dataTypeFactory.hasBuiltInType(fieldTypeName!)) {
@@ -333,12 +339,11 @@ async function resolveFieldType(
333
339
  async function _setupEncodings(
334
340
  session: IBasicSession,
335
341
  dataTypeNodeId: NodeId,
336
- schema: StructuredTypeSchema
337
- ): Promise<StructuredTypeSchema> {
342
+ schema: IStructuredTypeSchema
343
+ ): Promise<IStructuredTypeSchema> {
338
344
  // read abstract flag
339
345
  const isAbstractDV = await session.read({ nodeId: dataTypeNodeId, attributeId: AttributeIds.IsAbstract });
340
346
  schema.dataTypeNodeId = dataTypeNodeId;
341
- schema.id = dataTypeNodeId;
342
347
 
343
348
  if (isAbstractDV.statusCode === StatusCodes.Good && isAbstractDV.value.value === false) {
344
349
  const encodings = await _findEncodings(session, dataTypeNodeId);
@@ -356,15 +361,22 @@ export async function convertDataTypeDefinitionToStructureTypeSchema(
356
361
  name: string,
357
362
  definition: DataTypeDefinition,
358
363
  dataTypeFactory: DataTypeFactory,
364
+ isAbstract: boolean,
359
365
  cache: { [key: string]: CacheForFieldResolution }
360
- ): Promise<StructuredTypeSchema> {
366
+ ): Promise<IStructuredTypeSchema> {
361
367
  if (definition instanceof StructureDefinition) {
362
368
  let fieldCountToIgnore = 0;
363
- let base: undefined | any = dataTypeFactory.getConstructorForDataType(definition.baseDataType)?.schema;
364
- while (base && !(base.dataTypeNodeId.value === DataType.ExtensionObject && base.dataTypeNodeId.namespace === 0)) {
365
- fieldCountToIgnore += base._possibleFields.length;
366
- base = base._baseSchema;
369
+ const structureInfo = dataTypeFactory.getStructureInfoForDataType(definition.baseDataType);
370
+ const baseSchema: IStructuredTypeSchema | undefined | null = structureInfo?.schema;
371
+
372
+ if (baseSchema) {
373
+ const possibleFields = extractAllPossibleFields(baseSchema);
374
+ fieldCountToIgnore += possibleFields.length;
367
375
  }
376
+ // while (base && !(base.dataTypeNodeId.value === DataType.ExtensionObject && base.dataTypeNodeId.namespace === 0)) {
377
+ // fieldCountToIgnore += base..length;
378
+ // base = base.getBaseSchema();
379
+ // }
368
380
 
369
381
  const fields: FieldInterfaceOptions[] = [];
370
382
 
@@ -386,9 +398,9 @@ export async function convertDataTypeDefinitionToStructureTypeSchema(
386
398
  let switchValue = 1;
387
399
  let switchBit = 0;
388
400
 
389
- const bitFields: { name: string; length?: number }[] | undefined = isUnion ? undefined : [];
401
+ const bitFields: BitField[] | undefined = isUnion ? undefined : [];
390
402
 
391
- const postActions: ((schema: StructuredTypeSchema) => void)[] = [];
403
+ const postActions: ((schema: IStructuredTypeSchema) => void)[] = [];
392
404
 
393
405
  if (definition.fields) {
394
406
  for (let i = fieldCountToIgnore; i < definition.fields.length; i++) {
@@ -405,7 +417,7 @@ export async function convertDataTypeDefinitionToStructureTypeSchema(
405
417
  (field.fieldType = fieldTypeName!), (field.category = FieldCategory.complex);
406
418
  fields.push(field);
407
419
  const capturedField = field;
408
- postActions.push((schema: StructuredTypeSchema) => {
420
+ postActions.push((schema: IStructuredTypeSchema) => {
409
421
  capturedField.schema = schema;
410
422
  });
411
423
  continue;
@@ -439,8 +451,8 @@ export async function convertDataTypeDefinitionToStructureTypeSchema(
439
451
  baseType,
440
452
  bitFields,
441
453
  fields,
442
- id: 0,
443
- name
454
+ name,
455
+ dataTypeFactory
444
456
  });
445
457
  const structuredTypeSchema = await _setupEncodings(session, dataTypeNodeId, os);
446
458
 
@@ -453,7 +465,7 @@ export async function convertDataTypeDefinitionToStructureTypeSchema(
453
465
  function createField(
454
466
  fieldD: StructureField,
455
467
  switchBit: number,
456
- bitFields: { name: string; length?: number | undefined }[] | undefined,
468
+ bitFields: BitField[] | undefined,
457
469
  isUnion: boolean,
458
470
  switchValue: number
459
471
  ): { field: FieldInterfaceOptions; switchBit: number; switchValue: number } {
@@ -0,0 +1,51 @@
1
+ import { CommonInterface, FieldCategory, FieldEnumeration, FieldType, IStructuredTypeSchema } from "node-opcua-factory";
2
+ import { StructureDefinition, StructureType, StructureDefinitionOptions, StructureFieldOptions } from "node-opcua-types";
3
+ import { NodeId, resolveNodeId } from "node-opcua-nodeid";
4
+ import { DataType } from "node-opcua-variant";
5
+
6
+ function _getDataType(field: FieldType): NodeId {
7
+ switch (field.category) {
8
+ case FieldCategory.complex:
9
+ return resolveNodeId((field.schema as any).dataTypeNodeId);
10
+ case FieldCategory.basic:
11
+ return resolveNodeId(field.fieldType);
12
+ case FieldCategory.enumeration:
13
+ default:
14
+ return resolveNodeId(field.dataType!);
15
+ }
16
+ }
17
+
18
+ export function convertStructureTypeSchemaToStructureDefinition(st: IStructuredTypeSchema): StructureDefinition {
19
+
20
+ let structureType = StructureType.Invalid;
21
+ let isUnion = false;
22
+ if (st.baseType === "Union") {
23
+ structureType = StructureType.Union;
24
+ isUnion = true;
25
+ } else {
26
+ structureType = StructureType.Structure;
27
+ }
28
+ // convert partial field (not including base class)
29
+ const structureDefinition: StructureDefinitionOptions = {
30
+ fields: [],
31
+ baseDataType: st.getBaseSchema()?.dataTypeNodeId,
32
+ defaultEncodingId: st.encodingDefaultBinary,
33
+ structureType
34
+ };
35
+ const fields: StructureFieldOptions[] = structureDefinition.fields || [];
36
+ for (const f of st.fields) {
37
+ const dataType = _getDataType(f);
38
+ if (isUnion && f.originalName === "SwitchField") {
39
+ continue;
40
+ }
41
+ fields.push({
42
+ arrayDimensions: f.isArray ? [] : undefined,
43
+ valueRank: f.isArray ? 1 : -1,
44
+ dataType,
45
+ isOptional: isUnion ? undefined: f.switchValue !== undefined,
46
+ description: f.documentation || undefined,
47
+ name: f.originalName
48
+ });
49
+ }
50
+ return new StructureDefinition(structureDefinition);
51
+ }
@@ -51,7 +51,10 @@ export class ExtraDataTypeManager {
51
51
  throw new Error("cannot find dataFactory for namespace=" + dataTypeNodeId.namespace);
52
52
  }
53
53
  // find schema corresponding to dataTypeNodeId in typeDictionary
54
- const Constructor = dataTypeFactory.findConstructorForDataType(dataTypeNodeId);
54
+ const Constructor = dataTypeFactory.findStructureInfoForDataType(dataTypeNodeId).constructor;
55
+ if (!Constructor) {
56
+ throw new Error("Cannot find Extension Object Constructor for Abstract dataType");
57
+ }
55
58
  return Constructor;
56
59
  }
57
60
 
@@ -13,9 +13,9 @@ export async function getExtensionObjectConstructor(session: IBasicSession, data
13
13
  const extraDataTypeManager = await getExtraDataTypeManager(session);
14
14
 
15
15
  const dataTypeFactory = extraDataTypeManager.getDataTypeFactory(dataTypeNodeId.namespace);
16
- const Constructor = dataTypeFactory.getConstructorForDataType(dataTypeNodeId);
17
- if (Constructor) {
18
- return Constructor as unknown as AnyConstructorFunc;
16
+ const structureInfo = dataTypeFactory.getStructureInfoForDataType(dataTypeNodeId);
17
+ if (structureInfo) {
18
+ return structureInfo.constructor as unknown as AnyConstructorFunc;
19
19
  }
20
20
  const dataValue = await session.read({
21
21
  nodeId: dataTypeNodeId,
package/source/index.ts CHANGED
@@ -9,4 +9,5 @@ export * from "./get_extension_object_constructor";
9
9
  export * from "./get_extra_data_type_manager";
10
10
  export * from "./resolve_dynamic_extension_object";
11
11
  export * from "./convert_data_type_definition_to_structuretype_schema";
12
+ export * from "./convert_structuretype_schema_to_structure_definition";
12
13
  export * from "./promote_opaque_structure_in_notification_data";