@keload/node-red-dxp 1.3.0 → 1.3.1
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 +2 -2
package/dist/cli/index.cjs
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
'use strict';var
|
|
2
|
+
'use strict';var oe=require('process'),commander=require('commander'),consola=require('consola'),g=require('fs'),be=require('path'),Fe=require('del'),K=require('esbuild'),cosmiconfig=require('cosmiconfig'),glob=require('glob'),radash=require('radash'),htmlMinifierTerser=require('html-minifier-terser'),W=require('sass'),Te=require('prettyjson'),Me=require('browser-sync'),qe=require('chokidar'),Y=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 oe__namespace=/*#__PURE__*/_interopNamespace(oe);var g__namespace=/*#__PURE__*/_interopNamespace(g);var be__default=/*#__PURE__*/_interopDefault(be);var Fe__default=/*#__PURE__*/_interopDefault(Fe);var K__default=/*#__PURE__*/_interopDefault(K);var W__namespace=/*#__PURE__*/_interopNamespace(W);var Te__default=/*#__PURE__*/_interopDefault(Te);var Me__default=/*#__PURE__*/_interopDefault(Me);var qe__default=/*#__PURE__*/_interopDefault(qe);var Y__default=/*#__PURE__*/_interopDefault(Y);var v={version:"1.3.0"};function b(e){return Object.prototype.toString.call(e).slice(8,-1)}function f(e){if(b(e)!=="Object")return !1;let t=Object.getPrototypeOf(e);return !!t&&t.constructor===Object&&t===Object.prototype}function N(e){return b(e)==="Symbol"}function k(e,t,r,n){let s={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";s==="enumerable"&&(e[t]=r),s==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0});}function A(e,t,r){if(!f(t))return t;let n={};if(f(e)){let p=Object.getOwnPropertyNames(e),m=Object.getOwnPropertySymbols(e);n=[...p,...m].reduce((i,c)=>{let w=e[c];return (!N(c)&&!Object.getOwnPropertyNames(t).includes(c)||N(c)&&!Object.getOwnPropertySymbols(t).includes(c))&&k(i,c,w,e),i},{});}let s=Object.getOwnPropertyNames(t),x=Object.getOwnPropertySymbols(t);return [...s,...x].reduce((p,m)=>{let i=t[m],c=f(e)?e[m]:void 0;c!==void 0&&f(i)&&(i=A(c,i));let w=i;return k(p,m,w,t),p},n)}function E(e,...t){return t.reduce((r,n)=>A(r,n),e)}var R={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 me="node-red-dx",le=e=>e.replace("@","").replace("/","-");function de(){let e=cosmiconfig.cosmiconfigSync(me);try{let t=e.search();return E(R,t?t.config:{})}catch(t){throw console.error("Error while loading configuration",t),t}}var a=de(),l=process.cwd(),B=JSON.parse(g.readFileSync(`${l}/package.json`,"utf-8")),C=`${l}/${a.srcDir}`,pe=`${l}/resources`,S=`${C}/${a.nodesDirName}`,j=`${l}/${a.libCacheDir}`;function fe(){return glob.globSync(`${S}/*`,{withFileTypes:!0}).map(t=>{let r=t.fullpath(),n=`${r}/${a.nodes.editor.dirName}`,s=r.replace(l,"").slice(1),x=`${s}/${a.nodes.editor.dirName}`,O=glob.globSync(`${n}/**/*.scss`),p=glob.globSync(`${r}/doc.mdx`),m=glob.globSync(`${r}/doc.md`),i=radash.dash(t.name);return {fullEditorPath:n,fullPath:r,name:t.name,pascalName:radash.pascal(t.name),dashName:i,relativeEditorPath:x,relativePath:s,nodeIdentifier:`${o.packageNameSlug}-${i}`,fullControllerPath:`${r}/${a.nodes.controllerName}.ts`,editor:{tsPath:`${n}/${a.nodes.editor.tsName}.ts`,htmlPath:`${n}/${a.nodes.editor.htmlName}.html`,scssFiles:O},doc:{mdxFiles:p,mdFiles:m}}})}function ue(){return {currentDir:l,pathSrcDir:C,pathSrcNodesDir:S,additionalResourcesDir:pe,pathDist:`${l}/${a.builder.outputDir}`,cacheDirFiles:{controllerIndex:`${j}/controller-index.ts`,editorIndex:`${j}/editor-index.ts`},pathLibCacheDir:j,packageName:B.name,packageNameSlug:le(B.name),config:a,getResolvedSrcPathsScss:()=>glob.globSync(`${C}/**/*.scss`,{ignore:`${S}/**/*.scss`}),getResolvedNodesPaths:()=>glob.globSync(`${S}/*`),getListNodesFull:()=>fe()}}var o=ue();async function xe(e){let t=g.readFileSync(e,"utf8");return htmlMinifierTerser.minify(t,{collapseWhitespace:!0,removeComments:!0,removeRedundantAttributes:!1,useShortDoctype:!0,removeEmptyAttributes:!1,minifyCSS:!1,minifyJS:!1})}function ye(e,t,r,n){return `
|
|
3
3
|
<script type="text/html" data-template-name="${e}">
|
|
4
|
-
<div class="${
|
|
4
|
+
<div class="${r}">
|
|
5
5
|
<div class="${t}">${n}</div>
|
|
6
6
|
</div>
|
|
7
7
|
</script>
|
|
8
|
-
`}async function
|
|
8
|
+
`}async function T(){let e=o.getListNodesFull(),t=[];for(let r of e){let n=await xe(r.editor.htmlPath);t.push(ye(r.name,r.nodeIdentifier,o.packageNameSlug,n));}return t.join("").trim()}function Se(e){return W__namespace.compile(e,{style:"compressed"}).css}function I(e){let t={};for(let r=0;r<e.length;r++){let n=e[r];t[n]=Se(n);}return t}function $e(){let e=o.getListNodesFull();return e.some(r=>r.editor.scssFiles.length)?e.map(r=>{let n=I(r.editor.scssFiles),s=Object.values(n).join("");return {name:r.name,styles:I(r.editor.scssFiles),mergedCompiledStyles:s,scssFinal:`#${r.nodeIdentifier}{${s}}`,hasStyles:!!r.editor.scssFiles.length}}).filter(r=>r.hasStyles):[]}function we(){let e=o.getResolvedSrcPathsScss(),t=glob.globSync(`${be__default.default.resolve(__dirname,"..")}/editor/**/*.scss`),r=I([...e,...t]);return Object.values(r).join("")}function L(){let e=we(),t=$e();return !e&&!t.length?"":`.${o.packageNameSlug}{${e}${t.map(r=>r.scssFinal).join("")}}`}function M(e){return e.trim().replace(/\n\s+/g,"")}async function je(e=!0){let t=await T(),r=await V(e),n=L(),s=J();return `${e?M(t):t}
|
|
9
9
|
<style>${n}</style>
|
|
10
10
|
<script type="application/javascript">
|
|
11
|
-
${
|
|
11
|
+
${r.trim()}
|
|
12
12
|
</script>
|
|
13
|
-
${s}`}async function
|
|
13
|
+
${s}`}async function H(e=!1){let t=await je(e);g__namespace.writeFileSync(`${o.pathDist}/index.html`,t);}var $=o.getListNodesFull(),_=`
|
|
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 Ce(){return `
|
|
18
|
+
${_}
|
|
19
19
|
import type { NodeAPI } from 'node-red';
|
|
20
|
-
${
|
|
20
|
+
${$.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
|
+
${$.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 Ie(){return `
|
|
32
|
+
${_}
|
|
33
33
|
import type { NodeAPI } from 'node-red';
|
|
34
|
-
${
|
|
34
|
+
${$.map(e=>`import ${e.pascalName} from '${e.editor.tsPath}';`).join(`
|
|
35
35
|
`)}
|
|
36
36
|
|
|
37
37
|
declare const RED: NodeAPI;
|
|
38
38
|
|
|
39
|
-
${
|
|
39
|
+
${$.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 G(){g__namespace.writeFileSync(`${o.cacheDirFiles.controllerIndex}`,Ce());}function U(){g__namespace.writeFileSync(`${o.cacheDirFiles.editorIndex}`,Ie());}function J(){let e=o.getListNodesFull(),t=[];for(let r of e)if(r.doc.mdFiles[0]){let s=g__namespace.default.readFileSync(r.doc.mdFiles[0],"utf-8"),x=`
|
|
43
|
+
<script type="text/markdown" data-help-name="${r.name}">
|
|
44
44
|
${s}
|
|
45
45
|
</script>
|
|
46
|
-
`;t.push(
|
|
47
|
-
`):""}async function
|
|
46
|
+
`;t.push(x);}return t.length?t.join(`
|
|
47
|
+
`):""}async function Oe(e=!1){return K__default.default.build({entryPoints:[o.cacheDirFiles.controllerIndex],outfile:`${o.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 V(e=!1){let t=await K__default.default.build({entryPoints:[o.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 ve(){Fe__default.default.sync([o.pathDist]);}function ke(){g__namespace.writeFileSync(`${o.pathLibCacheDir}/config.json`,JSON.stringify(o.config,null,2),"utf-8");}function Ae(e){let t=be__default.default.resolve(e);g__namespace.existsSync(t)||g__namespace.mkdirSync(t,{recursive:!0});}async function y(e=!1){Ae(o.pathLibCacheDir),ve(),ke(),G(),U(),await Oe(e),await H(e);}function z(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(Te__default.default.render(o));});e.addCommand(t);}function X(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 r=await consola.consola.prompt("Enter node name:",{type:"text"}),n=radash.dash(r),s=await consola.consola.prompt(`This name is OK for you '${n}'?`,{type:"confirm"});console.log("userIsOk",s);});e.addCommand(t);}var ee,F;function He(){ee=Y__default.default({exec:`node-red -u ${o.config.watcher.nodeRed.path}`,ignore:["**/*"],ext:"js,html",verbose:!0}),Y__default.default.once("start",()=>{F=Me__default.default.create(),F.init({ui:!1,proxy:{target:o.config.watcher.nodeRed.url,ws:!0},ghostMode:!1,open:!1,reloadDelay:4e3});}).on("quit",()=>{consola.consola.info("Nodemon has quit"),process.exit(0);});}function Je(){ee.restart(),F.reload();}var Z=o.config.watcher.nodeRed.enabled&&o.config.watcher.nodeRed.path;function te(){qe__default.default.watch(o.pathSrcDir,{}).on("ready",async()=>{consola.consola.info("Initial scan complete. Ready for changes"),await y(!1),consola.consola.success("Initial Build completed"),Z?He():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(o.currentDir,"")} has been changed`),await y(!1),consola.consola.success("Build completed"),Z&&Je();});}var d=new commander.Command;d.name("node-red-dxp").description("node-red-dxp CLI").version(v.version);d.command("build").description("Build project").action(async e=>{consola.consola.start("Building..."),await y(!0),consola.consola.ready("Build completed");});d.command("watch").description("watch project").option("--minify <minify>","[WIP] Minify the output",!1).action(e=>{te();});z(d);Q(d);X(d);d.parse(oe__namespace.argv);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keload/node-red-dxp",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
"homepage": "https://github.com/clement-berard/node-red-dxp",
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@biomejs/biome": "1.9.4",
|
|
49
|
+
"@release-it/conventional-changelog": "9.0.3",
|
|
49
50
|
"release-it": "17.10.0",
|
|
50
51
|
"tsup": "8.3.5",
|
|
51
52
|
"tsx": "4.19.2",
|
|
52
53
|
"typescript": "5.6.3"
|
|
53
54
|
},
|
|
54
55
|
"dependencies": {
|
|
55
|
-
"@release-it/conventional-changelog": "9.0.3",
|
|
56
56
|
"@types/html-minifier-terser": "7.0.2",
|
|
57
57
|
"@types/jquery": "3.5.32",
|
|
58
58
|
"@types/jqueryui": "1.12.23",
|