node-opcua-factory 2.97.0 → 2.98.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 (55) hide show
  1. package/package.json +9 -9
  2. package/dist/base_ua_object.d.ts +0 -53
  3. package/dist/base_ua_object.js +0 -548
  4. package/dist/base_ua_object.js.map +0 -1
  5. package/dist/basic_type.d.ts +0 -40
  6. package/dist/basic_type.js +0 -119
  7. package/dist/basic_type.js.map +0 -1
  8. package/dist/builtin_types.d.ts +0 -46
  9. package/dist/builtin_types.js +0 -284
  10. package/dist/builtin_types.js.map +0 -1
  11. package/dist/builtin_types_special.d.ts +0 -5
  12. package/dist/builtin_types_special.js +0 -46
  13. package/dist/builtin_types_special.js.map +0 -1
  14. package/dist/datatype_factory.d.ts +0 -43
  15. package/dist/datatype_factory.js +0 -308
  16. package/dist/datatype_factory.js.map +0 -1
  17. package/dist/encode_decode.d.ts +0 -9
  18. package/dist/encode_decode.js +0 -40
  19. package/dist/encode_decode.js.map +0 -1
  20. package/dist/enumerations.d.ts +0 -34
  21. package/dist/enumerations.js +0 -82
  22. package/dist/enumerations.js.map +0 -1
  23. package/dist/get_built_in_type.d.ts +0 -0
  24. package/dist/get_built_in_type.js +0 -2
  25. package/dist/get_built_in_type.js.map +0 -1
  26. package/dist/get_standard_data_type_factory.d.ts +0 -5
  27. package/dist/get_standard_data_type_factory.js +0 -30
  28. package/dist/get_standard_data_type_factory.js.map +0 -1
  29. package/dist/get_structured_type_schema.d.ts +0 -1
  30. package/dist/get_structured_type_schema.js +0 -9
  31. package/dist/get_structured_type_schema.js.map +0 -1
  32. package/dist/id_generator.d.ts +0 -3
  33. package/dist/id_generator.js +0 -22
  34. package/dist/id_generator.js.map +0 -1
  35. package/dist/index.d.ts +0 -18
  36. package/dist/index.js +0 -35
  37. package/dist/index.js.map +0 -1
  38. package/dist/nodeid_type.d.ts +0 -13
  39. package/dist/nodeid_type.js +0 -19
  40. package/dist/nodeid_type.js.map +0 -1
  41. package/dist/parameters.d.ts +0 -3
  42. package/dist/parameters.js +0 -7
  43. package/dist/parameters.js.map +0 -1
  44. package/dist/register_class_definition.d.ts +0 -3
  45. package/dist/register_class_definition.js +0 -9
  46. package/dist/register_class_definition.js.map +0 -1
  47. package/dist/schema_helpers.d.ts +0 -24
  48. package/dist/schema_helpers.js +0 -100
  49. package/dist/schema_helpers.js.map +0 -1
  50. package/dist/structured_type_schema.d.ts +0 -39
  51. package/dist/structured_type_schema.js +0 -284
  52. package/dist/structured_type_schema.js.map +0 -1
  53. package/dist/types.d.ts +0 -160
  54. package/dist/types.js +0 -10
  55. package/dist/types.js.map +0 -1
