@keload/node-red-dxp 1.5.0 → 1.7.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../node_modules/.pnpm/is-what@5.0.2/node_modules/is-what/dist/getType.js","../../node_modules/.pnpm/is-what@5.0.2/node_modules/is-what/dist/isPlainObject.js","../../node_modules/.pnpm/is-what@5.0.2/node_modules/is-what/dist/isSymbol.js","../../node_modules/.pnpm/merge-anything@6.0.2/node_modules/merge-anything/dist/merge.js","../../src/default-config.ts","../../src/current-context.ts","../../src/tools/node-utils.ts","../../src/builder/controller/esbuild.ts","../../src/builder/controller/BuilderController.class.ts","../../src/builder/doc/BuildDoc.class.ts","../../src/tools/common-utils.ts","../../src/builder/editor/i18n.ts","../../src/builder/editor/html.ts","../../src/builder/editor/styles.ts","../../src/builder/editor/BuilderEditor.class.ts","../../src/builder/locales/globalLocales.ts","../../src/builder/locales/scopedNodeLocales.ts","../../src/builder/locales/getLocales.ts","../../src/builder/Builder.class.ts"],"names":["props","symbols","cosmiconfigSync","readFileSync","path","globSync","dash","pascal","fs","fsPromise","esbuild","minify","packageNameSlug","postcss","purgeCss","autoprefixer","cssnano","sass","defaultConfig","tailwindcss","sep"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Returns the object type of the given payload */\nexport function getType(payload) {\n return Object.prototype.toString.call(payload).slice(8, -1);\n}\n","import { getType } from './getType.js';\n/**\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects\n * with other prototypes)\n */\nexport function isPlainObject(payload) {\n if (getType(payload) !== 'Object')\n return false;\n const prototype = Object.getPrototypeOf(payload);\n return !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\n","import { getType } from './getType.js';\n/** Returns whether the payload is a Symbol */\nexport function isSymbol(payload) {\n return getType(payload) === 'Symbol';\n}\n","import { isPlainObject, isSymbol } from 'is-what';\nimport { concatArrays } from './extensions.js';\nfunction assignProp(carry, key, newVal, originalObject) {\n const propType = {}.propertyIsEnumerable.call(originalObject, key)\n ? 'enumerable'\n : 'nonenumerable';\n if (propType === 'enumerable')\n carry[key] = newVal;\n if (propType === 'nonenumerable') {\n Object.defineProperty(carry, key, {\n value: newVal,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n }\n}\nfunction mergeRecursively(origin, newComer, compareFn) {\n // always return newComer if its not an object\n if (!isPlainObject(newComer))\n return newComer;\n // define newObject to merge all values upon\n let newObject = {};\n if (isPlainObject(origin)) {\n const props = Object.getOwnPropertyNames(origin);\n const symbols = Object.getOwnPropertySymbols(origin);\n newObject = [...props, ...symbols].reduce((carry, key) => {\n const targetVal = origin[key];\n if ((!isSymbol(key) && !Object.getOwnPropertyNames(newComer).includes(key)) ||\n (isSymbol(key) && !Object.getOwnPropertySymbols(newComer).includes(key))) {\n assignProp(carry, key, targetVal, origin);\n }\n return carry;\n }, {});\n }\n // newObject has all properties that newComer hasn't\n const props = Object.getOwnPropertyNames(newComer);\n const symbols = Object.getOwnPropertySymbols(newComer);\n const result = [...props, ...symbols].reduce((carry, key) => {\n // re-define the origin and newComer as targetVal and newVal\n let newVal = newComer[key];\n const targetVal = isPlainObject(origin) ? origin[key] : undefined;\n // When newVal is an object do the merge recursively\n if (targetVal !== undefined && isPlainObject(newVal)) {\n newVal = mergeRecursively(targetVal, newVal, compareFn);\n }\n const propToAssign = compareFn ? compareFn(targetVal, newVal, key) : newVal;\n assignProp(carry, key, propToAssign, newComer);\n return carry;\n }, newObject);\n return result;\n}\n/**\n * Merge anything recursively.\n * Objects get merged, special objects (classes etc.) are re-assigned \"as is\".\n * Basic types overwrite objects or other basic types.\n */\nexport function merge(object, ...otherObjects) {\n return otherObjects.reduce((result, newComer) => {\n return mergeRecursively(result, newComer);\n }, object);\n}\nexport function mergeAndCompare(compareFn, object, ...otherObjects) {\n return otherObjects.reduce((result, newComer) => {\n return mergeRecursively(result, newComer, compareFn);\n }, object);\n}\nexport function mergeAndConcat(object, ...otherObjects) {\n return otherObjects.reduce((result, newComer) => {\n return mergeRecursively(result, newComer, concatArrays);\n }, object);\n}\n// import { Timestamp } from '../test/Timestamp'\n// type T1 = { date: Timestamp }\n// type T2 = [{ b: string[] }, { b: number[] }, { date: Timestamp }]\n// type TestT = Merge<T1, T2>\n// type A1 = { arr: string[] }\n// type A2 = { arr: number[] }\n// type A3 = { arr: boolean[] }\n// type TestA = Merge<A1, [A2, A3]>\n// interface I1 {\n// date: Timestamp\n// }\n// interface I2 {\n// date: Timestamp\n// }\n// const _a: I2 = { date: '' } as unknown as I2\n// type TestI = Merge<I1, [I2]>\n// // ReturnType<(typeof merge)<I1, I2>>\n// const a = merge(_a, [_a])\n// interface Arguments extends Record<string | number | symbol, unknown> {\n// key: string;\n// }\n// const aa1: Arguments = { key: \"value1\" }\n// const aa2: Arguments = { key: \"value2\" }\n// const aa = merge(a1, a2);\n// interface Barguments {\n// key: string\n// }\n// const ba1: Barguments = { key: 'value1' }\n// const ba2: Barguments = { key: 'value2' }\n// const ba = merge(ba1, ba2)\n// interface Carguments {\n// key: string\n// }\n// const ca = merge<Carguments, Carguments[]>({ key: 'value1' }, { key: 'value2' })\n// type P = Pop<Carguments[]>\n","export type Config = {\n libCacheDir: string;\n srcDir: string;\n nodesDirName: string;\n nodes: {\n controllerName: string;\n localesDirName: string;\n editor: {\n dirName: string;\n htmlName: string;\n tsName: string;\n };\n };\n builder: {\n outputDir: string;\n };\n watcher: {\n nodeRed: {\n enabled: boolean;\n path: string | undefined;\n url: string;\n };\n };\n};\n\nexport const defaultConfig: Partial<Config> = {\n libCacheDir: '.node-red-dx',\n srcDir: 'src',\n nodesDirName: 'nodes',\n nodes: {\n controllerName: 'controller',\n localesDirName: 'locales',\n editor: {\n dirName: 'editor',\n htmlName: 'index',\n tsName: 'index',\n },\n },\n builder: {\n outputDir: 'dist',\n },\n watcher: {\n nodeRed: {\n enabled: true,\n path: '~/.node-red',\n url: 'http://localhost:1880',\n },\n },\n};\n","import { readFileSync } from 'node:fs';\nimport path from 'node:path';\nimport { cosmiconfigSync } from 'cosmiconfig';\nimport { type Entry, globSync } from 'fast-glob';\nimport { merge } from 'merge-anything';\nimport { dash, pascal } from 'radash';\nimport { type Config, defaultConfig } from './default-config';\n\nconst CONFIG_FILE_NAME = 'node-red-dx';\n\nconst cleanPkgName = (pkgName: string) => pkgName.replace('@', '').replace('/', '-');\n\nfunction getConfig() {\n const explorerSync = cosmiconfigSync(CONFIG_FILE_NAME);\n\n try {\n const result = explorerSync.search();\n\n return merge(defaultConfig, result ? result.config : {}) as Config;\n } catch (error) {\n console.error('Error while loading configuration', error);\n throw error;\n }\n}\n\nconst currentConfig = getConfig();\nconst currentDir = process.cwd();\nconst jsonPackage = JSON.parse(readFileSync(`${currentDir}/package.json`, 'utf-8'));\nconst pathSrcDir = `${currentDir}/${currentConfig.srcDir}`;\nconst additionalResourcesDir = `${currentDir}/resources`;\nconst pathSrcNodesDir = `${pathSrcDir}/${currentConfig.nodesDirName}`;\nconst pathLibCacheDir = `${currentDir}/${currentConfig.libCacheDir}`;\nconst currentPackagedDistPath = `${path.resolve(__dirname, '..')}`;\nconst packageNameSlug = cleanPkgName(jsonPackage.name);\n\nfunction listNodeFolders(rawNodes: Entry[] = []) {\n return rawNodes.map((entry) => {\n const fullPath = entry.path;\n const fullEditorPath = `${fullPath}/${currentConfig.nodes.editor.dirName}`;\n const relativePath = fullPath.replace(currentDir, '').slice(1);\n const relativeEditorPath = `${relativePath}/${currentConfig.nodes.editor.dirName}`;\n const scssFiles = globSync(`${fullEditorPath}/**/*.scss`);\n const mdxFiles = globSync(`${fullPath}/doc.mdx`);\n const mdFiles = globSync(`${fullPath}/doc.md`);\n const dashName = dash(entry.name);\n\n return {\n fullEditorPath,\n fullPath,\n name: entry.name,\n pascalName: pascal(entry.name),\n dashName,\n relativeEditorPath,\n relativePath,\n resolvedLocalesPaths: globSync(`${fullPath}/${currentConfig.nodes.localesDirName}/*.json`),\n nodeIdentifier: `${packageNameSlug}-${dashName}`,\n fullControllerPath: `${fullPath}/controller.ts`,\n editor: {\n tsPath: `${fullEditorPath}/${currentConfig.nodes.editor.tsName}.ts`,\n htmlPath: `${fullEditorPath}/${currentConfig.nodes.editor.htmlName}.html`,\n scssFiles,\n },\n doc: {\n mdxFiles,\n mdFiles,\n },\n };\n });\n}\n\nfunction getCurrentContext() {\n const resolvedNodesPaths = globSync(`${pathSrcNodesDir}/**/*`, { onlyDirectories: true, deep: 1, objectMode: true });\n const listNodesFull = listNodeFolders(resolvedNodesPaths);\n const listNodesFullNames = listNodesFull.map((node) => node.name);\n\n return {\n currentDir,\n pathSrcDir,\n pathSrcNodesDir,\n additionalResourcesDir,\n pathDist: `${currentDir}/${currentConfig.builder.outputDir}`,\n currentPackagedDistPath,\n cacheDirFiles: {\n controllerIndex: `${pathLibCacheDir}/controller-index.ts`,\n editorIndex: `${pathLibCacheDir}/editor-index.ts`,\n },\n pathLibCacheDir,\n packageName: jsonPackage.name,\n packageNameSlug,\n config: currentConfig,\n resolvedSrcPathsScss: globSync(`${pathSrcDir}/**/*.scss`, { ignore: [`${pathSrcNodesDir}/**/*.scss`] }),\n resolvedNodesPaths: resolvedNodesPaths.map((entry) => entry.path),\n resolvedSrcLocalesPaths: globSync(`${pathSrcDir}/locales/*.json`),\n listNodesFull: listNodesFull,\n listNodesFullNames,\n };\n}\n\nexport const currentContext = getCurrentContext();\n\nexport type CurrentContext = ReturnType<typeof getCurrentContext>;\nexport type ListNodesFull = typeof currentContext.listNodesFull;\nexport type ListNode = ListNodesFull[number];\n","import fs from 'node:fs';\nimport fsPromise from 'node:fs/promises';\nimport path from 'node:path';\n\n// dist folder path\nexport const distributionPackagePath = `${path.resolve(__dirname, '..')}`;\n\nexport function createFolderIfNotExists(folderPath: string) {\n if (!fs.existsSync(folderPath)) {\n fs.mkdirSync(folderPath, { recursive: true });\n }\n}\n\nexport async function writeFile(path: string, content: string): Promise<void> {\n try {\n await fsPromise.writeFile(path, content);\n } catch (error) {\n console.error('Error writing controller index:', error);\n }\n}\n\nexport async function doesFolderExist(absolutePath: string): Promise<boolean> {\n try {\n const stats = await fsPromise.stat(absolutePath);\n return stats.isDirectory();\n } catch {\n return false;\n }\n}\n\nexport async function cleanPaths(paths: string[]): Promise<void> {\n for (const dirPath of paths) {\n try {\n const resolvedPath = path.resolve(dirPath);\n\n const stats = await fsPromise.stat(resolvedPath).catch(() => null);\n\n if (stats?.isDirectory()) {\n await fsPromise.rm(resolvedPath, { recursive: true, force: true });\n }\n } catch (error) {\n console.error(`Error cleaning path (${dirPath}): ${error}`);\n }\n }\n}\n","import fsPromise from 'node:fs/promises';\n\nexport const addCredentialsExportPlugin = {\n name: 'add-credentials-export',\n setup(build: any) {\n build.onLoad({ filter: /controller\\.ts$/ }, async (args) => {\n const source = await fsPromise.readFile(args.path, 'utf8');\n const hasCredentialsExport = /export\\s+const\\s+credentials\\s*=/.test(source);\n\n if (!hasCredentialsExport) {\n return {\n contents: `${source}\\nexport const credentials = {};`,\n loader: 'ts',\n };\n }\n\n return { contents: source, loader: 'ts' };\n });\n },\n};\n","import esbuild from 'esbuild';\nimport { currentContext } from '../../current-context';\nimport { writeFile } from '../../tools/node-utils';\nimport { addCredentialsExportPlugin } from './esbuild';\n\ntype BuilderControllerParams = {\n minify?: boolean;\n};\n\nexport class BuilderController {\n private params: BuilderControllerParams;\n\n constructor(params: BuilderControllerParams) {\n this.params = { minify: false, ...params };\n }\n\n async getControllerIndexContent() {\n return `\nimport type { NodeAPI } from 'node-red';\n${currentContext.listNodesFull.map((node) => `import ${node.pascalName}, {credentials as cred${node.pascalName}} from '${node.fullControllerPath}';`).join('\\n')}\n\n\nexport default async (RED: NodeAPI): Promise<void> => {\n global.RED = RED;\n\n ${currentContext.listNodesFull\n .map(\n (node) => `// @ts-ignore\\nglobal.RED.nodes.registerType('${node.name}', ${node.pascalName}, {\n credentials: cred${node.pascalName}\n });`,\n )\n .join('\\n')}\n};\n`.trim();\n }\n\n buildScript() {\n return esbuild.build({\n entryPoints: [currentContext.cacheDirFiles.controllerIndex],\n outfile: `${currentContext.pathDist}/index.js`,\n bundle: true,\n minify: this.params.minify,\n minifyWhitespace: this.params.minify,\n minifyIdentifiers: this.params.minify,\n minifySyntax: this.params.minify,\n platform: 'node',\n format: 'cjs',\n target: 'es2018',\n loader: { '.ts': 'ts' },\n packages: 'external',\n plugins: [addCredentialsExportPlugin],\n });\n }\n\n async getControllerTask() {\n return this.getControllerIndexContent().then((content) => {\n writeFile(`${currentContext.cacheDirFiles.controllerIndex}`, content).then(() => {\n this.buildScript();\n });\n });\n }\n}\n","import fs from 'node:fs';\nimport { currentContext } from '../../current-context';\n\nexport class BuildDoc {\n // TODO need to refactor\n getAllDocContent() {\n const result = [];\n\n for (const node of currentContext.listNodesFull) {\n const fileMd = node.doc.mdFiles[0];\n if (fileMd) {\n const htmlMd = fs.readFileSync(node.doc.mdFiles[0], 'utf-8');\n const inner = `\n<script type=\"text/markdown\" data-help-name=\"${node.name}\">\n${htmlMd}\n</script>\n `;\n result.push(inner);\n }\n }\n\n return result.length ? result.join('\\n') : '';\n }\n}\n","import { dash, pascal } from 'radash';\n\nexport function cleanSpaces(str: string) {\n return str.trim().replace(/\\n\\s+/g, '');\n}\n\nexport function computeNodeName(inName = '') {\n return {\n name: inName,\n dashName: dash(inName),\n pascalName: pascal(inName),\n };\n}\n","export function updateI18nAttributes(nodeName = '', htmlContent = '') {\n if (!nodeName || !htmlContent) {\n return htmlContent;\n }\n return htmlContent.replace(/data-i18n=\"([^\"]+)\"/g, (match, i18nValue) => {\n const updatedValue = i18nValue.replace(/(\\[.*?\\])?(node-red:[^;]+|[^;]+)/g, (_, prefix, key) => {\n let res = key;\n if (!key.startsWith('node-red:')) {\n res = `${nodeName}.${key}`;\n }\n\n return (prefix || '') + res;\n });\n\n return `data-i18n=\"${updatedValue}\"`;\n });\n}\n","import { readFileSync } from 'node:fs';\nimport { minify } from 'html-minifier-terser';\nimport type { ListNode, ListNodesFull } from '../../current-context';\nimport { cleanSpaces } from '../../tools/common-utils';\nimport { updateI18nAttributes } from './i18n';\n\nexport async function minifyHtml(content: string) {\n return minify(content, {\n collapseWhitespace: true,\n removeComments: true,\n removeRedundantAttributes: false,\n useShortDoctype: true,\n removeEmptyAttributes: false,\n minifyCSS: false,\n minifyJS: false,\n });\n}\n\nfunction wrapHtml(nodeName: string, html: string) {\n return `\n <script type=\"text/html\" data-template-name=\"${nodeName}\">\n ${html}\n </script>\n`;\n}\n\nasync function processNodeHtml(node: ListNode, packageNameSlug: string, minify = false) {\n const htmlContent = readFileSync(node.editor.htmlPath, 'utf8');\n const htmlContentWithAdditionalDiv = `\n <div class=\"${packageNameSlug}\">\n <div class=\"${node.nodeIdentifier}\">${htmlContent}</div>\n </div>\n `;\n let html = minify ? await minifyHtml(htmlContentWithAdditionalDiv) : htmlContentWithAdditionalDiv;\n html = updateI18nAttributes(node.name, html);\n const wrappedHtml = wrapHtml(node.name, html);\n\n return {\n nodeName: node.name,\n nodeIdentifier: node.nodeIdentifier,\n html,\n wrappedHtml,\n };\n}\n\ntype GetNodesHtmlParams = {\n nodes: ListNodesFull;\n minify?: boolean;\n packageNameSlug: string;\n};\n\nexport async function getNodesHtml(params: GetNodesHtmlParams) {\n const { nodes, minify = false } = params;\n\n const res = await Promise.all(nodes.map((node) => processNodeHtml(node, params.packageNameSlug, minify)));\n\n const allHtml = res\n .map((node) => node.html)\n .join('')\n .trim();\n\n return {\n html: allHtml,\n allWrappedHtml: res\n .map((node) => (minify ? cleanSpaces(node.wrappedHtml) : node.wrappedHtml))\n .join('')\n .trim(),\n };\n}\n","import fs from 'node:fs';\nimport purgeCss from '@fullhuman/postcss-purgecss';\nimport autoprefixer from 'autoprefixer';\nimport cssnano from 'cssnano';\nimport { globSync } from 'fast-glob';\nimport postcss from 'postcss';\nimport * as sass from 'sass';\nimport tailwindcss from 'tailwindcss';\nimport { type ListNodesFull, currentContext } from '../../current-context';\nimport { distributionPackagePath } from '../../tools/node-utils';\n\nasync function processCSS(cssString: string, htmlString: string): Promise<string> {\n const result = await postcss([\n purgeCss({\n content: [{ raw: htmlString, extension: 'html' }], // Analyse directe du HTML\n }),\n autoprefixer,\n cssnano({ preset: 'default' }),\n ]).process(cssString, { from: undefined });\n\n return result.css;\n}\n\nfunction compileScss(filePath: string): string {\n const result = sass.compile(filePath, { style: 'expanded' });\n return result.css;\n}\n\nfunction buildStyles(files: string[]): Record<string, string> {\n const styles: Record<string, string> = {};\n for (let i = 0; i < files.length; i++) {\n const filePath = files[i];\n styles[filePath] = compileScss(filePath);\n }\n return styles;\n}\n\nexport function getNodesStyles(nodes: ListNodesFull) {\n const hasStyles = nodes.some((node) => node.editor.scssFiles.length);\n if (!hasStyles) {\n return [];\n }\n return nodes\n .filter((node) => node.editor.scssFiles.length)\n .map((node) => {\n const nodeStyles = buildStyles(node.editor.scssFiles);\n const mergedCompiledStyles = Object.values(nodeStyles).join('');\n return {\n name: node.name,\n mergedCompiledStyles,\n scssFinal: `\n #${node.nodeIdentifier}{\n ${mergedCompiledStyles}\n }`,\n };\n });\n}\n\nexport async function generateCSSFromHTMLWithTailwind(htmlString: string, tailwindConfig: any = {}) {\n const defaultConfig = {\n content: [{ raw: htmlString }],\n theme: {},\n };\n\n const finalConfig = { ...defaultConfig, ...tailwindConfig };\n\n const tailwindScssFilePath = globSync(\n `${distributionPackagePath}/${currentContext.config.nodes.editor.dirName}/assets/tailwind.scss`,\n )[0];\n\n const scssString = tailwindScssFilePath.length ? fs.readFileSync(tailwindScssFilePath, 'utf8') : '';\n\n const result = await postcss([tailwindcss(finalConfig), require('autoprefixer')]).process(scssString, {\n from: undefined,\n });\n\n return result.css;\n}\n\nexport function getSrcStyles() {\n const srcStyles = currentContext.resolvedSrcPathsScss;\n const srcStylesCompiled = buildStyles([...srcStyles]);\n return Object.values(srcStylesCompiled).join('');\n}\n\ntype GetAllCompiledStylesParams = {\n rawHtml: string;\n minify?: boolean;\n nodes: ListNodesFull;\n};\n\nexport async function getAllCompiledStyles(params: GetAllCompiledStylesParams) {\n const { rawHtml, minify = false, nodes } = params || {};\n const srcStyles = getSrcStyles();\n const nodesStyles = getNodesStyles(nodes);\n const twCss = await generateCSSFromHTMLWithTailwind(rawHtml);\n\n const getSrcWrapper = (content: string) => `.${currentContext.packageNameSlug}{${content}}`;\n const allNodesStyles = nodesStyles.map((node) => node.scssFinal).join('\\n');\n\n const result = getSrcWrapper(`${twCss}${srcStyles}${allNodesStyles}`);\n\n return minify ? processCSS(result, rawHtml) : result;\n}\n","import esbuild from 'esbuild';\nimport { currentContext } from '../../current-context';\nimport { writeFile } from '../../tools/node-utils';\nimport { BuildDoc } from '../doc/BuildDoc.class';\nimport { getNodesHtml } from './html';\nimport { getAllCompiledStyles } from './styles';\n\ntype BuilderEditorParams = {\n minify?: boolean;\n};\n\nexport class BuilderEditor {\n private params: BuilderEditorParams;\n\n constructor(params: BuilderEditorParams) {\n this.params = { minify: false, ...params };\n }\n\n async getEditorIndexContent() {\n return `\nimport type { NodeAPI } from 'node-red';\n${currentContext.listNodesFull.map((node) => `import ${node.pascalName} from '${node.editor.tsPath}';`).join('\\n')}\n\ndeclare const RED: NodeAPI;\n\n${currentContext.listNodesFull.map((node) => `// @ts-ignore\\nwindow.RED.nodes.registerType('${node.name}', ${node.pascalName});`).join('\\n')}\n`.trim();\n }\n\n async getBuiltScript() {\n const result = await esbuild.build({\n entryPoints: [currentContext.cacheDirFiles.editorIndex],\n bundle: true,\n platform: 'browser',\n format: 'iife',\n target: 'es6',\n sourcemap: false,\n minify: this.params.minify,\n minifyWhitespace: this.params.minify,\n minifySyntax: this.params.minify,\n minifyIdentifiers: this.params.minify,\n legalComments: 'none',\n inject: [`${currentContext.currentPackagedDistPath}/editor/global-solid.ts`],\n write: false,\n loader: { '.ts': 'ts' },\n });\n\n if (result.outputFiles && result.outputFiles.length > 0) {\n return result.outputFiles[0].text;\n }\n return '';\n }\n\n async prepareEditorIndex() {\n const js = await this.getBuiltScript();\n const html = await getNodesHtml({\n minify: this.params.minify,\n nodes: currentContext.listNodesFull,\n packageNameSlug: currentContext.packageNameSlug,\n });\n const css = await getAllCompiledStyles({\n rawHtml: html.html,\n minify: this.params.minify,\n nodes: currentContext.listNodesFull,\n });\n\n const builderDoc = new BuildDoc();\n const docs = builderDoc.getAllDocContent();\n\n const wrappedJs = `<script type=\"application/javascript\">${js.trim()}</script>`;\n const wrappedCss = `<style>${css}</style>`;\n\n return `\n${html.allWrappedHtml}\n${wrappedCss}\n${wrappedJs}\n${docs}`.trim();\n }\n\n async getEditorTask() {\n return this.getEditorIndexContent().then((content) => {\n writeFile(`${currentContext.cacheDirFiles.editorIndex}`, content).then(() => {\n this.prepareEditorIndex().then(async (contentFinalIndexHtml) => {\n await writeFile(\n `${currentContext.pathDist}/${currentContext.config.nodes.editor.htmlName}.html`,\n contentFinalIndexHtml,\n );\n });\n });\n });\n }\n}\n","import fsPromise from 'node:fs/promises';\nimport { currentContext } from '../../current-context';\n\nasync function getWithContent(path: string) {\n const codeLang = path.split('/').pop().split('.').shift();\n const content = await fsPromise.readFile(path, 'utf-8');\n\n return {\n codeLang,\n content,\n };\n}\n\nexport async function getGlobalLocales() {\n const nodesList = currentContext.listNodesFullNames;\n const srcLocales = currentContext.resolvedSrcLocalesPaths;\n const srcLocalesWithContent = await Promise.all(srcLocales.map(getWithContent));\n\n const grouped = {} as any;\n\n // biome-ignore lint/complexity/noForEach: <explanation>\n nodesList.forEach((nodeName) => {\n for (const { codeLang, content } of srcLocalesWithContent) {\n if (!grouped[codeLang]) {\n grouped[codeLang] = [];\n }\n\n grouped[codeLang].push(`\"${nodeName}\":${content}`);\n }\n });\n\n let allContent = '';\n\n for (const [lang, locales] of Object.entries(grouped)) {\n const content = locales\n // @ts-ignore\n .map((innerContent: string) => innerContent)\n .join(',')\n .slice(0, -1);\n\n allContent += `\"${lang}\":{${content}},`;\n }\n\n return `{${allContent.slice(0, -1)}}`;\n}\n","import fsPromise from 'node:fs/promises';\nimport { sep } from 'node:path';\nimport { globSync } from 'fast-glob';\nimport { currentContext } from '../../current-context';\n\nasync function processNode(path: string) {\n const cleanPath = path.replace(`${currentContext.pathSrcNodesDir}${sep}`, '');\n const [nodeName, , fileName] = cleanPath.split(sep);\n const [codeLang] = fileName.split('.');\n const content = await fsPromise.readFile(path, 'utf-8');\n\n return {\n nodeName,\n codeLang,\n path,\n content,\n };\n}\n\nexport async function getScopedNodesLocales() {\n const toto = globSync(`${currentContext.pathSrcNodesDir}/**/locales/*.json`);\n const res = await Promise.all(toto.map(processNode));\n\n const grouped = {} as any;\n\n // biome-ignore lint/complexity/noForEach: <explanation>\n res.forEach(({ nodeName, codeLang, content }) => {\n if (!grouped[codeLang]) {\n grouped[codeLang] = [];\n }\n\n grouped[codeLang].push(`\"${nodeName}\":${content}`);\n });\n\n let allContent = '';\n\n for (const [lang, locales] of Object.entries(grouped)) {\n const content = locales\n // @ts-ignore\n .map((innerContent: string) => innerContent)\n .join(',')\n .slice(0, -1);\n allContent += `\"${lang}\":{${content}},`;\n }\n return `{${allContent.slice(0, -1)}}`;\n}\n","import { merge } from 'merge-anything';\nimport { currentContext } from '../../current-context';\nimport { createFolderIfNotExists, writeFile } from '../../tools/node-utils';\nimport { getGlobalLocales } from './globalLocales';\nimport { getScopedNodesLocales } from './scopedNodeLocales';\n\nexport async function writeAllLocales() {\n const [globalLocales, scopedLocales] = await Promise.all([getGlobalLocales(), getScopedNodesLocales()]);\n\n const res = merge(JSON.parse(globalLocales), JSON.parse(scopedLocales));\n\n const toResolveCreateDirs = [];\n const toResolve = [];\n\n for (const [folderName, locales] of Object.entries(res)) {\n toResolveCreateDirs.push(createFolderIfNotExists(`${currentContext.pathDist}/locales/${folderName}`));\n toResolve.push(writeFile(`${currentContext.pathDist}/locales/${folderName}/index.json`, JSON.stringify(locales)));\n }\n\n await Promise.all(toResolveCreateDirs);\n await Promise.all(toResolve);\n}\n","import { currentContext } from '../current-context';\nimport { cleanPaths, createFolderIfNotExists, writeFile } from '../tools/node-utils';\nimport { BuilderController } from './controller/BuilderController.class';\nimport { BuilderEditor } from './editor/BuilderEditor.class';\nimport { writeAllLocales } from './locales/getLocales';\n\ntype BuilderClassParams = {\n minify?: boolean;\n};\n\nexport class Builder {\n private params: BuilderClassParams;\n private builderController: BuilderController;\n private builderEditor: BuilderEditor;\n\n constructor(params?: BuilderClassParams) {\n this.params = { minify: false, ...params };\n this.builderController = new BuilderController({\n minify: this.params.minify,\n });\n this.builderEditor = new BuilderEditor({\n minify: this.params.minify,\n });\n }\n\n prepare() {\n // Create cache dir\n createFolderIfNotExists(currentContext.pathLibCacheDir);\n // Clean dist folder and write config file\n const runs = [\n cleanPaths([currentContext.pathDist]),\n writeFile(`${currentContext.pathLibCacheDir}/config.json`, JSON.stringify(currentContext.config, null, 2)),\n ];\n\n return Promise.all(runs);\n }\n\n async buildAll() {\n await this.prepare();\n return Promise.all([\n this.builderController.getControllerTask(),\n this.builderEditor.getEditorTask(),\n writeAllLocales(),\n ]);\n }\n}\n"]}