miqro 1.8.7 → 1.9.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/README.md CHANGED
@@ -9,3 +9,42 @@ to see available cmds
9
9
  ```
10
10
  npx miqro
11
11
  ```
12
+
13
+ ```
14
+ Available commands:
15
+
16
+ ==api development==
17
+
18
+ new create a new project.
19
+ new:typescript create a new typescript project.
20
+ new:main creates a new main file.
21
+ new:route creates a new route.
22
+ config print config as a json.
23
+ config:bash print config as a bash script.
24
+ config:env print config as a env file.
25
+ config:init inits your config folder.
26
+ doc api folder auto doc as a json.
27
+ doc:md api folder auto doc as a markdown.
28
+
29
+ ==start helpers==
30
+
31
+ start start script in cluster mode.
32
+ watch watch folder for changes.
33
+ serve serve static files.
34
+
35
+ ==testing==
36
+
37
+ test run test files.
38
+ new:test create new test.js file.
39
+
40
+ ==sequelize helpers==
41
+
42
+ db:console a query console for sequelize.
43
+ db:dump:data dump the data of the database.
44
+ db:push:data push a dump to the database.
45
+ db:make:migration generate migrations from model changes.
46
+ db:make:migration:force:clean:state force 'local' model state.
47
+ db:migrate loads config and run migrations.
48
+ db:init init sequelize configuration.
49
+ db:create:model creates an example model.
50
+ ```
package/dist/cli.js CHANGED
@@ -6,7 +6,6 @@ const start_1 = require("./cmds/start");
6
6
  const test_1 = require("./cmds/test");
7
7
  const watch_1 = require("./cmds/watch");
8
8
  const new_1 = require("./cmds/new");
9
- const wc_new_1 = require("./cmds/wc-new");
10
9
  const doc_json_1 = require("./cmds/doc-json");
11
10
  const doc_md_1 = require("./cmds/doc-md");
12
11
  const config_init_1 = require("./cmds/config-init");
@@ -25,8 +24,6 @@ const db_createmodel_1 = require("./cmds/db-createmodel");
25
24
  const db_push_data_1 = require("./cmds/db-push-data");
26
25
  const db_dump_data_1 = require("./cmds/db-dump-data");
27
26
  const db_migrate_1 = require("./cmds/db-migrate");
28
- const wc_compile_sfc_1 = require("./cmds/wc-compile-sfc");
29
- const wc_cache_templates_1 = require("./cmds/wc-cache-templates");
30
27
  // noinspection SpellCheckingInspection
