miqro 1.8.1 → 1.8.7

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/cli.js CHANGED
@@ -6,6 +6,7 @@ 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");
9
10
  const doc_json_1 = require("./cmds/doc-json");
10
11
  const doc_md_1 = require("./cmds/doc-md");
11
12
  const config_init_1 = require("./cmds/config-init");
@@ -24,98 +25,100 @@ const db_createmodel_1 = require("./cmds/db-createmodel");
24
25
  const db_push_data_1 = require("./cmds/db-push-data");
25
26
  const db_dump_data_1 = require("./cmds/db-dump-data");
26
27
  const db_migrate_1 = require("./cmds/db-migrate");
27
- //import {main as wcCompileSFC, usage as wcCompileSFCUsage} from "./cmds/wc-compile-sfc";
28
+ const wc_compile_sfc_1 = require("./cmds/wc-compile-sfc");
28
29
  const wc_cache_templates_1 = require("./cmds/wc-cache-templates");
29
30
  // noinspection SpellCheckingInspection
30
31
  (0, utils_1.mainCMD)({
31
- ["new"]: { section: "quick start", cb: new_1.mainJS, tabs: 5, description: `create a new project. ${new_1.usageJS}` },
32
- ["new:typescript"]: { cb: new_1.mainTS, tabs: 4, description: `create a new typescript project. ${new_1.usageTS}` },
32
+ ["new"]: { section: "api development", cb: new_1.mainJS, tabs: 5, description: `create a new project.` },
33
+ ["new:typescript"]: { cb: new_1.mainTS, tabs: 4, description: `create a new typescript project.` },
33
34
  ["new:main"]: {
34
- section: "http scafolding",
35
+ //section: "http scafolding",
35
36
  cb: handler_main_new_1.main,
36
37
  tabs: 4,
37
- description: `creates a new main file. ${handler_main_new_1.usage}`
38
+ description: `creates a new main file.`
38
39
  },
39
- ["new:route"]: { cb: handler_apiroute_new_1.main, tabs: 4, description: `creates a new route. ${handler_apiroute_new_1.usage}` },
40
+ ["new:route"]: { cb: handler_apiroute_new_1.main, tabs: 4, description: `creates a new route.` },
40
41
  ["config"]: {
41
- section: "config managment",
42
+ //section: "config managment",
42
43
  cb: config_1.main,
43
44
  tabs: 5,
44
- description: `outputs to stdout the config as a json. ${config_1.usage}`
45
+ description: `print config as a json.`
45
46
  },
46
47
  ["config:bash"]: {
47
48
  cb: config_bash_1.main,
48
49
  tabs: 4,
49
- description: `outputs to stdout the config as a bash script. ${config_bash_1.usage}`
50
+ description: `print config as a bash script.`
50
51
  },
51
52
  ["config:env"]: {
52
53
  cb: config_env_1.main,
53
54
  tabs: 4,
54
- description: `outputs to stdout the config as a env file. ${config_env_1.usage}`
55
+ description: `print config as a env file.`
56
+ },
57
+ ["config:init"]: { cb: config_init_1.main, tabs: 4, description: `inits your config folder.` },
58
+ ["doc"]: {
59
+ //section: "api documentation",
60
+ tabs: 5,
61
+ cb: doc_json_1.main,
62
+ description: `api folder auto doc as a json.`
63
+ },
64
+ ["doc:md"]: {
65
+ cb: doc_md_1.main,
66
+ tabs: 5,
67
+ description: `api folder auto doc as a markdown.`
68
+ },
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.`
55
79
  },
56
- ["config:init"]: { cb: config_init_1.main, tabs: 4, description: `inits your config folder. ${config_init_1.usage}` },
57
80
  ["start"]: {
58
81
  section: "start helpers",
59
82
  tabs: 5,
60
83
  cb: start_1.main,
61
- description: `start a nodejs script in cluster mode and restart if crash. ${start_1.usage}`
84
+ description: `start script in cluster mode.`
62
85
  },
63
86
  ["watch"]: {
64
87
  //section: "watch",
65
88
  cb: watch_1.main,
66
89
  tabs: 5,
67
- description: `watch a folder for changes and runs a command if a change occours. ${watch_1.usage}`
90
+ description: `watch folder for changes.`
68
91
  },
69
92
  ["serve"]: {
70
93
  //section: "serve static files",
71
94
  tabs: 5,
72
- cb: serve_1.main, description: `serve static files. ${serve_1.usage}`
73
- },
74
- ["generate:template:cache"]: {
75
- section: "web components",
76
- tabs: 6,
77
- cb: wc_cache_templates_1.main, description: `generate a cache.json for webcomponents. ${wc_cache_templates_1.usage}`
78
- },
79
- /*["sfc"]: {
80
- tabs: 6,
81
- cb: wcCompileSFC, description: `transpiles a single file webcomponent to commonjs file for packing. ${wcCompileSFCUsage}`
82
- },*/
83
- ["doc"]: {
84
- section: "api documentation",
85
- tabs: 5,
86
- cb: doc_json_1.main,
87
- description: `outputs to stdout an api folder auto doc as a json. ${doc_json_1.usage}`
88
- },
89
- ["doc:md"]: {
90
- cb: doc_md_1.main,
91
- tabs: 5,
92
- description: `outputs to a file an api folder auto doc as a markdown. ${doc_md_1.usage}`
95
+ cb: serve_1.main, description: `serve static files.`
93
96
  },
94
- ["test"]: { section: "testing", cb: test_1.main, tabs: 5, description: `run test files. ${test_1.usage}` },
95
- ["new:test"]: { cb: new_test_1.main, tabs: 4, description: `create new test.js file. ${new_test_1.usage}` },
97
+ ["test"]: { section: "testing", cb: test_1.main, tabs: 5, description: `run test files.` },
98
+ ["new:test"]: { cb: new_test_1.main, tabs: 4, description: `create new test.js file.` },
96
99
  ["db:console"]: {
97
100
  section: "sequelize helpers",
98
101
  cb: db_console_1.main,
99
102
  tabs: 4,
100
- description: `runs a readline interface that send the input as a query. ${db_console_1.usage}`
103
+ description: `a query console for sequelize.`
101
104
  },
102
105
  ["db:dump:data"]: {
103
106
  cb: db_dump_data_1.main,
104
107
  tabs: 4,
105
- description: `dump the data of the database (only defined models). ${db_dump_data_1.usage}`
108
+ description: `dump the data of the database.`
106
109
  },
107
- ["db:push:data"]: { cb: db_push_data_1.main, tabs: 4, description: `push a dump to the database. ${db_push_data_1.usage}` },
110
+ ["db:push:data"]: { cb: db_push_data_1.main, tabs: 4, description: `push a dump to the database.` },
108
111
  ["db:make:migration"]: {
109
112
  cb: db_makemigrations_1.main,
110
113
  tabs: 3,
111
- description: `seeks changes in your models and creates migrations. ${db_makemigrations_1.usage}`
114
+ description: `generate migrations from model changes.`
112
115
  },
113
116
  ["db:make:migration:force:clean:state"]: {
114
117
  cb: db_sync_makemigrations_1.main,
115
118
  tabs: 1,
116
- description: `regenerate _current.json in the migrations folder to force the 'local' migration state to be the same as the current models. ${db_sync_makemigrations_1.usage}`
119
+ description: `force 'local' model state.`
117
120
  },
118
- ["db:migrate"]: { cb: db_migrate_1.main, tabs: 4, description: `loads config/<NODE_ENV>/*.env config and runs npx sequelize-cli db:migrate <...args>. ${db_migrate_1.usage}` },
119
- ["db:init"]: { cb: db_init_1.main, tabs: 5, description: `init sequelize configuration. ${db_init_1.usage}` },
120
- ["db:create:model"]: { cb: db_createmodel_1.main, tabs: 4, description: `creates an example model. ${db_createmodel_1.usage}` }
121
+ ["db:migrate"]: { cb: db_migrate_1.main, tabs: 4, description: `loads config and run migrations.` },
122
+ ["db:init"]: { cb: db_init_1.main, tabs: 5, description: `init sequelize configuration.` },
123
+ ["db:create:model"]: { cb: db_createmodel_1.main, tabs: 4, description: `creates an example model.` }
121
124
  }, "npx miqro <command> [args]", console);
@@ -0,0 +1,2 @@
1
+ export declare const usage = "npx miqro sfc <sfcDir> <outDir> [-m @miqro/web-components] [-e \".js\"]";
2
+ export declare const main: () => Promise<void>;
@@ -0,0 +1,195 @@
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
+ }
@@ -0,0 +1,4 @@
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;
@@ -0,0 +1,160 @@
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;
@@ -82,12 +82,12 @@ const mainCMD = (cmds, usage, logger, cmdArg = process.argv[2], exit = true) =>
82
82
  logger.info(`Available commands:\n`);
83
83
  for (const cmd of Object.keys(cmds)) {
84
84
  if (cmds[cmd].section) {
85
- logger.info(`\n${cmds[cmd].section}\n`);
85
+ logger.info(`\n==${cmds[cmd].section}==\n`);
86
86
  }
87
87
  //const description = cmds[cmd].description.split("\n").map(s => `${getTabs(/*cmds[cmd].tabs*/2)}${s}`).join("\n");
88
88
  //const description = cmds[cmd].description.split("\n").map(s => `${getTabs(/*cmds[cmd].tabs*/1)}${s}`).join("\n");
89
89
  const description = cmds[cmd].description.split("\n").map(s => `${getTabs(cmds[cmd].tabs)}${s}`).join("\n");
90
- logger.info(`\t${cmd}${description}`);
90
+ logger.info(`${cmd}${description}`);
91
91
  //logger.info(`${cmd}\n${description}`);
92
92
  }
93
93
  logger.info("");
package/dist/utils/xml.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseXML2JSON = void 0;
4
- const { parser } = require("sax");
4
+ const sax_1 = require("sax");
5
5
  const parseXML2JSON = async (val) => {
6
6
  return new Promise((resolve, reject) => {
7
7
  const ret = {
@@ -15,13 +15,13 @@ const parseXML2JSON = async (val) => {
15
15
  let current = {
16
16
  ref: ret
17
17
  };
18
- const p = parser(undefined, {
18
+ const p = (0, sax_1.parser)(false, {
19
19
  noscript: true,
20
- trim: true
20
+ lowercase: true
21
21
  });
22
22
  p.onerror = (e) => {
23
- // an error happened.
24
23
  console.error(e);
24
+ reject(e);
25
25
  };
26
26
  p.oncomment = (c) => {
27
27
  if (!current) {
@@ -53,15 +53,17 @@ const parseXML2JSON = async (val) => {
53
53
  };
54
54
  current.ref.children.push(node);
55
55
  };
56
- p.onopentag = (node) => {
57
- // opened a tag. node has "name" and "attributes"
58
- /*if (node.name.toLocaleLowerCase() === "bpmn:sequenceflow") {
59
- console.log("open %o", node);
60
- }*/
56
+ p.onopentag = (t) => {
61
57
  if (!current) {
62
58
  console.error("current null");
63
59
  process.exit(1);
64
60
  }
61
+ const node = {
62
+ ...t,
63
+ type: "node",
64
+ text: "",
65
+ children: []
66
+ };
65
67
  node.type = "node";
66
68
  node.text = "";
67
69
  node.children = [];
@@ -71,12 +73,10 @@ const parseXML2JSON = async (val) => {
71
73
  ref: node
72
74
  };
73
75
  };
74
- p.onattribute = (attr) => {
75
- // console.dir(attr);
76
- };
77
- p.onclosetag = (node) => {
78
- // opened a tag. node has "name" and "attributes"
79
- // console.log("close %s", node);
76
+ /*p.onattribute = (attr: XMLAttr) => {
77
+
78
+ };*/
79
+ p.onclosetag = () => {
80
80
  if (!current) {
81
81
  console.error("current null");
82
82
  process.exit(1);
@@ -86,8 +86,6 @@ const parseXML2JSON = async (val) => {
86
86
  };
87
87
  };
88
88
  p.onend = () => {
89
- // console.log("end");
90
- // parser stream is done, and ready to have more stuff written to it.
91
89
  resolve(ret);
92
90
  };
93
91
  p.write(val).close();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "miqro",
3
- "version": "1.8.1",
3
+ "version": "1.8.7",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,11 +17,13 @@
17
17
  "author": "claukers",
18
18
  "license": "ISC",
19
19
  "dependencies": {
20
- "@miqro/core": "^1.6.0",
20
+ "@miqro/core": "^1.6.1",
21
21
  "@miqro/parser": "^0.1.5",
22
22
  "@miqro/runner": "^1.2.8",
23
23
  "@miqro/test": "^0.2.4",
24
- "deep-diff": "1.0.2"
24
+ "@types/sax": "^1.2.4",
25
+ "deep-diff": "1.0.2",
26
+ "sax": "^1.2.4"
25
27
  },
26
28
  "devDependencies": {
27
29
  "@types/cookie": "0.4.1",