package/dist/index.js DELETED
@@ -1,35 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- /**
18
- * @module node-opcua-factory
19
- */
20
- __exportStar(require("./base_ua_object"), exports);
21
- __exportStar(require("./basic_type"), exports);
22
- __exportStar(require("./builtin_types_special"), exports);
23
- __exportStar(require("./builtin_types"), exports);
24
- __exportStar(require("./datatype_factory"), exports);
25
- __exportStar(require("./enumerations"), exports);
26
- __exportStar(require("./get_standard_data_type_factory"), exports);
27
- __exportStar(require("./get_structured_type_schema"), exports);
28
- __exportStar(require("./id_generator"), exports);
29
- __exportStar(require("./nodeid_type"), exports);
30
- __exportStar(require("./parameters"), exports);
31
- __exportStar(require("./register_class_definition"), exports);
32
- __exportStar(require("./schema_helpers"), exports);
33
- __exportStar(require("./structured_type_schema"), exports);
34
- __exportStar(require("./types"), exports);
35
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,mDAAiC;AACjC,+CAA6B;AAC7B,0DAAwC;AACxC,kDAAgC;AAChC,qDAAmC;AACnC,iDAA+B;AAC/B,mEAAiD;AACjD,+DAA6C;AAC7C,iDAA+B;AAC/B,gDAA8B;AAC9B,+CAA6B;AAC7B,8DAA4C;AAC5C,mDAAiC;AACjC,2DAAyC;AACzC,0CAAwB"}
@@ -1,13 +0,0 @@
1
- export declare enum NodeIdType {
2
- ReferenceType = 1,
3
- IsForward = 2,
4
- NodeClass = 4,
5
- BrowseName = 8,
6
- DisplayName = 16,
7
- TypeDefinition = 32
8
- }
9
- export declare const schemaNodeIdType: {
10
- name: string;
11
- enumValues: typeof NodeIdType;
12
- };
13
- export declare const _enumerationNodeIdType: import("node-opcua-enum").Enum;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._enumerationNodeIdType = exports.schemaNodeIdType = exports.NodeIdType = void 0;
4
- const enumerations_1 = require("./enumerations");
5
- var NodeIdType;
6
- (function (NodeIdType) {
7
- NodeIdType[NodeIdType["ReferenceType"] = 1] = "ReferenceType";
8
- NodeIdType[NodeIdType["IsForward"] = 2] = "IsForward";
9
- NodeIdType[NodeIdType["NodeClass"] = 4] = "NodeClass";
10
- NodeIdType[NodeIdType["BrowseName"] = 8] = "BrowseName";
11
- NodeIdType[NodeIdType["DisplayName"] = 16] = "DisplayName";
12
- NodeIdType[NodeIdType["TypeDefinition"] = 32] = "TypeDefinition";
13
- })(NodeIdType = exports.NodeIdType || (exports.NodeIdType = {}));
14
- exports.schemaNodeIdType = {
15
- name: "NodeIdType",
16
- enumValues: NodeIdType
17
- };
18
- exports._enumerationNodeIdType = (0, enumerations_1.registerEnumeration)(exports.schemaNodeIdType);
19
- //# sourceMappingURL=nodeid_type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nodeid_type.js","sourceRoot":"","sources":["../source/nodeid_type.ts"],"names":[],"mappings":";;;AAAA,iDAAqD;AAIrD,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,6DAAoB,CAAA;IACpB,qDAAgB,CAAA;IAChB,qDAAgB,CAAA;IAChB,uDAAiB,CAAA;IACjB,0DAAkB,CAAA;IAClB,gEAAqB,CAAA;AACzB,CAAC,EAPW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAOrB;AACY,QAAA,gBAAgB,GAAG;IAC5B,IAAI,EAAE,YAAY;IAClB,UAAU,EAAE,UAAU;CACzB,CAAC;AACW,QAAA,sBAAsB,GAAG,IAAA,kCAAmB,EAAC,wBAAgB,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare const parameters: {
2
- debugSchemaHelper: boolean;
3
- };
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parameters = void 0;
4
- exports.parameters = {
5
- debugSchemaHelper: typeof process === "object" && !!process.env.DEBUG_CLASS
6
- };
7
- //# sourceMappingURL=parameters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parameters.js","sourceRoot":"","sources":["../source/parameters.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;IACtB,iBAAiB,EAAE,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW;CAC9E,CAAC"}
@@ -1,3 +0,0 @@
1
- import { NodeId } from "node-opcua-nodeid";
2
- import { ConstructorFuncWithSchema } from "./types";
3
- export declare function registerClassDefinition(dataTypeNodeId: NodeId, className: string, classConstructor: ConstructorFuncWithSchema): void;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerClassDefinition = void 0;
4
- const get_standard_data_type_factory_1 = require("./get_standard_data_type_factory");
5
- function registerClassDefinition(dataTypeNodeId, className, classConstructor) {
6
- return (0, get_standard_data_type_factory_1.getStandardDataTypeFactory)().registerClassDefinition(dataTypeNodeId, className, classConstructor);
7
- }
8
- exports.registerClassDefinition = registerClassDefinition;
9
- //# sourceMappingURL=register_class_definition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register_class_definition.js","sourceRoot":"","sources":["../source/register_class_definition.ts"],"names":[],"mappings":";;;AACA,qFAA8E;AAG9E,SAAgB,uBAAuB,CACnC,cAAsB,EACtB,SAAiB,EACjB,gBAA2C;IAE3C,OAAO,IAAA,2DAA0B,GAAE,CAAC,uBAAuB,CAAC,cAAc,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC7G,CAAC;AAND,0DAMC"}
@@ -1,24 +0,0 @@
1
- import { DataTypeFactory } from "./datatype_factory";
2
- import { FieldType, IStructuredTypeSchema, StructuredTypeField } from "./types";
3
- /**
4
- * ensure correctness of a schema object.
5
- *
6
- * @method check_schema_correctness
7
- * @param schema
8
- *
9
- */
10
- export declare function check_schema_correctness(schema: IStructuredTypeSchema): void;
11
- /**
12
- * @method initialize_value
13
- * @param value
14
- * @param defaultValue
15
- * @return {*}
16
- */
17
- export declare function initialize_field(field: StructuredTypeField, value: unknown, factory?: DataTypeFactory): any;
18
- /**
19
- * @method initialize_field_array
20
- * @param field
21
- * @param valueArray
22
- * @return
23
- */
24
- export declare function initialize_field_array(field: FieldType, valueArray: any, factory?: DataTypeFactory): any;
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initialize_field_array = exports.initialize_field = exports.check_schema_correctness = void 0;
4
- /**
5
- * @module node-opcua-factory
6
- */
7
- const node_opcua_assert_1 = require("node-opcua-assert");
8
- const node_opcua_debug_1 = require("node-opcua-debug");
9
- const node_opcua_constants_1 = require("node-opcua-constants");
10
- const base_ua_object_1 = require("./base_ua_object");
11
- const types_1 = require("./types");
12
- const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
13
- /**
14
- * ensure correctness of a schema object.
15
- *
16
- * @method check_schema_correctness
17
- * @param schema
18
- *
19
- */
20
- function check_schema_correctness(schema) {
21
- (0, node_opcua_assert_1.assert)(typeof schema.name === "string", " expecting schema to have a name");
22
- (0, node_opcua_assert_1.assert)(schema.fields instanceof Array, " expecting schema to provide a set of fields " + schema.name);
23
- (0, node_opcua_assert_1.assert)(schema.baseType === undefined || typeof schema.baseType === "string");
24
- }
25
- exports.check_schema_correctness = check_schema_correctness;
26
- /**
27
- * @method initialize_value
28
- * @param value
29
- * @param defaultValue
30
- * @return {*}
31
- */
32
- function initialize_field(field, value, factory) {
33
- const _t = field.schema;
34
- if (field.allowSubType && field.category === "complex") {
35
- if (value instanceof base_ua_object_1.BaseUAObject) {
36
- value = { dataType: node_opcua_constants_1.DataTypeIds.Structure, value };
37
- }
38
- }
39
- if (!(_t !== null && typeof _t === "object")) {
40
- throw new Error("initialize_field: expecting field.schema to be set field.name = '" + field.name + "' type = " + field.fieldType);
41
- }
42
- if (field.category === types_1.FieldCategory.complex) {
43
- if (field.fieldTypeConstructor) {
44
- return new field.fieldTypeConstructor(value);
45
- }
46
- else {
47
- debugLog("xxxx => missing constructor for field type", field.fieldType);
48
- }
49
- }
50
- if (value === undefined || value === null) {
51
- const defaultValue = _t.computer_default_value ? _t.computer_default_value(field.defaultValue) : field.defaultValue;
52
- if (value === undefined) {
53
- if (_t.coerce) {
54
- return _t.coerce(defaultValue);
55
- }
56
- return defaultValue;
57
- }
58
- if (defaultValue === null) {
59
- if (value === null) {
60
- return null;
61
- }
62
- }
63
- }
64
- if (_t.coerce) {
65
- value = _t.coerce(value);
66
- }
67
- if (field.validate) {
68
- if (!field.validate(value)) {
69
- throw Error(" invalid value " + value + " for field " + field.name + " of type " + field.fieldType);
70
- }
71
- }
72
- return value;
73
- }
74
- exports.initialize_field = initialize_field;
75
- /**
76
- * @method initialize_field_array
77
- * @param field
78
- * @param valueArray
79
- * @return
80
- */
81
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
82
- function initialize_field_array(field, valueArray, factory) {
83
- const _t = field.schema;
84
- let value;
85
- let i;
86
- (0, node_opcua_assert_1.assert)(field !== null && typeof field === "object");
87
- (0, node_opcua_assert_1.assert)(field.isArray);
88
- if (!valueArray && field.defaultValue === null) {
89
- return null;
90
- }
91
- valueArray = valueArray || [];
92
- const arr = [];
93
- for (i = 0; i < valueArray.length; i++) {
94
- value = initialize_field(field, valueArray[i], factory);
95
- arr.push(value);
96
- }
97
- return arr;
98
- }
99
- exports.initialize_field_array = initialize_field_array;
100
- //# sourceMappingURL=schema_helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema_helpers.js","sourceRoot":"","sources":["../source/schema_helpers.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import { BinaryStream } from "node-opcua-binary-stream";
2
- import { ExpandedNodeId, NodeId } from "node-opcua-nodeid";
3
- import { TypeSchemaBase } from "./builtin_types";
4
- import { BitField, FieldType, IStructuredTypeSchema, StructuredTypeOptions } from "./types";
5
- import { DataTypeFactory } from "./datatype_factory";
6
- export declare class StructuredTypeSchema extends TypeSchemaBase implements IStructuredTypeSchema {
7
- fields: FieldType[];
8
- dataTypeNodeId: NodeId;
9
- baseType: string;
10
- private _baseSchema;
11
- documentation?: string;
12
- isValid?: (options: any) => boolean;
13
- decodeDebug?: (stream: BinaryStream, options: any) => any;
14
- constructHook?: (options: any) => any;
15
- encodingDefaultBinary?: ExpandedNodeId;
16
- encodingDefaultXml?: ExpandedNodeId;
17
- encodingDefaultJson?: ExpandedNodeId;
18
- bitFields?: BitField[];
19
- private _dataTypeFactory;
20
- constructor(options: StructuredTypeOptions);
21
- getDataTypeFactory(): DataTypeFactory;
22
- getBaseSchema(): IStructuredTypeSchema | null;
23
- getPossibleFieldsLocal(): string[];
24
- toString(): string;
25
- }
26
- /**
27
- * extract a list of all possible fields for a schema
28
- * (by walking up the inheritance chain)
29
- *
30
- */
31
- export declare function extractAllPossibleFields(schema: IStructuredTypeSchema): string[];
32
- /**
33
- * check correctness of option fields against scheme
34
- *
35
- * @method check_options_correctness_against_schema
36
- *
37
- */
38
- export declare function check_options_correctness_against_schema(obj: any, schema: IStructuredTypeSchema, options: any): boolean;
39
- export declare function buildStructuredType(schemaLight: Omit<StructuredTypeOptions, "dataTypeFactory">): IStructuredTypeSchema;
@@ -1,284 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildStructuredType = exports.check_options_correctness_against_schema = exports.extractAllPossibleFields = exports.StructuredTypeSchema = void 0;
4
- /**
5
- * @module node-opcua-factory
6
- */
7
- const chalk = require("chalk");
8
- const node_opcua_assert_1 = require("node-opcua-assert");
9
- const node_opcua_debug_1 = require("node-opcua-debug");
10
- const node_opcua_nodeid_1 = require("node-opcua-nodeid");
11
- const node_opcua_utils_1 = require("node-opcua-utils");
12
- const builtin_types_1 = require("./builtin_types");
13
- const parameters_1 = require("./parameters");
14
- const get_standard_data_type_factory_1 = require("./get_standard_data_type_factory");
15
- const types_1 = require("./types");
16
- const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
17
- function figureOutFieldCategory(field, dataTypeFactory) {
18
- const fieldType = field.fieldType;
19
- if (field.category) {
20
- return field.category;
21
- }
22
- if (dataTypeFactory.hasEnumeration(fieldType)) {
23
- return types_1.FieldCategory.enumeration;
24
- }
25
- else if (dataTypeFactory.hasBuiltInType(fieldType)) {
26
- return types_1.FieldCategory.basic;
27
- }
28
- else if (dataTypeFactory.hasStructureByTypeName(fieldType)) {
29
- (0, node_opcua_assert_1.assert)(fieldType !== "LocalizedText"); // LocalizedText should be treated as BasicType!!!
30
- return types_1.FieldCategory.complex;
31
- }
32
- warningLog("Cannot figure out field category for ", field);
33
- return types_1.FieldCategory.basic;
34
- }
35
- const regExp = /((ns[0-9]+:)?)(.*)/;
36
- function figureOutSchema(underConstructSchema, dataTypeFactory, field, category) {
37
- if (field.schema) {
38
- return field.schema;
39
- }
40
- if (underConstructSchema.name === field.fieldType) {
41
- return underConstructSchema;
42
- }
43
- let returnValue = null;
44
- // may be the field.type contains a ns<X>: prefix !! like the one found in Beckhoff PLC !
45
- const m = field.fieldType.match(regExp);
46
- /* istanbul ignore next */
47
- if (!m) {
48
- throw new Error("malformed fieldType ? : " + field.fieldType);
49
- }
50
- const fieldTypeWithoutNS = m[3];
51
- switch (category) {
52
- case types_1.FieldCategory.complex:
53
- if (dataTypeFactory.hasStructureByTypeName(field.fieldType)) {
54
- returnValue = dataTypeFactory.getStructuredTypeSchema(fieldTypeWithoutNS);
55
- }
56
- else {
57
- // LocalizedText etc ...
58
- returnValue = dataTypeFactory.getBuiltInType(fieldTypeWithoutNS);
59
- }
60
- break;
61
- case types_1.FieldCategory.basic:
62
- returnValue = dataTypeFactory.getBuiltInType(fieldTypeWithoutNS);
63
- if (!returnValue) {
64
- if (dataTypeFactory.hasEnumeration(fieldTypeWithoutNS)) {
65
- warningLog("expecing a enumeration!");
66
- }
67
- returnValue = dataTypeFactory.getStructuredTypeSchema(fieldTypeWithoutNS);
68
- if (returnValue) {
69
- console.log("Why ?");
70
- }
71
- }
72
- break;
73
- case types_1.FieldCategory.enumeration:
74
- returnValue = dataTypeFactory.getEnumeration(fieldTypeWithoutNS);
75
- break;
76
- }
77
- if (null === returnValue || undefined === returnValue) {
78
- try {
79
- returnValue = dataTypeFactory.getEnumeration(fieldTypeWithoutNS);
80
- }
81
- catch (err) {
82
- console.log(err);
83
- }
84
- throw new Error("Cannot find Schema for field with name " +
85
- field.name +
86
- " fieldTypeWithoutNS= " +
87
- fieldTypeWithoutNS +
88
- " with type " +
89
- field.fieldType +
90
- " category = " +
91
- category +
92
- JSON.stringify(field, null, "\t"));
93
- }
94
- return returnValue;
95
- }
96
- function buildField(underConstructSchema, dataTypeFactory, fieldLight, _index) {
97
- const category = figureOutFieldCategory(fieldLight, dataTypeFactory);
98
- const schema = figureOutSchema(underConstructSchema, dataTypeFactory, fieldLight, category);
99
- /* istanbul ignore next */
100
- if (!schema) {
101
- throw new Error("expecting a valid schema for field with name " +
102
- fieldLight.name +
103
- " with type " +
104
- fieldLight.fieldType +
105
- " category" +
106
- category +
107
- " at index" +
108
- _index);
109
- }
110
- const { defaultValue, isArray, documentation, fieldType, switchBit, switchValue, allowSubType, dataType, basicDataType } = fieldLight;
111
- return {
112
- name: (0, node_opcua_utils_1.lowerFirstLetter)(fieldLight.name),
113
- originalName: fieldLight.name,
114
- category,
115
- defaultValue,
116
- isArray,
117
- documentation,
118
- fieldType,
119
- switchBit,
120
- switchValue,
121
- allowSubType,
122
- dataType,
123
- basicDataType,
124
- schema
125
- };
126
- }
127
- class StructuredTypeSchema extends builtin_types_1.TypeSchemaBase {
128
- constructor(options) {
129
- super(options);
130
- this.bitFields = options.bitFields;
131
- this.baseType = options.baseType;
132
- this.category = types_1.FieldCategory.complex;
133
- this._dataTypeFactory = options.dataTypeFactory;
134
- if (this._dataTypeFactory.hasBuiltInType(options.name)) {
135
- this.category = types_1.FieldCategory.basic;
136
- }
137
- this.dataTypeNodeId = new node_opcua_nodeid_1.NodeId();
138
- this._baseSchema = undefined;
139
- this.fields = options.fields.map(buildField.bind(null, this, this._dataTypeFactory));
140
- }
141
- getDataTypeFactory() {
142
- return this._dataTypeFactory || (0, get_standard_data_type_factory_1.getStandardDataTypeFactory)();
143
- }
144
- getBaseSchema() {
145
- if (this._baseSchema !== undefined && this._baseSchema === null && this.baseType === "ExtensionObject") {
146
- return this._baseSchema;
147
- }
148
- const _schemaBase = _get_base_schema(this);
149
- this._baseSchema = _schemaBase;
150
- return _schemaBase || null;
151
- }
152
- getPossibleFieldsLocal() {
153
- return this.fields.map((field) => field.name);
154
- }
155
- toString() {
156
- var _a, _b, _c;
157
- const str = [];
158
- str.push("name = " + this.name);
159
- str.push("baseType = " + this.baseType);
160
- str.push("bitFields = " + (this.bitFields ? this.bitFields.map((b) => b.name).join(" ") : undefined));
161
- str.push("dataTypeNodeId = " + (this.dataTypeNodeId ? this.dataTypeNodeId.toString() : undefined));
162
- str.push("documentation = " + this.documentation);
163
- str.push("encodingDefaultBinary = " + ((_a = this.encodingDefaultBinary) === null || _a === void 0 ? void 0 : _a.toString()));
164
- str.push("encodingDefaultXml = " + ((_b = this.encodingDefaultXml) === null || _b === void 0 ? void 0 : _b.toString()));
165
- str.push("encodingDefaultJson = " + ((_c = this.encodingDefaultJson) === null || _c === void 0 ? void 0 : _c.toString()));
166
- for (const f of this.fields) {
167
- str.push(" field = " +
168
- f.name.padEnd(30) +
169
- " isArray= " +
170
- (f.isArray ? true : false) +
171
- " " +
172
- f.fieldType.toString().padEnd(30) +
173
- (f.switchBit !== undefined ? " switchBit " + f.switchBit : "") +
174
- (f.switchValue !== undefined ? " switchValue " + f.switchValue : ""));
175
- }
176
- return str.join("\n");
177
- }
178
- }
179
- exports.StructuredTypeSchema = StructuredTypeSchema;
180
- function _get_base_schema(schema) {
181
- const dataTypeFactory = schema.getDataTypeFactory();
182
- if (schema.baseType === "ExtensionObject" || schema.baseType === "DataTypeDefinition") {
183
- return null;
184
- }
185
- if (schema.baseType === "Union") {
186
- return null;
187
- }
188
- if (schema.baseType &&
189
- schema.baseType !== "BaseUAObject" &&
190
- schema.baseType !== "Structure" &&
191
- schema.baseType !== "DataTypeDefinition") {
192
- if (!dataTypeFactory.hasStructureByTypeName(schema.baseType)) {
193
- // warningLog(`Cannot find schema for ${schema.baseType} in dataTypeFactory for ${schema.name} and schema is not abstract ! fix me !`);
194
- return undefined;
195
- }
196
- const structureInfo = dataTypeFactory.getStructureInfoByTypeName(schema.baseType);
197
- // istanbul ignore next
198
- if (!structureInfo) {
199
- throw new Error(" cannot find factory for " + schema.baseType);
200
- }
201
- if (structureInfo.schema) {
202
- return structureInfo.schema;
203
- }
204
- }
205
- // put in cache for speedup
206
- return null;
207
- }
208
- /**
209
- * extract a list of all possible fields for a schema
210
- * (by walking up the inheritance chain)
211
- *
212
- */
213
- function extractAllPossibleFields(schema) {
214
- // returns cached result if any
215
- // istanbul ignore next
216
- // extract the possible fields from the schema.
217
- let possibleFields = schema.fields.map((field) => field.name);
218
- const baseSchema = schema.getBaseSchema();
219
- // istanbul ignore next
220
- if (baseSchema) {
221
- const fields = extractAllPossibleFields(baseSchema);
222
- possibleFields = fields.concat(possibleFields);
223
- }
224
- return possibleFields;
225
- }
226
- exports.extractAllPossibleFields = extractAllPossibleFields;
227
- /**
228
- * check correctness of option fields against scheme
229
- *
230
- * @method check_options_correctness_against_schema
231
- *
232
- */
233
- function check_options_correctness_against_schema(obj, schema, options) {
234
- if (!parameters_1.parameters.debugSchemaHelper) {
235
- return true; // ignoring set
236
- }
237
- options = options || {};
238
- // istanbul ignore next
239
- if (!(options !== null && typeof options === "object") && !(typeof options === "object")) {
240
- let message = chalk.red(" Invalid options specified while trying to construct a ") + " " + chalk.yellow(schema.name);
241
- message += "\n";
242
- message += chalk.red(" expecting a ") + chalk.yellow(" Object ");
243
- message += "\n";
244
- message += chalk.red(" and got a ") + chalk.yellow(typeof options) + chalk.red(" instead ");
245
- throw new Error(message);
246
- }
247
- // istanbul ignore next
248
- if (options instanceof obj.constructor) {
249
- return true;
250
- }
251
- // extract the possible fields from the schema.
252
- const possibleFields = obj.constructor.possibleFields || extractAllPossibleFields(schema);
253
- // extracts the fields exposed by the option object
254
- const currentFields = Object.keys(options);
255
- // get a list of field that are in the 'options' object but not in schema
256
- // https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore
257
- function difference(a1, a2) {
258
- return [a1, a2].reduce((a, b) => a.filter((value) => !b.includes(value)));
259
- }
260
- const invalidOptionsFields = difference(currentFields, possibleFields);
261
- /* istanbul ignore next */
262
- if (invalidOptionsFields.length > 0) {
263
- // tslint:disable:no-console
264
- console.log("expected schema", schema.name);
265
- console.log(chalk.yellow("possible fields= "), possibleFields.sort().join(" "));
266
- console.log(chalk.red("current fields= "), currentFields.sort().join(" "));
267
- console.log(chalk.cyan("invalid_options_fields= "), invalidOptionsFields.sort().join(" "));
268
- console.log("options = ", options);
269
- }
270
- /* istanbul ignore next */
271
- if (invalidOptionsFields.length !== 0) {
272
- // tslint:disable:no-console
273
- console.log(chalk.yellow("possible fields= "), possibleFields.sort().join(" "));
274
- console.log(chalk.red("current fields= "), currentFields.sort().join(" "));
275
- throw new Error(" invalid field found in option :" + JSON.stringify(invalidOptionsFields));
276
- }
277
- return true;
278
- }
279
- exports.check_options_correctness_against_schema = check_options_correctness_against_schema;
280
- function buildStructuredType(schemaLight) {
281
- return new StructuredTypeSchema(Object.assign(Object.assign({}, schemaLight), { dataTypeFactory: (0, get_standard_data_type_factory_1.getStandardDataTypeFactory)() }));
282
- }
283
- exports.buildStructuredType = buildStructuredType;
284
- //# sourceMappingURL=structured_type_schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"structured_type_schema.js","sourceRoot":"","sources":["../source/structured_type_schema.ts"],"names":[],"mappings":"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"}