node-opcua-convert-nodeset-to-javascript 2.178.0 → 2.180.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.
- package/dist/_dataType.d.ts +4 -4
- package/dist/_dataType.js +33 -14
- package/dist/_dataType.js.map +1 -1
- package/dist/convert_namespace_to_typescript.d.ts +2 -2
- package/dist/convert_namespace_to_typescript.js +50 -52
- package/dist/convert_namespace_to_typescript.js.map +1 -1
- package/dist/convert_to_typescript.d.ts +16 -8
- package/dist/convert_to_typescript.js +122 -90
- package/dist/convert_to_typescript.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.js +4 -3
- package/dist/main.js.map +1 -1
- package/dist/private/cache.d.ts +4 -4
- package/dist/private/cache.js +16 -11
- package/dist/private/cache.js.map +1 -1
- package/dist/private/fs_retry.js +3 -1
- package/dist/private/fs_retry.js.map +1 -1
- package/dist/private/get_corresponding_data_type.d.ts +4 -4
- package/dist/private/get_corresponding_data_type.js +9 -10
- package/dist/private/get_corresponding_data_type.js.map +1 -1
- package/dist/private/to_filename.js.map +1 -1
- package/dist/private/utils.d.ts +5 -5
- package/dist/private/utils.js +28 -10
- package/dist/private/utils.js.map +1 -1
- package/dist/remove_unused.js +36 -7
- package/dist/remove_unused.js.map +1 -1
- package/dist/update_parent_tsconfig.js +14 -17
- package/dist/update_parent_tsconfig.js.map +1 -1
- package/dist/walk_through.d.ts +1 -1
- package/dist/walk_through.js.map +1 -1
- package/package.json +17 -17
- package/source/_dataType.ts +47 -27
- package/source/convert_namespace_to_typescript.ts +20 -25
- package/source/convert_to_typescript.ts +166 -138
- package/source/index.ts +2 -2
- package/source/main.ts +4 -3
- package/source/private/cache.ts +23 -16
- package/source/private/fs_retry.ts +3 -1
- package/source/private/get_corresponding_data_type.ts +29 -26
- package/source/private/to_filename.ts +1 -1
- package/source/private/utils.ts +41 -19
- package/source/private-stuff.ts +0 -2
- package/source/remove_unused.ts +38 -8
- package/source/update_parent_tsconfig.ts +27 -16
- package/source/walk_through.ts +3 -3
|
@@ -6,36 +6,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
6
6
|
};
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.updateParentTSConfig = updateParentTSConfig;
|
|
9
|
-
const
|
|
10
|
-
const { readFile, writeFile } =
|
|
11
|
-
const
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
10
|
+
const { readFile, writeFile } = node_fs_1.promises;
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
12
|
// Uncomment the following to get __dirname equivalent when compiling to ESM
|
|
13
13
|
//import { fileURLToPath } from 'url';
|
|
14
14
|
//const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
15
15
|
const node_opcua_nodesets_1 = require("node-opcua-nodesets");
|
|
16
16
|
async function updateParentTSConfig() {
|
|
17
|
-
const packagesFolder =
|
|
18
|
-
const parentTSConfigFile =
|
|
17
|
+
const packagesFolder = node_path_1.default.join(__dirname, "..", "..");
|
|
18
|
+
const parentTSConfigFile = node_path_1.default.join(packagesFolder, "tsconfig.json");
|
|
19
19
|
console.log(`Updating parent tsconfig.json file: ${parentTSConfigFile}`);
|
|
20
|
-
const content = await readFile(parentTSConfigFile,
|
|
20
|
+
const content = await readFile(parentTSConfigFile, "utf8");
|
|
21
21
|
// Strip out comments to avoid JSON parsing error
|
|
22
|
-
const contentWithoutComments = content.replace(/\/\*.+?\*\//g,
|
|
23
|
-
|
|
24
|
-
// TODO: Preserve comments automatically
|
|
25
|
-
let parentTSConfig = "";
|
|
22
|
+
const contentWithoutComments = content.replace(/\/\*.+?\*\//g, "").replace(/\/\/.+?$/g, "");
|
|
23
|
+
let parentTSConfig;
|
|
26
24
|
try {
|
|
27
25
|
parentTSConfig = JSON.parse(contentWithoutComments);
|
|
28
26
|
}
|
|
29
27
|
catch (err) {
|
|
30
28
|
console.log(`Error parsing JSON from ${parentTSConfigFile}:`, err);
|
|
31
|
-
console.log(
|
|
29
|
+
console.log("Content without comments:", contentWithoutComments);
|
|
32
30
|
throw err;
|
|
33
31
|
}
|
|
34
32
|
const unlistedReferences = [];
|
|
35
33
|
for (const meta of node_opcua_nodesets_1.nodesetCatalog) {
|
|
36
34
|
const packageName = `node-opcua-nodeset-${meta.packageName}`;
|
|
37
|
-
const nodesetPackageFolder =
|
|
38
|
-
if (!(0,
|
|
35
|
+
const nodesetPackageFolder = node_path_1.default.join(packagesFolder, packageName);
|
|
36
|
+
if (!(0, node_fs_1.existsSync)(nodesetPackageFolder)) {
|
|
39
37
|
console.log(`Ignoring ${meta.packageName} since package folder does not exist (${nodesetPackageFolder})`);
|
|
40
38
|
continue;
|
|
41
39
|
}
|
|
@@ -58,12 +56,11 @@ async function updateParentTSConfig() {
|
|
|
58
56
|
parentTSConfig.references.sort(compareByPath);
|
|
59
57
|
// Maintain the compact style `{ "path": "node-opcua-X" }` in references section
|
|
60
58
|
// Also add the comment about Istanbul back
|
|
61
|
-
const newJSON = JSON.stringify(parentTSConfig, null, " ")
|
|
59
|
+
const newJSON = `${JSON.stringify(parentTSConfig, null, " ")
|
|
62
60
|
.replace('"removeComments": false', '"removeComments": false /* to prevent Istanbul ignore statements in comments from disappearing */')
|
|
63
|
-
.replace(/{\s*"path":\s*"([^"]+)"\s*}/g, '{ "path": "$1" }')
|
|
64
|
-
+ '\n';
|
|
61
|
+
.replace(/{\s*"path":\s*"([^"]+)"\s*}/g, '{ "path": "$1" }')}\n`;
|
|
65
62
|
//console.log('Writing updated tsconfig.json file:', newJSON);
|
|
66
|
-
await writeFile(parentTSConfigFile, newJSON,
|
|
63
|
+
await writeFile(parentTSConfigFile, newJSON, "utf8");
|
|
67
64
|
}
|
|
68
65
|
}
|
|
69
66
|
//# sourceMappingURL=update_parent_tsconfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update_parent_tsconfig.js","sourceRoot":"","sources":["../source/update_parent_tsconfig.ts"],"names":[],"mappings":";AAAA,6FAA6F;AAC7F,8CAA8C;;;;;
|
|
1
|
+
{"version":3,"file":"update_parent_tsconfig.js","sourceRoot":"","sources":["../source/update_parent_tsconfig.ts"],"names":[],"mappings":"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"}
|
package/dist/walk_through.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IBasicSessionAsync } from "node-opcua-pseudo-session";
|
|
1
|
+
import type { IBasicSessionAsync } from "node-opcua-pseudo-session";
|
|
2
2
|
import { ReferenceDescription } from "node-opcua-types";
|
|
3
3
|
export interface ReferenceDescriptionEx extends ReferenceDescription {
|
|
4
4
|
parent: ReferenceDescriptionEx;
|
package/dist/walk_through.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walk_through.js","sourceRoot":"","sources":["../source/walk_through.ts"],"names":[],"mappings":";;AAqDA,8DAGC;AACD,oDAGC;AAED,8DAGC;AACD,wDAGC;AACD,4DAGC;AAzED,
|
|
1
|
+
{"version":3,"file":"walk_through.js","sourceRoot":"","sources":["../source/walk_through.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-opcua-convert-nodeset-to-javascript",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.180.0",
|
|
4
4
|
"description": "pure nodejs OPCUA SDK - module convert-nodeset-to-javascript",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,26 +16,26 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"case-anything": "1.1.5",
|
|
18
18
|
"chalk": "4.1.2",
|
|
19
|
-
"node-opcua-address-space": "2.
|
|
20
|
-
"node-opcua-address-space-base": "2.
|
|
21
|
-
"node-opcua-assert": "2.
|
|
22
|
-
"node-opcua-constants": "2.
|
|
23
|
-
"node-opcua-data-model": "2.
|
|
24
|
-
"node-opcua-debug": "2.
|
|
25
|
-
"node-opcua-nodeid": "2.
|
|
26
|
-
"node-opcua-nodesets": "2.
|
|
27
|
-
"node-opcua-pseudo-session": "2.
|
|
28
|
-
"node-opcua-types": "2.
|
|
29
|
-
"node-opcua-utils": "2.
|
|
30
|
-
"node-opcua-variant": "2.
|
|
19
|
+
"node-opcua-address-space": "2.180.0",
|
|
20
|
+
"node-opcua-address-space-base": "2.180.0",
|
|
21
|
+
"node-opcua-assert": "2.179.0",
|
|
22
|
+
"node-opcua-constants": "2.179.0",
|
|
23
|
+
"node-opcua-data-model": "2.180.0",
|
|
24
|
+
"node-opcua-debug": "2.179.0",
|
|
25
|
+
"node-opcua-nodeid": "2.179.0",
|
|
26
|
+
"node-opcua-nodesets": "2.179.0",
|
|
27
|
+
"node-opcua-pseudo-session": "2.180.0",
|
|
28
|
+
"node-opcua-types": "2.180.0",
|
|
29
|
+
"node-opcua-utils": "2.179.0",
|
|
30
|
+
"node-opcua-variant": "2.180.0",
|
|
31
31
|
"ts-morph": "28.0.0",
|
|
32
32
|
"typescript": "5.9.3",
|
|
33
33
|
"wordwrap": "^1.0.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"node-opcua-leak-detector": "2.
|
|
37
|
-
"node-opcua-packet-analyzer": "2.
|
|
38
|
-
"node-opcua-service-translate-browse-path": "2.
|
|
36
|
+
"node-opcua-leak-detector": "2.179.0",
|
|
37
|
+
"node-opcua-packet-analyzer": "2.180.0",
|
|
38
|
+
"node-opcua-service-translate-browse-path": "2.180.0"
|
|
39
39
|
},
|
|
40
40
|
"author": "Etienne Rossignon",
|
|
41
41
|
"license": "MIT",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"internet of things"
|
|
53
53
|
],
|
|
54
54
|
"homepage": "http://node-opcua.github.io/",
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "11ad1e0894355cd279e19443c6c9a4fc090e7d7a",
|
|
56
56
|
"files": [
|
|
57
57
|
"dist",
|
|
58
58
|
"source"
|
package/source/_dataType.ts
CHANGED
|
@@ -1,34 +1,38 @@
|
|
|
1
1
|
import { NodeClass } from "node-opcua-data-model";
|
|
2
|
-
import { NodeId } from "node-opcua-nodeid";
|
|
3
|
-
import { IBasicSessionBrowseAsyncSimple, IBasicSessionReadAsyncSimple } from "node-opcua-pseudo-session";
|
|
4
|
-
import { EnumDefinition, StructureDefinition, StructureField } from "node-opcua-types";
|
|
2
|
+
import type { NodeId } from "node-opcua-nodeid";
|
|
3
|
+
import type { IBasicSessionBrowseAsyncSimple, IBasicSessionReadAsyncSimple } from "node-opcua-pseudo-session";
|
|
4
|
+
import { EnumDefinition, StructureDefinition, type StructureField } from "node-opcua-types";
|
|
5
5
|
import { LineFile } from "node-opcua-utils";
|
|
6
6
|
import { DataType } from "node-opcua-variant";
|
|
7
|
-
import { Type } from "./convert_to_typescript";
|
|
7
|
+
import type { Type } from "./convert_to_typescript";
|
|
8
|
+
import { type Cache, makeName2 } from "./private/cache";
|
|
9
|
+
import { getCorrespondingJavascriptType } from "./private/get_corresponding_data_type";
|
|
8
10
|
import {
|
|
9
|
-
Import,
|
|
10
|
-
getDescription,
|
|
11
|
-
getDefinition,
|
|
12
11
|
getBrowseName,
|
|
12
|
+
getDefinition,
|
|
13
|
+
getDescription,
|
|
13
14
|
getIsAbstract,
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
getSubtypeNodeId,
|
|
16
|
+
type Import,
|
|
17
|
+
makeTypeNameNew
|
|
16
18
|
} from "./private-stuff";
|
|
17
|
-
import { Cache, makeName2 } from "./private/cache";
|
|
18
|
-
import { getCorrespondingJavascriptType } from "./private/get_corresponding_data_type";
|
|
19
19
|
import { f1, f2, quotifyIfNecessary, toComment, toJavascritPropertyName } from "./utils2";
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
function requireFieldName(field: { name?: string | null }): string {
|
|
22
|
+
if (!field.name) {
|
|
23
|
+
throw new Error("field is expected to have a name");
|
|
24
|
+
}
|
|
25
|
+
return field.name;
|
|
26
|
+
}
|
|
27
|
+
|
|
22
28
|
export async function _exportDataTypeToTypescript(
|
|
23
29
|
session: IBasicSessionReadAsyncSimple & IBasicSessionBrowseAsyncSimple,
|
|
24
30
|
nodeId: NodeId,
|
|
25
31
|
cache: Cache,
|
|
26
32
|
f?: LineFile
|
|
27
33
|
): Promise<{ type: Type; content: string; typeName: string }> {
|
|
28
|
-
const importCollect: any = undefined;
|
|
29
34
|
const referenceBasicType = (name: string): string => {
|
|
30
35
|
const t = { name, namespace: -1, module: "BasicType" };
|
|
31
|
-
importCollect && importCollect(t);
|
|
32
36
|
cache.ensureImported(t);
|
|
33
37
|
return t.name;
|
|
34
38
|
};
|
|
@@ -53,6 +57,9 @@ export async function _exportDataTypeToTypescript(
|
|
|
53
57
|
cache.ensureImported(baseInterfaceImport);
|
|
54
58
|
|
|
55
59
|
const baseInterfaceName = baseInterfaceImport.name;
|
|
60
|
+
if (!browseName.name) {
|
|
61
|
+
throw new Error(`Expecting a browseName.name for node ${nodeId.toString()}`);
|
|
62
|
+
}
|
|
56
63
|
// f.write(superType.toString());
|
|
57
64
|
f.write(`/**`);
|
|
58
65
|
if (description.text) {
|
|
@@ -63,7 +70,7 @@ export async function _exportDataTypeToTypescript(
|
|
|
63
70
|
f.write(` * |-----------|${f2("-")}|`);
|
|
64
71
|
f.write(` * | namespace |${f1(cache.namespace[nodeId.namespace].namespaceUri)}|`);
|
|
65
72
|
f.write(` * | nodeClass |${f1(NodeClass[nodeClass])}|`);
|
|
66
|
-
f.write(` * | name |${f1(browseName.name
|
|
73
|
+
f.write(` * | name |${f1(browseName.name.toString())}|`);
|
|
67
74
|
f.write(` * | isAbstract|${f1(isAbstract.toString())}|`);
|
|
68
75
|
f.write(` */`);
|
|
69
76
|
|
|
@@ -71,23 +78,33 @@ export async function _exportDataTypeToTypescript(
|
|
|
71
78
|
if (definition instanceof EnumDefinition) {
|
|
72
79
|
type = "enum";
|
|
73
80
|
f.write(`export enum ${interfaceName} {`);
|
|
74
|
-
|
|
81
|
+
if (!definition.fields) {
|
|
82
|
+
throw new Error(`EnumDefinition is expected to have fields for ${interfaceName}`);
|
|
83
|
+
}
|
|
84
|
+
for (const field of definition.fields) {
|
|
75
85
|
if (field.description.text) {
|
|
76
86
|
f.write(` /**`);
|
|
77
87
|
f.write(toComment(" * ", field.description.text || ""));
|
|
78
88
|
f.write(` */`);
|
|
79
89
|
}
|
|
80
|
-
f.write(` ${quotifyIfNecessary(field
|
|
90
|
+
f.write(` ${quotifyIfNecessary(requireFieldName(field))} = ${field.value[1]},`);
|
|
81
91
|
}
|
|
82
92
|
f.write(`}`);
|
|
83
93
|
} else if (definition instanceof StructureDefinition) {
|
|
84
94
|
if (baseInterfaceName === "DTUnion") {
|
|
85
95
|
type = "structure";
|
|
86
|
-
|
|
96
|
+
if (!definition.fields) {
|
|
97
|
+
throw new Error(`StructureDefinition (Union) is expected to have fields for ${interfaceName}`);
|
|
98
|
+
}
|
|
99
|
+
const unionFields = definition.fields;
|
|
100
|
+
for (let i = 0; i < unionFields.length; i++) {
|
|
87
101
|
f.write(`export interface ${interfaceName}_${i} extends ${baseInterfaceName} {`);
|
|
88
|
-
for (let j = 0; j <
|
|
89
|
-
const field =
|
|
90
|
-
|
|
102
|
+
for (let j = 0; j < unionFields.length; j++) {
|
|
103
|
+
const field = unionFields[j];
|
|
104
|
+
if (!field) {
|
|
105
|
+
throw new Error(`StructureDefinition is expected to have a field at index ${j} for ${interfaceName}`);
|
|
106
|
+
}
|
|
107
|
+
const fieldName = toJavascritPropertyName(requireFieldName(field), { ignoreConflictingName: false });
|
|
91
108
|
if (j === i) {
|
|
92
109
|
await outputStructureField(f, field);
|
|
93
110
|
} else {
|
|
@@ -97,13 +114,13 @@ export async function _exportDataTypeToTypescript(
|
|
|
97
114
|
f.write(`}`);
|
|
98
115
|
}
|
|
99
116
|
f.write(`export type ${interfaceName} = `);
|
|
100
|
-
for (let i = 0; i <
|
|
117
|
+
for (let i = 0; i < unionFields.length; i++) {
|
|
101
118
|
f.write(` | ${interfaceName}_${i}`);
|
|
102
119
|
}
|
|
103
120
|
f.write(` ;`);
|
|
104
121
|
} else {
|
|
105
122
|
type = "structure";
|
|
106
|
-
if (!definition.fields
|
|
123
|
+
if (!definition.fields?.length && interfaceName !== "DTStructure") {
|
|
107
124
|
f.write(`export type ${interfaceName} = ${baseInterfaceName};`);
|
|
108
125
|
} else {
|
|
109
126
|
if (interfaceName === "DTStructure") {
|
|
@@ -111,7 +128,10 @@ export async function _exportDataTypeToTypescript(
|
|
|
111
128
|
} else {
|
|
112
129
|
f.write(`export interface ${interfaceName} extends ${baseInterfaceName} {`);
|
|
113
130
|
}
|
|
114
|
-
|
|
131
|
+
if (!definition.fields) {
|
|
132
|
+
throw new Error(`StructureDefinition is expected to have fields for ${interfaceName}`);
|
|
133
|
+
}
|
|
134
|
+
for (const field of definition.fields) {
|
|
115
135
|
await outputStructureField(f, field);
|
|
116
136
|
}
|
|
117
137
|
f.write(`}`);
|
|
@@ -126,8 +146,8 @@ export async function _exportDataTypeToTypescript(
|
|
|
126
146
|
// filter issue with UDTOpticalVerifierScanResult that has a decode:Uint32 conflicting with the ExtensionObject decode method
|
|
127
147
|
|
|
128
148
|
const toAvoid = ["decode", "encode"];
|
|
129
|
-
const collidingNames = definition
|
|
130
|
-
|
|
149
|
+
const collidingNames = definition.fields
|
|
150
|
+
?.map((a) => toJavascritPropertyName(requireFieldName(a), { ignoreConflictingName: false }))
|
|
131
151
|
.filter((d) => toAvoid.indexOf(d.toLowerCase()) !== -1);
|
|
132
152
|
|
|
133
153
|
const adpatedIntefaceName =
|
|
@@ -147,7 +167,7 @@ export async function _exportDataTypeToTypescript(
|
|
|
147
167
|
return { type, content: f.toString(), typeName: interfaceName };
|
|
148
168
|
|
|
149
169
|
async function outputStructureField(f: LineFile, field: StructureField) {
|
|
150
|
-
const fieldName = toJavascritPropertyName(field
|
|
170
|
+
const fieldName = toJavascritPropertyName(requireFieldName(field), { ignoreConflictingName: false });
|
|
151
171
|
// special case ! fieldName=
|
|
152
172
|
if (field.description.text) {
|
|
153
173
|
f.write(` /** ${field.description.text}*/`);
|
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
import path from "path";
|
|
3
|
-
import fs from "fs";
|
|
4
|
-
|
|
5
|
-
import { IBasicSessionAsync } from "node-opcua-pseudo-session";
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
6
3
|
import { DataTypeIds } from "node-opcua-constants";
|
|
7
|
-
import {
|
|
4
|
+
import type { IBasicSessionAsync } from "node-opcua-pseudo-session";
|
|
8
5
|
import { convertTypeToTypescript } from "./convert_to_typescript";
|
|
6
|
+
import type { Options } from "./options";
|
|
9
7
|
import { constructCache } from "./private/cache";
|
|
10
8
|
import { writeFileSyncRetry } from "./private/fs_retry";
|
|
11
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
type ReferenceDescriptionEx,
|
|
11
|
+
walkThroughDataTypes,
|
|
12
|
+
walkThroughObjectTypes,
|
|
13
|
+
walkThroughVariableTypes
|
|
14
|
+
} from "./walk_through";
|
|
12
15
|
|
|
13
16
|
function findPackageJson(dependency: string, options: Options): string | undefined {
|
|
14
17
|
const l = [...(options.lookupFolders || [])];
|
|
15
18
|
l.push(path.join(__dirname, "../../"));
|
|
16
19
|
for (const folder of l) {
|
|
17
|
-
const d = path.join(folder, dependency
|
|
20
|
+
const d = path.join(folder, `${dependency}/package.json`);
|
|
18
21
|
if (!fs.existsSync(d)) {
|
|
19
22
|
continue;
|
|
20
23
|
}
|
|
@@ -36,16 +39,13 @@ function getPackageFolder(dependency: string, options: Options) {
|
|
|
36
39
|
}
|
|
37
40
|
const packageJson = path.join(packageoFolder, "package.json");
|
|
38
41
|
if (!fs.existsSync(packageJson)) {
|
|
39
|
-
fs.writeFileSync(packageJson,
|
|
42
|
+
fs.writeFileSync(packageJson, `{\n "name": "${dependency}"\n}`);
|
|
40
43
|
}
|
|
41
44
|
const sourceFolder = path.join(packageoFolder, "source");
|
|
42
45
|
if (!fs.existsSync(sourceFolder)) {
|
|
43
46
|
fs.mkdirSync(sourceFolder);
|
|
44
47
|
}
|
|
45
48
|
return packageJson;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
throw new Error("cannot find package.json for " + dependency);
|
|
49
49
|
}
|
|
50
50
|
function getPackageInfo(dependency: string, options: Options) {
|
|
51
51
|
const d = getPackageFolder(dependency, options);
|
|
@@ -71,7 +71,7 @@ function getGeneratedPackageVersion(info: Info, options: Options): string {
|
|
|
71
71
|
if (version) {
|
|
72
72
|
return version;
|
|
73
73
|
}
|
|
74
|
-
} catch (
|
|
74
|
+
} catch (_err) {
|
|
75
75
|
// malformed package.json: fall through and seed a fresh version
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -139,11 +139,11 @@ export async function convertNamespaceTypeToTypescript(
|
|
|
139
139
|
const infos: { [key: string]: Info } = {};
|
|
140
140
|
// walk through all Types:
|
|
141
141
|
const nodeVisitor = {
|
|
142
|
-
async visit(reference: ReferenceDescriptionEx,
|
|
142
|
+
async visit(reference: ReferenceDescriptionEx, _level: number): Promise<void> {
|
|
143
143
|
if (reference.nodeId.namespace !== namespaceIndex) {
|
|
144
144
|
return;
|
|
145
145
|
}
|
|
146
|
-
cache
|
|
146
|
+
cache?.resetRequire();
|
|
147
147
|
|
|
148
148
|
if (reference.nodeId.namespace === 0 && reference.nodeId.value === DataTypeIds.Enumeration) {
|
|
149
149
|
return; // ignore enumeration
|
|
@@ -152,7 +152,7 @@ export async function convertNamespaceTypeToTypescript(
|
|
|
152
152
|
session,
|
|
153
153
|
reference.nodeId,
|
|
154
154
|
options,
|
|
155
|
-
cache
|
|
155
|
+
cache
|
|
156
156
|
);
|
|
157
157
|
|
|
158
158
|
if (type === "basic") {
|
|
@@ -170,9 +170,9 @@ export async function convertNamespaceTypeToTypescript(
|
|
|
170
170
|
if (!fs.existsSync(sourceFolder)) {
|
|
171
171
|
fs.mkdirSync(sourceFolder);
|
|
172
172
|
}
|
|
173
|
-
writeFileSyncRetry(path.join(sourceFolder, filename
|
|
173
|
+
writeFileSyncRetry(path.join(sourceFolder, `${filename}.ts`), content);
|
|
174
174
|
infos[module] = infos[module] || { folder, dependencies: [], module, files: [] };
|
|
175
|
-
infos[module].files.push(filename
|
|
175
|
+
infos[module].files.push(`${filename}.ts`);
|
|
176
176
|
infos[module].dependencies = [...new Set([...infos[module].dependencies, ...dependencies])];
|
|
177
177
|
}
|
|
178
178
|
};
|
|
@@ -293,8 +293,7 @@ async function _output_tsconfig_json(info: Info, options: Options): Promise<void
|
|
|
293
293
|
return !!c.match(/node_modules/);
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
|
-
async function _output_licence(info: Info,
|
|
297
|
-
|
|
296
|
+
async function _output_licence(info: Info, _options: Options): Promise<void> {
|
|
298
297
|
if (info.module === "node-opcua-nodeset-ua") {
|
|
299
298
|
return;
|
|
300
299
|
}
|
|
@@ -327,17 +326,13 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
|
327
326
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
328
327
|
`);
|
|
329
328
|
|
|
330
|
-
|
|
331
329
|
// content3.push(fs.readFileSync(path.join(__dirname, "../source/licences/agpl_v3.md"), "utf8"));
|
|
332
330
|
fs.writeFileSync(licenseFile, content3.join("\n"));
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
331
|
}
|
|
337
332
|
async function outputFiles(infos: { [key: string]: Info }, options: Options) {
|
|
338
333
|
const values = Object.values(infos) as Info[];
|
|
339
334
|
if (values.length < 1) {
|
|
340
|
-
console.log(`There is no type information to generate for ${options.nsName}`)
|
|
335
|
+
console.log(`There is no type information to generate for ${options.nsName}`);
|
|
341
336
|
}
|
|
342
337
|
console.log("generating files for ", options.nsName);
|
|
343
338
|
for (const info of values) {
|