31
28
  (0, utils_1.mainCMD)({
32
29
  ["new"]: { section: "api development", cb: new_1.mainJS, tabs: 5, description: `create a new project.` },
@@ -66,17 +63,6 @@ const wc_cache_templates_1 = require("./cmds/wc-cache-templates");
66
63
  tabs: 5,
67
64
  description: `api folder auto doc as a markdown.`
68
65
  },
69
- ["new:front"]: { section: "front development", cb: wc_new_1.mainJS, tabs: 4, description: `create a new project.` },
70
- ["new:front:typescript"]: { cb: wc_new_1.mainTS, tabs: 3, description: `create a new typescript project.` },
71
- ["generate:template:cache"]: {
72
- //section: "web components",
73
- tabs: 3,
74
- cb: wc_cache_templates_1.main, description: `generate cache.json for webcomponents.`
75
- },
76
- ["sfc"]: {
77
- tabs: 5,
78
- cb: wc_compile_sfc_1.main, description: `transform sfc files to javascript.`
79
- },
80
66
  ["start"]: {
81
67
  section: "start helpers",
82
68
  tabs: 5,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "miqro",
3
- "version": "1.8.7",
3
+ "version": "1.9.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,13 +17,11 @@
17
17
  "author": "claukers",
18
18
  "license": "ISC",
19
19
  "dependencies": {
20
- "@miqro/core": "^1.6.1",
20
+ "@miqro/core": "^1.7.0",
21
21
  "@miqro/parser": "^0.1.5",
22
22
  "@miqro/runner": "^1.2.8",
23
23
  "@miqro/test": "^0.2.4",
24
- "@types/sax": "^1.2.4",
25
- "deep-diff": "1.0.2",
26
- "sax": "^1.2.4"
24
+ "deep-diff": "1.0.2"
27
25
  },
28
26
  "devDependencies": {
29
27
  "@types/cookie": "0.4.1",
@@ -1,2 +0,0 @@
1
- export declare const usage = "npx miqro generate:template:cache <src> <out.json>";
2
- export declare const main: () => Promise<void>;
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.main = exports.usage = void 0;
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- const util_1 = require("util");
7
- function recursiveSearch(path, found = []) {
8
- const files = (0, fs_1.readdirSync)(path);
9
- for (const file of files) {
10
- const filePath = (0, path_1.resolve)(path, file);
11
- if ((0, fs_1.statSync)(filePath).isDirectory()) {
12
- recursiveSearch(filePath, found);
13
- }
14
- else {
15
- const ext = (0, path_1.extname)(filePath);
16
- if (ext === ".html" || ext === ".htm") {
17
- found.push(filePath);
18
- }
19
- }
20
- }
21
- return found;
22
- }
23
- exports.usage = "npx miqro generate:template:cache <src> <out.json>";
24
- const main = async () => {
25
- if (process.argv.length !== 5 || process.argv[3].length < 1 || process.argv[4].length < 1) {
26
- throw new Error(exports.usage);
27
- }
28
- const directory = process.argv[3].toLocaleLowerCase();
29
- const outfile = process.argv[4].toLocaleLowerCase();
30
- const path = (0, path_1.resolve)(process.cwd(), directory);
31
- const outFilePath = (0, path_1.resolve)(process.cwd(), outfile);
32
- if (!(0, fs_1.statSync)(path).isDirectory()) {
33
- throw new Error((0, util_1.format)("%s not a directory", path));
34
- }
35
- const foundTemplates = recursiveSearch(path);
36
- console.log("caching %o", foundTemplates);
37
- console.log("to %s", outFilePath);
38
- const cache = {};
39
- for (const template of foundTemplates) {
40
- if (template) {
41
- const url = (0, path_1.relative)(path, template);
42
- cache[url] = (0, fs_1.readFileSync)(template).toString("utf-8");
43
- }
44
- }
45
- (0, fs_1.writeFileSync)(outFilePath, `${JSON.stringify(cache, undefined, 0)}`);
46
- };
47
- exports.main = main;
@@ -1,2 +0,0 @@
1
- export declare const usage = "npx miqro sfc <sfcDir> <outDir> [-m @miqro/web-components] [-e \".js\"]";
2
- export declare const main: () => Promise<void>;
@@ -1,195 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.main = exports.usage = void 0;
4
- const path_1 = require("path");
5
- const fs_1 = require("fs");
6
- const xml_js_1 = require("../utils/xml.js");
7
- const utils_1 = require("../utils");
8
- exports.usage = "npx miqro sfc <sfcDir> <outDir> [-m @miqro/web-components] [-e \".js\"]";
9
- const DATA_SHADOW_ROOT_MODE = "data-shadow-root-mode";
10
- const main = async () => {
11
- const flags = (0, utils_1.extractFlags)(process.argv.slice(3), {
12
- flags: {
13
- "m": {
14
- description: "module to require defineFunction",
15
- hasValue: true
16
- },
17
- "o": {
18
- description: "extension of output",
19
- hasValue: true
20
- },
21
- "i": {
22
- description: "extension of input",
23
- hasValue: true
24
- },
25
- "c": {
26
- description: "remove output files",
27
- hasValue: false
28
- }
29
- }
30
- });
31
- if (flags.files.length !== 2) {
32
- throw new Error(exports.usage);
33
- }
34
- const extension = flags.flags.o ? flags.flags.o : ".js";
35
- const inputExtension = flags.flags.i ? flags.flags.i : ".sfc";
36
- const webComponentsModule = flags.flags.m ? flags.flags.m : "@miqro/web-components";
37
- const defineRequireString = extension === ".ts" ?
38
- `import {define} from "${webComponentsModule}"` :
39
- `import {define} from "${webComponentsModule}";`;
40
- const componentRequireString = extension === ".ts" ?
41
- `import {FunctionComponentThis} from "${webComponentsModule}"` : "";
42
- const sfcDir = (0, path_1.resolve)(process.cwd(), flags.files[0]);
43
- const outDir = (0, path_1.resolve)(process.cwd(), flags.files[1]);
44
- if (!(0, fs_1.statSync)(sfcDir).isDirectory() || !(0, fs_1.statSync)(outDir).isDirectory()) {
45
- throw new Error(exports.usage);
46
- }
47
- const tE = [];
48
- function recursiveDir(folder) {
49
- const files = (0, fs_1.readdirSync)(folder);
50
- for (const file of files) {
51
- const filePath = (0, path_1.resolve)(folder, file);
52
- if ((0, fs_1.statSync)(filePath).isDirectory()) {
53
- recursiveDir(filePath);
54
- }
55
- else {
56
- if ((0, path_1.extname)(filePath) === inputExtension) {
57
- tE.push(async function () {
58
- try {
59
- const outMainFileName = (0, path_1.basename)(filePath.substring(0, filePath.length - inputExtension.length) + extension);
60
- const outFileName = (0, path_1.basename)(filePath.substring(0, filePath.length - inputExtension.length) + "-component" + extension);
61
- const realOutFileDirname = (0, path_1.resolve)(outDir, (0, path_1.relative)(sfcDir, (0, path_1.dirname)(filePath)));
62
- const realOutFilePath = (0, path_1.resolve)(realOutFileDirname, outFileName);
63
- const realMainOutFilePath = (0, path_1.resolve)(realOutFileDirname, outMainFileName);
64
- if (flags.flags.c !== undefined) {
65
- console.log("%s\n\tremoving %s\n\tremoving %s", filePath, realOutFilePath, realMainOutFilePath);
66
- (0, fs_1.unlinkSync)(realOutFilePath);
67
- (0, fs_1.unlinkSync)(realMainOutFilePath);
68
- }
69
- else {
70
- console.log("%s ->\n\t%s\n\t%s", filePath, realOutFilePath, realMainOutFilePath);
71
- if (!(0, fs_1.existsSync)(realOutFileDirname)) {
72
- (0, fs_1.mkdirSync)(realOutFileDirname, {
73
- recursive: true
74
- });
75
- }
76
- const [jsContent, mainJS] = await compileSFC(filePath, {
77
- defineRequireString,
78
- componentRequireString
79
- });
80
- (0, fs_1.writeFileSync)(realOutFilePath, jsContent);
81
- const requireInput = "./" + (0, path_1.relative)((0, path_1.dirname)(realMainOutFilePath), realOutFilePath);
82
- const commonJSANDESM = requireInput.substring(0, requireInput.length - extension.length) + ".js";
83
- (0, fs_1.writeFileSync)(realMainOutFilePath, mainJS(commonJSANDESM));
84
- }
85
- }
86
- catch (e) {
87
- console.error(e);
88
- }
89
- });
90
- }
91
- }
92
- }
93
- }
94
- recursiveDir(sfcDir);
95
- await Promise.allSettled(tE.map(t => t()));
96
- };
97
- exports.main = main;
98
- async function compileSFC(sfcPath, requireStrings, extension = ".js") {
99
- const json = await (0, xml_js_1.parseXML2JSON)((0, fs_1.readFileSync)(sfcPath).toString());
100
- json.children = json.children.filter((c) => c.name !== "TEXT");
101
- if (json.children.length !== 1) {
102
- throw new Error("bad sfc structure(0) for " + sfcPath);
103
- }
104
- json.children[0].children = json.children[0].children.filter((c) => c.name !== "TEXT");
105
- if (json.children[0].children.length !== 2) {
106
- throw new Error("bad sfc structure(1) for " + sfcPath);
107
- }
108
- const componentName = json.children[0].name;
109
- const componentTemplateTag = json.children[0].children[0];
110
- const componentScriptTag = json.children[0].children[1];
111
- const dataShadowRootMode = json.children[0].attributes[DATA_SHADOW_ROOT_MODE] ? json.children[0].attributes[DATA_SHADOW_ROOT_MODE] : undefined;
112
- let modeArg;
113
- switch (dataShadowRootMode) {
114
- case "false":
115
- modeArg = false;
116
- break;
117
- case "true":
118
- case "close":
119
- modeArg = { mode: "closed" };
120
- break;
121
- case "open":
122
- modeArg = { mode: "open" };
123
- break;
124
- }
125
- if (componentTemplateTag.name !== "template" || componentScriptTag.name !== "script") {
126
- throw new Error("bad sfc structure(2) for " + sfcPath);
127
- }
128
- /*console.dir(json, {
129
- depth: 10
130
- });*/
131
- if (componentScriptTag.children.length !== 1 || componentScriptTag.children[0].type !== "text") {
132
- throw new Error("bad sfc structure(3) for " + sfcPath);
133
- }
134
- const scriptText = componentScriptTag.children[0].text;
135
- let baseTabulation = null;
136
- let startTabulationIndex = 0;
137
- const jsContent = scriptText.split("\n").map((l, i) => {
138
- const trimmed = l.trim();
139
- if (baseTabulation === null && trimmed !== "") {
140
- baseTabulation = l.indexOf(trimmed);
141
- startTabulationIndex = i;
142
- const tabulationSubstring = l.substring(baseTabulation);
143
- return tabulationSubstring.trim() !== "" ? tabulationSubstring : l;
144
- }
145
- else if (baseTabulation !== null) {
146
- const tabulationSubstring = l.substring(baseTabulation);
147
- return tabulationSubstring.trim() !== "" ? tabulationSubstring : l;
148
- }
149
- else {
150
- return "";
151
- }
152
- }).join("\n").slice(startTabulationIndex);
153
- const template = componentTemplateTag.children.map((tag) => tagToString(tag)).join("");
154
- const outFileContent = `${requireStrings.componentRequireString ? `${requireStrings.componentRequireString}\n\n` : ""}${jsContent}`;
155
- return [
156
- outFileContent,
157
- (jsContentPath) => `${requireStrings.defineRequireString ? `${requireStrings.defineRequireString}\n` : ""}` +
158
- `import render from "${jsContentPath}";\n\n` +
159
- `define("${componentName}", render, ${JSON.stringify({
160
- template,
161
- ...(dataShadowRootMode === undefined ? {} : {
162
- shadowInit: modeArg
163
- })
164
- })});`
165
- ];
166
- }
167
- function getAttributes(tag) {
168
- const attributes = Object.keys(tag.attributes);
169
- let ret = "";
170
- for (const attribute of attributes) {
171
- if (ret === "") {
172
- ret = `${attribute}="${tag.attributes[attribute]}"`;
173
- }
174
- else {
175
- ret += ` ${attribute}="${tag.attributes[attribute]}"`;
176
- }
177
- }
178
- return ret;
179
- }
180
- function tagToString(tag) {
181
- if (tag.type === "text") {
182
- return tag.text ? tag.text : "";
183
- }
184
- else if (tag.type === "comment") {
185
- return `<!--${tag.text}-->`;
186
- }
187
- else if (tag.isSelfClosing) {
188
- const attrs = getAttributes(tag);
189
- return `<${tag.name}${attrs ? ` ${attrs}` : ""}/>`;
190
- }
191
- else {
192
- const attrs = getAttributes(tag);
193
- return `<${tag.name}${attrs ? ` ${attrs}` : ""}>${tag.children.map((c) => tagToString(c)).join("\n")}</${tag.name}>`;
194
- }
195
- }
@@ -1,4 +0,0 @@
1
- export declare const usageJS = "usage: npx miqro new:front <identifier ex: NEW_APP>";
2
- export declare const usageTS = "usage: npx miqro new:front:typescript <identifier ex: NEW_APP>";
3
- export declare const mainJS: (typescript?: boolean) => void;
4
- export declare const mainTS: () => void;
@@ -1,160 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mainTS = exports.mainJS = exports.usageTS = exports.usageJS = void 0;
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- const utils_1 = require("../utils");
7
- const indexHTML = {
8
- js: () => `<html>` +
9
- `<script type="text/javascript" src="app.bundle.min.js"></script>` +
10
- `<body>` +
11
- `<my-app></my-app>` +
12
- `</body>` +
13
- `</html>`
14
- };
15
- const indexComponent = {
16
- js: () => `const {define} = require("@miqro/web-components")\n` +
17
- `\n` +
18
- `define("my-app", function() {\n` +
19
- ` return "<p>Hello World!</p>";\n` +
20
- `});`,
21
- ts: () => `import {define, RenderFunctionThis} from "@miqro/web-components"\n` +
22
- `\n` +
23
- `define("my-app", function(this: RenderFunctionThis) {\n` +
24
- ` return "<p>Hello World!</p>";\n` +
25
- `});`
26
- };
27
- const webpackconfig = {
28
- js: () => `module.exports = {\n` +
29
- ` mode: "production",\n` +
30
- ` entry: "./src/index.js",\n` +
31
- ` output: {\n` +
32
- ` path: require("path").resolve(__dirname, 'build'),\n` +
33
- ` filename: "app.bundle.min.js"\n` +
34
- ` }\n` +
35
- `};`,
36
- ts: () => `module.exports = {\n` +
37
- ` mode: "production",\n` +
38
- ` entry: "./dist/index.js",\n` +
39
- ` output: {\n` +
40
- ` path: require("path").resolve(__dirname, 'build'),\n` +
41
- ` filename: "app.bundle.min.js"\n` +
42
- ` }\n` +
43
- `};`,
44
- };
45
- const gitignoreTemplate = {
46
- ts: () => `node_modules/
47
- dist/
48
- `,
49
- js: () => `node_modules/`
50
- };
51
- const packageTemplate = {
52
- ts: (name) => `{
53
- "name": "${name}",
54
- "version": "1.0.0",
55
- "description": "",
56
- "private": true,
57
- "main": "dist/main.js",
58
- "scripts": {
59
- "prebuild": "rm -Rf build/; rm -Rf dist/; mkdir build && cp -R public/ build/",
60
- "build": "tsc && webpack",
61
- "prestart": "npm run build",
62
- "start": "npx miqro serve build/ /"
63
- },
64
- "devDependencies": {
65
- },
66
- "dependencies": {
67
- },
68
- "author": "",
69
- "license": "ISC"
70
- }`,
71
- js: (name) => `{
72
- "name": "${name}",
73
- "version": "1.0.0",
74
- "description": "",
75
- "private": true,
76
- "main": "src/main.js",
77
- "scripts": {
78
- "prebuild": "rm -Rf build/; rm -Rf dist/; mkdir build && cp -R public/ build/",
79
- "build": "webpack",
80
- "prestart": "npm run build",
81
- "start": "npx miqro serve build/ /"
82
- },
83
- "devDependencies": {
84
- },
85
- "dependencies": {
86
- },
87
- "author": "",
88
- "license": "ISC"
89
- }`
90
- };
91
- exports.usageJS = `usage: npx miqro new:front <identifier ex: NEW_APP>`;
92
- exports.usageTS = `usage: npx miqro new:front:typescript <identifier ex: NEW_APP>`;
93
- const mainJS = (typescript = false) => {
94
- if (process.argv.length !== 4 || process.argv[3].length < 1) {
95
- throw new Error(typescript ? exports.usageTS : exports.usageJS);
96
- }
97
- const identifier = process.argv[3].toLocaleLowerCase();
98
- const appFolder = (0, path_1.resolve)(process.cwd(), identifier);
99
- if ((0, fs_1.existsSync)(appFolder)) {
100
- throw new Error(`${appFolder} already exists!`);
101
- }
102
- console.log(`creating ${appFolder}`);
103
- (0, fs_1.mkdirSync)(appFolder, {
104
- recursive: true
105
- });
106
- (0, fs_1.writeFileSync)((0, path_1.resolve)(appFolder, "package.json"), packageTemplate[typescript ? "ts" : "js"](identifier));
107
- (0, utils_1.execSync)(`npm install miqro --save-dev`, {
108
- cwd: appFolder
109
- });
110
- (0, utils_1.execSync)(`npm install @miqro/web-components --save`, {
111
- cwd: appFolder
112
- });
113
- if (typescript) {
114
- (0, fs_1.writeFileSync)((0, path_1.resolve)(appFolder, "tsconfig.json"), `{
115
- "compileOnSave": true,
116
- "compilerOptions": {
117
- "lib": ["es2021", "dom"],
118
- "module": "commonjs",
119
- "moduleResolution": "node",
120
- "target": "es2021",
121
- "strict": false,
122
- "outDir": "./dist/",
123
- "removeComments": true,
124
- "noImplicitAny": false,
125
- "preserveConstEnums": true,
126
- "sourceMap": true,
127
- "esModuleInterop": true,
128
- "declaration": true
129
- },
130
- "exclude": [
131
- "node_modules",
132
- "test"
133
- ],
134
- "include": [
135
- "src"
136
- ]
137
- }`);
138
- (0, utils_1.execSync)(`npm install typescript --save-dev`, {
139
- cwd: appFolder
140
- });
141
- (0, fs_1.writeFileSync)((0, path_1.resolve)(appFolder, ".gitignore"), gitignoreTemplate.ts());
142
- }
143
- else {
144
- (0, fs_1.writeFileSync)((0, path_1.resolve)(appFolder, ".gitignore"), gitignoreTemplate.js());
145
- }
146
- (0, utils_1.execSync)(`npm install webpack-cli --save-dev`, {
147
- cwd: appFolder
148
- });
149
- (0, fs_1.writeFileSync)((0, path_1.resolve)(appFolder, "webpack.config.js"), typescript ? webpackconfig.ts() : webpackconfig.js());
150
- (0, fs_1.mkdirSync)((0, path_1.resolve)(appFolder, "src"));
151
- (0, fs_1.mkdirSync)((0, path_1.resolve)(appFolder, "public"));
152
- (0, fs_1.writeFileSync)((0, path_1.resolve)(appFolder, "public", "index.html"), indexHTML.js());
153
- (0, fs_1.writeFileSync)((0, path_1.resolve)(appFolder, "src", "index" + (typescript ? ".ts" : ".js")), typescript ? indexComponent.ts() : indexComponent.js());
154
- console.log(`new project created on ${appFolder}`);
155
- console.log(`cd ${identifier}`);
156
- console.log(`npm run start`);
157
- };
158
- exports.mainJS = mainJS;
159
- const mainTS = () => (0, exports.mainJS)(true);
160
- exports.mainTS = mainTS;
@@ -1 +0,0 @@
1
- export declare const parseXML2JSON: (val: string) => Promise<any>;
package/dist/utils/xml.js DELETED
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseXML2JSON = void 0;
4
- const sax_1 = require("sax");
5
- const parseXML2JSON = async (val) => {
6
- return new Promise((resolve, reject) => {
7
- const ret = {
8
- name: "ROOT",
9
- attributes: {},
10
- type: "root",
11
- isSelfClosing: false,
12
- text: "",
13
- children: []
14
- };
15
- let current = {
16
- ref: ret
17
- };
18
- const p = (0, sax_1.parser)(false, {
19
- noscript: true,
20
- lowercase: true
21
- });
22
- p.onerror = (e) => {
23
- console.error(e);
24
- reject(e);
25
- };
26
- p.oncomment = (c) => {
27
- if (!current) {
28
- console.error("current null");
29
- process.exit(1);
30
- }
31
- const node = {
32
- name: "COMMENT",
33
- attributes: {},
34
- type: "comment",
35
- isSelfClosing: true,
36
- text: c,
37
- children: []
38
- };
39
- current.ref.children.push(node);
40
- };
41
- p.ontext = (t) => {
42
- if (!current) {
43
- console.error("current null");
44
- process.exit(1);
45
- }
46
- const node = {
47
- name: "TEXT",
48
- attributes: {},
49
- type: "text",
50
- isSelfClosing: true,
51
- text: t,
52
- children: []
53
- };
54
- current.ref.children.push(node);
55
- };
56
- p.onopentag = (t) => {
57
- if (!current) {
58
- console.error("current null");
59
- process.exit(1);
60
- }
61
- const node = {
62
- ...t,
63
- type: "node",
64
- text: "",
65
- children: []
66
- };
67
- node.type = "node";
68
- node.text = "";
69
- node.children = [];
70
- current.ref.children.push(node);
71
- current = {
72
- parent: current,
73
- ref: node
74
- };
75
- };
76
- /*p.onattribute = (attr: XMLAttr) => {
77
-
78
- };*/
79
- p.onclosetag = () => {
80
- if (!current) {
81
- console.error("current null");
82
- process.exit(1);
83
- }
84
- current = current.parent ? current.parent : {
85
- ref: ret
86
- };
87
- };
88
- p.onend = () => {
89
- resolve(ret);
90
- };
91
- p.write(val).close();
92
- });
93
- };
94
- exports.parseXML2JSON = parseXML2JSON;