@fnet/cli 0.5.3 → 0.5.5

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,"file":"lib-cli.js","sources":["../../src/redisClient.js","../../src/builder/auth.js","../../src/builder/deployer/nextjs.js","../../src/builder/lib-builder.js","../../src/builder/find-node-modules.js","../../src/builder/lib-cli.js"],"sourcesContent":["const redis = require('redis');\nconst fnetIsRedisOnline = require('@flownet/lib-is-redis-online');\n\nmodule.exports = async () => {\n const isOnline = await fnetIsRedisOnline({ host: process.env.REDIS_HOST, port: process.env.REDIS_PORT });\n if (!isOnline) return;\n\n const redisClient = redis.createClient({\n socket: { host: process.env.REDIS_HOST, port: process.env.REDIS_PORT }\n });\n await redisClient.connect();\n\n return redisClient;\n}","const { Api } = require(\"@flownet/lib-atom-api-js\");\nconst axios = require('axios').default;\nconst qs = require('qs');\n\nmodule.exports = class {\n init({ config, accessToken }) {\n return new Promise((resolve, reject) => {\n\n Api.set_api_url(config.data.url);\n\n if (accessToken) {\n Api.set_req_token(accessToken);\n resolve(accessToken);\n return;\n }\n\n axios({\n method: \"POST\",\n url: `${config.data.issuer}/protocol/openid-connect/token`,\n data: qs.stringify(config.data.grant.params),\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n },\n }).then(response => {\n Api.set_req_token(response.data.access_token);\n resolve(response.data.access_token);\n }).catch(error => {\n Api.set_req_token();\n reject(error);\n });\n });\n }\n}","const fnetToNextJs = require('@flownet/lib-to-nextjs');\nconst cloneDeep = require(\"lodash.clonedeep\");\nconst merge = require('lodash.merge');\nconst semver = require('semver');\nconst path = require('node:path');\n\nmodule.exports = async ({\n atom,\n target,\n onProgress,\n projectDir,\n dependencies\n}) => {\n\n if (onProgress) await onProgress({ message: \"Deploying it as nextjs package.\" });\n\n\n const deployerTargetDefault = {\n name: \"nextjs-app\",\n version: \"0.1.0\",\n }\n\n target.params = merge(deployerTargetDefault, target.params);\n\n const nextVersion = semver.inc(target.params.version, \"patch\");\n target.params.version = nextVersion;\n\n const deployerTarget = cloneDeep(target);\n\n deployerTarget.params.dependencies = cloneDeep(dependencies);\n\n const args = {\n atom,\n target: deployerTarget.params,\n projectDir,\n renderDir: path.resolve(projectDir, 'nextjs')\n }\n\n const result = await fnetToNextJs(args);\n\n return {\n deployer: result,\n };\n}","const fs = require('node:fs');\nconst path = require('node:path');\n\nconst yaml = require(\"js-yaml\");\nconst shell = require('shelljs');\nconst nunjucks = require(\"nunjucks\");\nconst cloneDeep = require('lodash.clonedeep');\nconst axios = require('axios');\nconst Red = require('@node-red/util');\nconst semver = require('semver');\nconst { v4: uuidv4 } = require('uuid');\nconst createRedisClient = require('../redisClient');\nconst os = require('node:os');\nconst merge = require('lodash.merge');\n\nconst Auth = require('./auth');\n\nconst { Atom } = require(\"@flownet/lib-atom-api-js\");\nconst fnetExecuteCommandWithIpcFile = require('@flownet/lib-execute-command-with-ipc-file');\nconst fnetParseNodeUrl = require('@flownet/lib-parse-node-url');\nconst fnetLoadFnetConfig = require('@flownet/lib-load-fnet-config');\nconst fnetParseImports = require('@flownet/lib-parse-imports-js');\nconst fnetPickNpmVersions = require('@flownet/lib-pick-npm-versions');\nconst deployToNextjs = require('./deployer/nextjs');\n\nclass Builder {\n\n #auth;\n #context;\n #atom;\n #njEnv;\n #libs;\n #packageDependencies;\n #atomAccessToken;\n #buildId;\n #buildKey;\n #protocol;\n #atomConfig;\n #npmConfig;\n #redConfig;\n\n #mode;\n #fileMode;\n #buildMode;\n #deployMode;\n\n constructor(context) {\n this.#auth = new Auth();\n this.#context = context;\n this.#packageDependencies = [];\n\n this._expire_ttl = 3600; // 1-hour\n this._expire_ttl_short = 300; // 5-minutes\n }\n\n async _cache_set(key, value, expire_ttl) {\n if (!this._redis_client) return;\n\n await this._redis_client.SETEX(\n key,\n expire_ttl || this._expire_ttl,\n JSON.stringify(value),\n ).catch(console.error);\n }\n\n async init() {\n\n this._redis_client = await createRedisClient();\n\n this.#buildId = this.#context.buildId || uuidv4();\n\n this.#mode = this.#context.mode;\n this.#fileMode = ['all', 'deploy', 'build', 'file'].includes(this.#mode);\n this.#buildMode = ['all', 'deploy', 'build'].includes(this.#mode);\n this.#deployMode = ['all', 'deploy'].includes(this.#mode);\n\n this.#protocol = this.#context.protocol;\n this.#buildKey = \"BUILD:\" + this.#buildId;\n\n this.#atomConfig = await fnetLoadFnetConfig({ name: this.#context.atomConfig || \"atom\", dir: this.#context.projectDir })?.data;\n this.#npmConfig = await fnetLoadFnetConfig({ name: this.#context.npmConfig || \"npm\", dir: this.#context.projectDir })?.data;\n this.#redConfig = await fnetLoadFnetConfig({ name: this.#context.redConfig || \"red\", dir: this.#context.projectDir })?.data;\n\n try {\n await this.setInProgress({ message: \"Initialization started.\" });\n\n await this.initAuth();\n await this.initLibrary();\n await this.initFeatures();\n await this.initDependencies();\n await this.initLibraryDir();\n await this.initNunjucks();\n await this.initLibs();\n }\n catch (error) {\n await this._cache_set(this.#buildKey, { status: \"FAILED\", message: error?.message || error });\n throw error;\n }\n }\n\n async initAuth() {\n if (!this.#context.id) return;\n this.#atomAccessToken = await this.#auth.init({ config: this.#atomConfig });\n }\n\n async initLibrary() {\n const libraryId = this.#context.id;\n this.#atom = this.#context.project?.libraryAtom || await Atom.get({ id: libraryId });\n let bundleName = this.#atom.doc.bundleName;\n bundleName = bundleName || (this.#atom.doc.name || \"\").toUpperCase().replace(/[^A-Z0-9]/g, \"_\");\n this.#atom.doc.bundleName = bundleName;\n this.#atom.type = this.#atom.type || \"workflow.lib\";\n }\n\n async initFeatures() {\n\n this.#atom.doc.features = this.#atom.doc.features || {};\n const features = this.#atom.doc.features;\n\n features.form_enabled = this.#atom.doc.form === true || this.#atom.doc.form?.enabled === true || features.form === true || features.form?.enabled === true;\n features.browser_autorun = features.browser?.autorun === true;\n\n // rollup output default\n const rollup_output_default = {\n cjs: {\n format: \"cjs\",\n context: features.form_enabled ? \"window\" : \"global\",\n babel: false,\n browser: false,\n copy: true,\n replace: true,\n },\n cjsx: {\n format: \"cjs\",\n context: features.form_enabled ? \"window\" : \"global\",\n babel: false,\n browser: true,\n replace: true,\n },\n esm: {\n format: \"esm\",\n context: features.form_enabled ? \"window\" : \"global\",\n babel: false,\n browser: false,\n replace: true,\n },\n esmx: {\n format: \"esm\",\n browser: true,\n babel: true,\n context: features.form_enabled ? \"window\" : \"global\",\n replace: true,\n browsersync: true,\n },\n iife: {\n format: \"iife\",\n context: features.form_enabled ? \"window\" : \"global\",\n babel: true,\n browser: true,\n replace: true,\n }\n };\n\n // babel targets default\n const babel_default = {\n targets: {\n browsers: \"last 9 versions, not dead\",\n node: \"18\"\n }\n }\n\n // browsersync default\n const browsersync_default = {\n server: '.',\n startPath: \"/\",\n files: [\"./app/**/*\", \"./dist/**/*\"]\n }\n\n // replace default\n const replace_default = {}\n\n // terser default\n const terser_default = {}\n\n // css default\n const css_default = {}\n\n // wasm default\n const wasm_default = {}\n\n // copy default\n const copy_default = {}\n\n // json default\n const json_default = {}\n\n if (features.webos === true) {\n rollup_output_default.webos = {\n format: \"esm\",\n browser: true,\n babel: true,\n context: \"window\",\n replace: true,\n babel_options: {\n targets: {\n chrome: \"79\"\n }\n }\n }\n }\n\n features.babel_options = (features.babel_options || features.babel?.options || babel_default);\n features.browsersync_options = merge(browsersync_default, features.browsersync_options || features.browsersync?.options || {});\n features.replace_options = merge(replace_default, features.replace_options || features.replace?.options || {});\n features.terser_options = merge(terser_default, features.terser_options || features.terser?.options || {});\n features.css_options = merge(css_default, features.css_options || features.css?.options || {});\n features.wasm_options = merge(wasm_default, features.wasm_options || features.wasm?.options || {});\n features.copy_options = merge(copy_default, features.copy_options || features.copy?.options || {});\n features.json_options = merge(json_default, features.json_options || features.json?.options || {});\n\n features.rollup_output = merge(rollup_output_default, features.rollup_output || features.rollup?.output || features.rollup || {});\n\n const rollup_output_keys = Object.keys(rollup_output_default);\n for (const key of rollup_output_keys) {\n const output = rollup_output_default[key];\n\n if (!output) continue;\n\n output.babel_options = output.babel_options || features.babel_options;\n output.browsersync_options = merge(features.browsersync_options, output.browsersync_options);\n output.replace_options = merge(features.replace_options, output.replace_options);\n output.terser_options = merge(features.terser_options, output.terser_options);\n output.css_options = merge(features.css_options, output.css_options);\n output.wasm_options = merge(features.wasm_options, output.wasm_options);\n output.copy_options = merge(features.copy_options, output.copy_options);\n output.json_options = merge(features.json_options, output.json_options);\n\n if (features.form_enabled) output.babel = true;\n }\n\n features.babel_enabled = rollup_output_keys.some(w => features.rollup_output[w].babel === true);\n features.browser_enabled = rollup_output_keys.some(w => features.rollup_output[w].babel === true);\n features.browsersync_enabled = rollup_output_keys.some(w => features.rollup_output[w].browsersync === true);\n features.browsersync_enabled = features.browsersync_enabled && (features.form_enabled || features.browser_autorun === true);\n\n features.multiple_enabled = features.multiple_enabled || features.multiple === true || features.multiple?.enabled === true;\n features.wasm_enabled = features.wasm === true || (features.wasm && features.wasm?.enabled !== false);\n features.css_enabled = features.css === true || (features.css && features.css?.enabled !== false);\n features.json_enabled = features.json === true || (features.json && features.json?.enabled !== false);\n features.terser_enabled = features.terser === true || (features.terser && features.terser?.enabled !== false);\n features.copy_enabled = features.copy_enabled || (features.copy && features.copy?.enabled !== false);\n\n features.bin_name = features.bin_name || features.bin?.name || features.bin;\n features.bin_enabled = features.bin_name && (typeof features.bin_name === 'string')(features.bin_enabled || features.bin?.enabled !== false);\n features.dependency_auto_enabled = features.dependency_auto !== false && features.dependency_auto?.enabled !== false;\n features.npm_install_flags = features.npm_install_flags || '';\n\n features.index_html_enabled = !(this.#atom.doc.features.multiple_enabled === true || this.#atom.doc.features.form_enabled !== true);\n features.bin_file_enabled = !(this.#atom.doc.features.multiple_enabled === true || this.#atom.doc.features.form_enabled === true);\n }\n\n async initDependencies() {\n if (this.#atom.doc.features.form_enabled) {\n if (this.#atom.doc.features.dependency_auto_enabled) {\n this.#packageDependencies.push({ package: \"react\", version: \"^18.2\" });\n this.#packageDependencies.push({ package: \"react-dom\", version: \"^18.2\" });\n this.#packageDependencies.push({ package: \"@flownet/react-app-state\", version: \"^0.1\" });\n // this.#packageDependencies.push({ package: \"@flownet/react-app\", version: \"^0.1\" });\n }\n } else {\n if (this.#atom.doc.features.multiple_enabled !== true) {\n this.#packageDependencies.push({ package: \"yargs\", version: \"^17\" });\n }\n }\n this.#packageDependencies.push({ package: \"chalk\", version: \"^4\" });\n }\n\n async initLibraryDir() {\n const projectDir = this.#context.projectDir;\n\n let result;\n\n const exclude = ['node_modules']; // List of directories to exclude from deletion.\n\n // Delete all files and directories in projectDir except those in the exclude list.\n fs.existsSync(projectDir) && fs.readdirSync(projectDir).forEach(file => {\n if (!exclude.includes(file)) {\n result = shell.rm('-rf', path.join(projectDir, file));\n }\n });\n\n // .\n result = shell.exec(`mkdir -p ${projectDir}`);\n if (result.code !== 0) throw new Error('Couldnt create workflow dir.');\n\n // src\n result = shell.exec(`mkdir ${projectDir}/src`);\n if (result.code !== 0) throw new Error('Couldnt create library/src dir.');\n\n // default\n result = shell.exec(`mkdir ${projectDir}/src/default`);\n if (result.code !== 0) throw new Error('Couldnt create library/src/default dir.');\n\n // src/libs\n result = shell.exec(`mkdir -p ${projectDir}/src/libs`);\n if (result.code !== 0) throw new Error('Couldnt create library/src/libs dir.');\n }\n\n async initNunjucks() {\n const templateDir = this.#context.templateDir;\n this.#njEnv = nunjucks.configure(templateDir, { watch: false, dev: true });\n }\n\n async initLibs() {\n const libs = [{\n name: this.#atom.doc.name,\n type: \"atom\",\n parent_id: this.#atom.parent_id\n }];\n\n this.#libs = libs;\n\n await this.initAtomLibsAndDeps({ libs, packageDependencies: this.#packageDependencies });\n }\n\n async initAtomLibsAndDeps({ libs, packageDependencies }) {\n const atomLibRefs = libs.filter(w => w.type === 'atom');\n for (let i = 0; i < atomLibRefs.length; i++) {\n const atomLibRef = atomLibRefs[i];\n\n const atomLib = await this.findAtomLibrary({ url: atomLibRef.name });\n atomLibRef.atom = atomLib;\n\n const packageDeps = atomLib.doc.dependencies?.filter(w => typeof w.repo === 'undefined' || w.repo === 'npm');\n packageDeps?.forEach(npmDep => {\n const found = packageDependencies.find(w => w.package === npmDep.package);\n if (found) {\n if (typeof npmDep.path === 'string') {\n if (!(found.path || []).some(w => w === npmDep.path)) {\n found.path = found.path || [];\n found.path.push(npmDep.path);\n }\n }\n else if (Array.isArray(npmDep.path)) {\n npmDep.path.forEach(item => {\n if (!(found.path || []).some(w => w === item)) {\n found.path = found.path || [];\n found.path.push(item);\n }\n });\n }\n }\n else packageDependencies.push(npmDep);\n });\n }\n packageDependencies.sort((a, b) => a.package?.localeCompare(b.package));\n }\n\n async findAtomLibrary({ url }) {\n const parsedUrl = fnetParseNodeUrl({ url: url });\n if (!parsedUrl) throw new Error(`Invalid package name: ${url}`);\n\n if (!parsedUrl.protocol) parsedUrl.protocol = this.#protocol;\n\n if (parsedUrl.protocol === 'ac:') {\n const parts = parsedUrl.pathname.split('/');\n if (parts.length === 1) {\n return await Atom.first({ where: { name: url, parent_id: this.#atomConfig.env.ATOM_LIBRARIES_ID, type: \"workflow.lib\" } });\n }\n\n if (parts.length === 2) {\n const folder = await Atom.first({ where: { name: parts[0], parent_id: this.#atomConfig.env.ATOM_LIBRARIES_ID, type: \"folder\" } });\n return await Atom.first({ where: { name: parts[1], parent_id: folder.id, type: \"workflow.lib\" } });\n }\n }\n else if (parsedUrl.protocol === 'local:') {\n\n const atom = this.#atom;\n atom.protocol = \"local:\";\n atom.doc.dependencies = atom.doc.dependencies || [];\n atom.name = atom.doc.name;\n\n const srcFilePath = path.resolve(this.#context.projectSrcDir, `${'index'}.js`);\n const parsedImports = await fnetParseImports({ file: srcFilePath, recursive: true });\n const dependencies = atom.doc.dependencies;\n for await (const parsedImport of parsedImports.required) {\n if (parsedImport.type !== 'npm') continue;\n\n const npmVersions = await fnetPickNpmVersions({ name: parsedImport.package, count: 1 });\n\n if (dependencies.find(w => w.package === parsedImport.package)) continue;\n\n dependencies.push({\n package: parsedImport.package,\n subpath: parsedImport.subpath,\n version: npmVersions.minorRange,\n type: \"npm\"\n })\n }\n\n return atom;\n }\n }\n\n // CREATE\n async createAtomLibFiles({ libs }) {\n await this.setInProgress({ message: \"Creating external lib files.\" });\n\n this.#atom.typesDir = './types';\n\n const atomLibRefs = libs.filter(w => w.type === 'atom');\n for (let i = 0; i < atomLibRefs.length; i++) {\n const atomLibRef = atomLibRefs[i];\n\n const atomLib = atomLibRef.atom;\n const projectDir = this.#context.projectDir;\n if (atomLib.protocol === 'local:') {\n const srcFilePath = path.resolve(this.#context.projectSrcDir, `${atomLib.fileName || atomLib.name}.js`);\n const relativePath = path.relative(`${this.#context.projectDir}/src/default/`, srcFilePath);\n\n if (!fs.existsSync(srcFilePath)) {\n fs.mkdirSync(path.dirname(srcFilePath), { recursive: true });\n let template = 'export default async (args)=>{\\n';\n template += '}';\n fs.writeFileSync(srcFilePath, template, 'utf8');\n }\n\n atomLib.relativePath = relativePath;\n\n this.#atom.typesDir = './types/target/src';\n }\n else {\n const atomLibPath = `${projectDir}/src/libs/${atomLib.id}.js`;\n const content = atomLib.doc.contents?.find(w => w.format === 'esm') || atomLib.doc;\n fs.writeFileSync(atomLibPath, content.content, 'utf8');\n }\n }\n }\n\n async createEngine() {\n\n await this.setInProgress({ message: \"Creating engine file.\" });\n\n const libs = this.#libs.filter(w => w.type === 'atom');\n\n const templateContext = { libs, libraryAtom: this.#atom, atom: this.#atom }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `src/default/engine.js.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `src/default/index.js`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createRollup() {\n\n await this.setInProgress({ message: \"Creating rollup file.\" });\n\n const templateContext = { libraryAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `rollup.config.js.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `rollup.config.js`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createPackageJSON() {\n\n await this.setInProgress({ message: \"Creating package.json.\" });\n\n // TODO: PEER DEPENDENCIES\n // REACT CHECK\n const reactDep = this.#packageDependencies.find(w => w.package === 'react');\n const reactDomDep = this.#packageDependencies.find(w => w.package === 'react-dom');\n if (reactDep && !reactDomDep)\n this.#packageDependencies.push({ package: \"react-dom\", version: reactDep.version });\n else if (reactDep && reactDomDep)\n reactDomDep.version = reactDep.version;\n\n // EMOTION CHECK\n if (reactDep) {\n if (!this.#packageDependencies.find(w => w.package === '@emotion/react'))\n this.#packageDependencies.push({ package: \"@emotion/react\", version: \"^11\" });\n if (!this.#packageDependencies.find(w => w.package === '@emotion/styled'))\n this.#packageDependencies.push({ package: \"@emotion/styled\", version: \"^11\" });\n }\n\n const templateContext = { libraryAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `package.json.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `package.json`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createBin() {\n\n if (this.#atom.doc.features.bin_file_enabled !== true) return;\n\n await this.setInProgress({ message: \"Creating bin.\" });\n\n // bin\n const projectDir = this.#context.projectDir;\n let result = shell.exec(`mkdir ${projectDir}/bin`);\n if (result.code !== 0) throw new Error('Couldnt create library/bin dir.');\n\n const templateContext = { libraryAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n\n // bin/index.js\n let template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `bin/index.js.njk`), \"utf8\"),\n this.#njEnv\n );\n\n let templateRender = template.render(templateContext);\n\n let filePath = path.resolve(projectDir, `bin/index.js`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n\n // // bin/index.mjs\n // template = nunjucks.compile(\n // fs.readFileSync(path.resolve(templateDir, `bin/index.mjs.njk`), \"utf8\"),\n // this.#njEnv\n // );\n\n // templateRender = template.render(templateContext);\n\n // filePath = path.resolve(projectDir, `bin/index.mjs`);\n // fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createIndexHtml() {\n\n if (!this.#atom.doc.features.index_html_enabled) return;\n\n await this.setInProgress({ message: \"Creating index.html.\" });\n\n const templateContext = {\n libraryAtom: this.#atom,\n atom: this.#atom\n , packageDependencies: this.#packageDependencies,\n ts: Date.now()\n }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `index.html.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `index.html`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createTsConfig() {\n\n await this.setInProgress({ message: \"Creating tsconfig.json.\" });\n\n const templateContext = { libraryAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `tsconfig.json.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `tsconfig.json`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createGitIgnore() {\n\n await this.setInProgress({ message: \"Creating .gitignore\" });\n\n const templateContext = { libraryAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `.gitignore.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `.gitignore`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createProjectYaml() {\n\n const fileBase = `node.yaml`;\n const message = `Creating ${fileBase}`;\n\n await this.setInProgress({ message: message });\n\n const { content: main, ...content } = this.#atom.doc;\n\n const templateContext = { content: yaml.dump(content) }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `${fileBase}.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `${fileBase}`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createProjectReadme() {\n\n const fileBase = `readme.md`;\n const message = `Creating ${fileBase}`;\n\n await this.setInProgress({ message: message });\n\n if (this.#context.project?.readme) {\n\n const templateContext = { content: this.#context.project.readme.doc.content }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `${fileBase}.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `${fileBase}`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n else if (this.#atom.id) {\n const wiki = await Atom.first({ type: \"wiki\", parent_id: this.#atom.id });\n\n if (!wiki || wiki.doc?.[\"content-type\"] !== 'markdown') return;\n\n const { content: main, ...content } = wiki.doc;\n\n const templateContext = { content: main }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `${fileBase}.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `${fileBase}`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n }\n async createToYargs() {\n\n if (this.#atom.doc.features.multiple_enabled === true) return;\n\n await this.setInProgress({ message: \"Creating yargs.\" });\n\n const options = {};\n const inputs = this.#atom.doc.inputs || [];\n const imports = [];\n\n inputs.forEach(input => {\n if (input.cli === false || !input.name) return;\n if (input.import) imports.push(input);\n\n const option = {};\n if (input.type) option.type = input.type;\n if (input.default) option.default = input.default;\n if (input.choices) option.choices = input.choices;\n if (input.describe || input.description) option.describe = input.describe || input.description;\n if (input.alias) option.alias = input.alias;\n if (input.required === true) option.required = true;\n if (input.hidden === true) option.hidden = true;\n if (input.array === true) option.array = true;\n if (input.normalize === true) option.normalize = true;\n if (input.nargs) option.nargs = input.nargs;\n\n options[input.name] = option;\n });\n\n const templateContext = { options, imports, atom: this.#atom }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `src/default/to.yargs.js.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `src/default/to.yargs.js`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async runBuildScripts() {\n const projectDir = this.#context.projectDir;\n\n await this.setInProgress({ message: \"Installing npm packages.\" });\n let result = shell.exec(`npm install ${this.#atom.doc.features.npm_install_flags}`, { cwd: projectDir });\n if (result.code !== 0) throw new Error('Couldnt install npm packages.');\n\n await this.setInProgress({ message: \"Prettifiying source files.\" });\n result = shell.exec(`prettier --write src/**/* bin/* *.{js,json,yaml,html} --no-error-on-unmatched-pattern`, { cwd: projectDir });\n if (result.code !== 0) throw new Error('Couldnt format files.');\n\n await this.setInProgress({ message: \"Creating .d.ts\" });\n result = shell.exec(`tsc`, { cwd: projectDir });\n if (result.code !== 0) throw new Error('Couldnt create .d.ts files.');\n\n await this.setInProgress({ message: \"Building main project.\" });\n result = shell.exec(`npm run build`, { cwd: projectDir });\n if (result.code !== 0) throw new Error('Couldnt build library project.');\n }\n\n async deploy() {\n\n await this.setInProgress({ message: \"Deploying.\" });\n\n if (this.#context.project?.devops) {\n const devopsProjects = [this.#context.project?.devops];\n for (let i = 0; i < devopsProjects.length; i++) {\n let deploymentProject = devopsProjects[i];\n await this.deployProject({ deploymentProject });\n\n if (deploymentProject.isDirty === true) {\n await deploymentProject.save();\n }\n }\n\n }\n else if (this.#atom.id) {\n const devopsProjects = await Atom.list({ type: \"library.deploy\", parent_id: this.#atom.id });\n for (let i = 0; i < devopsProjects.length; i++) {\n let deploymentProject = devopsProjects[i];\n await this.deployProject({ deploymentProject });\n\n if (deploymentProject.isDirty === true) {\n deploymentProject = await Atom.update(deploymentProject, { id: deploymentProject.id });\n }\n }\n }\n }\n\n async deployProject(context) {\n const { deploymentProject } = context;\n const targets = deploymentProject.doc.targets || [];\n for (let i = 0; i < targets.length; i++) {\n const deploymentProjectTarget = targets[i];\n await this.deployProjectTarget({ deploymentProject, deploymentProjectTarget });\n }\n }\n\n async deployProjectTarget(context) {\n const { deploymentProjectTarget, deploymentProject } = context;\n\n if (deploymentProjectTarget.enabled !== true) return;\n\n if (deploymentProjectTarget.name === this.#atomConfig.env.ATOM_DEPLOY_LIBRARY_TARGET) await this.deployAsWorkflowLib(context);\n else if (deploymentProjectTarget.name === this.#atomConfig.env.ATOM_DEPLOY_RED_TARGET) await this.deployAsRedFlow(context);\n else if (deploymentProjectTarget.name === this.#atomConfig.env.ATOM_DEPLOY_NPM_TARGET) await this.deployAsNpm(context);\n else if (deploymentProjectTarget.name === \"pm\") await this.deployAsPm(context);\n else if (deploymentProjectTarget.name === \"gitlab\") await this.deployAsGitlab(context);\n else {\n let deployer;\n\n if (deploymentProjectTarget.name === 'nextjs') deployer = deployToNextjs;\n\n if (!deployer) return;\n\n const result = await deployer({\n atom: this.#atom,\n target: deploymentProjectTarget,\n onProgress: this.setInProgress.bind(this),\n projectDir: this.#context.projectDir,\n dependencies: this.#packageDependencies\n });\n deploymentProjectTarget.build = { id: this.#buildId, ts: Date.now() };\n deploymentProject.isDirty = true;\n }\n }\n\n async deployAsWorkflowLib(context) {\n await this.setInProgress({ message: \"Deploying it as workflow lib.\" });\n\n if (target.dryRun === true) return;\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n let wflibAtom;\n\n if (!target.deploy.id) {\n wflibAtom = await Atom.create({\n parent_id: this.#atomConfig.env.ATOM_LIBRARIES_ID,\n doc: {\n name: target.deploy.name,\n type: \"workflow.lib\",\n dependencies: [],\n content: undefined,\n subtype: \"library\"\n }\n });\n\n if (!wflibAtom) return;\n\n target.deploy.id = wflibAtom.id;\n\n deploymentProject.isDirty = true;\n }\n else {\n wflibAtom = await Atom.get({ id: target.deploy.id });\n\n if (!wflibAtom) return;\n }\n\n const projectDir = this.#context.projectDir;\n\n wflibAtom.doc.contents = [\n {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/esm/index.js'), { encoding: 'utf8', flag: 'r' }),\n [\"content-type\"]: \"javascript\",\n format: \"esm\"\n },\n {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/cjs/index.js'), { encoding: 'utf8', flag: 'r' }),\n [\"content-type\"]: \"javascript\",\n format: \"cjs\"\n },\n {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/iife/index.js'), { encoding: 'utf8', flag: 'r' }),\n [\"content-type\"]: \"javascript\",\n format: \"iife\"\n }\n ]\n\n wflibAtom.doc.name = target.deploy.name;\n wflibAtom.doc.dependencies = this.#packageDependencies;\n wflibAtom.doc.subtype = \"workflow\";\n\n wflibAtom = await Atom.update(wflibAtom, { id: wflibAtom.id });\n }\n\n async deployAsRedFlow(context) {\n\n await this.setInProgress({ message: \"Deploying it as node-red flow.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const templateDir = this.#context.templateDir;\n const atom = this.#atom;\n\n let tmpContext;\n\n if (target.deploy.template === 'simple') {\n tmpContext = {\n atom,\n packageDependencies: this.#packageDependencies,\n red: {\n tab: {\n id: target.deploy.id || Red.util.generateId(),\n label: `LIB/${atom.id ? atom.id : os.hostname()}/${atom.name}/${target.deploy.name || target.deploy.template}`\n },\n function: {\n id: Red.util.generateId(),\n name: atom.doc.name,\n initialize: {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/iife/index.js'), { encoding: 'utf8', flag: 'r' }),\n var: atom.doc.bundleName\n }\n },\n inject: {\n id: Red.util.generateId(),\n ...target.deploy.params?.inject,\n payload: target.deploy.params?.inject?.payloadType === 'json' ? `'${JSON.stringify(target.deploy.params?.inject?.payload)}'` : target.deploy.params?.inject?.payload\n },\n debug: {\n id: Red.util.generateId()\n }\n }\n }\n }\n else if (target.deploy.template === 'cronjob') {\n let schedulesCloned = target.deploy.params?.schedules ? cloneDeep(target.deploy.params?.schedules) : undefined;\n\n schedulesCloned?.forEach(schedule => {\n if (schedule.payloadType === 'json')\n schedule.payload = `'${JSON.stringify(schedule.payload)}'`;\n });\n\n tmpContext = {\n atom,\n packageDependencies: this.#packageDependencies,\n red: {\n tab: {\n id: target.deploy.id || Red.util.generateId(),\n label: `LIB/${atom.id ? atom.id : os.hostname()}/${target.deploy.name || target.deploy.template}`\n },\n function: {\n id: Red.util.generateId(),\n name: atom.doc.name,\n initialize: {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/iife/index.js'), { encoding: 'utf8', flag: 'r' }),\n var: atom.doc.bundleName\n }\n },\n cronjob: {\n id: Red.util.generateId(),\n schedules: schedulesCloned\n },\n debug: {\n id: Red.util.generateId()\n }\n }\n }\n }\n else if (target.deploy.template === 'http') {\n tmpContext = {\n atom,\n packageDependencies: this.#packageDependencies,\n red: {\n tab: {\n id: target.deploy.id || Red.util.generateId(),\n label: `LIB/${atom.id ? atom.id : os.hostname()}/${target.deploy.name || target.deploy.template}`\n },\n function: {\n id: Red.util.generateId(),\n name: atom.doc.name,\n initialize: {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/iife/index.js'), { encoding: 'utf8', flag: 'r' }),\n var: atom.doc.bundleName\n }\n },\n httpin: {\n id: Red.util.generateId(),\n method: target.deploy.params.method || \"get\",\n url: target.deploy.params.url\n },\n httpout: {\n id: Red.util.generateId(),\n },\n debug: {\n id: Red.util.generateId()\n }\n }\n }\n }\n\n else return;\n\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `deploy/node-red/${target.deploy.template}.yaml.njk`), \"utf8\"),\n this.#njEnv\n );\n\n\n let templateRendered = template.render(tmpContext);\n fs.writeFileSync(path.resolve(projectDir, `node-red.yaml`), templateRendered);\n\n templateRendered = yaml.load(templateRendered);\n\n if (target.dryRun === true) return;\n\n deploymentProject.isDirty = true;\n target.build = { id: this.#buildId, ts: Date.now() };\n\n const redUrl = target.deploy.url || this.#redConfig.env.RED_URL;\n\n const headers = {};\n if (target.deploy.auth !== false) {\n headers[\"Authorization\"] = \"Bearer \" + this.#atomAccessToken;\n }\n\n if (!target.deploy.id) {\n // create\n const response = await axios({\n method: \"POST\",\n url: `${redUrl}/flow`,\n data: templateRendered,\n headers\n });\n\n target.deploy.id = response.data.id;\n }\n else {\n if (target.actions?.delete === true) {\n // update\n const response = await axios({\n method: \"DELETE\",\n url: `${redUrl}/flow/${target.deploy.id}`,\n headers\n });\n delete target.actions.delete;\n delete target.deploy.id;\n target.enabled = false;\n }\n else {\n // update\n const response = await axios({\n method: \"PUT\",\n url: `${redUrl}/flow/${target.deploy.id}`,\n data: templateRendered,\n headers\n });\n }\n }\n }\n\n async deployAsNpm(context) {\n await this.setInProgress({ message: \"Deploying it as npm package.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const packageJSONPath = path.resolve(projectDir, 'package.json');\n\n const packageJSONContent = fs.readFileSync(packageJSONPath);\n\n const packageJSON = JSON.parse(packageJSONContent);\n\n packageJSON.name = target.deploy.params.name;\n packageJSON.version = semver.inc(target.deploy.params.version, \"patch\");\n\n const binName = target.deploy.params.bin?.name || target.deploy.params.bin;\n const binEnabled = target.deploy.params.bin?.enabled !== false;\n\n if (binEnabled && binName && typeof binName === 'string') {\n packageJSON.bin = {\n [binName]: 'bin/index.js',\n [this.#atom.doc.name]: 'bin/index.js'\n }\n }\n\n\n delete packageJSON.scripts;\n delete packageJSON.devDependencies;\n\n packageJSON.scripts = {\n \"serve\": \"npx serve .\"\n }\n\n fs.writeFileSync(packageJSONPath, JSON.stringify(packageJSON, null, \"\\t\"));\n\n fs.writeFileSync(path.resolve(projectDir, '.npmrc'), `//registry.npmjs.org/:_authToken=${this.#npmConfig.env.NPM_TOKEN}`);\n\n if (target.dryRun === true) return;\n\n let result = shell.exec(`npm publish --access public`, { cwd: projectDir });\n if (result.code !== 0) throw new Error('Couldnt publish to npm');\n\n // restore\n fs.writeFileSync(packageJSONPath, packageJSONContent);\n\n deploymentProject.isDirty = true;\n target.deploy.params.version = packageJSON.version;\n target.build = { id: this.#buildId, ts: Date.now() };\n }\n\n async deployAsPm(context) {\n await this.setInProgress({ message: \"Deploying it as pm package.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const packageJSONPath = path.resolve(projectDir, 'package.json');\n\n const packageJSONContent = fs.readFileSync(packageJSONPath);\n\n const packageJSON = JSON.parse(packageJSONContent);\n\n packageJSON.name = target.deploy.params.name;\n packageJSON.version = semver.inc(target.deploy.params.version, \"patch\");\n\n delete packageJSON.scripts;\n delete packageJSON.devDependencies;\n\n fs.writeFileSync(packageJSONPath, JSON.stringify(packageJSON, null, \"\\t\"));\n\n const { file: pmFile, data: pmConfig } = await fnetLoadFnetConfig({\n name: target.deploy.params.pm?.config || this.#context.pmConfig || \"pm\",\n dir: this.#context.projectDir\n });\n\n let command = `fnet-upload-files-to-gcs`;\n command += ` --projectId='${pmConfig.env.PM_PROJECT_ID}'`;\n command += ` --bucketName='${pmConfig.env.PM_BUCKET_NAME}'`;\n command += ` --keyFilename='${path.resolve(path.dirname(pmFile), pmConfig.env.PM_UPLOADER_KEY_FILE)}'`;\n command += ` --dir='${projectDir}'`;\n command += ` --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}`;\n command += ` --destDir='${packageJSON.name}/${packageJSON.version}'`;\n command += ` --headers.cacheControl='public, max-age=31536000, immutable'`;\n\n if (target.dryRun === true) command += ` --dryRun`;\n\n await fnetExecuteCommandWithIpcFile({ command });\n\n // restore\n fs.writeFileSync(packageJSONPath, packageJSONContent);\n\n if (target.dryRun === true) return;\n\n deploymentProject.isDirty = true;\n target.deploy.params.version = packageJSON.version;\n target.build = { id: this.#buildId, ts: Date.now() };\n\n await this.registerToPackageManager({ target, packageJSON });\n }\n\n async deployAsGitlab(context) {\n await this.setInProgress({ message: \"Deploying it as gitlab project.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n\n let command = `fnet-to-gitlab`;\n\n const configKey = target.deploy.params.config || 'gitlab';\n\n const config = fnetLoadFnetConfig({\n name: configKey,\n dir: this.#context.projectDir\n });\n\n if (!config) throw new Error(`Couldnt load config ${configKey}`);\n\n const { data: inputs } = config.data;\n\n command += ` --projectGroupId=${inputs.projectGroupId}`;\n command += ` --projectPath='${projectDir}'`;\n command += ` --projectName='${target.deploy.params.name}'`;\n command += ` --projectBranch='${target.deploy.params.branch || 'main'}'`;\n\n command += ` --gitlabHost='${inputs.gitlabHost}'`;\n command += ` --gitlabToken='${inputs.gitlabToken}'`;\n command += ` --gitlabUsername='${inputs.gitlabUsername}'`;\n command += ` --gitlabUserEmail='${inputs.gitlabUserEmail}'`;\n\n if (target.dryRun === true) return;\n\n await fnetExecuteCommandWithIpcFile({ command });\n\n deploymentProject.isDirty = true;\n target.build = { id: this.#buildId, ts: Date.now() };\n }\n\n async registerToPackageManager(context) {\n const { target, packageJSON } = context;\n\n // update\n let packageAtom = await Atom.first({ name: target.deploy.params.name, parent_id: this.#atomConfig.env.ATOM_PACKAGES_ID });\n\n if (!packageAtom) {\n // create new\n packageAtom = await Atom.create({\n parent_id: this.#atomConfig.env.ATOM_PACKAGES_ID,\n doc: {\n name: target.deploy.params.name,\n type: \"pm\",\n versions: [{ v: packageJSON.version }]\n }\n });\n }\n else {\n // update existing\n packageAtom.doc.versions.splice(0, 0, { v: packageJSON.version });\n\n await Atom.update(packageAtom, { id: packageAtom.id });\n }\n }\n\n async setInProgress({ message }) {\n await this._cache_set(this.#buildKey, { status: \"IN_PROGRESS\", message });\n }\n\n async build() {\n try {\n if (this.#fileMode) {\n\n await this.createAtomLibFiles({ libs: this.#libs });\n await this.createEngine();\n await this.createRollup();\n await this.createBin();\n await this.createPackageJSON();\n await this.createTsConfig();\n await this.createGitIgnore();\n await this.createProjectYaml();\n await this.createProjectReadme();\n await this.createToYargs();\n await this.createIndexHtml();\n\n if (this.#buildMode) {\n await this.runBuildScripts();\n\n if (this.#deployMode)\n await this.deploy();\n }\n }\n\n await this._cache_set(this.#buildKey, { status: \"COMPLETED\" });\n }\n catch (error) {\n await this._cache_set(this.#buildKey, { status: \"FAILED\", message: error.message || error });\n throw error;\n }\n }\n}\n\nmodule.exports = Builder;","const fs = require('node:fs');\nconst path = require('node:path');\n\nfunction findNodeModules({ baseDir = __dirname }) {\n let currentDir = baseDir;\n\n while (currentDir !== path.parse(currentDir).root) {\n const potentialPath = path.join(currentDir, 'node_modules');\n\n if (fs.existsSync(potentialPath)) {\n return potentialPath;\n }\n\n currentDir = path.dirname(currentDir);\n }\n\n return null;\n}\n\nmodule.exports = findNodeModules;","// #!/usr/bin/env node\nconst cwd = process.cwd();\nconsole.log(`cwd: ${cwd}`);\n\n// fnet env\nrequire('@flownet/lib-load-fnet-config')({\n name: [\"redis\"],\n dir: cwd\n});\n\nconst path = require('path');\nconst yargs = require('yargs/yargs');\nconst { hideBin } = require('yargs/helpers');\nconst fs = require('fs');\nconst YAML = require('yaml');\nconst shell = require('shelljs');\n\nconst flownetRenderTemplatesDir = require('@flownet/lib-render-templates-dir');\nconst Builder = require('./lib-builder');\nconst nodeModulesDir = require('./find-node-modules')({ baseDir: __dirname });\nprocess.env.PATH = `${nodeModulesDir}/.bin:${process.env.PATH}`;\n\nyargs(hideBin(process.argv))\n .command('create', 'Create flow node project', (yargs) => {\n return yargs\n .option('name', { type: 'Project name', demandOption: true });\n }, async (argv) => {\n try {\n const templateDir = path.resolve(nodeModulesDir, '@flownet/template-node-library/project');\n const outDir = path.resolve(cwd, argv.name);\n if (!fs.existsSync(outDir)) fs.mkdirSync(outDir);\n\n await flownetRenderTemplatesDir({\n dir: templateDir,\n outDir,\n context: argv\n });\n\n let shellResult = shell.exec(`fnode build`, { cwd: outDir });\n if (shellResult.code !== 0) throw new Error('Failed to build project.');\n\n \n if (shell.which('git')) {\n shellResult = shell.exec(`git init`, { cwd: outDir });\n if (shellResult.code !== 0) throw new Error('Failed to initialize git.');\n }\n\n console.log('Creating project succeeded!');\n\n process.exit(0);\n } catch (error) {\n console.log('Initialization failed!', error);\n process.exit(1);\n }\n })\n .command('build', 'Build flow node project', (yargs) => {\n return yargs\n .option('id', { type: 'string' })\n .option('buildId', { type: 'string', alias: 'bid' })\n .option('mode', { type: 'string', alias: 'm', default: \"build\", choices: ['all', 'file', 'build', 'deploy', 'bpmn'] })\n ;\n }, async (argv) => {\n try {\n const context = await createContext(argv);\n const builder = new Builder(context);\n await builder.init();\n await builder.build();\n\n console.log('Building library succeeded!');\n process.exit(0);\n } catch (error) {\n console.log('Building library failed!', error);\n process.exit(1);\n }\n })\n .command('npm [commands..]', 'npm - bridge', (yargs) => {\n return yargs\n .option('id', { type: 'string' });\n }, async (argv) => {\n try {\n const context = await createContext(argv);\n const { projectDir } = context;\n\n const commands = argv.commands || [];\n const flags = Object.keys(argv)\n .filter(key => key !== '_' && key !== '$0' && key !== 'commands' && key !== 'id' && typeof argv[key] !== 'object')\n .map(key => `--${key}=${argv[key]}`)\n .join(' ');\n\n const command = `npm ${commands.join(' ')} ${flags}`;\n\n shell.exec(command, { cwd: projectDir });\n process.exit(0);\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n })\n .command('node [commands..]', 'node - bridge', (yargs) => {\n return yargs\n .option('id', { type: 'string' });\n }, async (argv) => {\n try {\n const context = await createContext(argv);\n const { projectDir } = context;\n\n const commands = argv.commands || [];\n const flags = Object.keys(argv)\n .filter(key => key !== '_' && key !== '$0' && key !== 'commands' && key !== 'id' && typeof argv[key] !== 'object')\n .map(key => `--${key}=${argv[key]}`)\n .join(' ');\n\n const command = `node ${commands.join(' ')} ${flags}`;\n\n shell.exec(command, { cwd: projectDir });\n process.exit(0);\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n })\n .command('serve [commands..]', 'npm run serve - bridge', (yargs) => {\n return yargs\n .option('id', { type: 'string' });\n }, async (argv) => {\n try {\n const context = await createContext(argv);\n const { projectDir } = context;\n\n const commands = argv.commands || [];\n const flags = Object.keys(argv)\n .filter(key => key !== '_' && key !== '$0' && key !== 'commands' && key !== 'id' && typeof argv[key] !== 'object')\n .map(key => `--${key}=${argv[key]}`)\n .join(' ');\n\n const command = `npm run serve ${commands.join(' ')} ${flags}`;\n\n shell.exec(command, { cwd: projectDir });\n process.exit(0);\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n })\n .command('watch [commands..]', 'npm run watch - bridge', (yargs) => {\n return yargs\n .option('id', { type: 'string' });\n }, async (argv) => {\n try {\n const context = await createContext(argv);\n const { projectDir } = context;\n\n const commands = argv.commands || [];\n const flags = Object.keys(argv)\n .filter(key => key !== '_' && key !== '$0' && key !== 'commands' && key !== 'id' && typeof argv[key] !== 'object')\n .map(key => `--${key}=${argv[key]}`)\n .join(' ');\n\n const command = `npm run watch ${commands.join(' ')} ${flags}`;\n\n shell.exec(command, { cwd: projectDir });\n process.exit(0);\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n })\n .demandCommand(1, 'You need at least one command before moving on')\n .help()\n .argv;\n\nasync function createContext(argv) {\n if (argv.id) {\n return {\n id: argv.id,\n buildId: argv.buildId,\n mode: argv.mode,\n protocol: argv.protocol || \"ac:\",\n templateDir: path.resolve(nodeModulesDir, './@flownet/template-node-library/default'),\n projectDir: path.resolve(cwd, `./.output/${argv.id}`),\n coreDir: path.resolve(nodeModulesDir, './@flownet/template-node-library/core'),\n };\n } else {\n const project = await loadLocalProject();\n return {\n buildId: argv.buildId,\n mode: argv.mode,\n protocol: argv.protocol || \"local:\",\n templateDir: path.resolve(nodeModulesDir, './@flownet/template-node-library/default'),\n coreDir: path.resolve(nodeModulesDir, './@flownet/template-node-library/core'),\n projectDir: path.resolve(project.projectDir, `./target`),\n projectSrcDir: path.resolve(project.projectDir, `./src`),\n project\n };\n }\n}\n\nasync function loadLocalProject() {\n const projectFilePath = path.resolve(cwd, 'node.yaml');\n if (!fs.existsSync(projectFilePath)) throw new Error('node.yaml file not found in current directory.');\n\n const projectFileContent = fs.readFileSync(projectFilePath, 'utf8');\n const projectFileParsed = YAML.parse(projectFileContent);\n const projectDir = path.dirname(projectFilePath);\n\n const libraryAtom = {\n doc: {\n ...projectFileParsed,\n \"content-type\": \"javascript\",\n \"language\": \"js\"\n },\n fileName: \"index\"\n };\n\n const result = {\n libraryAtom,\n projectDir,\n projectFilePath,\n projectFileContent,\n projectFileParsed\n };\n\n // Load devops file\n const devopsFilePath = path.resolve(projectDir, 'node.devops.yaml');\n if (fs.existsSync(devopsFilePath)) {\n const devopsFileContent = fs.readFileSync(devopsFilePath, 'utf8');\n const devopsFileParsed = YAML.parse(devopsFileContent);\n result.devops = {\n filePath: devopsFilePath,\n fileContent: devopsFileContent,\n doc: {\n ...devopsFileParsed,\n },\n type: \"library.deploy\",\n save: async () => {\n fs.writeFileSync(result.devops.filePath, YAML.stringify(result.devops.doc));\n }\n };\n }\n\n const readmeFilePath = path.resolve(projectDir, 'node.readme.md');\n if (fs.existsSync(readmeFilePath)) {\n const readmeFileContent = fs.readFileSync(readmeFilePath, 'utf8');\n result.readme = {\n filePath: readmeFilePath,\n fileContent: readmeFileContent,\n doc: {\n content: readmeFileContent,\n \"content-type\": \"markdown\",\n },\n type: \"wiki\"\n };\n }\n\n return result;\n}"],"names":["require$$0","axios","require$$1","cloneDeep","merge","require$$2","semver","path","require$$4","fs","shell","require$$3","require$$5","require$$6","require$$8","require$$10","require$$12","require$$13","require$$14","require$$20","Builder","require$$7","require$$9"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("@flownet/lib-load-fnet-config"),t=require("path"),o=require("yargs/yargs"),i=require("yargs/helpers"),n=require("fs"),s=require("yaml"),a=require("shelljs"),r=require("@flownet/lib-render-templates-dir"),c=require("node:fs"),l=require("node:path"),d=require("js-yaml"),p=require("nunjucks"),m=require("lodash.clonedeep"),h=require("isobject"),f=require("axios"),y=require("@node-red/util"),u=require("semver"),w=require("uuid"),g=require("redis"),b=require("@flownet/lib-is-redis-online"),x=require("node:os"),k=require("lodash.merge"),j=require("@flownet/lib-atom-api-js"),v=require("qs"),D=require("@flownet/lib-execute-command-with-ipc-file"),_=require("@flownet/lib-parse-node-url"),T=require("@flownet/lib-list-npm-versions"),P=require("@flownet/lib-bpmn-from-flow"),S=require("@flownet/lib-parse-imports-js"),E=require("@flownet/lib-to-webos"),I=require("@flownet/lib-to-electron"),A=require("@flownet/lib-to-macos-app"),N=require("@flownet/lib-to-ios-app"),F=require("@flownet/lib-to-nextjs");const $=g,C=b;const{Api:O}=j,B=f.default,R=v;const M=F,q=m,J=k,L=u,K=l;const V=c,W=l,G=d,U=a,Y=p,z=m,H=h,X=f,Z=y,Q=u,{v4:ee}=w,te=async()=>{if(!await C({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=$.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e},oe=x,ie=k,ne=class{init({config:e,accessToken:t}){return new Promise(((o,i)=>{if(O.set_api_url(e.data.url),t)return O.set_req_token(t),void o(t);B({method:"POST",url:`${e.data.issuer}/protocol/openid-connect/token`,data:R.stringify(e.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{O.set_req_token(e.data.access_token),o(e.data.access_token)})).catch((e=>{O.set_req_token(),i(e)}))}))}},{Atom:se}=j,ae=D,re=_,ce=T,le=P,de=e,pe=S,me=E,he=I,fe=A,ye=N,ue=async({atom:e,target:t,onProgress:o,projectDir:i,dependencies:n})=>{o&&await o({message:"Deploying it as nextjs package."});t.params=J({name:"nextjs-app",version:"0.1.0"},t.params);const s=L.inc(t.params.version,"patch");t.params.version=s;const a=q(t);a.params.dependencies=q(n);const r={atom:e,target:a.params,projectDir:i,renderDir:K.resolve(i,"nextjs")};return{deployer:await M(r)}};var we=class{#e;#t;#o;#i;#n;#s;#a;#r;#c;#l;#d;#p;#m;#h;#f;#y;#u;#w;#g;#b;constructor(e){this.#e=new ne,this.#t=e,this.#s=[],this.#a={},this._expire_ttl=3600,this._expire_ttl_short=300}async _cache_set(e,t,o){this._redis_client&&await this._redis_client.SETEX(e,o||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async init(){this._redis_client=await te(),this.#l=this.#t.buildId||ee(),this.#y=this.#t.mode,this.#u=["all","deploy","build","file"].includes(this.#y),this.#w=["all","deploy","build"].includes(this.#y),this.#g=["all","deploy"].includes(this.#y),this.#b=["all","deploy","build","file","bpmn"].includes(this.#y),this.#p=this.#t.protocol,this.#d="BUILD:"+this.#l,this.#m=await(de({name:"atom",dir:this.#t.projectDir})?.data),this.#h=await(de({name:this.#t.npmConfig||"npm",dir:this.#t.projectDir})?.data),this.#f=await(de({name:this.#t.redConfig||"red",dir:this.#t.projectDir})?.data);try{await this.setInProgress({message:"Initialization started."}),await this.initAuth(),await this.initWorkflow(),await this.initFeatures(),await this.initDependencies();const e=await this.initNodeTree({workflow:this.#i});await this.initNodeTreeIndex({root:e}),await this.initNodeCalls({root:e}),await this.initNodeCallLibs({root:e}),await this.initNodeForms({root:e}),await this.initNodeFormLibs({root:e}),await this.initAtomLibsAndDeps({libs:e.context.libs,packageDependencies:this.#s}),await this.resolveNodeTree({root:e}),this.#c=e}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#t.id&&(this.#r=await this.#e.init({config:this.#m}))}async initWorkflow(){const e=this.#t.id;this.#o=this.#t.project?.workflowAtom||await se.get({id:e}),this.#i="string"==typeof this.#o.doc.content?G.load(this.#o.doc.content):this.#o.doc.content;let t=this.#o.doc.bundleName;t=t||(this.#o.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#o.doc.bundleName=t,this.#o.type=this.#o.type||"workflow"}async initFeatures(){this.#o.doc.features=this.#o.doc.features||{};const e=this.#o.doc.features;e.print_steps=e.print_steps||e.print?.steps||!1,e.form_enabled=!0===this.#o.doc.form||!0===this.#o.doc.form?.enabled||!0===e.form||!0===e.form?.enabled,e.browser_autorun=!0===e.browser?.autorun;const t={cjs:{format:"cjs",context:e.form_enabled?"window":"global",babel:!1,browser:!1,copy:!0,replace:!0},cjsx:{format:"cjs",context:e.form_enabled?"window":"global",babel:!1,browser:!0,replace:!0},esm:{format:"esm",context:e.form_enabled?"window":"global",babel:!1,browser:!1,replace:!0},esmx:{format:"esm",browser:!0,babel:!0,context:e.form_enabled?"window":"global",replace:!0,browsersync:!0},iife:{format:"iife",context:e.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0}};!0===e.webos&&(t.webos={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,babel_options:{targets:{chrome:"79"}}}),e.babel_options=e.babel_options||e.babel?.options||{targets:{browsers:"last 9 versions, not dead",node:"18"}},e.browsersync_options=ie({server:".",startPath:"/",files:["./app/**/*","./dist/**/*"]},e.browsersync_options||e.browsersync?.options||{}),e.replace_options=ie({},e.replace_options||e.replace?.options||{}),e.terser_options=ie({},e.terser_options||e.terser?.options||{}),e.css_options=ie({},e.css_options||e.css?.options||{}),e.wasm_options=ie({},e.wasm_options||e.wasm?.options||{}),e.copy_options=ie({},e.copy_options||e.copy?.options||{}),e.json_options=ie({},e.json_options||e.json?.options||{}),e.rollup_output=ie(t,e.rollup_output||e.rollup?.output||e.rollup||{});const o=Object.keys(t);for(const i of o){const o=t[i];o&&(o.babel_options=o.babel_options||e.babel_options,o.browsersync_options=ie(e.browsersync_options,o.browsersync_options),o.replace_options=ie(e.replace_options,o.replace_options),o.terser_options=ie(e.terser_options,o.terser_options),o.css_options=ie(e.css_options,o.css_options),o.wasm_options=ie(e.wasm_options,o.wasm_options),o.copy_options=ie(e.copy_options,o.copy_options),o.json_options=ie(e.json_options,o.json_options),e.form_enabled&&(o.babel=!0))}e.babel_enabled=o.some((t=>!0===e.rollup_output[t].babel)),e.browser_enabled=o.some((t=>!0===e.rollup_output[t].babel)),e.browsersync_enabled=o.some((t=>!0===e.rollup_output[t].browsersync)),e.browsersync_enabled=e.browsersync_enabled&&(e.form_enabled||!0===e.browser_autorun),e.multiple_enabled=e.multiple_enabled||!0===e.multiple||!0===e.multiple?.enabled,e.wasm_enabled=!0===e.wasm||e.wasm&&!1!==e.wasm?.enabled,e.css_enabled=!0===e.css||e.css&&!1!==e.css?.enabled,e.json_enabled=!0===e.json||e.json&&!1!==e.json?.enabled,e.terser_enabled=!0===e.terser||e.terser&&!1!==e.terser?.enabled,e.copy_enabled=e.copy_enabled||e.copy&&!1!==e.copy?.enabled,e.bin_name=e.bin_name||e.bin?.name||e.bin,e.bin_enabled=e.bin_name&&("string"==typeof e.bin_name)(e.bin_enabled||!1!==e.bin?.enabled),e.dependency_auto_enabled=!1!==e.dependency_auto&&!1!==e.dependency_auto?.enabled,e.npm_install_flags=e.npm_install_flags||"",e.index_html_enabled=!(!0===this.#o.doc.features.multiple_enabled||!0!==this.#o.doc.features.form_enabled),e.bin_file_enabled=!(!0===this.#o.doc.features.multiple_enabled||!0===this.#o.doc.features.form_enabled)}async initDependencies(){this.#s.push({package:"eventemitter3",version:"^4.0"}),this.#s.push({package:"get-value",version:"^3.0"}),this.#s.push({package:"set-value",version:"^4.1"}),this.#o.doc.features.form_enabled?(this.#s.push({package:"react",version:"^18.2"}),this.#s.push({package:"react-dom",version:"^18.2"}),this.#s.push({package:"@flownet/react-app",version:"^0.1"}),this.#s.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#s.push({package:"yargs",version:"^17"}),this.#s.push({package:"chalk",version:"^4"})}async initWorkflowDir(){const e=this.#t.projectDir,t=this.#t.coreDir;let o;const i=["node_modules"];if(V.existsSync(e)&&V.readdirSync(e).forEach((t=>{i.includes(t)||(o=U.rm("-rf",W.join(e,t)))})),o=U.exec(`mkdir -p ${e}`),0!==o.code)throw new Error("Couldnt create workflow dir.");if(o=U.exec(`mkdir ${e}/src`),0!==o.code)throw new Error("Couldnt create workflow/src dir.");if(o=U.exec(`cp -a ${t} ${e}/src`),0!==o.code)throw new Error("Couldnt create workflow/src/core dir.");if(o=U.exec(`mkdir -p ${e}/src/libs`),0!==o.code)throw new Error("Couldnt create workflow/src/libs dir.");if(o=U.exec(`mkdir -p ${e}/src/default/blocks`),0!==o.code)throw new Error("Couldnt create workflow/src/default/blocks dir.")}async initNunjucks(){const e=this.#t.templateDir;this.#n=Y.configure(e,{watch:!1,dev:!0})}async initNodeTree({workflow:e}){const t=Object.keys(e),o={definition:e,name:void 0,type:"root",parent:void 0,childs:[],blockAutoJumpToParent:!0,blockAutoJumpToSibling:!0,index:0,depth:0,context:{libs:[],atom:this.#o}};t.forEach((t=>{const i={name:t,type:"main"===t?"workflow":"subworkflow",childs:[],parent:o,definition:e[t],index:o.childs.length,depth:o.depth+1,context:{},blockAutoJumpToParent:!0};o.childs.push(i)}));for await(const e of o.childs)await this.initNode({node:e});return o}async initNode({node:e}){if(e.workflow=e.parent.workflow||e,e.depth=e.parent.depth+1,e.definition.hasOwnProperty("try")&&e.definition.hasOwnProperty("except"))await this.initBlockTypeTryExcept({node:e});else if(e.definition.hasOwnProperty("for"))await this.initBlockTypeFor({node:e});else if(e.definition.hasOwnProperty("switch"))await this.initBlockTypeSwitch({node:e});else if(e.definition.hasOwnProperty("parallel"))await this.initBlockTypeParallel({node:e});else if(e.definition.hasOwnProperty("raise"))await this.initBlockTypeRaise({node:e});else if(e.definition.hasOwnProperty("return"))await this.initBlockTypeReturn({node:e});else if(e.definition.hasOwnProperty("assign"))await this.initBlockTypeAssign({node:e});else if(e.definition.hasOwnProperty("call"))await this.initBlockTypeCall({node:e});else if(e.definition.hasOwnProperty("form"))await this.initBlockTypeForm({node:e});else if(e.definition.hasOwnProperty("operation"))await this.initBlockTypeOperation({node:e});else if(e.definition.hasOwnProperty("steps"))await this.initBlockTypeSteps({node:e});else if(e.definition.hasOwnProperty("next"))await this.initBlockTypeJump({node:e});else if(e.definition.hasOwnProperty("shell"))await this.initBlockTypeShell({node:e});else{if(!e.definition.hasOwnProperty("config"))throw new Error("Undefined step type.");await this.initBlockTypeConfig({node:e})}}async initBlockTypeTryExcept({node:e}){if(e.type="tryexcept",e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!0,e.definition.try){const t="try",o={name:t,childs:[],parent:e,definition:e.definition[t],index:e.childs.length,context:{}};e.childs.push(o),await this.initNode({node:o})}if(e.definition.except){const t="except",o={name:t,childs:[],parent:e,definition:e.definition[t],index:e.childs.length,context:{}};e.childs.push(o),await this.initNode({node:o})}}async initBlockTypeSwitch({node:e}){e.type="switch",e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0;for(let t=0;t<e.definition.switch.length;t++){const o=e.definition.switch[t],i={name:`${t}`,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(i),o.hasOwnProperty("steps")?await this.initNode({node:i}):(i.depth=e.depth+1,i.type="jump")}}async initBlockTypeFor({node:e}){e.type="for",e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!1;for(let t=0;t<e.definition.for.steps.length;t++){const o=e.definition.for.steps[t],i=Object.keys(o)[0],n={name:i,childs:[],parent:e,definition:o[i],index:e.childs.length,context:{}};e.childs.push(n),await this.initNode({node:n})}}async initBlockTypeSteps({node:e}){e.type||(e.type="steps");const t=e.definition.steps||[];for await(const o of t){const t=Object.keys(o)[0],i={name:t,childs:[],parent:e,definition:o[t],index:e.childs.length,context:{}};e.childs.push(i),await this.initNode({node:i})}}async initBlockTypeAssign({node:e}){e.type="assign"}async initBlockTypeCall({node:e}){e.type="call";for(let t=0;t<e.definition.modules?.length;t++){const o=e.definition.modules[t],i=Object.keys(o)[0],n={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,index:e.childs.length,context:{}};e.childs.push(n),await this.initNode({node:n})}}async initBlockTypeForm({node:e}){e.type="form";for(let t=0;t<e.definition.modules?.length;t++){const o=e.definition.modules[t],i=Object.keys(o)[0],n={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,index:e.childs.length,context:{}};e.childs.push(n),await this.initNode({node:n})}}async initBlockTypeReturn({node:e}){e.type="return"}async initBlockTypeRaise({node:e}){e.type="raise"}async initBlockTypeJump({node:e}){e.type="jump"}async initBlockTypeOperation({node:e}){e.type="operation"}async initBlockTypeParallel({node:e}){e.type="parallel"}async initBlockTypeShell({node:e}){const t="shell",o=e.definition,i=typeof o[t];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${t} usage`);o.call="npm:@fnet/shell",o.args="string"===i?{cmd:o[t]}:o[t],delete o[t],await this.initBlockTypeCall({node:e})}async initBlockTypeConfig({node:e}){const t="config",o=e.definition,i=typeof o[t];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${t} usage`);o.call="npm:@fnet/config",o.args="string"===i?{name:o[t]}:o[t],delete o[t],await this.initBlockTypeCall({node:e})}async initNodeTreeIndex({root:e}){const t={};e.indexKey="/";for await(const o of e.childs)await this.initNodeIndex({node:o,index:t});return e.context.index=t,t}async initNodeIndex({node:e,index:t}){const o=W.join(e.parent.indexKey,e.name);e.indexKey=o,t[o]=e;const i=[];let n=e;for(;n?.parent;)i.push(n.index),n=n.parent;i.reverse(),e.codeKey=`B_${i.join("_")}_${e.type}`,e.pathKey=`${i.join(".")}`;for await(const o of e.childs)await this.initNodeIndex({node:o,index:t})}async initNodeCalls({root:e}){const t=e.context.index,o=[];for await(const e of Object.keys(t)){const i=t[e];"call"===i.type&&o.push(i)}return e.context.calls=o,o}async initNodeCallLibs({root:e}){const t=[],o=e.context.calls;for await(const e of o){const o=e.definition.call,i=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:o,type:"atom"},n=t.find((e=>e.name===i.name&&e.type===i.type));n||t.push(i),e.target=n||i}return e.context.callLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeCallTarget({refNode:e,curNode:t}){if(!t)return;const o=e.definition.call,i=t.childs.find((e=>e.name===o&&"subworkflow"===e.type));return i||await this.findNodeCallTarget({refNode:e,curNode:t.parent})}async initNodeForms({root:e}){const t=e.context.index,o=[];for await(const e of Object.keys(t)){const i=t[e];"form"===i.type&&o.push(i)}return e.context.forms=o,o}async initNodeFormLibs({root:e}){const t=[],o=e.context.forms;for await(const e of o){const o=e.definition.form,i=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:o,type:"atom"},n=t.find((e=>e.name===i.name&&e.type===i.type));n||t.push(i),e.target=n||i}return e.context.formLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeFormTarget({refNode:e,curNode:t}){if(!t)return;const o=e.definition.form,i=t.childs.find((e=>e.name===o&&"subworkflow"===e.type));return i||await this.findNodeFormTarget({refNode:e,curNode:t.parent})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const o=e.filter((e=>"atom"===e.type));for(let e=0;e<o.length;e++){const i=o[e],n=await this.findAtomLibrary({url:i.name});i.atom=n;const s=n.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));s?.forEach((e=>{const o=t.find((t=>t.package===e.package));o?"string"==typeof e.path?(o.path||[]).some((t=>t===e.path))||(o.path=o.path||[],o.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(o.path||[]).some((t=>t===e))||(o.path=o.path||[],o.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const t=re({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#p),"ac:"===t.protocol){const o=t.pathname.split("/");if(1===o.length)return await se.first({where:{name:e,parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===o.length){const e=await se.first({where:{name:o[0],parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"folder"}});return await se.first({where:{name:o[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===t.protocol){const e=W.resolve(this.#t.projectSrcDir,`${t.pathname}.js`),o=[],i=await pe({file:e});for await(const e of i.required){if("npm"!==e.type)continue;const t=(await ce({name:e.package,groupBy:{minor:!0}}))[0][0];o.find((t=>t.package===e.package))||o.push({package:e.package,subpath:e.subpath,version:`^${t}`,type:"npm"})}return{name:t.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:o},protocol:t.protocol}}if("npm:"===t.protocol){const e=(await ce({name:t.pathname,groupBy:{minor:!0}}))[0][0];return{name:t.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:[{package:t.pathname,version:`^${e}`,type:"npm"}]},protocol:t.protocol}}}}resolveNextBlock({node:e}){const t=e.definition;if("end"===t.next);else if("stop"===t.next);else if("none"===t.next);else if(t.next){let o=e.parent;for(;o.parent;){const i=o.childs.find((e=>e.name===t.next));if(i){e.context.next=i;break}o=o.parent}}else{if(!0===e.module)return;let t=e.parent,o=e.index+1;for(;t.parent;){if(t.blockAutoJumpToParent&&!0===t.blockAutoJumpToSibling){if(!0===t.blockAutoJumpToParent)break;o=t.index+1,t=t.parent;continue}const i=t.childs.find((e=>e.index===o));if(i){e.context.next=i;break}if(!0===t.blockAutoJumpToParent)break;o=t.index+1,t=t.parent}}}async resolveNodeTree({root:e}){for await(const t of e.childs)await this.resolveTypeWorkflow({node:t})}async resolveTypeWorkflow({node:e}){e.context.transform=z(e.definition);const t=e.context.transform;for(let e=0;e<t.params?.length;e++){const o=t.params[e];if("string"==typeof o)t.params[e]={key:o,hasDefault:!1};else{const i=Object.keys(o)[0];t.params[e]={key:i,hasDefault:!0,default:o[i]}}}e.context.next=e.childs[0];for await(const t of e.childs)await this.resolveType({node:t})}async resolveType({node:e}){"assign"===e.type?await this.resolveTypeAssign({node:e}):"return"===e.type?await this.resolveTypeReturn({node:e}):"call"===e.type?await this.resolveTypeCall({node:e}):"form"===e.type?await this.resolveTypeForm({node:e}):"raise"===e.type?await this.resolveTypeRaise({node:e}):"switch"===e.type?await this.resolveTypeSwitch({node:e}):"jump"===e.type?await this.resolveTypeJump({node:e}):"tryexcept"===e.type?await this.resolveTypeTryExcept({node:e}):"for"===e.type?await this.resolveTypeFor({node:e}):"operation"===e.type?await this.resolveTypeOperation({node:e}):"steps"===e.type&&await this.resolveTypeSteps({node:e});for await(const t of e.childs)await this.resolveType({node:t})}async resolveTypeAssign({node:e}){e.context.transform=z(e.definition);const t=e.context.transform;for(let e=0;e<t.assign?.length;e++){let o=t.assign[e],i=Object.keys(o)[0],n=o[i],s=this.transformValue(i),a=this.transformValue(n),r={key:JSON.stringify(s),value:JSON.stringify(a)};r.key=this.replaceExpression(r.key),r.value=this.replaceExpression(r.value),t.assign[e]=r}t.operation&&(t.operation=this.transformValue(t.operation)),t.page&&(t.page=this.transformExpression(t.page)),this.resolveNextBlock({node:e})}async resolveTypeSteps({node:e}){e.context.next=e.childs[0]}async resolveTypeReturn({node:e}){e.context.transform=e.context.transform||z(e.definition);const t=e.context.transform;t.page&&(t.page=this.transformExpression(t.page)),t.return=this.transformExpression(t.return)}async resolveTypeCall({node:e}){e.context.transform=e.context.transform||z(e.definition);const t=e.context.transform;t.args&&(t.args=this.transformExpression(t.args)),t.result&&(t.result=this.transformExpression(t.result));const o=e.workflow.parent;e.context.lib=o.context.libs.find((e=>e.name===t.call)),t.operation&&(t.operation=this.transformValue(t.operation)),t.page&&(t.page=this.transformExpression(t.page)),t.hasOwnProperty("print")&&(t.print=this.transformExpression(t.print)),this.resolveNextBlock({node:e})}async resolveTypeForm({node:e}){e.context.transform=e.context.transform||z(e.definition);const t=e.context.transform;t.props&&(t.props=this.transformExpression(t.props));const o=e.workflow.parent;e.context.lib=o.context.libs.find((e=>e.name===t.form)),t.operation&&(t.operation=this.transformValue(t.operation)),t.page&&(t.page=this.transformExpression(t.page)),this.resolveNextBlock({node:e})}async resolveTypeRaise({node:e}){e.context.transform=e.context.transform||z(e.definition);const t=e.context.transform;t.operation&&(t.operation=this.transformValue(t.operation)),t.raise=this.transformExpression(t.raise),t.page&&(t.page=this.transformExpression(t.page))}async resolveTypeSwitch({node:e}){e.context.transform=e.context.transform||z(e.definition);const t=e.context.transform;for(const t of e.childs)t.context.transform=t.context.transform||z(t.definition),t.context.transform.condition=this.replaceExpression(JSON.stringify(this.transformValue(t.definition.condition)));t.operation&&(t.operation=this.transformValue(t.operation)),t.page&&(t.page=this.transformExpression(t.page)),this.resolveNextBlock({node:e})}async resolveTypeJump({node:e}){e.context.transform=e.context.transform||z(e.definition);const t=e.context.transform;t.next=this.transformExpression(t.next),t.operation&&(t.operation=this.transformValue(t.operation)),t.page&&(t.page=this.transformExpression(t.page)),this.resolveNextBlock({node:e})}async resolveTypeTryExcept({node:e}){e.context.transform=e.context.transform||z(e.definition);const t=e.context.transform;if(e.context.try=e.childs.find((e=>"try"===e.name)),e.context.except=e.childs.find((e=>"except"===e.name)),e.context.except){const t=e.context.except;t.context.transform=t.context.transform||z(t.definition)}t.operation&&(t.operation=this.transformValue(t.operation)),t.page&&(t.page=this.transformExpression(t.page)),this.resolveNextBlock({node:e})}async resolveTypeFor({node:e}){e.context.transform=e.context.transform||z(e.definition);const t=e.context.transform;t.for.in=this.transformExpression(e.definition.for.in),t.operation&&(t.operation=this.transformValue(t.operation)),t.page&&(t.page=this.transformExpression(t.page)),this.resolveNextBlock({node:e})}async resolveTypeOperation({node:e}){e.context.transform=e.context.transform||z(e.definition);const t=e.context.transform;t.operation&&(t.operation=this.transformValue(t.operation)),t.page&&(t.page=this.transformExpression(t.page))}async createAtomLibFiles({root:e}){await this.setInProgress({message:"Creating external lib files."}),this.#o.typesDir="./types";const t=e.context.libs.filter((e=>"atom"===e.type));for(let e=0;e<t.length;e++){const o=t[e].atom,i=this.#t.projectDir;if("local:"===o.protocol){const e=W.resolve(this.#t.projectSrcDir,`${o.fileName||o.name}.js`),t=W.relative(`${this.#t.projectDir}/src/default/blocks`,e);if(!V.existsSync(e)){V.mkdirSync(W.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",V.writeFileSync(e,t,"utf8")}o.relativePath=t,this.#o.typesDir="./types/target/src"}else if("npm:"===o.protocol)o.relativePath=o.name;else{const e=`${i}/src/libs/${o.id}.js`,t=o.doc.contents?.find((e=>"esm"===e.format))||o.doc;V.writeFileSync(e,t.content,"utf8")}}}async createEngine({root:e}){await this.setInProgress({message:"Creating engine file."});const t=this.#t.templateDir,o=Y.compile(V.readFileSync(W.resolve(t,"src/default/engine.js.njk"),"utf8"),this.#n).render({...e,ui:{package:"@flownet/react-app"}}),i=this.#t.projectDir,n=W.resolve(i,"src/default/index.js");V.writeFileSync(n,o,"utf8")}async createNodeTree({root:e}){await this.setInProgress({message:"Creating block files."});for await(const t of e.childs)await this.createTypeWorkflow({node:t})}async createTypeWorkflow({node:e}){const t=this.#t.templateDir,o=Y.compile(V.readFileSync(W.resolve(t,"src/default/workflow.js.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=W.resolve(i,`src/default/${e.codeKey}.js`);V.writeFileSync(n,o,"utf8");for await(const t of e.childs)await this.createType({node:t})}async createType({node:e}){switch(e.type){case"assign":case"steps":case"return":case"call":case"form":case"raise":case"switch":case"jump":case"tryexcept":case"for":case"operation":this.createBlockFromTemplate({node:e})}for await(const t of e.childs)await this.createType({node:t})}createBlockFromTemplate({node:e}){const t=this.getBlockTemplate({node:e});e.context.render=t.render(e),this.createStepFile({node:e})}getBlockTemplate({node:e}){let t=this.#a[e.type];if(t)return t;const o=this.#t.templateDir;return t=Y.compile(V.readFileSync(W.resolve(o,`src/default/blocks/${e.type}.js.njk`),"utf8"),this.#n),this.#a[e.type]=t,t}createStepFile({node:e}){const t=this.#t.projectDir,o=`${e.codeKey}.js`,i=W.resolve(t,`src/default/blocks/${o}`);V.writeFileSync(i,e.context.render,"utf8"),e.context.fileName=o,e.context.filePath=i}transformExpression(e){let t=this.transformValue(e);return t=JSON.stringify(t),t=this.replaceExpression(t),t}transformValue(e){if(Array.isArray(e))for(let t=0;t<e.length;t++)e[t]=this.transformValue(e[t]);else if(H(e)){const t=Object.keys(e);for(let o=0;o<t.length;o++)e[t[o]]=this.transformValue(e[t[o]])}return e}replaceExpression(e){return e.replaceAll(/(?<outer>"\${(?<inner>[^{]*)}")/g,"$2")}async createRollup(){await this.setInProgress({message:"Creating rollup file."});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},t=this.#t.templateDir,o=Y.compile(V.readFileSync(W.resolve(t,"rollup.config.js.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=W.resolve(i,"rollup.config.js");V.writeFileSync(n,o,"utf8")}async createPackageJSON(){await this.setInProgress({message:"Creating package.json."});const e=this.#s.find((e=>"react"===e.package)),t=this.#s.find((e=>"react-dom"===e.package));e&&!t?this.#s.push({package:"react-dom",version:e.version}):e&&t&&(t.version=e.version),e&&(this.#s.find((e=>"@emotion/react"===e.package))||this.#s.push({package:"@emotion/react",version:"^11"}),this.#s.find((e=>"@emotion/styled"===e.package))||this.#s.push({package:"@emotion/styled",version:"^11"}));const o={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},i=this.#t.templateDir,n=Y.compile(V.readFileSync(W.resolve(i,"package.json.njk"),"utf8"),this.#n).render(o),s=this.#t.projectDir,a=W.resolve(s,"package.json");V.writeFileSync(a,n,"utf8")}async createBin(){if(!0!==this.#o.doc.features.bin_file_enabled)return;await this.setInProgress({message:"Creating bin file."});const e=this.#t.projectDir;if(0!==U.exec(`mkdir ${e}/bin`).code)throw new Error("Couldnt create library/bin dir.");const t={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},o=this.#t.templateDir;let i=Y.compile(V.readFileSync(W.resolve(o,"bin/index.js.njk"),"utf8"),this.#n).render(t),n=W.resolve(e,"bin/index.js");V.writeFileSync(n,i,"utf8")}async createIndexHtml(){if(!this.#o.doc.features.index_html_enabled)return;await this.setInProgress({message:"Creating index.html."});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s,ts:Date.now()},t=this.#t.templateDir,o=Y.compile(V.readFileSync(W.resolve(t,"index.html.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=W.resolve(i,"index.html");V.writeFileSync(n,o,"utf8")}async createAutoRun(){if(!0===this.#o.doc.features.multiple||!this.#o.doc.features.browser_enabled||!this.#o.doc.features.browser_autorun)return;await this.setInProgress({message:"Creating autorun.html."});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s,ts:Date.now()},t=this.#t.templateDir,o=Y.compile(V.readFileSync(W.resolve(t,"autorun.html.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=W.resolve(i,"autorun.html");V.writeFileSync(n,o,"utf8")}async createTsConfig(){await this.setInProgress({message:"Creating tsconfig.json."});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},t=this.#t.templateDir,o=Y.compile(V.readFileSync(W.resolve(t,"tsconfig.json.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=W.resolve(i,"tsconfig.json");V.writeFileSync(n,o,"utf8")}async createGitIgnore(){await this.setInProgress({message:"Creating .gitignore"});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},t=this.#t.templateDir,o=Y.compile(V.readFileSync(W.resolve(t,".gitignore.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=W.resolve(i,".gitignore");V.writeFileSync(n,o,"utf8")}async createGitIgnore(){await this.setInProgress({message:"Creating .gitignore"});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},t=this.#t.templateDir,o=Y.compile(V.readFileSync(W.resolve(t,".gitignore.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=W.resolve(i,".gitignore");V.writeFileSync(n,o,"utf8")}async createProjectYaml(){const e="flow.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const{content:o,...i}=this.#o.doc,n={content:G.dump(i)},s=this.#t.templateDir,a=Y.compile(V.readFileSync(W.resolve(s,`${e}.njk`),"utf8"),this.#n).render(n),r=this.#t.projectDir,c=W.resolve(r,`${e}`);V.writeFileSync(c,a,"utf8")}async createProjectMainYaml(){const e="flow.main.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const{content:o,...i}=this.#o.doc,n={content:o},s=this.#t.templateDir,a=Y.compile(V.readFileSync(W.resolve(s,`${e}.njk`),"utf8"),this.#n).render(n),r=this.#t.projectDir,c=W.resolve(r,`${e}`);V.writeFileSync(c,a,"utf8")}async createProjectReadme(){const e="readme.md",t=`Creating ${e}`;if(await this.setInProgress({message:t}),this.#t.project?.readme){const t={content:this.#t.project.readme.doc.content},o=this.#t.templateDir,i=Y.compile(V.readFileSync(W.resolve(o,`${e}.njk`),"utf8"),this.#n).render(t),n=this.#t.projectDir,s=W.resolve(n,`${e}`);V.writeFileSync(s,i,"utf8")}else if(this.#o.id){const t=await se.first({type:"wiki",parent_id:this.#o.id});if(!t||"markdown"!==t.doc?.["content-type"])return;const{content:o,...i}=t.doc,n={content:o},s=this.#t.templateDir,a=Y.compile(V.readFileSync(W.resolve(s,`${e}.njk`),"utf8"),this.#n).render(n),r=this.#t.projectDir,c=W.resolve(r,`${e}`);V.writeFileSync(c,a,"utf8")}}async createToYargs(){await this.setInProgress({message:"Creating yargs."});const e={},t=this.#o.doc.inputs||[],o=[];t.forEach((t=>{if(!1===t.cli||!t.name)return;t.import&&o.push(t);const i={};t.type&&(i.type=t.type),t.default&&(i.default=t.default),t.choices&&(i.choices=t.choices),(t.describe||t.description)&&(i.describe=t.describe||t.description),t.alias&&(i.alias=t.alias),!0===t.required&&(i.required=!0),!0===t.hidden&&(i.hidden=!0),!0===t.array&&(i.array=!0),!0===t.normalize&&(i.normalize=!0),t.nargs&&(i.nargs=t.nargs),e[t.name]=i}));const i={options:e,imports:o,atom:this.#o},n=this.#t.templateDir,s=Y.compile(V.readFileSync(W.resolve(n,"src/default/to.yargs.js.njk"),"utf8"),this.#n).render(i),a=this.#t.projectDir,r=W.resolve(a,"src/default/to.yargs.js");V.writeFileSync(r,s,"utf8")}async runBuildScripts(){const e=this.#t.projectDir;await this.setInProgress({message:"Installing npm packages."});let t=U.exec(`npm install ${this.#o.doc.features.npm_install_flags}`,{cwd:e});if(0!==t.code)throw new Error("Couldnt install npm packages.");if(await this.setInProgress({message:"Prettifiying source files."}),t=U.exec("prettier --write src/**/* bin/* *.{js,json,yaml,html} --no-error-on-unmatched-pattern",{cwd:e}),0!==t.code)throw new Error("Couldnt format files.");if(await this.setInProgress({message:"Creating .d.ts"}),t=U.exec("tsc",{cwd:e}),0!==t.code)throw new Error("Couldnt create .d.ts files.");if(await this.setInProgress({message:"Building main project."}),t=U.exec("npm run build",{cwd:e}),0!==t.code)throw new Error("Couldnt build workflow project.")}async runPrettifier(){const e=this.#t.projectDir,t=U.exec("prettier --write .",{cwd:W.resolve(e,"src")});if(0!==t.code)throw new Error(t.stderr)}async deploy(){if(await this.setInProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let o=e[t];await this.deployProject({deploymentProject:o}),!0===o.isDirty&&await o.save()}}else if(this.#o.id){const e=await se.list({type:"workflow.deploy",parent_id:this.#o.id});for(let t=0;t<e.length;t++){let o=e[t];await this.deployProject({deploymentProject:o}),!0===o.isDirty&&(o=await se.update(o,{id:o.id}))}}}async deployProject(e){const{deploymentProject:t}=e,o=t.doc.targets;for(let e=0;e<o.length;e++){const i=o[e];await this.deployProjectTarget({deploymentProject:t,deploymentProjectTarget:i})}}async deployProjectTarget(e){const{deploymentProjectTarget:t,deploymentProject:o}=e;if(!0===t.enabled)if(t.name===this.#m.env.ATOM_DEPLOY_LIBRARY_TARGET)await this.deployAsWorkflowLib(e);else if(t.name===this.#m.env.ATOM_DEPLOY_RED_TARGET)await this.deployAsRedFlow(e);else if(t.name===this.#m.env.ATOM_DEPLOY_NPM_TARGET)await this.deployAsNpm(e);else if("pm"===t.name)await this.deployAsPm(e);else if("gitlab"===t.name)await this.deployAsGitlab(e);else if("webos"===t.name)await this.deployAsWebos(e);else if("electron"===t.name)await this.deployAsElectron(e);else if("macos-app"===t.name)await this.deployAsMacOSApp(e);else if("ios-app"===t.name)await this.deployAsIOSApp(e);else{let e;if("nextjs"===t.name&&(e=ue),!e)return;await e({atom:this.#o,target:t,onProgress:this.setInProgress.bind(this),projectDir:this.#t.projectDir,dependencies:this.#s}),t.build={id:this.#l,ts:Date.now()},o.isDirty=!0}}async deployAsWorkflowLib(e){await this.setInProgress({message:"Deploying it as workflow lib."});const{deploymentProject:t,deploymentProjectTarget:o}=e;let i,n,s,a=o.deploy.name.split("/");if(1===a.length)n=this.#m.env.ATOM_LIBRARIES_ID,s=o.deploy.name;else{if(2!==a.length)throw new Error("Wrong name path.");{const e=await se.first({where:{name:a[0],parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");n=e.id,s=a[1]}}if(!0===o.dryRun)return;if(t.isDirty=!0,o.build={id:this.#l,ts:Date.now()},o.deploy.id){if(i=await se.get({id:o.deploy.id}),!i)return}else{if(i=await se.create({parent_id:n,doc:{name:s,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!i)return;o.deploy.id=i.id}const r=this.#t.projectDir;i.doc.contents=[{content:V.readFileSync(W.resolve(r,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:V.readFileSync(W.resolve(r,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:V.readFileSync(W.resolve(r,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],i.doc.name=s,i.doc.dependencies=this.#s,i.doc.subtype="workflow",i=await se.update(i,{id:i.id})}async deployAsRedFlow(e){await this.setInProgress({message:"Deploying it as node-red flow."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=this.#t.templateDir,s=this.#o;let a;if("simple"===o.deploy.template)a={atom:s,packageDependencies:this.#s,red:{tab:{id:o.deploy.id||Z.util.generateId(),label:`WF/${s.id?s.id:oe.hostname()}/${s.name}/${o.deploy.name||o.deploy.template}`},function:{id:Z.util.generateId(),name:s.doc.name,initialize:{content:V.readFileSync(W.resolve(i,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:s.doc.bundleName}},inject:{id:Z.util.generateId(),...o.deploy.params?.inject,payload:"json"===o.deploy.params?.inject?.payloadType?`'${JSON.stringify(o.deploy.params?.inject?.payload)}'`:o.deploy.params?.inject?.payload},debug:{id:Z.util.generateId()}}};else if("cronjob"===o.deploy.template){let e=o.deploy.params?.schedules?z(o.deploy.params?.schedules):void 0;e?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),a={atom:s,packageDependencies:this.#s,red:{tab:{id:o.deploy.id||Z.util.generateId(),label:`WF/${s.id?s.id:oe.hostname()}/${o.deploy.name||o.deploy.template}`},function:{id:Z.util.generateId(),name:s.doc.name,initialize:{content:V.readFileSync(W.resolve(i,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:s.doc.bundleName}},cronjob:{id:Z.util.generateId(),schedules:e},debug:{id:Z.util.generateId()}}}}else{if("http"!==o.deploy.template)return;a={atom:s,packageDependencies:this.#s,red:{tab:{id:o.deploy.id||Z.util.generateId(),label:`WF/${s.id?s.id:oe.hostname()}/${o.deploy.name||o.deploy.template}`},function:{id:Z.util.generateId(),name:s.doc.name,initialize:{content:V.readFileSync(W.resolve(i,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:s.doc.bundleName}},httpin:{id:Z.util.generateId(),method:o.deploy.params.method||"get",url:o.deploy.params.url},httpout:{id:Z.util.generateId()},debug:{id:Z.util.generateId()}}}}let r=Y.compile(V.readFileSync(W.resolve(n,`deploy/node-red/${o.deploy.template}.yaml.njk`),"utf8"),this.#n).render(a);if(V.writeFileSync(W.resolve(i,"node-red.yaml"),r),r=G.load(r),!0===o.dryRun)return;t.isDirty=!0,o.build={id:this.#l,ts:Date.now()};const c=o.deploy.url||this.#f.env.RED_URL,l={};if(!1!==o.deploy.auth&&(l.Authorization="Bearer "+this.#r),o.deploy.id)!0===o.actions?.delete?(await X({method:"DELETE",url:`${c}/flow/${o.deploy.id}`,headers:l}),delete o.actions.delete,delete o.deploy.id,o.enabled=!1):await X({method:"PUT",url:`${c}/flow/${o.deploy.id}`,data:r,headers:l});else{const e=await X({method:"POST",url:`${c}/flow`,data:r,headers:l});o.deploy.id=e.data.id}}async deployAsNpm(e){await this.setInProgress({message:"Deploying it as npm package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=W.resolve(i,"package.json"),s=V.readFileSync(n),a=JSON.parse(s);a.name=o.deploy.params.name,a.version=Q.inc(o.deploy.params.version,"patch");const r=o.deploy.params.bin?.name||o.deploy.params.bin;if(!1!==o.deploy.params.bin?.enabled&&r&&"string"==typeof r&&(a.bin={[r]:"bin/index.js",[this.#o.doc.name]:"bin/index.js"}),delete a.scripts,delete a.devDependencies,a.scripts={serve:"npx serve ."},V.writeFileSync(n,JSON.stringify(a,null,"\t")),V.writeFileSync(W.resolve(i,".npmrc"),`//registry.npmjs.org/:_authToken=${this.#h.env.NPM_TOKEN}`),!0===o.dryRun)return;if(0!==U.exec("npm publish --access public",{cwd:i}).code)throw new Error("Couldnt publish to npm");V.writeFileSync(n,s),t.isDirty=!0,o.deploy.params.version=a.version,o.build={id:this.#l,ts:Date.now()}}async deployAsPm(e){await this.setInProgress({message:"Deploying it as pm package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=W.resolve(i,"package.json"),s=V.readFileSync(n),a=JSON.parse(s);a.name=o.deploy.params.name,a.version=Q.inc(o.deploy.params.version,"patch"),delete a.scripts,delete a.devDependencies,V.writeFileSync(n,JSON.stringify(a,null,"\t"));const{file:r,data:c}=await de({name:o.deploy.params.pm?.config||this.#t.pmConfig||"pm",dir:this.#t.projectDir});let l="fnet-upload-files-to-gcs";if(l+=` --projectId='${c.env.PM_PROJECT_ID}'`,l+=` --bucketName='${c.env.PM_BUCKET_NAME}'`,l+=` --keyFilename='${W.resolve(W.dirname(r),c.env.PM_UPLOADER_KEY_FILE)}'`,l+=` --dir='${i}'`,l+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",l+=` --destDir='${a.name}/${a.version}'`,l+=" --headers.cacheControl='public, max-age=31536000, immutable'",!0===o.dryRun&&(l+=" --dryRun"),await ae({command:l}),V.writeFileSync(n,s),!0!==o.dryRun){if(!0===o.deploy.form?.enabled)if(o.deploy.form.id){const e=await se.get({id:o.deploy.form.id});if(!e)throw new Error("Couldnt find form.");e.doc.name=o.deploy.params.name,e.doc.workflow={id:this.#o.id},e.doc.versions.splice(0,0,{v:a.version}),await se.update(e,{id:e.id})}else{const e=await se.create({parent_id:this.#m.env.ATOM_FORMS_ID,doc:{name:o.deploy.params.name,type:"workflow.form",workflow:{id:this.#o.id},versions:[{v:a.version}]}});o.deploy.form.id=e.id}t.isDirty=!0,o.deploy.params.version=a.version,o.build={id:this.#l,ts:Date.now()},await this.registerToPackageManager({target:o,packageJSON:a})}}async deployAsGitlab(e){await this.setInProgress({message:"Deploying it as gitlab project."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir;let n="fnet-to-gitlab";const s=o.deploy.params.config||"gitlab",a=de({name:s,dir:this.#t.projectDir});if(!a)throw new Error(`Couldnt load config ${s}`);const{data:r}=a.data;n+=` --projectGroupId=${r.projectGroupId}`,n+=` --projectPath='${i}'`,n+=` --projectName='${o.deploy.params.name}'`,n+=` --projectBranch='${o.deploy.params.branch||"main"}'`,n+=` --gitlabHost='${r.gitlabHost}'`,n+=` --gitlabToken='${r.gitlabToken}'`,n+=` --gitlabUsername='${r.gitlabUsername}'`,n+=` --gitlabUserEmail='${r.gitlabUserEmail}'`,!0!==o.dryRun&&(await ae({command:n}),t.isDirty=!0,o.build={id:this.#l,ts:Date.now()})}async deployAsWebos(e){await this.setInProgress({message:"Deploying it as webos package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=Q.inc(o.deploy.params.version,"patch");if(!0===o.dryRun)return;const s=o.deploy.params,a={id:s.id,ver:n,title:s.title,vendor:s.vendor,src:i,srcBundleName:this.#o.doc.bundleName,dest:i,destName:"webos",atom:this.#o,atomTarget:o},r=await me(a);console.log(r),t.isDirty=!0,o.deploy.params.version=n,o.build={id:this.#l,ts:Date.now()}}async deployAsElectron(e){await this.setInProgress({message:"Deploying it as electron package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=Q.inc(o.deploy.params.version,"patch");if(!0===o.dryRun)return;const s=o.deploy.params,a={id:s.id,ver:n,title:s.title,vendor:s.vendor,projectDir:i,projectBundleName:this.#o.doc.bundleName,renderDir:W.resolve(i,"electron"),atom:this.#o,atomTarget:o},r=await he(a);console.log(r),t.isDirty=!0,o.deploy.params.version=n,o.build={id:this.#l,ts:Date.now()}}async deployAsMacOSApp(e){await this.setInProgress({message:"Deploying it as macos app package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=Q.inc(o.deploy.params.version,"patch");if(!0===o.dryRun)return;const s=o.deploy.params,a={id:s.id,ver:n,title:s.title,vendor:s.vendor,projectDir:i,projectBundleName:this.#o.doc.bundleName,renderDir:W.resolve(i,"macos-app"),atom:this.#o,atomTarget:o},r=await fe(a);console.log(r),t.isDirty=!0,o.deploy.params.version=n,o.build={id:this.#l,ts:Date.now()}}async deployAsIOSApp(e){await this.setInProgress({message:"Deploying it as ios app package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=Q.inc(o.deploy.params.version,"patch");if(!0===o.dryRun)return;const s=o.deploy.params,a={id:s.id,ver:n,title:s.title,vendor:s.vendor,projectDir:i,projectBundleName:this.#o.doc.bundleName,renderDir:W.resolve(i,"ios-app"),atom:this.#o,atomTarget:o},r=await ye(a);console.log(r),t.isDirty=!0,o.deploy.params.version=n,o.build={id:this.#l,ts:Date.now()}}async deployAsIOSApp(e){await this.setInProgress({message:"Deploying it as ios app package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=Q.inc(o.deploy.params.version,"patch");if(!0===o.dryRun)return;const s=o.deploy.params,a={id:s.id,ver:n,title:s.title,vendor:s.vendor,projectDir:i,projectBundleName:this.#o.doc.bundleName,renderDir:W.resolve(i,"ios-app"),atom:this.#o,atomTarget:o},r=await ye(a);console.log(r),t.isDirty=!0,o.deploy.params.version=n,o.build={id:this.#l,ts:Date.now()}}async registerToPackageManager(e){const{target:t,packageJSON:o}=e;let i=await se.first({name:t.deploy.params.name,parent_id:this.#m.env.ATOM_PACKAGES_ID});i?(i.doc.versions.splice(0,0,{v:o.version}),await se.update(i,{id:i.id})):i=await se.create({parent_id:this.#m.env.ATOM_PACKAGES_ID,doc:{name:t.deploy.params.name,type:"pm",versions:[{v:o.version}]}})}async setInProgress({message:e}){await this._cache_set(this.#d,{status:"IN_PROGRESS",message:e})}async build(){if(this.#b&&!this.#u)return await this.createNetwork();try{const e=this.#b?await le({root:this.#c}):void 0;this.#u&&(await this.initWorkflowDir(),await this.initNunjucks(),this.#b&&V.writeFileSync(W.resolve(this.#t.projectDir,"./project.bpmn"),e.diagramXML,"utf8"),await this.createAtomLibFiles({root:this.#c}),await this.createEngine({root:this.#c}),await this.createNodeTree({root:this.#c}),await this.createRollup(),await this.createBin(),await this.createPackageJSON(),await this.createTsConfig(),await this.createGitIgnore(),await this.createProjectYaml(),await this.createProjectMainYaml(),await this.createProjectReadme(),await this.createToYargs(),await this.createIndexHtml(),await this.createAutoRun(),this.#w&&(await this.runBuildScripts(),this.#g&&await this.deploy())),await this._cache_set(this.#d,{status:"COMPLETED",data:{network:e}})}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await le({root:this.#c});await this._cache_set(this.#d,{status:"COMPLETED",data:{...e}})}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e.message||e}),e}}};const ge=c,be=l;var xe=function({baseDir:e=__dirname}){let t=e;for(;t!==be.parse(t).root;){const e=be.join(t,"node_modules");if(ge.existsSync(e))return e;t=be.dirname(t)}return null};const ke=process.cwd();console.log(`cwd: ${ke}`),e({name:["redis"],dir:ke});const je=t,ve=o,{hideBin:De}=i,_e=n,Te=s,Pe=a,Se=r,Ee=we,Ie=xe({baseDir:__dirname});async function Ae(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:je.resolve(ke,`./.output/${e.id}`),templateDir:je.resolve(Ie,"./@flownet/template-node-workflow/default"),coreDir:je.resolve(Ie,"./@flownet/template-node-workflow/core")}}{const t=await async function(e){const t=je.resolve(ke,"flow.yaml");if(!_e.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const o=_e.readFileSync(t,"utf8"),i=Te.parse(o),n=je.dirname(t),s=je.resolve(n,"flow.main.yaml");if(!_e.existsSync(t))throw new Error("flow.main.yaml file not found in current directory.");const a=_e.readFileSync(s,"utf8"),r=Te.parse(a),c={workflowAtom:{doc:{...i,"content-type":"yaml",content:a}},projectDir:n,projectFilePath:t,projectFileContent:o,projectFileParsed:i,projectMainFilePath:s,projectMainFileContent:a,projectMainFileParsed:r},l=je.resolve(n,"flow.devops.yaml");if(_e.existsSync(l)){const e=_e.readFileSync(l,"utf8"),t=Te.parse(e);c.devops={filePath:l,fileContent:e,doc:{...t},type:"workflow.deploy",save:async()=>{_e.writeFileSync(c.devops.filePath,Te.stringify(c.devops.doc))}}}const d=je.resolve(n,"flow.readme.md");if(_e.existsSync(d)){const e=_e.readFileSync(d,"utf8");c.readme={filePath:d,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return c}();return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:je.resolve(Ie,"./@flownet/template-node-workflow/default"),coreDir:je.resolve(Ie,"./@flownet/template-node-workflow/core"),projectDir:je.resolve(t.projectDir,"./target"),projectSrcDir:je.resolve(t.projectDir,"./src"),project:t}}}process.env.PATH=`${Ie}/.bin:${process.env.PATH}`,ve(De(process.argv)).command("create","Initialize flow node project",(e=>e.option("name",{type:"string"})),(async e=>{try{const t=je.resolve(Ie,"./@flownet/template-node-workflow/project"),o=je.resolve(ke,e.name);_e.existsSync(o)||_e.mkdirSync(o),await Se({dir:t,outDir:o,context:e});let i=Pe.exec("fnet build",{cwd:o});if(0!==i.code)throw new Error("Failed to build project.");if(Pe.which("git")&&(i=Pe.exec("git init",{cwd:o}),0!==i.code))throw new Error("Failed to initialize git.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.log("Initialization failed!",e),process.exit(1)}})).command("build","Build flow net project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",alias:"m",default:"build",choices:["all","file","build","deploy","bpmn"]})),(async e=>{try{const t=await Ae(e),o=new Ee(t);await o.init(),await o.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.log("Building workflow failed!",e),process.exit(1)}})).command("npm [commands..]","npm - bridge",(e=>e.option("id",{type:"string"})),(async e=>{try{const t=await Ae(e),{projectDir:o}=t,i=e.commands||[],n=Object.keys(e).filter((t=>"_"!==t&&"$0"!==t&&"commands"!==t&&"id"!==t&&"object"!=typeof e[t])).map((t=>`--${t}=${e[t]}`)).join(" "),s=`npm ${i.join(" ")} ${n}`;Pe.exec(s,{cwd:o}),process.exit(0)}catch(e){console.error(e),process.exit(1)}})).command("node [commands..]","node - bridge",(e=>e.option("id",{type:"string"})),(async e=>{try{const t=await Ae(e),{projectDir:o}=t,i=e.commands||[],n=Object.keys(e).filter((t=>"_"!==t&&"$0"!==t&&"commands"!==t&&"id"!==t&&"object"!=typeof e[t])).map((t=>`--${t}=${e[t]}`)).join(" "),s=`node ${i.join(" ")} ${n}`;Pe.exec(s,{cwd:o}),process.exit(0)}catch(e){console.error(e),process.exit(1)}})).command("serve [commands..]","npm run serve - bridge",(e=>e.option("id",{type:"string"})),(async e=>{try{const t=await Ae(e),{projectDir:o}=t,i=e.commands||[],n=Object.keys(e).filter((t=>"_"!==t&&"$0"!==t&&"commands"!==t&&"id"!==t&&"object"!=typeof e[t])).map((t=>`--${t}=${e[t]}`)).join(" "),s=`npm run serve ${i.join(" ")} ${n}`;Pe.exec(s,{cwd:o}),process.exit(0)}catch(e){console.error(e),process.exit(1)}})).command("watch [commands..]","npm run watch - bridge",(e=>e.option("id",{type:"string"})),(async e=>{try{const t=await Ae(e),{projectDir:o}=t,i=e.commands||[],n=Object.keys(e).filter((t=>"_"!==t&&"$0"!==t&&"commands"!==t&&"id"!==t&&"object"!=typeof e[t])).map((t=>`--${t}=${e[t]}`)).join(" "),s=`npm run watch ${i.join(" ")} ${n}`;Pe.exec(s,{cwd:o}),process.exit(0)}catch(e){console.error(e),process.exit(1)}})).demandCommand(1,"You need at least one command before moving on").help().argv,module.exports={};
2
+ "use strict";var e=require("@flownet/lib-load-fnet-config"),t=require("path"),o=require("yargs/yargs"),i=require("yargs/helpers"),n=require("fs"),s=require("yaml"),a=require("shelljs"),r=require("@flownet/lib-render-templates-dir"),c=require("node:fs"),l=require("node:path"),d=require("js-yaml"),p=require("nunjucks"),m=require("lodash.clonedeep"),h=require("isobject"),f=require("axios"),y=require("@node-red/util"),u=require("semver"),w=require("uuid"),g=require("redis"),b=require("@flownet/lib-is-redis-online"),x=require("node:os"),k=require("lodash.merge"),j=require("@flownet/lib-atom-api-js"),v=require("qs"),D=require("@flownet/lib-execute-command-with-ipc-file"),_=require("@flownet/lib-parse-node-url"),T=require("@flownet/lib-list-npm-versions"),P=require("@flownet/lib-bpmn-from-flow"),S=require("@flownet/lib-parse-imports-js"),I=require("@flownet/lib-to-webos"),E=require("@flownet/lib-to-electron"),A=require("@flownet/lib-to-macos-app"),C=require("@flownet/lib-to-ios-app"),N=require("@flownet/lib-to-nextjs");const F=g,$=b;const{Api:O}=j,B=f.default,R=v;const M=N,q=m,J=k,L=u,K=l;const W=c,G=l,U=d,Y=a,z=p,H=m,V=h,X=f,Z=y,Q=u,{v4:ee}=w,te=async()=>{if(!await $({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=F.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e},oe=x,ie=k,ne=class{init({config:e,accessToken:t}){return new Promise(((o,i)=>{if(O.set_api_url(e.data.url),t)return O.set_req_token(t),void o(t);B({method:"POST",url:`${e.data.issuer}/protocol/openid-connect/token`,data:R.stringify(e.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{O.set_req_token(e.data.access_token),o(e.data.access_token)})).catch((e=>{O.set_req_token(),i(e)}))}))}},{Atom:se}=j,ae=D,re=_,ce=T,le=P,de=e,pe=S,me=I,he=E,fe=A,ye=C,ue=async({atom:e,target:t,onProgress:o,projectDir:i,dependencies:n})=>{o&&await o({message:"Deploying it as nextjs package."});t.params=J({name:"nextjs-app",version:"0.1.0"},t.params);const s=L.inc(t.params.version,"patch");t.params.version=s;const a=q(t);a.params.dependencies=q(n);const r={atom:e,target:a.params,projectDir:i,renderDir:K.resolve(i,"nextjs")};return{deployer:await M(r)}};var we=class{#e;#t;#o;#i;#n;#s;#a;#r;#c;#l;#d;#p;#m;#h;#f;#y;#u;#w;#g;#b;constructor(e){this.#e=new ne,this.#t=e,this.#s=[],this.#a={},this._expire_ttl=3600,this._expire_ttl_short=300}async _cache_set(e,t,o){this._redis_client&&await this._redis_client.SETEX(e,o||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async init(){this._redis_client=await te(),this.#l=this.#t.buildId||ee(),this.#y=this.#t.mode,this.#u=["all","deploy","build","file"].includes(this.#y),this.#w=["all","deploy","build"].includes(this.#y),this.#g=["all","deploy"].includes(this.#y),this.#b=["all","deploy","build","file","bpmn"].includes(this.#y),this.#p=this.#t.protocol,this.#d="BUILD:"+this.#l,this.#m=await(de({name:"atom",dir:this.#t.projectDir})?.data),this.#h=await(de({name:this.#t.npmConfig||"npm",dir:this.#t.projectDir})?.data),this.#f=await(de({name:this.#t.redConfig||"red",dir:this.#t.projectDir})?.data);try{await this.setInProgress({message:"Initialization started."}),await this.initAuth(),await this.initWorkflow(),await this.initFeatures(),await this.initDependencies();const e=await this.initNodeTree({workflow:this.#i});await this.initNodeTreeIndex({root:e}),await this.initNodeCalls({root:e}),await this.initNodeCallLibs({root:e}),await this.initNodeForms({root:e}),await this.initNodeFormLibs({root:e}),await this.initAtomLibsAndDeps({libs:e.context.libs,packageDependencies:this.#s}),await this.resolveNodeTree({root:e}),this.#c=e}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#t.id&&(this.#r=await this.#e.init({config:this.#m}))}async initWorkflow(){const e=this.#t.id;this.#o=this.#t.project?.workflowAtom||await se.get({id:e}),this.#i="string"==typeof this.#o.doc.content?U.load(this.#o.doc.content):this.#o.doc.content;let t=this.#o.doc.bundleName;t=t||(this.#o.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#o.doc.bundleName=t,this.#o.type=this.#o.type||"workflow"}async initFeatures(){this.#o.doc.features=this.#o.doc.features||{};const e=this.#o.doc.features;e.print_steps=e.print_steps||e.print?.steps||!1,e.form_enabled=!0===this.#o.doc.form||!0===this.#o.doc.form?.enabled||!0===e.form||!0===e.form?.enabled,e.browser_autorun=!0===e.browser?.autorun;const t={cjs:{format:"cjs",context:e.form_enabled?"window":"global",babel:!1,browser:!1,copy:!0,replace:!0},cjsx:{format:"cjs",context:e.form_enabled?"window":"global",babel:!1,browser:!0,replace:!0},esm:{format:"esm",context:e.form_enabled?"window":"global",babel:!1,browser:!1,replace:!0},esmx:{format:"esm",browser:!0,babel:!0,context:e.form_enabled?"window":"global",replace:!0,browsersync:!0},iife:{format:"iife",context:e.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0}};!0===e.webos&&(t.webos={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,babel_options:{targets:{chrome:"79"}}}),e.babel_options=e.babel_options||e.babel?.options||{targets:{browsers:"last 9 versions, not dead",node:"18"}},e.browsersync_options=ie({server:".",startPath:"/",files:["./app/**/*","./dist/**/*"]},e.browsersync_options||e.browsersync?.options||{}),e.replace_options=ie({},e.replace_options||e.replace?.options||{}),e.terser_options=ie({},e.terser_options||e.terser?.options||{}),e.css_options=ie({},e.css_options||e.css?.options||{}),e.wasm_options=ie({},e.wasm_options||e.wasm?.options||{}),e.copy_options=ie({},e.copy_options||e.copy?.options||{}),e.json_options=ie({},e.json_options||e.json?.options||{}),e.rollup_output=ie(t,e.rollup_output||e.rollup?.output||e.rollup||{});const o=Object.keys(t);for(const i of o){const o=t[i];o&&(o.babel_options=o.babel_options||e.babel_options,o.browsersync_options=ie(e.browsersync_options,o.browsersync_options),o.replace_options=ie(e.replace_options,o.replace_options),o.terser_options=ie(e.terser_options,o.terser_options),o.css_options=ie(e.css_options,o.css_options),o.wasm_options=ie(e.wasm_options,o.wasm_options),o.copy_options=ie(e.copy_options,o.copy_options),o.json_options=ie(e.json_options,o.json_options),e.form_enabled&&(o.babel=!0))}e.babel_enabled=o.some((t=>!0===e.rollup_output[t].babel)),e.browser_enabled=o.some((t=>!0===e.rollup_output[t].babel)),e.browsersync_enabled=o.some((t=>!0===e.rollup_output[t].browsersync)),e.browsersync_enabled=e.browsersync_enabled&&(e.form_enabled||!0===e.browser_autorun),e.multiple_enabled=e.multiple_enabled||!0===e.multiple||!0===e.multiple?.enabled,e.wasm_enabled=!0===e.wasm||e.wasm&&!1!==e.wasm?.enabled,e.css_enabled=!0===e.css||e.css&&!1!==e.css?.enabled,e.json_enabled=!0===e.json||e.json&&!1!==e.json?.enabled,e.terser_enabled=!0===e.terser||e.terser&&!1!==e.terser?.enabled,e.copy_enabled=e.copy_enabled||e.copy&&!1!==e.copy?.enabled,e.bin_name=e.bin_name||e.bin?.name||e.bin,e.bin_enabled=e.bin_name&&("string"==typeof e.bin_name)(e.bin_enabled||!1!==e.bin?.enabled),e.dependency_auto_enabled=!1!==e.dependency_auto&&!1!==e.dependency_auto?.enabled,e.npm_install_flags=e.npm_install_flags||"",e.index_html_enabled=!(!0===this.#o.doc.features.multiple_enabled||!0!==this.#o.doc.features.form_enabled),e.bin_file_enabled=!(!0===this.#o.doc.features.multiple_enabled||!0===this.#o.doc.features.form_enabled)}async initDependencies(){this.#s.push({package:"eventemitter3",version:"^4.0"}),this.#s.push({package:"get-value",version:"^3.0"}),this.#s.push({package:"set-value",version:"^4.1"}),this.#o.doc.features.form_enabled?(this.#s.push({package:"react",version:"^18.2"}),this.#s.push({package:"react-dom",version:"^18.2"}),this.#s.push({package:"@flownet/react-app",version:"^0.1"}),this.#s.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#s.push({package:"yargs",version:"^17"}),this.#s.push({package:"chalk",version:"^4"})}async initWorkflowDir(){const e=this.#t.projectDir,t=this.#t.coreDir;let o;const i=["node_modules"];if(W.existsSync(e)&&W.readdirSync(e).forEach((t=>{i.includes(t)||(o=Y.rm("-rf",G.join(e,t)))})),o=Y.exec(`mkdir -p ${e}`),0!==o.code)throw new Error("Couldnt create workflow dir.");if(o=Y.exec(`mkdir ${e}/src`),0!==o.code)throw new Error("Couldnt create workflow/src dir.");if(o=Y.exec(`cp -a ${t} ${e}/src`),0!==o.code)throw new Error("Couldnt create workflow/src/core dir.");if(o=Y.exec(`mkdir -p ${e}/src/libs`),0!==o.code)throw new Error("Couldnt create workflow/src/libs dir.");if(o=Y.exec(`mkdir -p ${e}/src/default/blocks`),0!==o.code)throw new Error("Couldnt create workflow/src/default/blocks dir.")}async initNunjucks(){const e=this.#t.templateDir;this.#n=z.configure(e,{watch:!1,dev:!0})}async initNodeTree({workflow:e}){const t=Object.keys(e),o={definition:e,name:void 0,type:"root",parent:void 0,childs:[],blockAutoJumpToParent:!0,blockAutoJumpToSibling:!0,index:0,depth:0,context:{libs:[],atom:this.#o}};t.forEach((t=>{const i={name:t,type:"main"===t?"workflow":"subworkflow",childs:[],parent:o,definition:e[t],index:o.childs.length,depth:o.depth+1,context:{},blockAutoJumpToParent:!0};o.childs.push(i)}));for await(const e of o.childs)await this.initNode({node:e});return o}async initNode({node:e}){if(e.workflow=e.parent.workflow||e,e.depth=e.parent.depth+1,e.definition.hasOwnProperty("try")&&e.definition.hasOwnProperty("except"))await this.initBlockTypeTryExcept({node:e});else if(e.definition.hasOwnProperty("for"))await this.initBlockTypeFor({node:e});else if(e.definition.hasOwnProperty("switch"))await this.initBlockTypeSwitch({node:e});else if(e.definition.hasOwnProperty("parallel"))await this.initBlockTypeParallel({node:e});else if(e.definition.hasOwnProperty("raise"))await this.initBlockTypeRaise({node:e});else if(e.definition.hasOwnProperty("return"))await this.initBlockTypeReturn({node:e});else if(e.definition.hasOwnProperty("assign"))await this.initBlockTypeAssign({node:e});else if(e.definition.hasOwnProperty("call"))await this.initBlockTypeCall({node:e});else if(e.definition.hasOwnProperty("form"))await this.initBlockTypeForm({node:e});else if(e.definition.hasOwnProperty("shell"))await this.initBlockTypeShell({node:e});else if(e.definition.hasOwnProperty("config"))await this.initBlockTypeConfig({node:e});else if(e.definition.hasOwnProperty("operation"))await this.initBlockTypeOperation({node:e});else if(e.definition.hasOwnProperty("steps"))await this.initBlockTypeSteps({node:e});else{if(!e.definition.hasOwnProperty("next"))throw new Error("Undefined step type.");await this.initBlockTypeJump({node:e})}}async initBlockTypeTryExcept({node:e}){if(e.type="tryexcept",e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!0,e.definition.try){const t="try",o={name:t,childs:[],parent:e,definition:e.definition[t],index:e.childs.length,context:{}};e.childs.push(o),await this.initNode({node:o})}if(e.definition.except){const t="except",o={name:t,childs:[],parent:e,definition:e.definition[t],index:e.childs.length,context:{}};e.childs.push(o),await this.initNode({node:o})}}async initBlockTypeSwitch({node:e}){e.type="switch",e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0;for(let t=0;t<e.definition.switch.length;t++){const o=e.definition.switch[t],i={name:`${t}`,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(i),o.hasOwnProperty("steps")?await this.initNode({node:i}):(i.depth=e.depth+1,i.type="jump")}}async initBlockTypeFor({node:e}){e.type="for",e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!1;for(let t=0;t<e.definition.for.steps.length;t++){const o=e.definition.for.steps[t],i=Object.keys(o)[0],n={name:i,childs:[],parent:e,definition:o[i],index:e.childs.length,context:{}};e.childs.push(n),await this.initNode({node:n})}}async initBlockTypeSteps({node:e}){e.type||(e.type="steps");const t=e.definition.steps||[];for await(const o of t){const t=Object.keys(o)[0],i={name:t,childs:[],parent:e,definition:o[t],index:e.childs.length,context:{}};e.childs.push(i),await this.initNode({node:i})}}async initBlockTypeAssign({node:e}){e.type="assign"}async initBlockTypeCall({node:e}){e.type="call";for(let t=0;t<e.definition.modules?.length;t++){const o=e.definition.modules[t],i=Object.keys(o)[0],n={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,index:e.childs.length,context:{}};e.childs.push(n),await this.initNode({node:n})}}async initBlockTypeForm({node:e}){e.type="form";for(let t=0;t<e.definition.modules?.length;t++){const o=e.definition.modules[t],i=Object.keys(o)[0],n={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,index:e.childs.length,context:{}};e.childs.push(n),await this.initNode({node:n})}}async initBlockTypeReturn({node:e}){e.type="return"}async initBlockTypeRaise({node:e}){e.type="raise"}async initBlockTypeJump({node:e}){e.type="jump"}async initBlockTypeOperation({node:e}){e.type="operation"}async initBlockTypeParallel({node:e}){e.type="parallel"}async initBlockTypeShell({node:e}){const t="shell",o=e.definition,i=typeof o[t];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${t} usage`);o.call="npm:@fnet/shell",o.args="string"===i?{cmd:o[t]}:o[t],delete o[t],await this.initBlockTypeCall({node:e})}async initBlockTypeConfig({node:e}){const t="config",o=e.definition,i=typeof o[t];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${t} usage`);o.call="npm:@fnet/config",o.args="string"===i?{name:o[t]}:o[t],delete o[t],await this.initBlockTypeCall({node:e})}async initNodeTreeIndex({root:e}){const t={};e.indexKey="/";for await(const o of e.childs)await this.initNodeIndex({node:o,index:t});return e.context.index=t,t}async initNodeIndex({node:e,index:t}){const o=G.join(e.parent.indexKey,e.name);e.indexKey=o,t[o]=e;const i=[];let n=e;for(;n?.parent;)i.push(n.index),n=n.parent;i.reverse(),e.codeKey=`B_${i.join("_")}_${e.type}`,e.pathKey=`${i.join(".")}`;for await(const o of e.childs)await this.initNodeIndex({node:o,index:t})}async initNodeCalls({root:e}){const t=e.context.index,o=[];for await(const e of Object.keys(t)){const i=t[e];"call"===i.type&&o.push(i)}return e.context.calls=o,o}async initNodeCallLibs({root:e}){const t=[],o=e.context.calls;for await(const e of o){const o=e.definition.call,i=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:o,type:"atom"},n=t.find((e=>e.name===i.name&&e.type===i.type));n||t.push(i),e.target=n||i}return e.context.callLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeCallTarget({refNode:e,curNode:t}){if(!t)return;const o=e.definition.call,i=t.childs.find((e=>e.name===o&&"subworkflow"===e.type));return i||await this.findNodeCallTarget({refNode:e,curNode:t.parent})}async initNodeForms({root:e}){const t=e.context.index,o=[];for await(const e of Object.keys(t)){const i=t[e];"form"===i.type&&o.push(i)}return e.context.forms=o,o}async initNodeFormLibs({root:e}){const t=[],o=e.context.forms;for await(const e of o){const o=e.definition.form,i=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:o,type:"atom"},n=t.find((e=>e.name===i.name&&e.type===i.type));n||t.push(i),e.target=n||i}return e.context.formLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeFormTarget({refNode:e,curNode:t}){if(!t)return;const o=e.definition.form,i=t.childs.find((e=>e.name===o&&"subworkflow"===e.type));return i||await this.findNodeFormTarget({refNode:e,curNode:t.parent})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const o=e.filter((e=>"atom"===e.type));for(let e=0;e<o.length;e++){const i=o[e],n=await this.findAtomLibrary({url:i.name});i.atom=n;const s=n.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));s?.forEach((e=>{const o=t.find((t=>t.package===e.package));o?"string"==typeof e.path?(o.path||[]).some((t=>t===e.path))||(o.path=o.path||[],o.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(o.path||[]).some((t=>t===e))||(o.path=o.path||[],o.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const t=re({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#p),"ac:"===t.protocol){const o=t.pathname.split("/");if(1===o.length)return await se.first({where:{name:e,parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===o.length){const e=await se.first({where:{name:o[0],parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"folder"}});return await se.first({where:{name:o[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===t.protocol){const e=G.resolve(this.#t.projectSrcDir,`${t.pathname}.js`),o=[],i=await pe({file:e});for await(const e of i.required){if("npm"!==e.type)continue;const t=(await ce({name:e.package,groupBy:{minor:!0}}))[0][0];o.find((t=>t.package===e.package))||o.push({package:e.package,subpath:e.subpath,version:`^${t}`,type:"npm"})}return{name:t.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:o},protocol:t.protocol}}if("npm:"===t.protocol){const e=(await ce({name:t.pathname,groupBy:{minor:!0}}))[0][0];return{name:t.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:[{package:t.pathname,version:`^${e}`,type:"npm"}]},protocol:t.protocol}}}}resolveNextBlock({node:e}){const t=e.definition;if("end"===t.next);else if("stop"===t.next);else if("none"===t.next);else if(t.next){let o=e.parent;for(;o.parent;){const i=o.childs.find((e=>e.name===t.next));if(i){e.context.next=i;break}o=o.parent}}else{if(!0===e.module)return;let t=e.parent,o=e.index+1;for(;t.parent;){if(t.blockAutoJumpToParent&&!0===t.blockAutoJumpToSibling){if(!0===t.blockAutoJumpToParent)break;o=t.index+1,t=t.parent;continue}const i=t.childs.find((e=>e.index===o));if(i){e.context.next=i;break}if(!0===t.blockAutoJumpToParent)break;o=t.index+1,t=t.parent}}}async resolveNodeTree({root:e}){for await(const t of e.childs)await this.resolveTypeWorkflow({node:t})}async resolveTypeWorkflow({node:e}){e.context.transform=H(e.definition);const t=e.context.transform;for(let e=0;e<t.params?.length;e++){const o=t.params[e];if("string"==typeof o)t.params[e]={key:o,hasDefault:!1};else{const i=Object.keys(o)[0];t.params[e]={key:i,hasDefault:!0,default:o[i]}}}e.context.next=e.childs[0];for await(const t of e.childs)await this.resolveType({node:t})}async resolveType({node:e}){"assign"===e.type?await this.resolveTypeAssign({node:e}):"return"===e.type?await this.resolveTypeReturn({node:e}):"call"===e.type?await this.resolveTypeCall({node:e}):"form"===e.type?await this.resolveTypeForm({node:e}):"raise"===e.type?await this.resolveTypeRaise({node:e}):"switch"===e.type?await this.resolveTypeSwitch({node:e}):"jump"===e.type?await this.resolveTypeJump({node:e}):"tryexcept"===e.type?await this.resolveTypeTryExcept({node:e}):"for"===e.type?await this.resolveTypeFor({node:e}):"operation"===e.type?await this.resolveTypeOperation({node:e}):"steps"===e.type&&await this.resolveTypeSteps({node:e});for await(const t of e.childs)await this.resolveType({node:t})}async resolveTypeAssign({node:e}){e.context.transform=H(e.definition);const t=e.context.transform;for(let e=0;e<t.assign?.length;e++){let o=t.assign[e],i=Object.keys(o)[0],n=o[i],s=this.transformValue(i),a=this.transformValue(n),r={key:JSON.stringify(s),value:JSON.stringify(a)};r.key=this.replaceExpression(r.key),r.value=this.replaceExpression(r.value),t.assign[e]=r}this.resolveTypeCommon({node:e}),this.resolveNextBlock({node:e})}async resolveTypeSteps({node:e}){e.context.next=e.childs[0]}async resolveTypeReturn({node:e}){e.context.transform=e.context.transform||H(e.definition),this.resolveTypeCommon({node:e})}async resolveTypeCall({node:e}){e.context.transform=e.context.transform||H(e.definition);const t=e.context.transform;t.args&&(t.args=this.transformExpression(t.args)),t.result&&(t.result=this.transformExpression(t.result));const o=e.workflow.parent;e.context.lib=o.context.libs.find((e=>e.name===t.call)),this.resolveTypeCommon({node:e}),this.resolveNextBlock({node:e})}async resolveTypeForm({node:e}){e.context.transform=e.context.transform||H(e.definition);const t=e.context.transform;t.props&&(t.props=this.transformExpression(t.props));const o=e.workflow.parent;e.context.lib=o.context.libs.find((e=>e.name===t.form)),this.resolveTypeCommon({node:e}),this.resolveNextBlock({node:e})}async resolveTypeRaise({node:e}){e.context.transform=e.context.transform||H(e.definition);const t=e.context.transform;t.raise=this.transformExpression(t.raise),this.resolveTypeCommon({node:e})}async resolveTypeSwitch({node:e}){e.context.transform=e.context.transform||H(e.definition),e.context.transform;for(const t of e.childs)t.context.transform=t.context.transform||H(t.definition),t.context.transform.condition=this.replaceExpression(JSON.stringify(this.transformValue(t.definition.condition)));this.resolveTypeCommon({node:e}),this.resolveNextBlock({node:e})}async resolveTypeJump({node:e}){e.context.transform=e.context.transform||H(e.definition);const t=e.context.transform;t.next=this.transformExpression(t.next),this.resolveTypeCommon({node:e}),this.resolveNextBlock({node:e})}async resolveTypeTryExcept({node:e}){if(e.context.transform=e.context.transform||H(e.definition),e.context.transform,e.context.try=e.childs.find((e=>"try"===e.name)),e.context.except=e.childs.find((e=>"except"===e.name)),e.context.except){const t=e.context.except;t.context.transform=t.context.transform||H(t.definition),t.context.transform.hasOwnProperty("as")||(t.context.transform.as="error")}this.resolveTypeCommon({node:e}),this.resolveNextBlock({node:e})}async resolveTypeFor({node:e}){e.context.transform=e.context.transform||H(e.definition);e.context.transform.for.in=this.transformExpression(e.definition.for.in),this.resolveTypeCommon({node:e}),this.resolveNextBlock({node:e})}async resolveTypeOperation({node:e}){e.context.transform=e.context.transform||H(e.definition),this.resolveTypeCommon({node:e})}resolveTypeCommon({node:e}){const t=e.context.transform;t.hasOwnProperty("operation")&&(t.operation=this.transformValue(t.operation)),t.hasOwnProperty("page")&&(t.page=this.transformExpression(t.page)),t.hasOwnProperty("print")&&(t.print=this.transformExpression(t.print)),t.hasOwnProperty("sleep")&&(t.sleep=this.transformExpression(t.sleep)),t.hasOwnProperty("assert")&&(t.assert=this.transformExpression(t.assert))}async createAtomLibFiles({root:e}){await this.setInProgress({message:"Creating external lib files."}),this.#o.typesDir="./types";const t=e.context.libs.filter((e=>"atom"===e.type));for(let e=0;e<t.length;e++){const o=t[e].atom,i=this.#t.projectDir;if("local:"===o.protocol){const e=G.resolve(this.#t.projectSrcDir,`${o.fileName||o.name}.js`),t=G.relative(`${this.#t.projectDir}/src/default/blocks`,e);if(!W.existsSync(e)){W.mkdirSync(G.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",W.writeFileSync(e,t,"utf8")}o.relativePath=t,this.#o.typesDir="./types/target/src"}else if("npm:"===o.protocol)o.relativePath=o.name;else{const e=`${i}/src/libs/${o.id}.js`,t=o.doc.contents?.find((e=>"esm"===e.format))||o.doc;W.writeFileSync(e,t.content,"utf8")}}}async createEngine({root:e}){await this.setInProgress({message:"Creating engine file."});const t=this.#t.templateDir,o=z.compile(W.readFileSync(G.resolve(t,"src/default/engine.js.njk"),"utf8"),this.#n).render({...e,ui:{package:"@flownet/react-app"}}),i=this.#t.projectDir,n=G.resolve(i,"src/default/index.js");W.writeFileSync(n,o,"utf8")}async createNodeTree({root:e}){await this.setInProgress({message:"Creating block files."});for await(const t of e.childs)await this.createTypeWorkflow({node:t})}async createTypeWorkflow({node:e}){const t=this.#t.templateDir,o=z.compile(W.readFileSync(G.resolve(t,"src/default/workflow.js.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=G.resolve(i,`src/default/${e.codeKey}.js`);W.writeFileSync(n,o,"utf8");for await(const t of e.childs)await this.createType({node:t})}async createType({node:e}){switch(e.type){case"assign":case"steps":case"return":case"call":case"form":case"raise":case"switch":case"jump":case"tryexcept":case"for":case"operation":this.createBlockFromTemplate({node:e})}for await(const t of e.childs)await this.createType({node:t})}createBlockFromTemplate({node:e}){const t=this.getBlockTemplate({node:e});e.context.render=t.render(e),this.createStepFile({node:e})}getBlockTemplate({node:e}){let t=this.#a[e.type];if(t)return t;const o=this.#t.templateDir;return t=z.compile(W.readFileSync(G.resolve(o,`src/default/blocks/${e.type}.js.njk`),"utf8"),this.#n),this.#a[e.type]=t,t}createStepFile({node:e}){const t=this.#t.projectDir,o=`${e.codeKey}.js`,i=G.resolve(t,`src/default/blocks/${o}`);W.writeFileSync(i,e.context.render,"utf8"),e.context.fileName=o,e.context.filePath=i}transformExpression(e){let t=this.transformValue(e);return t=JSON.stringify(t),t=this.replaceExpression(t),t}transformValue(e){if(Array.isArray(e))for(let t=0;t<e.length;t++)e[t]=this.transformValue(e[t]);else if(V(e)){const t=Object.keys(e);for(let o=0;o<t.length;o++)e[t[o]]=this.transformValue(e[t[o]])}return e}replaceExpression(e){return e.replaceAll(/(?<outer>"\${(?<inner>[^{]*)}")/g,"$2")}async createRollup(){await this.setInProgress({message:"Creating rollup file."});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},t=this.#t.templateDir,o=z.compile(W.readFileSync(G.resolve(t,"rollup.config.js.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=G.resolve(i,"rollup.config.js");W.writeFileSync(n,o,"utf8")}async createPackageJSON(){await this.setInProgress({message:"Creating package.json."});const e=this.#s.find((e=>"react"===e.package)),t=this.#s.find((e=>"react-dom"===e.package));e&&!t?this.#s.push({package:"react-dom",version:e.version}):e&&t&&(t.version=e.version),e&&(this.#s.find((e=>"@emotion/react"===e.package))||this.#s.push({package:"@emotion/react",version:"^11"}),this.#s.find((e=>"@emotion/styled"===e.package))||this.#s.push({package:"@emotion/styled",version:"^11"}));const o={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},i=this.#t.templateDir,n=z.compile(W.readFileSync(G.resolve(i,"package.json.njk"),"utf8"),this.#n).render(o),s=this.#t.projectDir,a=G.resolve(s,"package.json");W.writeFileSync(a,n,"utf8")}async createBin(){if(!0!==this.#o.doc.features.bin_file_enabled)return;await this.setInProgress({message:"Creating bin file."});const e=this.#t.projectDir;if(0!==Y.exec(`mkdir ${e}/bin`).code)throw new Error("Couldnt create library/bin dir.");const t={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},o=this.#t.templateDir;let i=z.compile(W.readFileSync(G.resolve(o,"bin/index.js.njk"),"utf8"),this.#n).render(t),n=G.resolve(e,"bin/index.js");W.writeFileSync(n,i,"utf8")}async createIndexHtml(){if(!this.#o.doc.features.index_html_enabled)return;await this.setInProgress({message:"Creating index.html."});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s,ts:Date.now()},t=this.#t.templateDir,o=z.compile(W.readFileSync(G.resolve(t,"index.html.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=G.resolve(i,"index.html");W.writeFileSync(n,o,"utf8")}async createAutoRun(){if(!0===this.#o.doc.features.multiple||!this.#o.doc.features.browser_enabled||!this.#o.doc.features.browser_autorun)return;await this.setInProgress({message:"Creating autorun.html."});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s,ts:Date.now()},t=this.#t.templateDir,o=z.compile(W.readFileSync(G.resolve(t,"autorun.html.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=G.resolve(i,"autorun.html");W.writeFileSync(n,o,"utf8")}async createTsConfig(){await this.setInProgress({message:"Creating tsconfig.json."});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},t=this.#t.templateDir,o=z.compile(W.readFileSync(G.resolve(t,"tsconfig.json.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=G.resolve(i,"tsconfig.json");W.writeFileSync(n,o,"utf8")}async createGitIgnore(){await this.setInProgress({message:"Creating .gitignore"});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},t=this.#t.templateDir,o=z.compile(W.readFileSync(G.resolve(t,".gitignore.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=G.resolve(i,".gitignore");W.writeFileSync(n,o,"utf8")}async createGitIgnore(){await this.setInProgress({message:"Creating .gitignore"});const e={workflowAtom:this.#o,atom:this.#o,packageDependencies:this.#s},t=this.#t.templateDir,o=z.compile(W.readFileSync(G.resolve(t,".gitignore.njk"),"utf8"),this.#n).render(e),i=this.#t.projectDir,n=G.resolve(i,".gitignore");W.writeFileSync(n,o,"utf8")}async createProjectYaml(){const e="flow.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const{content:o,...i}=this.#o.doc,n={content:U.dump(i)},s=this.#t.templateDir,a=z.compile(W.readFileSync(G.resolve(s,`${e}.njk`),"utf8"),this.#n).render(n),r=this.#t.projectDir,c=G.resolve(r,`${e}`);W.writeFileSync(c,a,"utf8")}async createProjectMainYaml(){const e="flow.main.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const{content:o,...i}=this.#o.doc,n={content:o},s=this.#t.templateDir,a=z.compile(W.readFileSync(G.resolve(s,`${e}.njk`),"utf8"),this.#n).render(n),r=this.#t.projectDir,c=G.resolve(r,`${e}`);W.writeFileSync(c,a,"utf8")}async createProjectReadme(){const e="readme.md",t=`Creating ${e}`;if(await this.setInProgress({message:t}),this.#t.project?.readme){const t={content:this.#t.project.readme.doc.content},o=this.#t.templateDir,i=z.compile(W.readFileSync(G.resolve(o,`${e}.njk`),"utf8"),this.#n).render(t),n=this.#t.projectDir,s=G.resolve(n,`${e}`);W.writeFileSync(s,i,"utf8")}else if(this.#o.id){const t=await se.first({type:"wiki",parent_id:this.#o.id});if(!t||"markdown"!==t.doc?.["content-type"])return;const{content:o,...i}=t.doc,n={content:o},s=this.#t.templateDir,a=z.compile(W.readFileSync(G.resolve(s,`${e}.njk`),"utf8"),this.#n).render(n),r=this.#t.projectDir,c=G.resolve(r,`${e}`);W.writeFileSync(c,a,"utf8")}}async createToYargs(){await this.setInProgress({message:"Creating yargs."});const e={},t=this.#o.doc.inputs||[],o=[];t.forEach((t=>{if(!1===t.cli||!t.name)return;t.import&&o.push(t);const i={};t.type&&(i.type=t.type),t.default&&(i.default=t.default),t.choices&&(i.choices=t.choices),(t.describe||t.description)&&(i.describe=t.describe||t.description),t.alias&&(i.alias=t.alias),!0===t.required&&(i.required=!0),!0===t.hidden&&(i.hidden=!0),!0===t.array&&(i.array=!0),!0===t.normalize&&(i.normalize=!0),t.nargs&&(i.nargs=t.nargs),e[t.name]=i}));const i={options:e,imports:o,atom:this.#o},n=this.#t.templateDir,s=z.compile(W.readFileSync(G.resolve(n,"src/default/to.yargs.js.njk"),"utf8"),this.#n).render(i),a=this.#t.projectDir,r=G.resolve(a,"src/default/to.yargs.js");W.writeFileSync(r,s,"utf8")}async runBuildScripts(){const e=this.#t.projectDir;await this.setInProgress({message:"Installing npm packages."});let t=Y.exec(`npm install ${this.#o.doc.features.npm_install_flags}`,{cwd:e});if(0!==t.code)throw new Error("Couldnt install npm packages.");if(await this.setInProgress({message:"Prettifiying source files."}),t=Y.exec("prettier --write src/**/* bin/* *.{js,json,yaml,html} --no-error-on-unmatched-pattern",{cwd:e}),0!==t.code)throw new Error("Couldnt format files.");if(await this.setInProgress({message:"Creating .d.ts"}),t=Y.exec("tsc",{cwd:e}),0!==t.code)throw new Error("Couldnt create .d.ts files.");if(await this.setInProgress({message:"Building main project."}),t=Y.exec("npm run build",{cwd:e}),0!==t.code)throw new Error("Couldnt build workflow project.")}async runPrettifier(){const e=this.#t.projectDir,t=Y.exec("prettier --write .",{cwd:G.resolve(e,"src")});if(0!==t.code)throw new Error(t.stderr)}async deploy(){if(await this.setInProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let o=e[t];await this.deployProject({deploymentProject:o}),!0===o.isDirty&&await o.save()}}else if(this.#o.id){const e=await se.list({type:"workflow.deploy",parent_id:this.#o.id});for(let t=0;t<e.length;t++){let o=e[t];await this.deployProject({deploymentProject:o}),!0===o.isDirty&&(o=await se.update(o,{id:o.id}))}}}async deployProject(e){const{deploymentProject:t}=e,o=t.doc.targets;for(let e=0;e<o.length;e++){const i=o[e];await this.deployProjectTarget({deploymentProject:t,deploymentProjectTarget:i})}}async deployProjectTarget(e){const{deploymentProjectTarget:t,deploymentProject:o}=e;if(!0===t.enabled)if(t.name===this.#m.env.ATOM_DEPLOY_LIBRARY_TARGET)await this.deployAsWorkflowLib(e);else if(t.name===this.#m.env.ATOM_DEPLOY_RED_TARGET)await this.deployAsRedFlow(e);else if(t.name===this.#m.env.ATOM_DEPLOY_NPM_TARGET)await this.deployAsNpm(e);else if("pm"===t.name)await this.deployAsPm(e);else if("gitlab"===t.name)await this.deployAsGitlab(e);else if("webos"===t.name)await this.deployAsWebos(e);else if("electron"===t.name)await this.deployAsElectron(e);else if("macos-app"===t.name)await this.deployAsMacOSApp(e);else if("ios-app"===t.name)await this.deployAsIOSApp(e);else{let e;if("nextjs"===t.name&&(e=ue),!e)return;await e({atom:this.#o,target:t,onProgress:this.setInProgress.bind(this),projectDir:this.#t.projectDir,dependencies:this.#s}),t.build={id:this.#l,ts:Date.now()},o.isDirty=!0}}async deployAsWorkflowLib(e){await this.setInProgress({message:"Deploying it as workflow lib."});const{deploymentProject:t,deploymentProjectTarget:o}=e;let i,n,s,a=o.deploy.name.split("/");if(1===a.length)n=this.#m.env.ATOM_LIBRARIES_ID,s=o.deploy.name;else{if(2!==a.length)throw new Error("Wrong name path.");{const e=await se.first({where:{name:a[0],parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");n=e.id,s=a[1]}}if(!0===o.dryRun)return;if(t.isDirty=!0,o.build={id:this.#l,ts:Date.now()},o.deploy.id){if(i=await se.get({id:o.deploy.id}),!i)return}else{if(i=await se.create({parent_id:n,doc:{name:s,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!i)return;o.deploy.id=i.id}const r=this.#t.projectDir;i.doc.contents=[{content:W.readFileSync(G.resolve(r,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:W.readFileSync(G.resolve(r,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:W.readFileSync(G.resolve(r,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],i.doc.name=s,i.doc.dependencies=this.#s,i.doc.subtype="workflow",i=await se.update(i,{id:i.id})}async deployAsRedFlow(e){await this.setInProgress({message:"Deploying it as node-red flow."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=this.#t.templateDir,s=this.#o;let a;if("simple"===o.deploy.template)a={atom:s,packageDependencies:this.#s,red:{tab:{id:o.deploy.id||Z.util.generateId(),label:`WF/${s.id?s.id:oe.hostname()}/${s.name}/${o.deploy.name||o.deploy.template}`},function:{id:Z.util.generateId(),name:s.doc.name,initialize:{content:W.readFileSync(G.resolve(i,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:s.doc.bundleName}},inject:{id:Z.util.generateId(),...o.deploy.params?.inject,payload:"json"===o.deploy.params?.inject?.payloadType?`'${JSON.stringify(o.deploy.params?.inject?.payload)}'`:o.deploy.params?.inject?.payload},debug:{id:Z.util.generateId()}}};else if("cronjob"===o.deploy.template){let e=o.deploy.params?.schedules?H(o.deploy.params?.schedules):void 0;e?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),a={atom:s,packageDependencies:this.#s,red:{tab:{id:o.deploy.id||Z.util.generateId(),label:`WF/${s.id?s.id:oe.hostname()}/${o.deploy.name||o.deploy.template}`},function:{id:Z.util.generateId(),name:s.doc.name,initialize:{content:W.readFileSync(G.resolve(i,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:s.doc.bundleName}},cronjob:{id:Z.util.generateId(),schedules:e},debug:{id:Z.util.generateId()}}}}else{if("http"!==o.deploy.template)return;a={atom:s,packageDependencies:this.#s,red:{tab:{id:o.deploy.id||Z.util.generateId(),label:`WF/${s.id?s.id:oe.hostname()}/${o.deploy.name||o.deploy.template}`},function:{id:Z.util.generateId(),name:s.doc.name,initialize:{content:W.readFileSync(G.resolve(i,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:s.doc.bundleName}},httpin:{id:Z.util.generateId(),method:o.deploy.params.method||"get",url:o.deploy.params.url},httpout:{id:Z.util.generateId()},debug:{id:Z.util.generateId()}}}}let r=z.compile(W.readFileSync(G.resolve(n,`deploy/node-red/${o.deploy.template}.yaml.njk`),"utf8"),this.#n).render(a);if(W.writeFileSync(G.resolve(i,"node-red.yaml"),r),r=U.load(r),!0===o.dryRun)return;t.isDirty=!0,o.build={id:this.#l,ts:Date.now()};const c=o.deploy.url||this.#f.env.RED_URL,l={};if(!1!==o.deploy.auth&&(l.Authorization="Bearer "+this.#r),o.deploy.id)!0===o.actions?.delete?(await X({method:"DELETE",url:`${c}/flow/${o.deploy.id}`,headers:l}),delete o.actions.delete,delete o.deploy.id,o.enabled=!1):await X({method:"PUT",url:`${c}/flow/${o.deploy.id}`,data:r,headers:l});else{const e=await X({method:"POST",url:`${c}/flow`,data:r,headers:l});o.deploy.id=e.data.id}}async deployAsNpm(e){await this.setInProgress({message:"Deploying it as npm package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=G.resolve(i,"package.json"),s=W.readFileSync(n),a=JSON.parse(s);a.name=o.deploy.params.name,a.version=Q.inc(o.deploy.params.version,"patch");const r=o.deploy.params.bin?.name||o.deploy.params.bin;if(!1!==o.deploy.params.bin?.enabled&&r&&"string"==typeof r&&(a.bin={[r]:"bin/index.js",[this.#o.doc.name]:"bin/index.js"}),delete a.scripts,delete a.devDependencies,a.scripts={serve:"npx serve ."},W.writeFileSync(n,JSON.stringify(a,null,"\t")),W.writeFileSync(G.resolve(i,".npmrc"),`//registry.npmjs.org/:_authToken=${this.#h.env.NPM_TOKEN}`),!0===o.dryRun)return;if(0!==Y.exec("npm publish --access public",{cwd:i}).code)throw new Error("Couldnt publish to npm");W.writeFileSync(n,s),t.isDirty=!0,o.deploy.params.version=a.version,o.build={id:this.#l,ts:Date.now()}}async deployAsPm(e){await this.setInProgress({message:"Deploying it as pm package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=G.resolve(i,"package.json"),s=W.readFileSync(n),a=JSON.parse(s);a.name=o.deploy.params.name,a.version=Q.inc(o.deploy.params.version,"patch"),delete a.scripts,delete a.devDependencies,W.writeFileSync(n,JSON.stringify(a,null,"\t"));const{file:r,data:c}=await de({name:o.deploy.params.pm?.config||this.#t.pmConfig||"pm",dir:this.#t.projectDir});let l="fnet-upload-files-to-gcs";if(l+=` --projectId='${c.env.PM_PROJECT_ID}'`,l+=` --bucketName='${c.env.PM_BUCKET_NAME}'`,l+=` --keyFilename='${G.resolve(G.dirname(r),c.env.PM_UPLOADER_KEY_FILE)}'`,l+=` --dir='${i}'`,l+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",l+=` --destDir='${a.name}/${a.version}'`,l+=" --headers.cacheControl='public, max-age=31536000, immutable'",!0===o.dryRun&&(l+=" --dryRun"),await ae({command:l}),W.writeFileSync(n,s),!0!==o.dryRun){if(!0===o.deploy.form?.enabled)if(o.deploy.form.id){const e=await se.get({id:o.deploy.form.id});if(!e)throw new Error("Couldnt find form.");e.doc.name=o.deploy.params.name,e.doc.workflow={id:this.#o.id},e.doc.versions.splice(0,0,{v:a.version}),await se.update(e,{id:e.id})}else{const e=await se.create({parent_id:this.#m.env.ATOM_FORMS_ID,doc:{name:o.deploy.params.name,type:"workflow.form",workflow:{id:this.#o.id},versions:[{v:a.version}]}});o.deploy.form.id=e.id}t.isDirty=!0,o.deploy.params.version=a.version,o.build={id:this.#l,ts:Date.now()},await this.registerToPackageManager({target:o,packageJSON:a})}}async deployAsGitlab(e){await this.setInProgress({message:"Deploying it as gitlab project."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir;let n="fnet-to-gitlab";const s=o.deploy.params.config||"gitlab",a=de({name:s,dir:this.#t.projectDir});if(!a)throw new Error(`Couldnt load config ${s}`);const{data:r}=a.data;n+=` --projectGroupId=${r.projectGroupId}`,n+=` --projectPath='${i}'`,n+=` --projectName='${o.deploy.params.name}'`,n+=` --projectBranch='${o.deploy.params.branch||"main"}'`,n+=` --gitlabHost='${r.gitlabHost}'`,n+=` --gitlabToken='${r.gitlabToken}'`,n+=` --gitlabUsername='${r.gitlabUsername}'`,n+=` --gitlabUserEmail='${r.gitlabUserEmail}'`,!0!==o.dryRun&&(await ae({command:n}),t.isDirty=!0,o.build={id:this.#l,ts:Date.now()})}async deployAsWebos(e){await this.setInProgress({message:"Deploying it as webos package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=Q.inc(o.deploy.params.version,"patch");if(!0===o.dryRun)return;const s=o.deploy.params,a={id:s.id,ver:n,title:s.title,vendor:s.vendor,src:i,srcBundleName:this.#o.doc.bundleName,dest:i,destName:"webos",atom:this.#o,atomTarget:o},r=await me(a);console.log(r),t.isDirty=!0,o.deploy.params.version=n,o.build={id:this.#l,ts:Date.now()}}async deployAsElectron(e){await this.setInProgress({message:"Deploying it as electron package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=Q.inc(o.deploy.params.version,"patch");if(!0===o.dryRun)return;const s=o.deploy.params,a={id:s.id,ver:n,title:s.title,vendor:s.vendor,projectDir:i,projectBundleName:this.#o.doc.bundleName,renderDir:G.resolve(i,"electron"),atom:this.#o,atomTarget:o},r=await he(a);console.log(r),t.isDirty=!0,o.deploy.params.version=n,o.build={id:this.#l,ts:Date.now()}}async deployAsMacOSApp(e){await this.setInProgress({message:"Deploying it as macos app package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=Q.inc(o.deploy.params.version,"patch");if(!0===o.dryRun)return;const s=o.deploy.params,a={id:s.id,ver:n,title:s.title,vendor:s.vendor,projectDir:i,projectBundleName:this.#o.doc.bundleName,renderDir:G.resolve(i,"macos-app"),atom:this.#o,atomTarget:o},r=await fe(a);console.log(r),t.isDirty=!0,o.deploy.params.version=n,o.build={id:this.#l,ts:Date.now()}}async deployAsIOSApp(e){await this.setInProgress({message:"Deploying it as ios app package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=Q.inc(o.deploy.params.version,"patch");if(!0===o.dryRun)return;const s=o.deploy.params,a={id:s.id,ver:n,title:s.title,vendor:s.vendor,projectDir:i,projectBundleName:this.#o.doc.bundleName,renderDir:G.resolve(i,"ios-app"),atom:this.#o,atomTarget:o},r=await ye(a);console.log(r),t.isDirty=!0,o.deploy.params.version=n,o.build={id:this.#l,ts:Date.now()}}async deployAsIOSApp(e){await this.setInProgress({message:"Deploying it as ios app package."});const{deploymentProject:t,deploymentProjectTarget:o}=e,i=this.#t.projectDir,n=Q.inc(o.deploy.params.version,"patch");if(!0===o.dryRun)return;const s=o.deploy.params,a={id:s.id,ver:n,title:s.title,vendor:s.vendor,projectDir:i,projectBundleName:this.#o.doc.bundleName,renderDir:G.resolve(i,"ios-app"),atom:this.#o,atomTarget:o},r=await ye(a);console.log(r),t.isDirty=!0,o.deploy.params.version=n,o.build={id:this.#l,ts:Date.now()}}async registerToPackageManager(e){const{target:t,packageJSON:o}=e;let i=await se.first({name:t.deploy.params.name,parent_id:this.#m.env.ATOM_PACKAGES_ID});i?(i.doc.versions.splice(0,0,{v:o.version}),await se.update(i,{id:i.id})):i=await se.create({parent_id:this.#m.env.ATOM_PACKAGES_ID,doc:{name:t.deploy.params.name,type:"pm",versions:[{v:o.version}]}})}async setInProgress({message:e}){await this._cache_set(this.#d,{status:"IN_PROGRESS",message:e})}async build(){if(this.#b&&!this.#u)return await this.createNetwork();try{const e=this.#b?await le({root:this.#c}):void 0;this.#u&&(await this.initWorkflowDir(),await this.initNunjucks(),this.#b&&W.writeFileSync(G.resolve(this.#t.projectDir,"./project.bpmn"),e.diagramXML,"utf8"),await this.createAtomLibFiles({root:this.#c}),await this.createEngine({root:this.#c}),await this.createNodeTree({root:this.#c}),await this.createRollup(),await this.createBin(),await this.createPackageJSON(),await this.createTsConfig(),await this.createGitIgnore(),await this.createProjectYaml(),await this.createProjectMainYaml(),await this.createProjectReadme(),await this.createToYargs(),await this.createIndexHtml(),await this.createAutoRun(),this.#w&&(await this.runBuildScripts(),this.#g&&await this.deploy())),await this._cache_set(this.#d,{status:"COMPLETED",data:{network:e}})}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await le({root:this.#c});await this._cache_set(this.#d,{status:"COMPLETED",data:{...e}})}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e.message||e}),e}}};const ge=c,be=l;var xe=function({baseDir:e=__dirname}){let t=e;for(;t!==be.parse(t).root;){const e=be.join(t,"node_modules");if(ge.existsSync(e))return e;t=be.dirname(t)}return null};const ke=process.cwd();console.log(`cwd: ${ke}`),e({name:["redis"],dir:ke});const je=t,ve=o,{hideBin:De}=i,_e=n,Te=s,Pe=a,Se=r,Ie=we,Ee=xe({baseDir:__dirname});async function Ae(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:je.resolve(ke,`./.output/${e.id}`),templateDir:je.resolve(Ee,"./@flownet/template-node-workflow/default"),coreDir:je.resolve(Ee,"./@flownet/template-node-workflow/core")}}{const t=await async function(e){const t=je.resolve(ke,"flow.yaml");if(!_e.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const o=_e.readFileSync(t,"utf8"),i=Te.parse(o),n=je.dirname(t),s=je.resolve(n,"flow.main.yaml");if(!_e.existsSync(t))throw new Error("flow.main.yaml file not found in current directory.");const a=_e.readFileSync(s,"utf8"),r=Te.parse(a),c={workflowAtom:{doc:{...i,"content-type":"yaml",content:a}},projectDir:n,projectFilePath:t,projectFileContent:o,projectFileParsed:i,projectMainFilePath:s,projectMainFileContent:a,projectMainFileParsed:r},l=je.resolve(n,"flow.devops.yaml");if(_e.existsSync(l)){const e=_e.readFileSync(l,"utf8"),t=Te.parse(e);c.devops={filePath:l,fileContent:e,doc:{...t},type:"workflow.deploy",save:async()=>{_e.writeFileSync(c.devops.filePath,Te.stringify(c.devops.doc))}}}const d=je.resolve(n,"flow.readme.md");if(_e.existsSync(d)){const e=_e.readFileSync(d,"utf8");c.readme={filePath:d,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return c}();return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:je.resolve(Ee,"./@flownet/template-node-workflow/default"),coreDir:je.resolve(Ee,"./@flownet/template-node-workflow/core"),projectDir:je.resolve(t.projectDir,"./target"),projectSrcDir:je.resolve(t.projectDir,"./src"),project:t}}}process.env.PATH=`${Ee}/.bin:${process.env.PATH}`,ve(De(process.argv)).command("create","Initialize flow node project",(e=>e.option("name",{type:"string"})),(async e=>{try{const t=je.resolve(Ee,"./@flownet/template-node-workflow/project"),o=je.resolve(ke,e.name);_e.existsSync(o)||_e.mkdirSync(o),await Se({dir:t,outDir:o,context:e});let i=Pe.exec("fnet build",{cwd:o});if(0!==i.code)throw new Error("Failed to build project.");if(Pe.which("git")&&(i=Pe.exec("git init",{cwd:o}),0!==i.code))throw new Error("Failed to initialize git.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.log("Initialization failed!",e),process.exit(1)}})).command("build","Build flow net project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",alias:"m",default:"build",choices:["all","file","build","deploy","bpmn"]})),(async e=>{try{const t=await Ae(e),o=new Ie(t);await o.init(),await o.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.log("Building workflow failed!",e),process.exit(1)}})).command("npm [commands..]","npm - bridge",(e=>e.option("id",{type:"string"})),(async e=>{try{const t=await Ae(e),{projectDir:o}=t,i=e.commands||[],n=Object.keys(e).filter((t=>"_"!==t&&"$0"!==t&&"commands"!==t&&"id"!==t&&"object"!=typeof e[t])).map((t=>`--${t}=${e[t]}`)).join(" "),s=`npm ${i.join(" ")} ${n}`;Pe.exec(s,{cwd:o}),process.exit(0)}catch(e){console.error(e),process.exit(1)}})).command("node [commands..]","node - bridge",(e=>e.option("id",{type:"string"})),(async e=>{try{const t=await Ae(e),{projectDir:o}=t,i=e.commands||[],n=Object.keys(e).filter((t=>"_"!==t&&"$0"!==t&&"commands"!==t&&"id"!==t&&"object"!=typeof e[t])).map((t=>`--${t}=${e[t]}`)).join(" "),s=`node ${i.join(" ")} ${n}`;Pe.exec(s,{cwd:o}),process.exit(0)}catch(e){console.error(e),process.exit(1)}})).command("serve [commands..]","npm run serve - bridge",(e=>e.option("id",{type:"string"})),(async e=>{try{const t=await Ae(e),{projectDir:o}=t,i=e.commands||[],n=Object.keys(e).filter((t=>"_"!==t&&"$0"!==t&&"commands"!==t&&"id"!==t&&"object"!=typeof e[t])).map((t=>`--${t}=${e[t]}`)).join(" "),s=`npm run serve ${i.join(" ")} ${n}`;Pe.exec(s,{cwd:o}),process.exit(0)}catch(e){console.error(e),process.exit(1)}})).command("watch [commands..]","npm run watch - bridge",(e=>e.option("id",{type:"string"})),(async e=>{try{const t=await Ae(e),{projectDir:o}=t,i=e.commands||[],n=Object.keys(e).filter((t=>"_"!==t&&"$0"!==t&&"commands"!==t&&"id"!==t&&"object"!=typeof e[t])).map((t=>`--${t}=${e[t]}`)).join(" "),s=`npm run watch ${i.join(" ")} ${n}`;Pe.exec(s,{cwd:o}),process.exit(0)}catch(e){console.error(e),process.exit(1)}})).demandCommand(1,"You need at least one command before moving on").help().argv,module.exports={};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wf-cli.js","sources":["../../src/redisClient.js","../../src/builder/auth.js","../../src/builder/deployer/nextjs.js","../../src/builder/wf-builder.js","../../src/builder/find-node-modules.js","../../src/builder/wf-cli.js"],"sourcesContent":["const redis = require('redis');\nconst fnetIsRedisOnline = require('@flownet/lib-is-redis-online');\n\nmodule.exports = async () => {\n const isOnline = await fnetIsRedisOnline({ host: process.env.REDIS_HOST, port: process.env.REDIS_PORT });\n if (!isOnline) return;\n\n const redisClient = redis.createClient({\n socket: { host: process.env.REDIS_HOST, port: process.env.REDIS_PORT }\n });\n await redisClient.connect();\n\n return redisClient;\n}","const { Api } = require(\"@flownet/lib-atom-api-js\");\nconst axios = require('axios').default;\nconst qs = require('qs');\n\nmodule.exports = class {\n init({ config, accessToken }) {\n return new Promise((resolve, reject) => {\n\n Api.set_api_url(config.data.url);\n\n if (accessToken) {\n Api.set_req_token(accessToken);\n resolve(accessToken);\n return;\n }\n\n axios({\n method: \"POST\",\n url: `${config.data.issuer}/protocol/openid-connect/token`,\n data: qs.stringify(config.data.grant.params),\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n },\n }).then(response => {\n Api.set_req_token(response.data.access_token);\n resolve(response.data.access_token);\n }).catch(error => {\n Api.set_req_token();\n reject(error);\n });\n });\n }\n}","const fnetToNextJs = require('@flownet/lib-to-nextjs');\nconst cloneDeep = require(\"lodash.clonedeep\");\nconst merge = require('lodash.merge');\nconst semver = require('semver');\nconst path = require('node:path');\n\nmodule.exports = async ({\n atom,\n target,\n onProgress,\n projectDir,\n dependencies\n}) => {\n\n if (onProgress) await onProgress({ message: \"Deploying it as nextjs package.\" });\n\n\n const deployerTargetDefault = {\n name: \"nextjs-app\",\n version: \"0.1.0\",\n }\n\n target.params = merge(deployerTargetDefault, target.params);\n\n const nextVersion = semver.inc(target.params.version, \"patch\");\n target.params.version = nextVersion;\n\n const deployerTarget = cloneDeep(target);\n\n deployerTarget.params.dependencies = cloneDeep(dependencies);\n\n const args = {\n atom,\n target: deployerTarget.params,\n projectDir,\n renderDir: path.resolve(projectDir, 'nextjs')\n }\n\n const result = await fnetToNextJs(args);\n\n return {\n deployer: result,\n };\n}","\"use strict\";\n\nconst fs = require('node:fs');\nconst path = require('node:path');\n\nconst yaml = require(\"js-yaml\");\nconst shell = require('shelljs');\nconst nunjucks = require(\"nunjucks\");\nconst cloneDeep = require('lodash.clonedeep');\nconst isObject = require('isobject');\nconst axios = require('axios');\nconst Red = require('@node-red/util');\nconst semver = require('semver');\nconst { v4: uuidv4 } = require('uuid');\nconst createRedisClient = require('../redisClient');\nconst os = require('node:os');\nconst merge = require('lodash.merge');\n\nconst Auth = require('./auth');\n\nconst { Atom } = require(\"@flownet/lib-atom-api-js\");\nconst fnetExecuteCommandWithIpcFile = require('@flownet/lib-execute-command-with-ipc-file');\nconst fnetParseNodeUrl = require('@flownet/lib-parse-node-url');\nconst fnetListNpmVersions = require('@flownet/lib-list-npm-versions');\nconst fnetBpmnFromFlow = require('@flownet/lib-bpmn-from-flow');\nconst fnetLoadFnetConfig = require('@flownet/lib-load-fnet-config');\nconst fnetParseImports = require('@flownet/lib-parse-imports-js');\nconst fnetToWebos = require('@flownet/lib-to-webos');\nconst fnetToElectron = require('@flownet/lib-to-electron');\nconst fnetToMacOSApp = require('@flownet/lib-to-macos-app');\nconst fnetToIOSApp = require('@flownet/lib-to-ios-app');\nconst deployToNextjs = require('./deployer/nextjs');\n\nclass Builder {\n\n #auth;\n #context;\n #atom;\n #workflow;\n #njEnv;\n #packageDependencies;\n #stepTemplateCache;\n #atomAccessToken;\n #root;\n #buildId;\n #buildKey;\n #protocol;\n #atomConfig;\n #npmConfig;\n #redConfig;\n\n #mode;\n #fileMode;\n #buildMode;\n #deployMode;\n #bpmnMode;\n\n\n constructor(context) {\n\n this.#auth = new Auth();\n this.#context = context;\n this.#packageDependencies = [];\n this.#stepTemplateCache = {};\n\n this._expire_ttl = 3600; // 1-hour\n this._expire_ttl_short = 300; // 5-minutes\n }\n\n async _cache_set(key, value, expire_ttl) {\n if (!this._redis_client) return;\n\n await this._redis_client.SETEX(\n key,\n expire_ttl || this._expire_ttl,\n JSON.stringify(value),\n ).catch(console.error);\n }\n\n async init() {\n\n this._redis_client = await createRedisClient();\n\n this.#buildId = this.#context.buildId || uuidv4();\n this.#mode = this.#context.mode;\n this.#fileMode = ['all', 'deploy', 'build', 'file'].includes(this.#mode);\n this.#buildMode = ['all', 'deploy', 'build'].includes(this.#mode);\n this.#deployMode = ['all', 'deploy'].includes(this.#mode);\n this.#bpmnMode = ['all', 'deploy', 'build', 'file', 'bpmn'].includes(this.#mode);\n\n this.#protocol = this.#context.protocol;\n this.#buildKey = \"BUILD:\" + this.#buildId;\n\n this.#atomConfig = await fnetLoadFnetConfig({ name: \"atom\", dir: this.#context.projectDir })?.data;\n this.#npmConfig = await fnetLoadFnetConfig({ name: this.#context.npmConfig || \"npm\", dir: this.#context.projectDir })?.data;\n this.#redConfig = await fnetLoadFnetConfig({ name: this.#context.redConfig || \"red\", dir: this.#context.projectDir })?.data;\n\n try {\n await this.setInProgress({ message: \"Initialization started.\" });\n\n await this.initAuth();\n await this.initWorkflow();\n await this.initFeatures();\n await this.initDependencies();\n\n // REFACTORING\n const root = await this.initNodeTree({ workflow: this.#workflow });\n await this.initNodeTreeIndex({ root });\n\n await this.initNodeCalls({ root });\n await this.initNodeCallLibs({ root });\n\n await this.initNodeForms({ root });\n await this.initNodeFormLibs({ root });\n\n await this.initAtomLibsAndDeps({ libs: root.context.libs, packageDependencies: this.#packageDependencies });\n\n await this.resolveNodeTree({ root });\n\n this.#root = root;\n }\n catch (error) {\n await this._cache_set(this.#buildKey, { status: \"FAILED\", message: error?.message || error });\n throw error;\n }\n }\n\n async initAuth() {\n if (!this.#context.id) return;\n this.#atomAccessToken = await this.#auth.init({ config: this.#atomConfig });\n }\n\n async initWorkflow() {\n const workflowId = this.#context.id;\n this.#atom = this.#context.project?.workflowAtom || await Atom.get({ id: workflowId });\n this.#workflow = typeof this.#atom.doc.content === 'string' ? yaml.load(this.#atom.doc.content) : this.#atom.doc.content;\n let bundleName = this.#atom.doc.bundleName;\n bundleName = bundleName || (this.#atom.doc.name || \"\").toUpperCase().replace(/[^A-Z0-9]/g, \"_\");\n this.#atom.doc.bundleName = bundleName;\n this.#atom.type = this.#atom.type || \"workflow\";\n }\n\n async initFeatures() {\n\n this.#atom.doc.features = this.#atom.doc.features || {};\n const features = this.#atom.doc.features;\n\n features.print_steps = features.print_steps || features.print?.steps || false;\n features.form_enabled = this.#atom.doc.form === true || this.#atom.doc.form?.enabled === true || features.form === true || features.form?.enabled === true;\n features.browser_autorun = features.browser?.autorun === true;\n\n // rollup output default\n const rollup_output_default = {\n cjs: {\n format: \"cjs\",\n context: features.form_enabled ? \"window\" : \"global\",\n babel: false,\n browser: false,\n copy: true,\n replace: true,\n },\n cjsx: {\n format: \"cjs\",\n context: features.form_enabled ? \"window\" : \"global\",\n babel: false,\n browser: true,\n replace: true,\n },\n esm: {\n format: \"esm\",\n context: features.form_enabled ? \"window\" : \"global\",\n babel: false,\n browser: false,\n replace: true,\n },\n esmx: {\n format: \"esm\",\n browser: true,\n babel: true,\n context: features.form_enabled ? \"window\" : \"global\",\n replace: true,\n browsersync: true,\n },\n iife: {\n format: \"iife\",\n context: features.form_enabled ? \"window\" : \"global\",\n babel: true,\n browser: true,\n replace: true,\n }\n };\n\n // babel targets default\n const babel_default = {\n targets: {\n browsers: \"last 9 versions, not dead\",\n node: \"18\"\n }\n }\n\n // browsersync default\n const browsersync_default = {\n server: '.',\n startPath: \"/\",\n files: [\"./app/**/*\", \"./dist/**/*\"]\n }\n\n // replace default\n const replace_default = {}\n\n // terser default\n const terser_default = {}\n\n // css default\n const css_default = {}\n\n // wasm default\n const wasm_default = {}\n\n // copy default\n const copy_default = {}\n\n // json default\n const json_default = {}\n\n if (features.webos === true) {\n rollup_output_default.webos = {\n format: \"esm\",\n browser: true,\n babel: true,\n context: \"window\",\n replace: true,\n babel_options: {\n targets: {\n chrome: \"79\"\n }\n }\n }\n }\n\n features.babel_options = (features.babel_options || features.babel?.options || babel_default);\n features.browsersync_options = merge(browsersync_default, features.browsersync_options || features.browsersync?.options || {});\n features.replace_options = merge(replace_default, features.replace_options || features.replace?.options || {});\n features.terser_options = merge(terser_default, features.terser_options || features.terser?.options || {});\n features.css_options = merge(css_default, features.css_options || features.css?.options || {});\n features.wasm_options = merge(wasm_default, features.wasm_options || features.wasm?.options || {});\n features.copy_options = merge(copy_default, features.copy_options || features.copy?.options || {});\n features.json_options = merge(json_default, features.json_options || features.json?.options || {});\n\n features.rollup_output = merge(rollup_output_default, features.rollup_output || features.rollup?.output || features.rollup || {});\n\n const rollup_output_keys = Object.keys(rollup_output_default);\n for (const key of rollup_output_keys) {\n const output = rollup_output_default[key];\n\n if (!output) continue;\n\n output.babel_options = output.babel_options || features.babel_options;\n output.browsersync_options = merge(features.browsersync_options, output.browsersync_options);\n output.replace_options = merge(features.replace_options, output.replace_options);\n output.terser_options = merge(features.terser_options, output.terser_options);\n output.css_options = merge(features.css_options, output.css_options);\n output.wasm_options = merge(features.wasm_options, output.wasm_options);\n output.copy_options = merge(features.copy_options, output.copy_options);\n output.json_options = merge(features.json_options, output.json_options);\n\n if (features.form_enabled) output.babel = true;\n }\n\n features.babel_enabled = rollup_output_keys.some(w => features.rollup_output[w].babel === true);\n features.browser_enabled = rollup_output_keys.some(w => features.rollup_output[w].babel === true);\n features.browsersync_enabled = rollup_output_keys.some(w => features.rollup_output[w].browsersync === true);\n features.browsersync_enabled = features.browsersync_enabled && (features.form_enabled || features.browser_autorun === true);\n\n features.multiple_enabled = features.multiple_enabled || features.multiple === true || features.multiple?.enabled === true;\n features.wasm_enabled = features.wasm === true || (features.wasm && features.wasm?.enabled !== false);\n features.css_enabled = features.css === true || (features.css && features.css?.enabled !== false);\n features.json_enabled = features.json === true || (features.json && features.json?.enabled !== false);\n features.terser_enabled = features.terser === true || (features.terser && features.terser?.enabled !== false);\n features.copy_enabled = features.copy_enabled || (features.copy && features.copy?.enabled !== false);\n\n features.bin_name = features.bin_name || features.bin?.name || features.bin;\n features.bin_enabled = features.bin_name && (typeof features.bin_name === 'string')(features.bin_enabled || features.bin?.enabled !== false);\n features.dependency_auto_enabled = features.dependency_auto !== false && features.dependency_auto?.enabled !== false;\n features.npm_install_flags = features.npm_install_flags || '';\n features.index_html_enabled = !(this.#atom.doc.features.multiple_enabled === true || this.#atom.doc.features.form_enabled !== true);\n features.bin_file_enabled = !(this.#atom.doc.features.multiple_enabled === true || this.#atom.doc.features.form_enabled === true);\n }\n\n async initDependencies() {\n this.#packageDependencies.push({ package: \"eventemitter3\", version: \"^4.0\" });\n this.#packageDependencies.push({ package: \"get-value\", version: \"^3.0\" });\n this.#packageDependencies.push({ package: \"set-value\", version: \"^4.1\" });\n\n if (this.#atom.doc.features.form_enabled) {\n this.#packageDependencies.push({ package: \"react\", version: \"^18.2\" });\n this.#packageDependencies.push({ package: \"react-dom\", version: \"^18.2\" });\n this.#packageDependencies.push({ package: \"@flownet/react-app\", version: \"^0.1\" });\n this.#packageDependencies.push({ package: \"@flownet/react-app-state\", version: \"^0.1\" });\n } else {\n this.#packageDependencies.push({ package: \"yargs\", version: \"^17\" });\n }\n this.#packageDependencies.push({ package: \"chalk\", version: \"^4\" });\n }\n\n async initWorkflowDir() {\n const projectDir = this.#context.projectDir;\n const coreDir = this.#context.coreDir;\n // let result = shell.exec(`rm -rf ${projectDir}`);\n let result;\n\n const exclude = ['node_modules']; // List of directories to exclude from deletion.\n\n // Delete all files and directories in projectDir except those in the exclude list.\n fs.existsSync(projectDir) && fs.readdirSync(projectDir).forEach(file => {\n if (!exclude.includes(file)) {\n result = shell.rm('-rf', path.join(projectDir, file));\n }\n });\n\n // .\n result = shell.exec(`mkdir -p ${projectDir}`);\n if (result.code !== 0) throw new Error('Couldnt create workflow dir.');\n\n // src\n result = shell.exec(`mkdir ${projectDir}/src`);\n if (result.code !== 0) throw new Error('Couldnt create workflow/src dir.');\n\n // src/core\n result = shell.exec(`cp -a ${coreDir} ${projectDir}/src`);\n if (result.code !== 0) throw new Error('Couldnt create workflow/src/core dir.');\n\n // src/libs\n result = shell.exec(`mkdir -p ${projectDir}/src/libs`);\n if (result.code !== 0) throw new Error('Couldnt create workflow/src/libs dir.');\n\n // src/default/blocks\n result = shell.exec(`mkdir -p ${projectDir}/src/default/blocks`);\n if (result.code !== 0) throw new Error('Couldnt create workflow/src/default/blocks dir.');\n }\n\n async initNunjucks() {\n const templateDir = this.#context.templateDir;\n this.#njEnv = nunjucks.configure(templateDir, { watch: false, dev: true });\n }\n\n async initNodeTree({ workflow }) {\n\n const workflowKeys = Object.keys(workflow);\n\n const root = {\n definition: workflow,\n name: undefined,\n type: \"root\",\n parent: undefined,\n childs: [],\n blockAutoJumpToParent: true,\n blockAutoJumpToSibling: true,\n index: 0,\n depth: 0,\n context: {\n libs: [],\n atom: this.#atom\n }\n };\n\n workflowKeys.forEach(flowName => {\n const node = {\n name: flowName,\n type: flowName === 'main' ? 'workflow' : \"subworkflow\",\n childs: [],\n parent: root,\n definition: workflow[flowName],\n index: root.childs.length,\n depth: root.depth + 1,\n context: {},\n blockAutoJumpToParent: true,\n }\n\n root.childs.push(node);\n });\n\n for await (const node of root.childs) {\n await this.initNode({ node });\n }\n\n return root;\n }\n\n async initNode({ node }) {\n\n node.workflow = node.parent.workflow || node; //?\n node.depth = node.parent.depth + 1;\n\n // console.log(node.depth, node.name);\n\n if (node.definition.hasOwnProperty('try') && node.definition.hasOwnProperty('except')) await this.initBlockTypeTryExcept({ node });\n else if (node.definition.hasOwnProperty('for')) await this.initBlockTypeFor({ node });\n else if (node.definition.hasOwnProperty('switch')) await this.initBlockTypeSwitch({ node });\n else if (node.definition.hasOwnProperty('parallel')) await this.initBlockTypeParallel({ node });\n\n else if (node.definition.hasOwnProperty('raise')) await this.initBlockTypeRaise({ node });\n else if (node.definition.hasOwnProperty('return')) await this.initBlockTypeReturn({ node });\n else if (node.definition.hasOwnProperty('assign')) await this.initBlockTypeAssign({ node });\n else if (node.definition.hasOwnProperty('call')) await this.initBlockTypeCall({ node });\n else if (node.definition.hasOwnProperty('form')) await this.initBlockTypeForm({ node });\n else if (node.definition.hasOwnProperty('shell')) await this.initBlockTypeShell({ node });\n else if (node.definition.hasOwnProperty('config')) await this.initBlockTypeConfig({ node });\n else if (node.definition.hasOwnProperty('operation')) await this.initBlockTypeOperation({ node });\n\n else if (node.definition.hasOwnProperty('steps')) await this.initBlockTypeSteps({ node });\n else if (node.definition.hasOwnProperty('next')) await this.initBlockTypeJump({ node });\n\n else throw new Error('Undefined step type.');\n\n // TODO: PARALLEL\n }\n\n async initBlockTypeTryExcept({ node }) {\n node.type = \"tryexcept\";\n\n node.blockAutoJumpToParent = true;\n node.blockAutoJumpToSibling = true;\n\n // try\n if (node.definition.try) {\n const key = \"try\";\n const childNode = {\n name: key,\n childs: [],\n parent: node,\n definition: node.definition[key],\n index: node.childs.length,\n context: {}\n }\n node.childs.push(childNode);\n await this.initNode({ node: childNode });\n }\n\n // except\n if (node.definition.except) {\n const key = \"except\";\n const childNode = {\n name: key,\n childs: [],\n parent: node,\n definition: node.definition[key],\n index: node.childs.length,\n context: {}\n }\n node.childs.push(childNode);\n await this.initNode({ node: childNode });\n }\n }\n\n async initBlockTypeSwitch({ node }) {\n node.type = \"switch\";\n node.blockAutoJumpToParent = false;\n node.blockAutoJumpToSibling = true;\n\n // it may have steps\n for (let i = 0; i < node.definition.switch.length; i++) {\n const temp = node.definition.switch[i];\n const key = `${i}`;\n const childNode = {\n name: key,\n childs: [],\n parent: node,\n definition: temp,\n index: node.childs.length,\n context: {}\n }\n\n node.childs.push(childNode);\n\n if (temp.hasOwnProperty('steps')) {\n await this.initNode({ node: childNode });\n }\n else {\n childNode.depth = node.depth + 1;\n childNode.type = \"jump\";\n }\n }\n }\n\n async initBlockTypeFor({ node }) {\n node.type = \"for\";\n\n node.blockAutoJumpToParent = true;\n node.blockAutoJumpToSibling = false;\n\n for (let i = 0; i < node.definition.for.steps.length; i++) {\n\n const temp = node.definition.for.steps[i];\n const key = Object.keys(temp)[0];\n\n const childNode = {\n name: key,\n childs: [],\n parent: node,\n definition: temp[key],\n index: node.childs.length,\n context: {}\n }\n\n node.childs.push(childNode);\n\n await this.initNode({ node: childNode });\n }\n }\n\n async initBlockTypeSteps({ node }) {\n\n if (!node.type) node.type = 'steps';\n\n const steps = node.definition.steps || [];\n for await (const step of steps) {\n const key = Object.keys(step)[0];\n const childNode = {\n name: key,\n childs: [],\n parent: node,\n definition: step[key],\n index: node.childs.length,\n context: {\n }\n }\n\n node.childs.push(childNode);\n\n await this.initNode({ node: childNode });\n }\n }\n\n async initBlockTypeAssign({ node }) {\n node.type = \"assign\";\n }\n\n async initBlockTypeCall({ node }) {\n node.type = \"call\"\n\n for (let i = 0; i < node.definition.modules?.length; i++) {\n const temp = node.definition.modules[i];\n const key = Object.keys(temp)[0];\n\n const childNode = {\n name: key,\n childs: [],\n parent: node,\n definition: temp[key],\n module: true,\n blockAutoJumpToParent: true,\n index: node.childs.length,\n context: {}\n }\n\n node.childs.push(childNode);\n\n await this.initNode({ node: childNode });\n }\n }\n\n async initBlockTypeForm({ node }) {\n node.type = \"form\";\n\n for (let i = 0; i < node.definition.modules?.length; i++) {\n const temp = node.definition.modules[i];\n const key = Object.keys(temp)[0];\n\n const childNode = {\n name: key,\n childs: [],\n parent: node,\n definition: temp[key],\n module: true,\n blockAutoJumpToParent: true,\n index: node.childs.length,\n context: {}\n }\n\n node.childs.push(childNode);\n\n await this.initNode({ node: childNode });\n }\n }\n\n async initBlockTypeReturn({ node }) {\n node.type = \"return\";\n }\n\n async initBlockTypeRaise({ node }) {\n node.type = \"raise\";\n }\n\n async initBlockTypeJump({ node }) {\n node.type = \"jump\";\n }\n\n async initBlockTypeOperation({ node }) {\n node.type = \"operation\";\n }\n\n async initBlockTypeParallel({ node }) {\n node.type = \"parallel\";\n }\n\n async initBlockTypeShell({ node }) {\n const name = 'shell';\n const definition = node.definition;\n const valueType = typeof definition[name];\n if (valueType === 'string' || valueType === 'object') {\n definition.call = \"npm:@fnet/shell\";\n if (valueType === 'string') definition.args = { cmd: definition[name] };\n else definition.args = definition[name];\n delete definition[name];\n }\n else throw new Error(`Unsupported ${name} usage`);\n\n await this.initBlockTypeCall({ node });\n }\n\n async initBlockTypeConfig({ node }) {\n\n const name = 'config';\n const definition = node.definition;\n const valueType = typeof definition[name];\n if (valueType === 'string' || valueType === 'object') {\n definition.call = \"npm:@fnet/config\";\n if (valueType === 'string') definition.args = { name: definition[name] };\n else definition.args = definition[name];\n delete definition[name];\n }\n else throw new Error(`Unsupported ${name} usage`);\n\n await this.initBlockTypeCall({ node });\n }\n\n async initNodeTreeIndex({ root }) {\n const index = {};\n\n root.indexKey = \"/\";\n for await (const child of root.childs) {\n await this.initNodeIndex({ node: child, index });\n }\n\n root.context.index = index;\n\n return index;\n }\n\n async initNodeIndex({ node, index }) {\n\n const indexKey = path.join(node.parent.indexKey, node.name);\n node.indexKey = indexKey;\n index[indexKey] = node;\n\n const levels = [];\n let current = node;\n while (current?.parent) {\n levels.push(current.index);\n current = current.parent;\n }\n levels.reverse();\n\n node.codeKey = `B_${levels.join('_')}_${node.type}`;\n node.pathKey = `${levels.join('.')}`;\n\n for await (const child of node.childs) {\n await this.initNodeIndex({ node: child, index });\n }\n }\n\n async initNodeCalls({ root }) {\n\n const index = root.context.index;\n\n const callNodes = [];\n for await (const indexKey of Object.keys(index)) {\n const node = index[indexKey];\n if (node.type !== 'call') continue;\n\n callNodes.push(node);\n }\n\n root.context.calls = callNodes;\n\n return callNodes;\n }\n\n async initNodeCallLibs({ root }) {\n const libs = [];\n const calls = root.context.calls;\n\n for await (const node of calls) {\n const callName = node.definition.call;\n\n const targetNode =\n await this.findNodeCallTarget({ refNode: node, curNode: node.parent }) ||\n {\n name: callName,\n type: \"atom\"\n };\n\n const foundTargetNode = libs.find(w => w.name === targetNode.name && w.type === targetNode.type);\n if (!foundTargetNode) libs.push(targetNode);\n\n node.target = foundTargetNode || targetNode;\n }\n\n root.context.callLibs = libs;\n root.context.libs = [...root.context.libs, ...libs];\n return libs;\n }\n\n async findNodeCallTarget({ refNode, curNode }) {\n if (!curNode) return;\n\n const callName = refNode.definition.call;\n\n const found = curNode.childs.find(w => w.name === callName && w.type === 'subworkflow');\n\n if (found) return found;\n else return await this.findNodeCallTarget({ refNode, curNode: curNode.parent });\n }\n\n async initNodeForms({ root }) {\n\n const index = root.context.index;\n\n const formNodes = [];\n for await (const indexKey of Object.keys(index)) {\n const node = index[indexKey];\n if (node.type !== 'form') continue;\n\n formNodes.push(node);\n }\n\n root.context.forms = formNodes;\n\n return formNodes;\n }\n\n async initNodeFormLibs({ root }) {\n const libs = [];\n\n const forms = root.context.forms;\n\n for await (const node of forms) {\n const formName = node.definition.form;\n\n const targetNode =\n await this.findNodeCallTarget({ refNode: node, curNode: node.parent }) ||\n {\n name: formName,\n type: \"atom\"\n };\n\n const foundTargetNode = libs.find(w => w.name === targetNode.name && w.type === targetNode.type);\n if (!foundTargetNode) libs.push(targetNode);\n\n node.target = foundTargetNode || targetNode;\n }\n\n root.context.formLibs = libs;\n root.context.libs = [...root.context.libs, ...libs];\n\n return libs;\n }\n\n async findNodeFormTarget({ refNode, curNode }) {\n if (!curNode) return;\n\n const formName = refNode.definition.form;\n\n const found = curNode.childs.find(w => w.name === formName && w.type === 'subworkflow');\n\n if (found) return found;\n else return await this.findNodeFormTarget({ refNode, curNode: curNode.parent });\n }\n\n async initAtomLibsAndDeps({ libs, packageDependencies }) {\n const atomLibRefs = libs.filter(w => w.type === 'atom');\n for (let i = 0; i < atomLibRefs.length; i++) {\n const atomLibRef = atomLibRefs[i];\n\n const atomLib = await this.findAtomLibrary({ url: atomLibRef.name });\n atomLibRef.atom = atomLib;\n\n const packageDeps = atomLib.doc.dependencies?.filter(w => typeof w.repo === 'undefined' || w.repo === 'npm');\n packageDeps?.forEach(npmDep => {\n const found = packageDependencies.find(w => w.package === npmDep.package);\n if (found) {\n if (typeof npmDep.path === 'string') {\n if (!(found.path || []).some(w => w === npmDep.path)) {\n found.path = found.path || [];\n found.path.push(npmDep.path);\n }\n }\n else if (Array.isArray(npmDep.path)) {\n npmDep.path.forEach(item => {\n if (!(found.path || []).some(w => w === item)) {\n found.path = found.path || [];\n found.path.push(item);\n }\n });\n }\n }\n else packageDependencies.push(npmDep);\n });\n }\n\n packageDependencies.sort((a, b) => a.package?.localeCompare(b.package));\n }\n\n async findAtomLibrary({ url }) {\n const parsedUrl = fnetParseNodeUrl({ url: url });\n if (!parsedUrl) throw new Error(`Invalid package name: ${url}`);\n\n if (!parsedUrl.protocol) parsedUrl.protocol = this.#protocol;\n\n if (parsedUrl.protocol === 'ac:') {\n const parts = parsedUrl.pathname.split('/');\n if (parts.length === 1) {\n return await Atom.first({ where: { name: url, parent_id: this.#atomConfig.env.ATOM_LIBRARIES_ID, type: \"workflow.lib\" } });\n }\n\n if (parts.length === 2) {\n const folder = await Atom.first({ where: { name: parts[0], parent_id: this.#atomConfig.env.ATOM_LIBRARIES_ID, type: \"folder\" } });\n return await Atom.first({ where: { name: parts[1], parent_id: folder.id, type: \"workflow.lib\" } });\n }\n }\n else if (parsedUrl.protocol === 'local:') {\n\n const srcFilePath = path.resolve(this.#context.projectSrcDir, `${parsedUrl.pathname}.js`);\n const dependencies = [];\n\n const parsedImports = await fnetParseImports({ file: srcFilePath });\n for await (const parsedImport of parsedImports.required) {\n if (parsedImport.type !== 'npm') continue;\n\n const npmVersions = await fnetListNpmVersions({ name: parsedImport.package, groupBy: { minor: true } });\n const npmVersion = npmVersions[0][0];\n\n if (dependencies.find(w => w.package === parsedImport.package)) continue;\n\n dependencies.push({\n package: parsedImport.package,\n subpath: parsedImport.subpath,\n version: `^${npmVersion}`,\n type: \"npm\"\n })\n }\n\n const atom = {\n name: parsedUrl.pathname,\n doc: {\n type: \"workflow.lib\",\n \"content-type\": \"javascript\",\n language: \"js\",\n dependencies,\n },\n protocol: parsedUrl.protocol,\n }\n return atom;\n }\n else if (parsedUrl.protocol === 'npm:') {\n\n const npmVersions = await fnetListNpmVersions({ name: parsedUrl.pathname, groupBy: { minor: true } });\n\n const npmVersion = npmVersions[0][0];\n\n const atom = {\n name: parsedUrl.pathname,\n doc: {\n type: \"workflow.lib\",\n \"content-type\": \"javascript\",\n language: \"js\",\n dependencies: [\n {\n package: parsedUrl.pathname,\n version: `^${npmVersion}`,\n type: \"npm\"\n }\n ],\n },\n protocol: parsedUrl.protocol,\n }\n return atom;\n }\n }\n\n // RESOLVE\n resolveNextBlock({ node }) {\n const definition = node.definition;\n\n if (definition.next === 'end') { }\n else if (definition.next === 'stop') { }\n else if (definition.next === 'none') { }\n else if (definition.next) {\n let current = node.parent;\n while (current.parent) {\n const found = current.childs.find(w => w.name === definition.next);\n\n if (found) {\n node.context.next = found;\n break;\n }\n\n current = current.parent;\n }\n }\n else {\n\n if (node.module === true) return;\n\n let parent = node.parent;\n let targetIndex = node.index + 1;\n\n while (parent.parent) {\n\n if (parent.blockAutoJumpToParent)\n if (parent.blockAutoJumpToSibling === true) {\n if (parent.blockAutoJumpToParent === true) break;\n else {\n targetIndex = parent.index + 1;\n parent = parent.parent;\n continue;\n }\n }\n\n const found = parent.childs.find(w => w.index === targetIndex);\n\n if (found) {\n node.context.next = found;\n break;\n }\n\n if (parent.blockAutoJumpToParent === true)\n break;\n\n // JUMP TO PARENT\n targetIndex = parent.index + 1;\n parent = parent.parent;\n }\n }\n }\n\n async resolveNodeTree({ root }) {\n for await (const node of root.childs) {\n await this.resolveTypeWorkflow({ node });\n }\n }\n\n async resolveTypeWorkflow({ node }) {\n node.context.transform = cloneDeep(node.definition);\n const transform = node.context.transform;\n\n for (let i = 0; i < transform.params?.length; i++) {\n const param = transform.params[i];\n if (typeof param === 'string') transform.params[i] = { key: param, hasDefault: false };\n else {\n const paramKey = Object.keys(param)[0];\n transform.params[i] = { key: paramKey, hasDefault: true, default: param[paramKey] };\n }\n }\n\n node.context.next = node.childs[0];\n\n for await (const child of node.childs) {\n await this.resolveType({ node: child })\n }\n }\n\n async resolveType({ node }) {\n if (node.type === 'assign') await this.resolveTypeAssign({ node });\n else if (node.type === 'return') await this.resolveTypeReturn({ node });\n else if (node.type === 'call') await this.resolveTypeCall({ node });\n else if (node.type === 'form') await this.resolveTypeForm({ node });\n else if (node.type === 'raise') await this.resolveTypeRaise({ node });\n else if (node.type === 'switch') await this.resolveTypeSwitch({ node });\n else if (node.type === 'jump') await this.resolveTypeJump({ node });\n else if (node.type === 'tryexcept') await this.resolveTypeTryExcept({ node });\n else if (node.type === 'for') await this.resolveTypeFor({ node });\n else if (node.type === 'operation') await this.resolveTypeOperation({ node });\n else if (node.type === 'steps') await this.resolveTypeSteps({ node });\n\n for await (const child of node.childs) {\n await this.resolveType({ node: child })\n }\n }\n\n async resolveTypeAssign({ node }) {\n node.context.transform = cloneDeep(node.definition);\n const transform = node.context.transform;\n\n //<\n for (let i = 0; i < transform.assign?.length; i++) {\n let assign = transform.assign[i];\n let assignKey = Object.keys(assign)[0];\n let assingValue = assign[assignKey];\n\n // ?\n let assignKeyTransform = this.transformValue(assignKey);\n let assignValueTransform = this.transformValue(assingValue);\n\n let assignTransform = {\n key: JSON.stringify(assignKeyTransform),\n value: JSON.stringify(assignValueTransform)\n }\n\n assignTransform.key = this.replaceExpression(assignTransform.key);\n assignTransform.value = this.replaceExpression(assignTransform.value);\n\n transform.assign[i] = assignTransform;\n }\n //>\n\n this.resolveTypeCommon({ node });\n this.resolveNextBlock({ node });\n }\n\n async resolveTypeSteps({ node }) {\n node.context.next = node.childs[0];\n // this.assignNextStep({ node });\n }\n\n async resolveTypeReturn({ node }) {\n node.context.transform = node.context.transform || cloneDeep(node.definition);\n // const transform = node.context.transform;\n\n this.resolveTypeCommon({ node });\n }\n\n async resolveTypeCall({ node }) {\n node.context.transform = node.context.transform || cloneDeep(node.definition);\n const transform = node.context.transform;\n\n if (transform.args)\n transform.args = this.transformExpression(transform.args);\n\n if (transform.result)\n transform.result = this.transformExpression(transform.result);\n\n const root = node.workflow.parent;\n\n node.context.lib = root.context.libs.find(w => w.name === transform.call);\n\n this.resolveTypeCommon({ node });\n\n this.resolveNextBlock({ node });\n }\n\n async resolveTypeForm({ node }) {\n node.context.transform = node.context.transform || cloneDeep(node.definition);\n const transform = node.context.transform;\n\n if (transform.props)\n transform.props = this.transformExpression(transform.props);\n\n const root = node.workflow.parent;\n\n node.context.lib = root.context.libs.find(w => w.name === transform.form);\n\n this.resolveTypeCommon({ node });\n this.resolveNextBlock({ node });\n }\n\n async resolveTypeRaise({ node }) {\n node.context.transform = node.context.transform || cloneDeep(node.definition);\n const transform = node.context.transform;\n\n transform.raise = this.transformExpression(transform.raise);\n\n this.resolveTypeCommon({ node });\n }\n\n async resolveTypeSwitch({ node }) {\n node.context.transform = node.context.transform || cloneDeep(node.definition);\n const transform = node.context.transform;\n\n for (const child of node.childs) {\n child.context.transform = child.context.transform || cloneDeep(child.definition);\n child.context.transform.condition = this.replaceExpression(JSON.stringify(this.transformValue(child.definition.condition)));\n }\n this.resolveTypeCommon({ node });\n this.resolveNextBlock({ node });\n }\n\n async resolveTypeJump({ node }) {\n node.context.transform = node.context.transform || cloneDeep(node.definition);\n const transform = node.context.transform;\n\n transform.next = this.transformExpression(transform.next);\n\n this.resolveTypeCommon({ node });\n this.resolveNextBlock({ node });\n }\n\n async resolveTypeTryExcept({ node }) {\n node.context.transform = node.context.transform || cloneDeep(node.definition);\n const transform = node.context.transform;\n\n node.context.try = node.childs.find(w => w.name === 'try');\n node.context.except = node.childs.find(w => w.name === 'except');\n\n if (node.context.except) {\n const child = node.context.except;\n child.context.transform = child.context.transform || cloneDeep(child.definition);\n if (!child.context.transform.hasOwnProperty('as')) child.context.transform.as = 'error';\n }\n\n this.resolveTypeCommon({ node });\n this.resolveNextBlock({ node });\n }\n\n async resolveTypeFor({ node }) {\n node.context.transform = node.context.transform || cloneDeep(node.definition);\n const transform = node.context.transform;\n\n transform.for.in = this.transformExpression(node.definition.for.in);\n\n\n this.resolveTypeCommon({ node });\n this.resolveNextBlock({ node });\n }\n\n async resolveTypeOperation({ node }) {\n node.context.transform = node.context.transform || cloneDeep(node.definition);\n // const transform = node.context.transform;\n\n this.resolveTypeCommon({ node });\n }\n\n resolveTypeCommon({ node }) {\n const transform = node.context.transform;\n\n if (transform.hasOwnProperty('operation'))\n transform.operation = this.transformValue(transform.operation);\n \n if (transform.hasOwnProperty('page'))\n transform.page = this.transformExpression(transform.page);\n\n if (transform.hasOwnProperty('print'))\n transform.print = this.transformExpression(transform.print);\n\n if (transform.hasOwnProperty('sleep'))\n transform.sleep = this.transformExpression(transform.sleep);\n }\n\n // CREATE\n async createAtomLibFiles({ root }) {\n await this.setInProgress({ message: \"Creating external lib files.\" });\n\n this.#atom.typesDir = './types';\n\n const libs = root.context.libs;\n const atomLibRefs = libs.filter(w => w.type === 'atom');\n for (let i = 0; i < atomLibRefs.length; i++) {\n const atomLibRef = atomLibRefs[i];\n\n const atomLib = atomLibRef.atom;\n const projectDir = this.#context.projectDir;\n if (atomLib.protocol === 'local:') {\n const srcFilePath = path.resolve(this.#context.projectSrcDir, `${atomLib.fileName || atomLib.name}.js`);\n const relativePath = path.relative(`${this.#context.projectDir}/src/default/blocks`, srcFilePath);\n\n if (!fs.existsSync(srcFilePath)) {\n fs.mkdirSync(path.dirname(srcFilePath), { recursive: true });\n let template = 'export default async (args)=>{\\n';\n template += '}';\n fs.writeFileSync(srcFilePath, template, 'utf8');\n }\n\n atomLib.relativePath = relativePath;\n\n this.#atom.typesDir = './types/target/src';\n }\n else if (atomLib.protocol === 'npm:') {\n // nothing\n atomLib.relativePath = atomLib.name;\n }\n else {\n const atomLibPath = `${projectDir}/src/libs/${atomLib.id}.js`;\n const content = atomLib.doc.contents?.find(w => w.format === 'esm') || atomLib.doc;\n fs.writeFileSync(atomLibPath, content.content, 'utf8');\n }\n }\n }\n\n async createEngine({ root }) {\n\n await this.setInProgress({ message: \"Creating engine file.\" });\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `src/default/engine.js.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render({ ...root, ui: { package: \"@flownet/react-app\" } });\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `src/default/index.js`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createNodeTree({ root }) {\n await this.setInProgress({ message: \"Creating block files.\" });\n\n for await (const node of root.childs) {\n await this.createTypeWorkflow({ node });\n }\n }\n\n async createTypeWorkflow({ node }) {\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `src/default/workflow.js.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const flowTemplateRender = template.render(node);\n\n const projectDir = this.#context.projectDir;\n const flowFilePath = path.resolve(projectDir, `src/default/${node.codeKey}.js`);\n fs.writeFileSync(flowFilePath, flowTemplateRender, 'utf8');\n\n for await (const child of node.childs) {\n await this.createType({ node: child });\n }\n }\n\n async createType({ node }) {\n\n switch (node.type) {\n case \"assign\":\n case \"steps\":\n case \"return\":\n case \"call\":\n case \"form\":\n case \"raise\":\n case \"switch\":\n case \"jump\":\n case \"tryexcept\":\n case \"for\":\n case \"operation\":\n this.createBlockFromTemplate({ node });\n break;\n default:\n break;\n }\n\n for await (const child of node.childs) {\n await this.createType({ node: child });\n }\n }\n\n createBlockFromTemplate({ node }) {\n const template = this.getBlockTemplate({ node });\n node.context.render = template.render(node);\n this.createStepFile({ node });\n }\n\n getBlockTemplate({ node }) {\n let template = this.#stepTemplateCache[node.type];\n if (template) return template;\n\n const templateDir = this.#context.templateDir;\n\n template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `src/default/blocks/${node.type}.js.njk`), \"utf8\"),\n this.#njEnv\n );\n\n this.#stepTemplateCache[node.type] = template;\n\n return template;\n }\n\n createStepFile({ node }) {\n const projectDir = this.#context.projectDir;\n const stepFileName = `${node.codeKey}.js`;\n const stepFilePath = path.resolve(projectDir, `src/default/blocks/${stepFileName}`);\n fs.writeFileSync(stepFilePath, node.context.render, 'utf8');\n node.context.fileName = stepFileName;\n node.context.filePath = stepFilePath;\n }\n\n transformExpression(value) {\n let temp = this.transformValue(value);\n temp = JSON.stringify(temp);\n temp = this.replaceExpression(temp);\n\n return temp;\n }\n\n transformValue(value) {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n value[i] = this.transformValue(value[i]);\n }\n }\n else if (isObject(value)) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i++) {\n value[keys[i]] = this.transformValue(value[keys[i]]);\n }\n }\n return value;\n }\n\n replaceExpression(value) {\n // https://regex101.com/r/ZC9Wxb/1\n const regex = /(?<outer>\"\\${(?<inner>[^{]*)}\")/g;\n return value.replaceAll(regex, \"$2\");\n }\n\n async createRollup() {\n\n await this.setInProgress({ message: \"Creating rollup file.\" });\n\n const templateContext = { workflowAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `rollup.config.js.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `rollup.config.js`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createPackageJSON() {\n\n await this.setInProgress({ message: \"Creating package.json.\" });\n\n // TODO: PEER DEPENDENCIES\n // REACT CHECK\n const reactDep = this.#packageDependencies.find(w => w.package === 'react');\n const reactDomDep = this.#packageDependencies.find(w => w.package === 'react-dom');\n if (reactDep && !reactDomDep)\n this.#packageDependencies.push({ package: \"react-dom\", version: reactDep.version });\n else if (reactDep && reactDomDep)\n reactDomDep.version = reactDep.version;\n\n // EMOTION CHECK\n if (reactDep) {\n if (!this.#packageDependencies.find(w => w.package === '@emotion/react'))\n this.#packageDependencies.push({ package: \"@emotion/react\", version: \"^11\" });\n if (!this.#packageDependencies.find(w => w.package === '@emotion/styled'))\n this.#packageDependencies.push({ package: \"@emotion/styled\", version: \"^11\" });\n }\n\n const templateContext = { workflowAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `package.json.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `package.json`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createBin() {\n\n if (this.#atom.doc.features.bin_file_enabled !== true) return;\n\n await this.setInProgress({ message: \"Creating bin file.\" });\n\n // bin\n const projectDir = this.#context.projectDir;\n let result = shell.exec(`mkdir ${projectDir}/bin`);\n if (result.code !== 0) throw new Error('Couldnt create library/bin dir.');\n\n const templateContext = { workflowAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n\n // bin/index.js\n let template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `bin/index.js.njk`), \"utf8\"),\n this.#njEnv\n );\n\n let templateRender = template.render(templateContext);\n\n let filePath = path.resolve(projectDir, `bin/index.js`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n\n // // bin/index.mjs\n // template = nunjucks.compile(\n // fs.readFileSync(path.resolve(templateDir, `bin/index.mjs.njk`), \"utf8\"),\n // this.#njEnv\n // );\n\n // templateRender = template.render(templateContext);\n\n // filePath = path.resolve(projectDir, `bin/index.mjs`);\n // fs.writeFileSync(filePath, templateRender, 'utf8');\n\n }\n\n async createIndexHtml() {\n\n if (!this.#atom.doc.features.index_html_enabled) return;\n\n await this.setInProgress({ message: \"Creating index.html.\" });\n\n const templateContext = {\n workflowAtom: this.#atom,\n atom: this.#atom,\n packageDependencies: this.#packageDependencies,\n ts: Date.now()\n }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `index.html.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `index.html`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createAutoRun() {\n\n if (this.#atom.doc.features.multiple === true ||\n !this.#atom.doc.features.browser_enabled ||\n !this.#atom.doc.features.browser_autorun) return;\n\n await this.setInProgress({ message: \"Creating autorun.html.\" });\n\n const templateContext = {\n workflowAtom: this.#atom,\n atom: this.#atom,\n packageDependencies: this.#packageDependencies,\n ts: Date.now()\n }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `autorun.html.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `autorun.html`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createTsConfig() {\n\n await this.setInProgress({ message: \"Creating tsconfig.json.\" });\n\n const templateContext = { workflowAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `tsconfig.json.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `tsconfig.json`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createGitIgnore() {\n\n await this.setInProgress({ message: \"Creating .gitignore\" });\n\n const templateContext = { workflowAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `.gitignore.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `.gitignore`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createGitIgnore() {\n\n await this.setInProgress({ message: \"Creating .gitignore\" });\n\n const templateContext = { workflowAtom: this.#atom, atom: this.#atom, packageDependencies: this.#packageDependencies }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `.gitignore.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `.gitignore`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createProjectYaml() {\n\n const fileBase = `flow.yaml`;\n const message = `Creating ${fileBase}`;\n\n await this.setInProgress({ message: message });\n\n const { content: main, ...content } = this.#atom.doc;\n\n const templateContext = { content: yaml.dump(content) }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `${fileBase}.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `${fileBase}`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createProjectMainYaml() {\n\n const fileBase = `flow.main.yaml`;\n const message = `Creating ${fileBase}`;\n\n await this.setInProgress({ message: message });\n\n const { content: main, ...content } = this.#atom.doc;\n\n const templateContext = { content: main }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `${fileBase}.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `${fileBase}`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async createProjectReadme() {\n\n const fileBase = `readme.md`;\n const message = `Creating ${fileBase}`;\n\n await this.setInProgress({ message: message });\n\n if (this.#context.project?.readme) {\n\n const templateContext = { content: this.#context.project.readme.doc.content }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `${fileBase}.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `${fileBase}`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n else if (this.#atom.id) {\n const wiki = await Atom.first({ type: \"wiki\", parent_id: this.#atom.id });\n\n if (!wiki || wiki.doc?.[\"content-type\"] !== 'markdown') return;\n\n const { content: main, ...content } = wiki.doc;\n\n const templateContext = { content: main }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `${fileBase}.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `${fileBase}`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n }\n\n async createToYargs() {\n\n await this.setInProgress({ message: \"Creating yargs.\" });\n\n const options = {};\n const inputs = this.#atom.doc.inputs || [];\n const imports = [];\n\n inputs.forEach(input => {\n if (input.cli === false || !input.name) return;\n if (input.import) imports.push(input);\n\n const option = {};\n if (input.type) option.type = input.type;\n if (input.default) option.default = input.default;\n if (input.choices) option.choices = input.choices;\n if (input.describe || input.description) option.describe = input.describe || input.description;\n if (input.alias) option.alias = input.alias;\n if (input.required === true) option.required = true;\n if (input.hidden === true) option.hidden = true;\n if (input.array === true) option.array = true;\n if (input.normalize === true) option.normalize = true;\n if (input.nargs) option.nargs = input.nargs;\n\n options[input.name] = option;\n });\n\n const templateContext = { options, imports, atom: this.#atom }\n\n const templateDir = this.#context.templateDir;\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `src/default/to.yargs.js.njk`), \"utf8\"),\n this.#njEnv\n );\n\n const templateRender = template.render(templateContext);\n\n const projectDir = this.#context.projectDir;\n const filePath = path.resolve(projectDir, `src/default/to.yargs.js`);\n fs.writeFileSync(filePath, templateRender, 'utf8');\n }\n\n async runBuildScripts() {\n const projectDir = this.#context.projectDir;\n\n await this.setInProgress({ message: \"Installing npm packages.\" });\n let result = shell.exec(`npm install ${this.#atom.doc.features.npm_install_flags}`, { cwd: projectDir });\n if (result.code !== 0) throw new Error('Couldnt install npm packages.');\n\n await this.setInProgress({ message: \"Prettifiying source files.\" });\n result = shell.exec(`prettier --write src/**/* bin/* *.{js,json,yaml,html} --no-error-on-unmatched-pattern`, { cwd: projectDir });\n if (result.code !== 0) throw new Error('Couldnt format files.');\n\n await this.setInProgress({ message: \"Creating .d.ts\" });\n result = shell.exec(`tsc`, { cwd: projectDir });\n if (result.code !== 0) throw new Error('Couldnt create .d.ts files.');\n\n await this.setInProgress({ message: \"Building main project.\" });\n result = shell.exec(`npm run build`, { cwd: projectDir });\n if (result.code !== 0) throw new Error('Couldnt build workflow project.');\n }\n\n async runPrettifier() {\n const projectDir = this.#context.projectDir;\n\n const result = shell.exec(`prettier --write .`, { cwd: path.resolve(projectDir, \"src\") });\n if (result.code !== 0) throw new Error(result.stderr);\n }\n\n async deploy() {\n\n await this.setInProgress({ message: \"Deploying.\" });\n\n if (this.#context.project?.devops) {\n const devopsProjects = [this.#context.project?.devops];\n for (let i = 0; i < devopsProjects.length; i++) {\n let deploymentProject = devopsProjects[i];\n await this.deployProject({ deploymentProject });\n\n if (deploymentProject.isDirty === true) {\n await deploymentProject.save();\n }\n }\n\n } else if (this.#atom.id) {\n const deploymentProjects = await Atom.list({ type: \"workflow.deploy\", parent_id: this.#atom.id });\n for (let i = 0; i < deploymentProjects.length; i++) {\n let deploymentProject = deploymentProjects[i];\n await this.deployProject({ deploymentProject });\n\n if (deploymentProject.isDirty === true) {\n deploymentProject = await Atom.update(deploymentProject, { id: deploymentProject.id });\n }\n }\n }\n }\n\n async deployProject(context) {\n const { deploymentProject } = context;\n const targets = deploymentProject.doc.targets;\n for (let i = 0; i < targets.length; i++) {\n const deploymentProjectTarget = targets[i];\n await this.deployProjectTarget({ deploymentProject, deploymentProjectTarget });\n }\n }\n\n async deployProjectTarget(context) {\n const { deploymentProjectTarget, deploymentProject } = context;\n\n if (deploymentProjectTarget.enabled !== true) return;\n\n if (deploymentProjectTarget.name === this.#atomConfig.env.ATOM_DEPLOY_LIBRARY_TARGET) await this.deployAsWorkflowLib(context);\n else if (deploymentProjectTarget.name === this.#atomConfig.env.ATOM_DEPLOY_RED_TARGET) await this.deployAsRedFlow(context);\n else if (deploymentProjectTarget.name === this.#atomConfig.env.ATOM_DEPLOY_NPM_TARGET) await this.deployAsNpm(context);\n else if (deploymentProjectTarget.name === \"pm\") await this.deployAsPm(context);\n else if (deploymentProjectTarget.name === \"gitlab\") await this.deployAsGitlab(context);\n else if (deploymentProjectTarget.name === \"webos\") await this.deployAsWebos(context);\n else if (deploymentProjectTarget.name === \"electron\") await this.deployAsElectron(context);\n else if (deploymentProjectTarget.name === \"macos-app\") await this.deployAsMacOSApp(context);\n else if (deploymentProjectTarget.name === \"ios-app\") await this.deployAsIOSApp(context);\n else {\n let deployer;\n\n if (deploymentProjectTarget.name === 'nextjs') deployer = deployToNextjs;\n\n if (!deployer) return;\n\n const result = await deployer({\n atom: this.#atom,\n target: deploymentProjectTarget,\n onProgress: this.setInProgress.bind(this),\n projectDir: this.#context.projectDir,\n dependencies: this.#packageDependencies\n });\n deploymentProjectTarget.build = { id: this.#buildId, ts: Date.now() };\n deploymentProject.isDirty = true;\n }\n }\n\n async deployAsWorkflowLib(context) {\n await this.setInProgress({ message: \"Deploying it as workflow lib.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n let wflibAtom;\n\n let parentId;\n let name;\n let nameParts = target.deploy.name.split('/');\n\n if (nameParts.length === 1) {\n parentId = this.#atomConfig.env.ATOM_LIBRARIES_ID;\n name = target.deploy.name;\n }\n else if (nameParts.length === 2) {\n const folder = await Atom.first({ where: { name: nameParts[0], parent_id: this.#atomConfig.env.ATOM_LIBRARIES_ID, type: \"folder\" }, limit: 1 });\n if (!folder) throw new Error('Couldnt file lib folder.');\n\n parentId = folder.id;\n name = nameParts[1];\n }\n else throw new Error('Wrong name path.');\n\n if (target.dryRun === true) return;\n\n deploymentProject.isDirty = true;\n target.build = { id: this.#buildId, ts: Date.now() };\n\n if (!target.deploy.id) {\n\n wflibAtom = await Atom.create({\n parent_id: parentId,\n doc: {\n name: name,\n type: \"workflow.lib\",\n \"content-type\": \"javascript\",\n dependencies: [],\n content: undefined,\n subtype: \"workflow\"\n }\n });\n\n if (!wflibAtom) return;\n\n target.deploy.id = wflibAtom.id;\n }\n else {\n wflibAtom = await Atom.get({ id: target.deploy.id });\n\n if (!wflibAtom) return;\n }\n\n // const atom = this.#atom;\n\n const projectDir = this.#context.projectDir;\n\n // wflibAtom.doc.content = fs.readFileSync(path.resolve(projectDir, 'dist/default/esm/index.js'), { encoding: 'utf8', flag: 'r' });\n wflibAtom.doc.contents = [\n {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/esm/index.js'), { encoding: 'utf8', flag: 'r' }),\n [\"content-type\"]: \"javascript\",\n format: \"esm\"\n },\n {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/cjs/index.js'), { encoding: 'utf8', flag: 'r' }),\n [\"content-type\"]: \"javascript\",\n format: \"cjs\"\n },\n {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/iife/index.js'), { encoding: 'utf8', flag: 'r' }),\n [\"content-type\"]: \"javascript\",\n format: \"iife\"\n }\n ]\n\n wflibAtom.doc.name = name;\n wflibAtom.doc.dependencies = this.#packageDependencies;\n wflibAtom.doc.subtype = \"workflow\";\n\n wflibAtom = await Atom.update(wflibAtom, { id: wflibAtom.id });\n }\n\n async deployAsRedFlow(context) {\n\n await this.setInProgress({ message: \"Deploying it as node-red flow.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const templateDir = this.#context.templateDir;\n const atom = this.#atom;\n\n let tmpContext;\n\n if (target.deploy.template === 'simple') {\n tmpContext = {\n atom,\n packageDependencies: this.#packageDependencies,\n red: {\n tab: {\n id: target.deploy.id || Red.util.generateId(),\n label: `WF/${atom.id ? atom.id : os.hostname()}/${atom.name}/${target.deploy.name || target.deploy.template}`\n },\n function: {\n id: Red.util.generateId(),\n name: atom.doc.name,\n initialize: {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/iife/index.js'), { encoding: 'utf8', flag: 'r' }),\n var: atom.doc.bundleName\n }\n },\n inject: {\n id: Red.util.generateId(),\n ...target.deploy.params?.inject,\n payload: target.deploy.params?.inject?.payloadType === 'json' ? `'${JSON.stringify(target.deploy.params?.inject?.payload)}'` : target.deploy.params?.inject?.payload\n },\n debug: {\n id: Red.util.generateId()\n }\n }\n }\n }\n else if (target.deploy.template === 'cronjob') {\n let schedulesCloned = target.deploy.params?.schedules ? cloneDeep(target.deploy.params?.schedules) : undefined;\n\n schedulesCloned?.forEach(schedule => {\n if (schedule.payloadType === 'json')\n schedule.payload = `'${JSON.stringify(schedule.payload)}'`;\n });\n\n tmpContext = {\n atom,\n packageDependencies: this.#packageDependencies,\n red: {\n tab: {\n id: target.deploy.id || Red.util.generateId(),\n label: `WF/${atom.id ? atom.id : os.hostname()}/${target.deploy.name || target.deploy.template}`\n },\n function: {\n id: Red.util.generateId(),\n name: atom.doc.name,\n initialize: {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/iife/index.js'), { encoding: 'utf8', flag: 'r' }),\n var: atom.doc.bundleName\n }\n },\n cronjob: {\n id: Red.util.generateId(),\n schedules: schedulesCloned\n },\n debug: {\n id: Red.util.generateId()\n }\n }\n }\n }\n else if (target.deploy.template === 'http') {\n tmpContext = {\n atom,\n packageDependencies: this.#packageDependencies,\n red: {\n tab: {\n id: target.deploy.id || Red.util.generateId(),\n label: `WF/${atom.id ? atom.id : os.hostname()}/${target.deploy.name || target.deploy.template}`\n },\n function: {\n id: Red.util.generateId(),\n name: atom.doc.name,\n initialize: {\n content: fs.readFileSync(path.resolve(projectDir, 'dist/default/iife/index.js'), { encoding: 'utf8', flag: 'r' }),\n var: atom.doc.bundleName\n }\n },\n httpin: {\n id: Red.util.generateId(),\n method: target.deploy.params.method || \"get\",\n url: target.deploy.params.url\n },\n httpout: {\n id: Red.util.generateId(),\n },\n debug: {\n id: Red.util.generateId()\n }\n }\n }\n }\n else return;\n\n const template = nunjucks.compile(\n fs.readFileSync(path.resolve(templateDir, `deploy/node-red/${target.deploy.template}.yaml.njk`), \"utf8\"),\n this.#njEnv\n );\n\n let templateRendered = template.render(tmpContext);\n fs.writeFileSync(path.resolve(projectDir, `node-red.yaml`), templateRendered);\n\n templateRendered = yaml.load(templateRendered);\n\n if (target.dryRun === true) return;\n\n deploymentProject.isDirty = true;\n target.build = { id: this.#buildId, ts: Date.now() };\n\n const redUrl = target.deploy.url || this.#redConfig.env.RED_URL;\n\n const headers = {};\n if (target.deploy.auth !== false) {\n headers[\"Authorization\"] = \"Bearer \" + this.#atomAccessToken;\n }\n\n if (!target.deploy.id) {\n // create\n const response = await axios({\n method: \"POST\",\n url: `${redUrl}/flow`,\n data: templateRendered,\n headers\n });\n\n target.deploy.id = response.data.id;\n }\n else {\n if (target.actions?.delete === true) {\n // update\n const response = await axios({\n method: \"DELETE\",\n url: `${redUrl}/flow/${target.deploy.id}`,\n headers\n });\n delete target.actions.delete;\n delete target.deploy.id;\n target.enabled = false;\n }\n else {\n // update\n const response = await axios({\n method: \"PUT\",\n url: `${redUrl}/flow/${target.deploy.id}`,\n data: templateRendered,\n headers\n });\n }\n }\n }\n\n async deployAsNpm(context) {\n\n await this.setInProgress({ message: \"Deploying it as npm package.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const packageJSONPath = path.resolve(projectDir, 'package.json');\n\n const packageJSONContent = fs.readFileSync(packageJSONPath);\n\n const packageJSON = JSON.parse(packageJSONContent);\n\n packageJSON.name = target.deploy.params.name;\n packageJSON.version = semver.inc(target.deploy.params.version, \"patch\");\n\n const binName = target.deploy.params.bin?.name || target.deploy.params.bin;\n const binEnabled = target.deploy.params.bin?.enabled !== false;\n\n if (binEnabled && binName && typeof binName === 'string') {\n packageJSON.bin = {\n [binName]: 'bin/index.js',\n [this.#atom.doc.name]: 'bin/index.js'\n }\n }\n\n delete packageJSON.scripts;\n delete packageJSON.devDependencies;\n\n packageJSON.scripts = {\n \"serve\": \"npx serve .\"\n }\n\n fs.writeFileSync(packageJSONPath, JSON.stringify(packageJSON, null, \"\\t\"));\n\n fs.writeFileSync(path.resolve(projectDir, '.npmrc'), `//registry.npmjs.org/:_authToken=${this.#npmConfig.env.NPM_TOKEN}`);\n\n if (target.dryRun === true) return;\n\n let result = shell.exec(`npm publish --access public`, { cwd: projectDir });\n if (result.code !== 0) throw new Error('Couldnt publish to npm');\n\n // restore\n fs.writeFileSync(packageJSONPath, packageJSONContent);\n\n deploymentProject.isDirty = true;\n target.deploy.params.version = packageJSON.version;\n target.build = { id: this.#buildId, ts: Date.now() };\n }\n\n async deployAsPm(context) {\n await this.setInProgress({ message: \"Deploying it as pm package.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const packageJSONPath = path.resolve(projectDir, 'package.json');\n\n const packageJSONContent = fs.readFileSync(packageJSONPath);\n\n const packageJSON = JSON.parse(packageJSONContent);\n\n packageJSON.name = target.deploy.params.name;\n packageJSON.version = semver.inc(target.deploy.params.version, \"patch\");\n\n delete packageJSON.scripts;\n delete packageJSON.devDependencies;\n\n fs.writeFileSync(packageJSONPath, JSON.stringify(packageJSON, null, \"\\t\"));\n\n const { file: pmFile, data: pmConfig } = await fnetLoadFnetConfig({\n name: target.deploy.params.pm?.config || this.#context.pmConfig || \"pm\",\n dir: this.#context.projectDir\n });\n\n let command = `fnet-upload-files-to-gcs`;\n command += ` --projectId='${pmConfig.env.PM_PROJECT_ID}'`;\n command += ` --bucketName='${pmConfig.env.PM_BUCKET_NAME}'`;\n command += ` --keyFilename='${path.resolve(path.dirname(pmFile), pmConfig.env.PM_UPLOADER_KEY_FILE)}'`;\n command += ` --dir='${projectDir}'`;\n command += ` --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}`;\n command += ` --destDir='${packageJSON.name}/${packageJSON.version}'`;\n command += ` --headers.cacheControl='public, max-age=31536000, immutable'`;\n\n if (target.dryRun === true) command += ` --dryRun`;\n\n await fnetExecuteCommandWithIpcFile({ command });\n\n // restore\n fs.writeFileSync(packageJSONPath, packageJSONContent);\n\n if (target.dryRun === true) return;\n\n if (target.deploy.form?.enabled === true) {\n if (!target.deploy.form.id) {\n // create new\n const form = await Atom.create({\n parent_id: this.#atomConfig.env.ATOM_FORMS_ID,\n doc: {\n name: target.deploy.params.name,\n type: \"workflow.form\",\n workflow: {\n id: this.#atom.id,\n },\n versions: [{ v: packageJSON.version }]\n }\n });\n target.deploy.form.id = form.id;\n }\n else {\n // update\n const form = await Atom.get({ id: target.deploy.form.id });\n if (!form) throw new Error('Couldnt find form.');\n\n form.doc.name = target.deploy.params.name;\n form.doc.workflow = { id: this.#atom.id };\n form.doc.versions.splice(0, 0, { v: packageJSON.version });\n\n await Atom.update(form, { id: form.id });\n }\n }\n\n deploymentProject.isDirty = true;\n target.deploy.params.version = packageJSON.version;\n target.build = { id: this.#buildId, ts: Date.now() };\n\n await this.registerToPackageManager({ target, packageJSON });\n }\n\n async deployAsGitlab(context) {\n await this.setInProgress({ message: \"Deploying it as gitlab project.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n\n let command = `fnet-to-gitlab`;\n\n const configKey = target.deploy.params.config || 'gitlab';\n\n const config = fnetLoadFnetConfig({\n name: configKey,\n dir: this.#context.projectDir\n });\n\n if (!config) throw new Error(`Couldnt load config ${configKey}`);\n\n const { data: inputs } = config.data;\n\n command += ` --projectGroupId=${inputs.projectGroupId}`;\n command += ` --projectPath='${projectDir}'`;\n command += ` --projectName='${target.deploy.params.name}'`;\n command += ` --projectBranch='${target.deploy.params.branch || 'main'}'`;\n\n command += ` --gitlabHost='${inputs.gitlabHost}'`;\n command += ` --gitlabToken='${inputs.gitlabToken}'`;\n command += ` --gitlabUsername='${inputs.gitlabUsername}'`;\n command += ` --gitlabUserEmail='${inputs.gitlabUserEmail}'`;\n\n if (target.dryRun === true) return;\n\n await fnetExecuteCommandWithIpcFile({ command });\n\n deploymentProject.isDirty = true;\n target.build = { id: this.#buildId, ts: Date.now() };\n }\n\n async deployAsWebos(context) {\n\n await this.setInProgress({ message: \"Deploying it as webos package.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const nextVersion = semver.inc(target.deploy.params.version, \"patch\");\n\n if (target.dryRun === true) return;\n\n const params = target.deploy.params;\n\n const args = {\n id: params.id,\n ver: nextVersion,\n title: params.title,\n vendor: params.vendor,\n src: projectDir,\n srcBundleName: this.#atom.doc.bundleName,\n dest: projectDir,\n destName: \"webos\",\n atom: this.#atom,\n atomTarget: target\n }\n const result = await fnetToWebos(args);\n console.log(result);\n\n deploymentProject.isDirty = true;\n target.deploy.params.version = nextVersion;\n target.build = { id: this.#buildId, ts: Date.now() };\n }\n\n async deployAsElectron(context) {\n\n await this.setInProgress({ message: \"Deploying it as electron package.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const nextVersion = semver.inc(target.deploy.params.version, \"patch\");\n\n if (target.dryRun === true) return;\n\n const params = target.deploy.params;\n\n const args = {\n id: params.id,\n ver: nextVersion,\n title: params.title,\n vendor: params.vendor,\n projectDir,\n projectBundleName: this.#atom.doc.bundleName,\n renderDir: path.resolve(projectDir, 'electron'),\n atom: this.#atom,\n atomTarget: target\n }\n const result = await fnetToElectron(args);\n console.log(result);\n\n deploymentProject.isDirty = true;\n target.deploy.params.version = nextVersion;\n target.build = { id: this.#buildId, ts: Date.now() };\n }\n\n async deployAsMacOSApp(context) {\n\n await this.setInProgress({ message: \"Deploying it as macos app package.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const nextVersion = semver.inc(target.deploy.params.version, \"patch\");\n\n if (target.dryRun === true) return;\n\n const params = target.deploy.params;\n\n const args = {\n id: params.id,\n ver: nextVersion,\n title: params.title,\n vendor: params.vendor,\n projectDir,\n projectBundleName: this.#atom.doc.bundleName,\n renderDir: path.resolve(projectDir, 'macos-app'),\n atom: this.#atom,\n atomTarget: target\n }\n const result = await fnetToMacOSApp(args);\n console.log(result);\n\n deploymentProject.isDirty = true;\n target.deploy.params.version = nextVersion;\n target.build = { id: this.#buildId, ts: Date.now() };\n }\n\n async deployAsIOSApp(context) {\n\n await this.setInProgress({ message: \"Deploying it as ios app package.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const nextVersion = semver.inc(target.deploy.params.version, \"patch\");\n\n if (target.dryRun === true) return;\n\n const params = target.deploy.params;\n\n const args = {\n id: params.id,\n ver: nextVersion,\n title: params.title,\n vendor: params.vendor,\n projectDir,\n projectBundleName: this.#atom.doc.bundleName,\n renderDir: path.resolve(projectDir, 'ios-app'),\n atom: this.#atom,\n atomTarget: target\n }\n const result = await fnetToIOSApp(args);\n console.log(result);\n\n deploymentProject.isDirty = true;\n target.deploy.params.version = nextVersion;\n target.build = { id: this.#buildId, ts: Date.now() };\n }\n\n async deployAsIOSApp(context) {\n\n await this.setInProgress({ message: \"Deploying it as ios app package.\" });\n\n const { deploymentProject, deploymentProjectTarget: target } = context;\n\n const projectDir = this.#context.projectDir;\n const nextVersion = semver.inc(target.deploy.params.version, \"patch\");\n\n if (target.dryRun === true) return;\n\n const params = target.deploy.params;\n\n const args = {\n id: params.id,\n ver: nextVersion,\n title: params.title,\n vendor: params.vendor,\n projectDir,\n projectBundleName: this.#atom.doc.bundleName,\n renderDir: path.resolve(projectDir, 'ios-app'),\n atom: this.#atom,\n atomTarget: target\n }\n const result = await fnetToIOSApp(args);\n console.log(result);\n\n deploymentProject.isDirty = true;\n target.deploy.params.version = nextVersion;\n target.build = { id: this.#buildId, ts: Date.now() };\n }\n\n async registerToPackageManager(context) {\n const { target, packageJSON } = context;\n\n // update\n let packageAtom = await Atom.first({ name: target.deploy.params.name, parent_id: this.#atomConfig.env.ATOM_PACKAGES_ID });\n\n if (!packageAtom) {\n // create new\n packageAtom = await Atom.create({\n parent_id: this.#atomConfig.env.ATOM_PACKAGES_ID,\n doc: {\n name: target.deploy.params.name,\n type: \"pm\",\n versions: [{ v: packageJSON.version }]\n }\n });\n }\n else {\n // update existing\n packageAtom.doc.versions.splice(0, 0, { v: packageJSON.version });\n\n await Atom.update(packageAtom, { id: packageAtom.id });\n }\n }\n\n async setInProgress({ message }) {\n await this._cache_set(this.#buildKey, { status: \"IN_PROGRESS\", message });\n }\n\n async build() {\n if (this.#bpmnMode && !this.#fileMode) return await this.createNetwork();\n\n try {\n const network = this.#bpmnMode ? await fnetBpmnFromFlow({ root: this.#root }) : undefined;\n\n if (this.#fileMode) {\n\n await this.initWorkflowDir();\n await this.initNunjucks();\n\n if (this.#bpmnMode)\n fs.writeFileSync(path.resolve(this.#context.projectDir, './project.bpmn'), network.diagramXML, 'utf8');\n\n await this.createAtomLibFiles({ root: this.#root });\n await this.createEngine({ root: this.#root });\n await this.createNodeTree({ root: this.#root });\n await this.createRollup();\n await this.createBin();\n await this.createPackageJSON();\n await this.createTsConfig();\n await this.createGitIgnore();\n await this.createProjectYaml();\n await this.createProjectMainYaml();\n await this.createProjectReadme();\n await this.createToYargs();\n await this.createIndexHtml();\n await this.createAutoRun();\n\n if (this.#buildMode) {\n await this.runBuildScripts();\n\n if (this.#deployMode)\n await this.deploy();\n }\n }\n\n await this._cache_set(this.#buildKey, { status: \"COMPLETED\", data: { network } });\n }\n catch (error) {\n await this._cache_set(this.#buildKey, { status: \"FAILED\", message: error.message || error });\n throw error;\n }\n }\n\n async createNetwork() {\n try {\n const network = await fnetBpmnFromFlow({ root: this.#root });\n\n await this._cache_set(this.#buildKey, { status: \"COMPLETED\", data: { ...network } });\n }\n catch (error) {\n await this._cache_set(this.#buildKey, { status: \"FAILED\", message: error.message || error });\n throw error;\n }\n }\n}\nmodule.exports = Builder;","const fs = require('node:fs');\nconst path = require('node:path');\n\nfunction findNodeModules({ baseDir = __dirname }) {\n let currentDir = baseDir;\n\n while (currentDir !== path.parse(currentDir).root) {\n const potentialPath = path.join(currentDir, 'node_modules');\n\n if (fs.existsSync(potentialPath)) {\n return potentialPath;\n }\n\n currentDir = path.dirname(currentDir);\n }\n\n return null;\n}\n\nmodule.exports = findNodeModules;","// #!/usr/bin/env node\nconst cwd = process.cwd();\nconsole.log(`cwd: ${cwd}`);\n\n// fnet env\nrequire('@flownet/lib-load-fnet-config')({\n name: [\"redis\"],\n dir: cwd\n});\n\nconst path = require('path');\nconst yargs = require('yargs/yargs');\nconst { hideBin } = require('yargs/helpers');\nconst fs = require('fs');\nconst YAML = require('yaml');\nconst shell = require('shelljs');\n\nconst flownetRenderTemplatesDir = require('@flownet/lib-render-templates-dir');\nconst Builder = require('./wf-builder');\n\nconst nodeModulesDir = require('./find-node-modules')({ baseDir: __dirname });\nprocess.env.PATH = `${nodeModulesDir}/.bin:${process.env.PATH}`;\n\nyargs(hideBin(process.argv))\n .command('create', 'Initialize flow node project', (yargs) => {\n return yargs\n .option('name', { type: 'string' });\n }, async (argv) => {\n try {\n const templateDir = path.resolve(nodeModulesDir, './@flownet/template-node-workflow/project');\n const outDir = path.resolve(cwd, argv.name);\n if (!fs.existsSync(outDir)) fs.mkdirSync(outDir);\n\n await flownetRenderTemplatesDir({\n dir: templateDir,\n outDir,\n context: argv\n });\n \n let shellResult = shell.exec(`fnet build`, { cwd: outDir });\n if (shellResult.code !== 0) throw new Error('Failed to build project.');\n\n if (shell.which('git')) {\n shellResult = shell.exec(`git init`, { cwd: outDir });\n if (shellResult.code !== 0) throw new Error('Failed to initialize git.');\n }\n\n console.log('Creating project succeeded!');\n\n process.exit(0);\n } catch (error) {\n console.log('Initialization failed!', error);\n process.exit(1);\n }\n })\n .command('build', 'Build flow net project', (yargs) => {\n return yargs\n .option('id', { type: 'string' })\n .option('buildId', { type: 'string', alias: 'bid' })\n .option('mode', { type: 'string', alias: 'm', default: \"build\", choices: ['all', 'file', 'build', 'deploy', 'bpmn'] })\n ;\n }, async (argv) => {\n try {\n const context = await createContext(argv);\n const builder = new Builder(context);\n await builder.init();\n await builder.build();\n console.log('Building workflow succeeded!');\n process.exit(0);\n } catch (error) {\n console.log('Building workflow failed!', error);\n process.exit(1);\n }\n })\n .command('npm [commands..]', 'npm - bridge', (yargs) => {\n return yargs\n .option('id', { type: 'string' });\n }, async (argv) => {\n try {\n const context = await createContext(argv);\n const { projectDir } = context;\n\n const commands = argv.commands || [];\n const flags = Object.keys(argv)\n .filter(key => key !== '_' && key !== '$0' && key !== 'commands' && key !== 'id' && typeof argv[key] !== 'object')\n .map(key => `--${key}=${argv[key]}`)\n .join(' ');\n\n const command = `npm ${commands.join(' ')} ${flags}`;\n\n shell.exec(command, { cwd: projectDir });\n process.exit(0);\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n })\n .command('node [commands..]', 'node - bridge', (yargs) => {\n return yargs\n .option('id', { type: 'string' });\n }, async (argv) => {\n try {\n const context = await createContext(argv);\n const { projectDir } = context;\n\n const commands = argv.commands || [];\n const flags = Object.keys(argv)\n .filter(key => key !== '_' && key !== '$0' && key !== 'commands' && key !== 'id' && typeof argv[key] !== 'object')\n .map(key => `--${key}=${argv[key]}`)\n .join(' ');\n\n const command = `node ${commands.join(' ')} ${flags}`;\n\n shell.exec(command, { cwd: projectDir });\n process.exit(0);\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n })\n .command('serve [commands..]', 'npm run serve - bridge', (yargs) => {\n return yargs\n .option('id', { type: 'string' });\n }, async (argv) => {\n try {\n const context = await createContext(argv);\n const { projectDir } = context;\n\n const commands = argv.commands || [];\n const flags = Object.keys(argv)\n .filter(key => key !== '_' && key !== '$0' && key !== 'commands' && key !== 'id' && typeof argv[key] !== 'object')\n .map(key => `--${key}=${argv[key]}`)\n .join(' ');\n\n const command = `npm run serve ${commands.join(' ')} ${flags}`;\n\n shell.exec(command, { cwd: projectDir });\n process.exit(0);\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n })\n .command('watch [commands..]', 'npm run watch - bridge', (yargs) => {\n return yargs\n .option('id', { type: 'string' });\n }, async (argv) => {\n try {\n const context = await createContext(argv);\n const { projectDir } = context;\n\n const commands = argv.commands || [];\n const flags = Object.keys(argv)\n .filter(key => key !== '_' && key !== '$0' && key !== 'commands' && key !== 'id' && typeof argv[key] !== 'object')\n .map(key => `--${key}=${argv[key]}`)\n .join(' ');\n\n const command = `npm run watch ${commands.join(' ')} ${flags}`;\n\n shell.exec(command, { cwd: projectDir });\n process.exit(0);\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n })\n .demandCommand(1, 'You need at least one command before moving on')\n .help()\n .argv;\n\nasync function createContext(argv) {\n if (argv.id) {\n const context = {\n id: argv.id,\n buildId: argv.buildId,\n mode: argv.mode,\n protocol: argv.protocol || \"ac:\",\n projectDir: path.resolve(cwd, `./.output/${argv.id}`),\n templateDir: path.resolve(nodeModulesDir, './@flownet/template-node-workflow/default'),\n coreDir: path.resolve(nodeModulesDir, './@flownet/template-node-workflow/core'),\n }\n\n return context;\n } else {\n const project = await loadLocalProject();\n\n const context = {\n buildId: argv.buildId,\n mode: argv.mode,\n protocol: argv.protocol || \"local:\",\n templateDir: path.resolve(nodeModulesDir, './@flownet/template-node-workflow/default'),\n coreDir: path.resolve(nodeModulesDir, './@flownet/template-node-workflow/core'),\n projectDir: path.resolve(project.projectDir, `./target`),\n projectSrcDir: path.resolve(project.projectDir, `./src`),\n project\n }\n\n return context;\n }\n}\n\nasync function loadLocalProject(context) {\n\n // Project file\n const projectFilePath = path.resolve(cwd, 'flow.yaml');\n if (!fs.existsSync(projectFilePath)) throw new Error('flow.yaml file not found in current directory.');\n\n const projectFileContent = fs.readFileSync(projectFilePath, 'utf8');\n const projectFileParsed = YAML.parse(projectFileContent);\n const projectDir = path.dirname(projectFilePath);\n\n // Project main file\n const projectMainFilePath = path.resolve(projectDir, 'flow.main.yaml');\n if (!fs.existsSync(projectFilePath)) throw new Error('flow.main.yaml file not found in current directory.');\n\n const projectMainFileContent = fs.readFileSync(projectMainFilePath, 'utf8');\n const projectMainFileParsed = YAML.parse(projectMainFileContent);\n\n const workflowAtom = {\n doc: {\n ...projectFileParsed,\n \"content-type\": \"yaml\",\n content: projectMainFileContent\n }\n }\n\n const result = {\n workflowAtom,\n projectDir,\n projectFilePath,\n projectFileContent,\n projectFileParsed,\n projectMainFilePath,\n projectMainFileContent,\n projectMainFileParsed\n }\n\n // Project devops file\n const devopsFilePath = path.resolve(projectDir, 'flow.devops.yaml');\n if (fs.existsSync(devopsFilePath)) {\n const devopsFileContent = fs.readFileSync(devopsFilePath, 'utf8');\n const devopsFileParsed = YAML.parse(devopsFileContent);\n result.devops = {\n filePath: devopsFilePath,\n fileContent: devopsFileContent,\n doc: {\n ...devopsFileParsed,\n },\n type: \"workflow.deploy\",\n save: async () => {\n fs.writeFileSync(result.devops.filePath, YAML.stringify(result.devops.doc));\n }\n }\n }\n\n // Project readme file\n const readmeFilePath = path.resolve(projectDir, 'flow.readme.md');\n if (fs.existsSync(readmeFilePath)) {\n const readmeFileContent = fs.readFileSync(readmeFilePath, 'utf8');\n result.readme = {\n filePath: readmeFilePath,\n fileContent: readmeFileContent,\n doc: {\n content: readmeFileContent,\n \"content-type\": \"markdown\",\n },\n type: \"wiki\"\n };\n }\n\n return result;\n}"],"names":["require$$0","axios","require$$1","cloneDeep","merge","require$$2","semver","path","require$$4","fs","shell","require$$3","require$$5","require$$7","require$$9","require$$11","require$$13","require$$14","require$$15","require$$26","Builder","require$$6","require$$8"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e,t,s=require("@flownet/lib-load-fnet-config"),i=require("redis"),r=require("@flownet/lib-is-redis-online"),n=require("express"),o=require("helmet"),l=require("cors"),d=require("path"),c=require("uuid"),a=require("shelljs"),u=require("request-ip"),h=require("express-session"),w=require("keycloak-connect"),p=require("qs");function _(){if(t)return e;t=1;const s=i,n=r;return e=async()=>{if(!await n({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=s.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e}}var b,f,m,y,k={name:"@fnet/cli",version:"0.5.3",files:["dist"],scripts:{start:"node src/index.js",build:"rollup --config --bundleConfigAsCjs",deploy:"npm install && npm run build && npm publish --access public",watch:"rollup --config --watch --sourcemap --bundleConfigAsCjs --environment DEVELOPMENT"},dependencies:{"@flownet/lib-atom-api-js":"^0.1.7","@flownet/lib-bpmn-from-flow":"^0.1.6","@flownet/lib-execute-command-with-ipc-file":"^0.1.10","@flownet/lib-is-redis-online":"^0.1.12","@flownet/lib-list-npm-versions":"^0.1.27","@flownet/lib-load-fnet-config":"^0.1.25","@flownet/lib-parse-imports-js":"^0.1.34","@flownet/lib-parse-node-url":"^0.1.15","@flownet/lib-pick-npm-versions":"^0.1.5","@flownet/lib-render-templates-dir":"^0.1.11","@flownet/lib-to-electron":"^0.1.19","@flownet/lib-to-gitlab":"^0.1.20","@flownet/lib-to-ios-app":"^0.1.20","@flownet/lib-to-macos-app":"^0.1.11","@flownet/lib-to-nextjs":"^0.1.10","@flownet/lib-to-webos":"^0.1.9","@flownet/lib-upload-files-to-gcs":"^0.1.11","@flownet/template-node-library":"^0.4.20","@flownet/template-node-workflow":"^0.5.8","@node-red/util":"^3.1.0",axios:"^1.5.0",chalk:"^4.1.2",cors:"^2.8.5",express:"^4.18.2","express-session":"^1.17.3","get-value":"^3.0.1",helmet:"^5.1.1",isobject:"^4.0.0","js-yaml":"^4.1.0","keycloak-connect":"^22.0.3","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.2",minimist:"^1.2.8",nunjucks:"^3.2.4",prettier:"^3.0.3",qs:"^6.11.2",redis:"^4.6.10","request-ip":"^3.3.0",semver:"^7.5.4",serve:"^14.2.1","set-value":"^4.1.0",shelljs:"^0.8.5",typescript:"^5.2.2",uuid:"^9.0.1",yaml:"^2.3.2",yargs:"^17.7.2"},bin:{fnet:"dist/builder/wf-cli.js",flib:"dist/builder/lib-cli.js",fsrv:"dist/index.js",fnode:"dist/builder/lib-cli.js"},devDependencies:{"@rollup/plugin-commonjs":"^25.0.4","@rollup/plugin-json":"^6.0.0","@rollup/plugin-node-resolve":"^15.2.1","@rollup/plugin-replace":"^5.0.2","@rollup/plugin-terser":"^0.4.3",rollup:"^3.29.1"}};const v=process.cwd();console.log(`cwd: ${v}`),s({name:["server","redis"],dir:v}),async function(){const e=await _()();if(!e)throw new Error("Redis is offline.");const t=k,s=n,i=o,r=l,g=function(){if(f)return b;f=1;const e=n,t=d,{v4:s}=c,i=a;return b=class{#e;constructor(e){this._keycloak=e.keycloak,this._router=this._initRouter(),this._redis_client=e.redisClient,this._expire_ttl=3600,this._expire_ttl_short=300,this.#e=e.wdir}_initRouter(){let t=e.Router();return t.post("/workflow/builder/create",this._buildHandler.bind(this)),t.post("/workflow/builder/status",this._statusHandler.bind(this)),t.post("/workflow/builder/network",this._networkHandler.bind(this)),t}join(e,t){t.use(e,this._router)}async _cache_set(e,t,s){await this._redis_client.SETEX(e,s||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async _cache_get(e){const t=await this._redis_client.GET(e).catch(console.error);return JSON.parse(t)}_buildHandler(e,t){this._build({...e.body}).then((e=>{t.status(200).send(e)})).catch((e=>{t.status(500).send()}))}_networkHandler(e,t){this._network({...e.body}).then((e=>{t.status(200).send(e)})).catch((e=>{t.status(500).send()}))}_statusHandler(e,t){try{const s=e.body.id;if(!s)throw new Error("Build Id is not defined.");const i="BUILD:"+s;this._cache_get(i).then((e=>{t.send(e)})).catch((e=>{t.status(500).send()}))}catch(e){t.status(500).send()}}async _build(e){const r=e.id;if(!r)throw new Error("Workflow Id is not defined.");const n=s(),o=`node ${t.resolve(__dirname,"builder/wf-cli.js")} build --id=${r} --buildId=${n} --mode=all`;return i.exec(o,{async:!0,cwd:this.#e}),{id:n}}async _network(e){const r=e.id;if(!r)throw new Error("Workflow Id is not defined.");const n=s(),o=`node ${t.resolve(__dirname,"builder/wf-cli.js")} build --id=${r} --buildId=${n} --mode=bpmn`;i.exec(o,{cwd:this.#e});const l="BUILD:"+n;return await this._cache_get(l)}}}(),j=function(){if(y)return m;y=1;const e=n,t=d,{v4:s}=c,i=a;return m=class{#e;constructor(e){this._keycloak=e.keycloak,this._router=this._initRouter(),this._redis_client=e.redisClient,this._expire_ttl=3600,this._expire_ttl_short=300,this.#e=e.wdir}_initRouter(){let t=e.Router();return t.post("/library/builder/create",this._buildHandler.bind(this)),t.post("/library/builder/status",this._statusHandler.bind(this)),t}join(e,t){t.use(e,this._router)}async _cache_set(e,t,s){await this._redis_client.SETEX(e,s||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async _cache_get(e){const t=await this._redis_client.GET(e).catch(console.error);return JSON.parse(t)}_buildHandler(e,t){this._build({...e.body}).then((e=>{t.status(200).send(e)})).catch((e=>{t.status(500).send()}))}_statusHandler(e,t){try{const s=e.body.id;if(!s)throw new Error("Build Id is not defined.");const i="BUILD:"+s;this._cache_get(i).then((e=>{t.send(e)})).catch((e=>{t.status(500).send()}))}catch(e){t.status(500).send()}}async _build(e){const r=e.id;if(!r)throw new Error("Library Id is not defined.");const n=s(),o=`node ${t.resolve(__dirname,"builder/lib-cli.js")} build --id=${r} --buildId=${n} --mode=all}`;return i.exec(o,{async:!0,cwd:this.#e}),{id:n}}}}(),E=u,x=h,q=new(0,x.MemoryStore),S=new w({store:q}),I=s(),R=p;I.set("query parser",(function(e){return R.parse(e,{depth:12})})),I.use(x({secret:process.env.SESSION_SECRET,resave:!1,saveUninitialized:!0,store:q})),I.use(r()),I.use(i()),I.use(s.json({limit:"1024kb"})),I.get("/healthz",(function(e,t){t.sendStatus(200)})),I.use(E.mw()),I.use(S.middleware()),new g({keycloak:S,wdir:v,redisClient:e}).join("/v1",I),new j({keycloak:S,wdir:v,redisClient:e}).join("/v1",I),I.listen(process.env.HTTP_PORT||8080),console.log(`[${t.version}] ${t.name} started.`)}().catch((e=>{console.error(e.message),process.exit(1)})),module.exports={};
2
+ "use strict";var e,t,s=require("@flownet/lib-load-fnet-config"),i=require("redis"),r=require("@flownet/lib-is-redis-online"),n=require("express"),o=require("helmet"),l=require("cors"),d=require("path"),c=require("uuid"),a=require("shelljs"),u=require("request-ip"),h=require("express-session"),w=require("keycloak-connect"),p=require("qs");function _(){if(t)return e;t=1;const s=i,n=r;return e=async()=>{if(!await n({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=s.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e}}var b,f,m,y,k={name:"@fnet/cli",version:"0.5.5",files:["dist"],scripts:{start:"node src/index.js",build:"rollup --config --bundleConfigAsCjs",deploy:"npm install && npm run build && npm publish --access public",watch:"rollup --config --watch --sourcemap --bundleConfigAsCjs --environment DEVELOPMENT"},dependencies:{"@flownet/lib-atom-api-js":"^0.1.7","@flownet/lib-bpmn-from-flow":"^0.1.6","@flownet/lib-execute-command-with-ipc-file":"^0.1.10","@flownet/lib-is-redis-online":"^0.1.12","@flownet/lib-list-npm-versions":"^0.1.27","@flownet/lib-load-fnet-config":"^0.1.25","@flownet/lib-parse-imports-js":"^0.1.34","@flownet/lib-parse-node-url":"^0.1.15","@flownet/lib-pick-npm-versions":"^0.1.5","@flownet/lib-render-templates-dir":"^0.1.11","@flownet/lib-to-electron":"^0.1.19","@flownet/lib-to-gitlab":"^0.1.20","@flownet/lib-to-ios-app":"^0.1.20","@flownet/lib-to-macos-app":"^0.1.11","@flownet/lib-to-nextjs":"^0.1.10","@flownet/lib-to-webos":"^0.1.9","@flownet/lib-upload-files-to-gcs":"^0.1.11","@flownet/template-node-library":"^0.4.20","@flownet/template-node-workflow":"^0.5.12","@node-red/util":"^3.1.0",axios:"^1.5.0",chalk:"^4.1.2",cors:"^2.8.5",express:"^4.18.2","express-session":"^1.17.3","get-value":"^3.0.1",helmet:"^5.1.1",isobject:"^4.0.0","js-yaml":"^4.1.0","keycloak-connect":"^22.0.3","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.2",minimist:"^1.2.8",nunjucks:"^3.2.4",prettier:"^3.0.3",qs:"^6.11.2",redis:"^4.6.10","request-ip":"^3.3.0",semver:"^7.5.4",serve:"^14.2.1","set-value":"^4.1.0",shelljs:"^0.8.5",typescript:"^5.2.2",uuid:"^9.0.1",yaml:"^2.3.2",yargs:"^17.7.2"},bin:{fnet:"dist/builder/wf-cli.js",flib:"dist/builder/lib-cli.js",fsrv:"dist/index.js",fnode:"dist/builder/lib-cli.js"},devDependencies:{"@rollup/plugin-commonjs":"^25.0.4","@rollup/plugin-json":"^6.0.0","@rollup/plugin-node-resolve":"^15.2.1","@rollup/plugin-replace":"^5.0.2","@rollup/plugin-terser":"^0.4.3",rollup:"^3.29.1"}};const v=process.cwd();console.log(`cwd: ${v}`),s({name:["server","redis"],dir:v}),async function(){const e=await _()();if(!e)throw new Error("Redis is offline.");const t=k,s=n,i=o,r=l,g=function(){if(f)return b;f=1;const e=n,t=d,{v4:s}=c,i=a;return b=class{#e;constructor(e){this._keycloak=e.keycloak,this._router=this._initRouter(),this._redis_client=e.redisClient,this._expire_ttl=3600,this._expire_ttl_short=300,this.#e=e.wdir}_initRouter(){let t=e.Router();return t.post("/workflow/builder/create",this._buildHandler.bind(this)),t.post("/workflow/builder/status",this._statusHandler.bind(this)),t.post("/workflow/builder/network",this._networkHandler.bind(this)),t}join(e,t){t.use(e,this._router)}async _cache_set(e,t,s){await this._redis_client.SETEX(e,s||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async _cache_get(e){const t=await this._redis_client.GET(e).catch(console.error);return JSON.parse(t)}_buildHandler(e,t){this._build({...e.body}).then((e=>{t.status(200).send(e)})).catch((e=>{t.status(500).send()}))}_networkHandler(e,t){this._network({...e.body}).then((e=>{t.status(200).send(e)})).catch((e=>{t.status(500).send()}))}_statusHandler(e,t){try{const s=e.body.id;if(!s)throw new Error("Build Id is not defined.");const i="BUILD:"+s;this._cache_get(i).then((e=>{t.send(e)})).catch((e=>{t.status(500).send()}))}catch(e){t.status(500).send()}}async _build(e){const r=e.id;if(!r)throw new Error("Workflow Id is not defined.");const n=s(),o=`node ${t.resolve(__dirname,"builder/wf-cli.js")} build --id=${r} --buildId=${n} --mode=all`;return i.exec(o,{async:!0,cwd:this.#e}),{id:n}}async _network(e){const r=e.id;if(!r)throw new Error("Workflow Id is not defined.");const n=s(),o=`node ${t.resolve(__dirname,"builder/wf-cli.js")} build --id=${r} --buildId=${n} --mode=bpmn`;i.exec(o,{cwd:this.#e});const l="BUILD:"+n;return await this._cache_get(l)}}}(),j=function(){if(y)return m;y=1;const e=n,t=d,{v4:s}=c,i=a;return m=class{#e;constructor(e){this._keycloak=e.keycloak,this._router=this._initRouter(),this._redis_client=e.redisClient,this._expire_ttl=3600,this._expire_ttl_short=300,this.#e=e.wdir}_initRouter(){let t=e.Router();return t.post("/library/builder/create",this._buildHandler.bind(this)),t.post("/library/builder/status",this._statusHandler.bind(this)),t}join(e,t){t.use(e,this._router)}async _cache_set(e,t,s){await this._redis_client.SETEX(e,s||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async _cache_get(e){const t=await this._redis_client.GET(e).catch(console.error);return JSON.parse(t)}_buildHandler(e,t){this._build({...e.body}).then((e=>{t.status(200).send(e)})).catch((e=>{t.status(500).send()}))}_statusHandler(e,t){try{const s=e.body.id;if(!s)throw new Error("Build Id is not defined.");const i="BUILD:"+s;this._cache_get(i).then((e=>{t.send(e)})).catch((e=>{t.status(500).send()}))}catch(e){t.status(500).send()}}async _build(e){const r=e.id;if(!r)throw new Error("Library Id is not defined.");const n=s(),o=`node ${t.resolve(__dirname,"builder/lib-cli.js")} build --id=${r} --buildId=${n} --mode=all}`;return i.exec(o,{async:!0,cwd:this.#e}),{id:n}}}}(),E=u,x=h,q=new(0,x.MemoryStore),S=new w({store:q}),I=s(),R=p;I.set("query parser",(function(e){return R.parse(e,{depth:12})})),I.use(x({secret:process.env.SESSION_SECRET,resave:!1,saveUninitialized:!0,store:q})),I.use(r()),I.use(i()),I.use(s.json({limit:"1024kb"})),I.get("/healthz",(function(e,t){t.sendStatus(200)})),I.use(E.mw()),I.use(S.middleware()),new g({keycloak:S,wdir:v,redisClient:e}).join("/v1",I),new j({keycloak:S,wdir:v,redisClient:e}).join("/v1",I),I.listen(process.env.HTTP_PORT||8080),console.log(`[${t.version}] ${t.name} started.`)}().catch((e=>{console.error(e.message),process.exit(1)})),module.exports={};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/redisClient.js","../src/wf-api.js","../src/lib-api.js","../src/index.js"],"sourcesContent":["const redis = require('redis');\nconst fnetIsRedisOnline = require('@flownet/lib-is-redis-online');\n\nmodule.exports = async () => {\n const isOnline = await fnetIsRedisOnline({ host: process.env.REDIS_HOST, port: process.env.REDIS_PORT });\n if (!isOnline) return;\n\n const redisClient = redis.createClient({\n socket: { host: process.env.REDIS_HOST, port: process.env.REDIS_PORT }\n });\n await redisClient.connect();\n\n return redisClient;\n}","\"use strict\";\n\nconst express = require(\"express\");\nconst path = require('path');\nconst { v4: uuidv4 } = require('uuid');\nconst shelljs = require('shelljs');\n\nclass API {\n\n #wdir;\n constructor(options) {\n this._keycloak = options.keycloak;\n this._router = this._initRouter();\n this._redis_client = options.redisClient;\n this._expire_ttl = 3600; // 1-hour\n this._expire_ttl_short = 300; // 5-minutes\n this.#wdir = options.wdir;\n }\n\n _initRouter() {\n let router = express.Router();\n\n router.post('/workflow/builder/create', this._buildHandler.bind(this));\n router.post('/workflow/builder/status', this._statusHandler.bind(this));\n router.post('/workflow/builder/network', this._networkHandler.bind(this));\n\n return router;\n }\n\n join(basePath, app) {\n app.use(basePath, this._router);\n }\n\n async _cache_set(key, value, expire_ttl) {\n await this._redis_client.SETEX(\n key,\n expire_ttl || this._expire_ttl,\n JSON.stringify(value),\n ).catch(console.error);\n }\n\n async _cache_get(key) {\n const value = await this._redis_client.GET(key).catch(console.error);\n return JSON.parse(value);\n }\n\n _buildHandler(req, res) {\n this._build({ ...req.body })\n .then(response => {\n res.status(200).send(response);\n })\n .catch(error => {\n res.status(500).send();\n });\n }\n\n _networkHandler(req, res) {\n this._network({ ...req.body })\n .then(response => {\n res.status(200).send(response);\n })\n .catch(error => {\n res.status(500).send();\n });\n }\n\n _statusHandler(req, res) {\n try {\n const buildId = req.body.id;\n if (!buildId) throw new Error('Build Id is not defined.');\n\n const buildKey = \"BUILD:\" + buildId;\n\n this._cache_get(buildKey).then(response => {\n res.send(response);\n }).catch(error => {\n res.status(500).send();\n });\n }\n catch (error) {\n res.status(500).send();\n }\n }\n\n async _build(reqContext) {\n\n const id = reqContext.id;\n\n if (!id) throw new Error('Workflow Id is not defined.');\n\n const buildId = uuidv4();\n\n const file = path.resolve(__dirname, 'builder/wf-cli.js');\n\n const command = `node ${file} build --id=${id} --buildId=${buildId} --mode=all`;\n\n shelljs.exec(command, { async: true, cwd: this.#wdir });\n\n return {\n id: buildId\n }\n }\n\n async _network(reqContext) {\n\n const id = reqContext.id;\n\n if (!id) throw new Error('Workflow Id is not defined.');\n\n const buildId = uuidv4();\n\n const file = path.resolve(__dirname, 'builder/wf-cli.js');\n\n const command = `node ${file} build --id=${id} --buildId=${buildId} --mode=bpmn`;\n\n shelljs.exec(command, { cwd: this.#wdir});\n\n const buildKey = \"BUILD:\" + buildId;\n\n const status = await this._cache_get(buildKey);\n\n return status;\n }\n}\n\nmodule.exports = API;","\"use strict\";\n\nconst express = require(\"express\");\nconst path = require('path');\nconst { v4: uuidv4 } = require('uuid');\nconst shelljs = require('shelljs');\n\nclass API {\n\n #wdir;\n constructor(options) {\n this._keycloak = options.keycloak;\n this._router = this._initRouter();\n this._redis_client = options.redisClient;\n this._expire_ttl = 3600; // 1-hour\n this._expire_ttl_short = 300; // 5-minutes\n this.#wdir = options.wdir;\n }\n\n _initRouter() {\n let router = express.Router();\n\n router.post('/library/builder/create', this._buildHandler.bind(this));\n router.post('/library/builder/status', this._statusHandler.bind(this));\n\n return router;\n }\n\n join(basePath, app) {\n app.use(basePath, this._router);\n }\n\n async _cache_set(key, value, expire_ttl) {\n await this._redis_client.SETEX(\n key,\n expire_ttl || this._expire_ttl,\n JSON.stringify(value),\n ).catch(console.error);\n }\n\n async _cache_get(key) {\n const value = await this._redis_client.GET(key).catch(console.error);\n return JSON.parse(value);\n }\n \n _buildHandler(req, res) {\n this._build({ ...req.body })\n .then(response => {\n res.status(200).send(response);\n })\n .catch(error => {\n res.status(500).send();\n });\n }\n\n _statusHandler(req, res) {\n try {\n const buildId = req.body.id;\n if (!buildId) throw new Error('Build Id is not defined.');\n\n const buildKey = \"BUILD:\" + buildId;\n\n this._cache_get(buildKey).then(response => {\n res.send(response);\n }).catch(error => {\n res.status(500).send();\n });\n }\n catch (error) {\n res.status(500).send();\n }\n }\n\n async _build(reqContext) {\n\n const id = reqContext.id;\n\n if (!id) throw new Error('Library Id is not defined.');\n\n const buildId = uuidv4();\n\n const file = path.resolve(__dirname, 'builder/lib-cli.js');\n\n const command = `node ${file} build --id=${id} --buildId=${buildId} --mode=all}`;\n\n shelljs.exec(command, { async: true, cwd: this.#wdir });\n\n return {\n id: buildId\n }\n }\n}\n\nmodule.exports = API;\n","const cwd = process.cwd();\nconsole.log(`cwd: ${cwd}`);\n\n// fnet env\nrequire('@flownet/lib-load-fnet-config')({\n name: [\"server\", \"redis\"],\n dir: cwd\n});\n\n\nasync function run() {\n const redisClient = await require('./redisClient')();\n if (!redisClient) throw new Error(\"Redis is offline.\");\n\n const PackageJSON = require(\"../package.json\");\n\n const express = require(\"express\");\n const helmet = require(\"helmet\");\n const cors = require('cors');\n\n const API = require(\"./wf-api\");\n const LIBAPI = require(\"./lib-api\");\n\n const requestIp = require(\"request-ip\");\n\n // KEYCLOAK\n const session = require('express-session');\n const MemoryStore = session.MemoryStore;\n const memoryStore = new MemoryStore();\n\n const Keycloak = require('keycloak-connect');\n const keycloak = new Keycloak({ store: memoryStore });\n\n // web server\n const app = express();\n\n const qs = require('qs');\n app.set('query parser', function (str) {\n return qs.parse(str, { depth: 12 });\n });\n\n app.use(session({\n secret: process.env.SESSION_SECRET,\n resave: false,\n saveUninitialized: true,\n store: memoryStore\n }));\n\n app.use(cors());\n\n // add a little bit security\n app.use(helmet());\n\n // parse application/json\n app.use(express.json({\n limit: \"1024kb\"\n }));\n\n // health check\n app.get(\"/healthz\", function (req, res) {\n res.sendStatus(200);\n });\n\n app.use(requestIp.mw());\n\n // keycloak middleware\n app.use(keycloak.middleware());\n\n // bind API\n new API({ keycloak, wdir: cwd, redisClient }).join(\"/v1\", app);\n new LIBAPI({ keycloak, wdir: cwd, redisClient }).join(\"/v1\", app);\n\n //port\n app.listen(process.env.HTTP_PORT || 8080);\n\n console.log(`[${PackageJSON.version}] ${PackageJSON.name} started.`);\n}\n\n// run\nrun().catch((err) => {\n console.error(err.message);\n process.exit(1);\n});"],"names":["require$$0","require$$1","require$$2","require$$3","require$$6","require$$7"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fnet/cli",
3
- "version": "0.5.3",
3
+ "version": "0.5.5",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -29,7 +29,7 @@
29
29
  "@flownet/lib-to-webos": "^0.1.9",
30
30
  "@flownet/lib-upload-files-to-gcs": "^0.1.11",
31
31
  "@flownet/template-node-library": "^0.4.20",
32
- "@flownet/template-node-workflow": "^0.5.8",
32
+ "@flownet/template-node-workflow": "^0.5.12",
33
33
  "@node-red/util": "^3.1.0",
34
34
  "axios": "^1.5.0",
35
35
  "chalk": "^4.1.2",