@keload/node-red-dxp 1.2.0 → 1.3.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/cli/index.cjs +17 -17
- package/package.json +11 -12
package/dist/cli/index.cjs
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
'use strict';var
|
|
2
|
+
'use strict';var K=require('process'),commander=require('commander'),consola=require('consola'),l=require('fs'),pe=require('path'),Ce=require('del'),W=require('esbuild'),cosmiconfig=require('cosmiconfig'),glob=require('glob'),mergeAnything=require('merge-anything'),radash=require('radash'),htmlMinifierTerser=require('html-minifier-terser'),F=require('sass'),Pe=require('prettyjson'),Ee=require('browser-sync'),Ae=require('chokidar'),H=require('nodemon');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var K__namespace=/*#__PURE__*/_interopNamespace(K);var l__namespace=/*#__PURE__*/_interopNamespace(l);var pe__default=/*#__PURE__*/_interopDefault(pe);var Ce__default=/*#__PURE__*/_interopDefault(Ce);var W__default=/*#__PURE__*/_interopDefault(W);var F__namespace=/*#__PURE__*/_interopNamespace(F);var Pe__default=/*#__PURE__*/_interopDefault(Pe);var Ee__default=/*#__PURE__*/_interopDefault(Ee);var Ae__default=/*#__PURE__*/_interopDefault(Ae);var H__default=/*#__PURE__*/_interopDefault(H);var N={version:"1.2.0"};var S={libCacheDir:".node-red-dx",srcDir:"src",nodesDirName:"nodes",nodes:{controllerName:"index",editor:{dirName:"editor",htmlName:"index",tsName:"index"}},builder:{outputDir:"dist"},watcher:{nodeRed:{enabled:!0,path:"~/.node-red",url:"http://localhost:1880"}}};var oe="node-red-dx",re=e=>e.replace("@","").replace("/","-");function ne(){let e=cosmiconfig.cosmiconfigSync(oe);try{let t=e.search();return mergeAnything.merge(S,t?t.config:{})}catch(t){throw console.error("Error while loading configuration",t),t}}var i=ne(),a=process.cwd(),I=JSON.parse(l.readFileSync(`${a}/package.json`,"utf-8")),y=`${a}/${i.srcDir}`,se=`${a}/resources`,f=`${y}/${i.nodesDirName}`,h=`${a}/${i.libCacheDir}`;function ie(){return glob.globSync(`${f}/*`,{withFileTypes:!0}).map(t=>{let o=t.fullpath(),n=`${o}/${i.nodes.editor.dirName}`,s=o.replace(a,"").slice(1),g=`${s}/${i.nodes.editor.dirName}`,V=glob.globSync(`${n}/**/*.scss`),z=glob.globSync(`${o}/doc.mdx`),Q=glob.globSync(`${o}/doc.md`),C=radash.dash(t.name);return {fullEditorPath:n,fullPath:o,name:t.name,pascalName:radash.pascal(t.name),dashName:C,relativeEditorPath:g,relativePath:s,nodeIdentifier:`${r.packageNameSlug}-${C}`,fullControllerPath:`${o}/${i.nodes.controllerName}.ts`,editor:{tsPath:`${n}/${i.nodes.editor.tsName}.ts`,htmlPath:`${n}/${i.nodes.editor.htmlName}.html`,scssFiles:V},doc:{mdxFiles:z,mdFiles:Q}}})}function ae(){return {currentDir:a,pathSrcDir:y,pathSrcNodesDir:f,additionalResourcesDir:se,pathDist:`${a}/${i.builder.outputDir}`,cacheDirFiles:{controllerIndex:`${h}/controller-index.ts`,editorIndex:`${h}/editor-index.ts`},pathLibCacheDir:h,packageName:I.name,packageNameSlug:re(I.name),config:i,getResolvedSrcPathsScss:()=>glob.globSync(`${y}/**/*.scss`,{ignore:`${f}/**/*.scss`}),getResolvedNodesPaths:()=>glob.globSync(`${f}/*`),getListNodesFull:()=>ie()}}var r=ae();async function le(e){let t=l.readFileSync(e,"utf8");return htmlMinifierTerser.minify(t,{collapseWhitespace:!0,removeComments:!0,removeRedundantAttributes:!1,useShortDoctype:!0,removeEmptyAttributes:!1,minifyCSS:!1,minifyJS:!1})}function me(e,t,o,n){return `
|
|
3
3
|
<script type="text/html" data-template-name="${e}">
|
|
4
|
-
<div class="${
|
|
4
|
+
<div class="${o}">
|
|
5
5
|
<div class="${t}">${n}</div>
|
|
6
6
|
</div>
|
|
7
7
|
</script>
|
|
8
|
-
`}async function
|
|
8
|
+
`}async function D(){let e=r.getListNodesFull(),t=[];for(let o of e){let n=await le(o.editor.htmlPath);t.push(me(o.name,o.nodeIdentifier,r.packageNameSlug,n));}return t.join("").trim()}function ue(e){return F__namespace.compile(e,{style:"compressed"}).css}function x(e){let t={};for(let o=0;o<e.length;o++){let n=e[o];t[n]=ue(n);}return t}function ge(){let e=r.getListNodesFull();return e.some(o=>o.editor.scssFiles.length)?e.map(o=>{let n=x(o.editor.scssFiles),s=Object.values(n).join("");return {name:o.name,styles:x(o.editor.scssFiles),mergedCompiledStyles:s,scssFinal:`#${o.nodeIdentifier}{${s}}`,hasStyles:!!o.editor.scssFiles.length}}).filter(o=>o.hasStyles):[]}function he(){let e=r.getResolvedSrcPathsScss(),t=glob.globSync(`${pe__default.default.resolve(__dirname,"..")}/editor/**/*.scss`),o=x([...e,...t]);return Object.values(o).join("")}function j(){let e=he(),t=ge();return !e&&!t.length?"":`.${r.packageNameSlug}{${e}${t.map(o=>o.scssFinal).join("")}}`}function k(e){return e.trim().replace(/\n\s+/g,"")}async function ye(e=!0){let t=await D(),o=await E(e),n=j(),s=R();return `${e?k(t):t}
|
|
9
9
|
<style>${n}</style>
|
|
10
10
|
<script type="application/javascript">
|
|
11
|
-
${
|
|
11
|
+
${o.trim()}
|
|
12
12
|
</script>
|
|
13
|
-
${s}`}async function
|
|
13
|
+
${s}`}async function v(e=!1){let t=await ye(e);l__namespace.writeFileSync(`${r.pathDist}/index.html`,t);}var u=r.getListNodesFull(),A=`
|
|
14
14
|
// generated by @keload/node-red-dev-xp
|
|
15
15
|
// do not modify this file
|
|
16
16
|
// do not commit this file
|
|
17
|
-
`;function
|
|
18
|
-
${
|
|
17
|
+
`;function xe(){return `
|
|
18
|
+
${A}
|
|
19
19
|
import type { NodeAPI } from 'node-red';
|
|
20
|
-
${
|
|
20
|
+
${u.map(e=>`import ${e.pascalName} from '${e.fullControllerPath}';`).join(`
|
|
21
21
|
`)}
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
export default async (RED: NodeAPI): Promise<void> => {
|
|
25
25
|
global.RED = RED;
|
|
26
26
|
|
|
27
|
-
${
|
|
27
|
+
${u.map(e=>`// @ts-ignore
|
|
28
28
|
global.RED.nodes.registerType('${e.name}', ${e.pascalName});`).join(`
|
|
29
29
|
`)}
|
|
30
30
|
};
|
|
31
|
-
`.trim()}function
|
|
32
|
-
${
|
|
31
|
+
`.trim()}function $e(){return `
|
|
32
|
+
${A}
|
|
33
33
|
import type { NodeAPI } from 'node-red';
|
|
34
|
-
${
|
|
34
|
+
${u.map(e=>`import ${e.pascalName} from '${e.editor.tsPath}';`).join(`
|
|
35
35
|
`)}
|
|
36
36
|
|
|
37
37
|
declare const RED: NodeAPI;
|
|
38
38
|
|
|
39
|
-
${
|
|
39
|
+
${u.map(e=>`// @ts-ignore
|
|
40
40
|
window.RED.nodes.registerType('${e.name}', ${e.pascalName});`).join(`
|
|
41
41
|
`)}
|
|
42
|
-
`.trim()}function
|
|
43
|
-
<script type="text/markdown" data-help-name="${
|
|
42
|
+
`.trim()}function B(){l__namespace.writeFileSync(`${r.cacheDirFiles.controllerIndex}`,xe());}function L(){l__namespace.writeFileSync(`${r.cacheDirFiles.editorIndex}`,$e());}function R(){let e=r.getListNodesFull(),t=[];for(let o of e)if(o.doc.mdFiles[0]){let s=l__namespace.default.readFileSync(o.doc.mdFiles[0],"utf-8"),g=`
|
|
43
|
+
<script type="text/markdown" data-help-name="${o.name}">
|
|
44
44
|
${s}
|
|
45
45
|
</script>
|
|
46
|
-
`;t.push(
|
|
47
|
-
`):""}async function
|
|
46
|
+
`;t.push(g);}return t.length?t.join(`
|
|
47
|
+
`):""}async function Ne(e=!1){return W__default.default.build({entryPoints:[r.cacheDirFiles.controllerIndex],outfile:`${r.pathDist}/index.js`,bundle:!0,minify:e,minifyWhitespace:e,minifyIdentifiers:e,minifySyntax:e,platform:"node",format:"cjs",target:"es2018",loader:{".ts":"ts"},packages:"external"})}async function E(e=!1){let t=await W__default.default.build({entryPoints:[r.cacheDirFiles.editorIndex],bundle:!0,platform:"browser",format:"iife",target:"es6",sourcemap:!1,minify:e,minifyWhitespace:e,minifySyntax:e,minifyIdentifiers:e,legalComments:"none",write:!1,loader:{".ts":"ts"}});return t.outputFiles&&t.outputFiles.length>0?t.outputFiles[0].text:""}function Se(){Ce__default.default.sync([r.pathDist]);}function Ie(){l__namespace.writeFileSync(`${r.pathLibCacheDir}/config.json`,JSON.stringify(r.config,null,2),"utf-8");}function De(e){let t=pe__default.default.resolve(e);l__namespace.existsSync(t)||l__namespace.mkdirSync(t,{recursive:!0});}async function p(e=!1){De(r.pathLibCacheDir),Se(),Ie(),B(),L(),await Ne(e),await v(e);}function O(e){let t=new commander.Command("checks").description("[WIP] Commands to check the some stuff");t.command("nodes-structure").description("[WIP] Verify the structure of the nodes").action(()=>{console.log("In construction");}),e.addCommand(t);}function q(e){let t=new commander.Command("info").description("Command to get information").description("Get information about the package").action(()=>{consola.consola.log(Pe__default.default.render(r));});e.addCommand(t);}function M(e){let t=new commander.Command("create-node").description("[WIP] Create a new node").action(async()=>{consola.consola.warn("Command in construction - not working yet");let o=await consola.consola.prompt("Enter node name:",{type:"text"}),n=radash.dash(o),s=await consola.consola.prompt(`This name is OK for you '${n}'?`,{type:"confirm"});console.log("userIsOk",s);});e.addCommand(t);}var T,w;function Be(){T=H__default.default({exec:`node-red -u ${r.config.watcher.nodeRed.path}`,ignore:["**/*"],ext:"js,html",verbose:!0}),H__default.default.once("start",()=>{w=Ee__default.default.create(),w.init({ui:!1,proxy:{target:r.config.watcher.nodeRed.url,ws:!0},ghostMode:!1,open:!1,reloadDelay:4e3});}).on("quit",()=>{consola.consola.info("Nodemon has quit"),process.exit(0);});}function Le(){T.restart(),w.reload();}var J=r.config.watcher.nodeRed.enabled&&r.config.watcher.nodeRed.path;function _(){Ae__default.default.watch(r.pathSrcDir,{}).on("ready",async()=>{consola.consola.info("Initial scan complete. Ready for changes"),await p(!1),consola.consola.success("Initial Build completed"),J?Be():consola.consola.warn("Node-Red watcher is disabled. Please enable it in the config file");}).on("change",async t=>{consola.consola.info(`File ${t.replace(r.currentDir,"")} has been changed`),await p(!1),consola.consola.success("Build completed"),J&&Le();});}var c=new commander.Command;c.name("node-red-dxp").description("node-red-dxp CLI").version(N.version);c.command("build").description("Build project").action(async e=>{consola.consola.start("Building..."),await p(!0),consola.consola.ready("Build completed");});c.command("watch").description("watch project").option("--minify <minify>","[WIP] Minify the output",!1).action(e=>{_();});O(c);q(c);M(c);c.parse(K__namespace.argv);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keload/node-red-dxp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -46,6 +46,12 @@
|
|
|
46
46
|
"homepage": "https://github.com/clement-berard/node-red-dxp",
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@biomejs/biome": "1.9.4",
|
|
49
|
+
"release-it": "17.10.0",
|
|
50
|
+
"tsup": "8.3.5",
|
|
51
|
+
"tsx": "4.19.2",
|
|
52
|
+
"typescript": "5.6.3"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
49
55
|
"@release-it/conventional-changelog": "9.0.3",
|
|
50
56
|
"@types/html-minifier-terser": "7.0.2",
|
|
51
57
|
"@types/jquery": "3.5.32",
|
|
@@ -54,8 +60,9 @@
|
|
|
54
60
|
"@types/prettyjson": "0.0.33",
|
|
55
61
|
"browser-sync": "3.0.3",
|
|
56
62
|
"chokidar": "4.0.1",
|
|
63
|
+
"commander": "12.1.0",
|
|
57
64
|
"consola": "3.2.3",
|
|
58
|
-
"
|
|
65
|
+
"cosmiconfig": "9.0.0",
|
|
59
66
|
"del": "^6.1.1",
|
|
60
67
|
"esbuild": "0.24.0",
|
|
61
68
|
"glob": "11.0.0",
|
|
@@ -64,16 +71,8 @@
|
|
|
64
71
|
"merge-anything": "6.0.2",
|
|
65
72
|
"nodemon": "3.1.7",
|
|
66
73
|
"prettyjson": "1.2.5",
|
|
67
|
-
"
|
|
68
|
-
"sass": "1.81.0"
|
|
69
|
-
"tsup": "8.3.5",
|
|
70
|
-
"tsx": "4.19.2",
|
|
71
|
-
"typescript": "5.6.3"
|
|
72
|
-
},
|
|
73
|
-
"dependencies": {
|
|
74
|
-
"commander": "12.1.0",
|
|
75
|
-
"cosmiconfig": "9.0.0",
|
|
76
|
-
"radash": "12.1.0"
|
|
74
|
+
"radash": "12.1.0",
|
|
75
|
+
"sass": "1.81.0"
|
|
77
76
|
},
|
|
78
77
|
"files": [
|
|
79
78
|
"dist"
|