@fnet/cli 0.7.4 → 0.7.6

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.
@@ -1 +0,0 @@
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 createRedisClient = require('../redisClient');\nconst os = require('node:os');\nconst merge = require('lodash.merge');\nconst { nanoid } = require('nanoid');\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');\nconst fnetExpression = require('@fnet/expression');\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 || nanoid(24);\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 await this.transformWorkflow({ workflow: this.#workflow });\n\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 /**\n * Transforms the given workflow by applying transformation rules on each step.\n * @param {Object} workflow - The workflow to be transformed.\n */\n transformWorkflow({ workflow }) {\n for (const flow of Object.values(workflow)) {\n // Ensure steps exist as an array.\n flow.steps = flow.steps || [];\n\n // Transform each step.\n flow.steps = flow.steps.map(step => this.transformStep({ step }));\n }\n }\n\n /**\n * Transforms the given step based on certain rules.\n * For example, replaces 'onerror' with 'try-except' structure.\n * @param {Object} step - The step to be transformed.\n * @returns {Object} The transformed step.\n */\n transformStep({ step }) {\n // Validate input.\n if (Array.isArray(step)) throw new Error('Step must be an object.');\n\n const [stepName, stepDefinition] = Object.entries(step)[0];\n\n // Transform 'onerror' into 'try-except'.\n if (stepDefinition.hasOwnProperty('onerror')) {\n const { onerror, ...rest } = stepDefinition;\n step[stepName] = {\n try: rest,\n except: onerror\n };\n }\n\n // Recursively transform child steps if they exist.\n if (step[stepName].hasOwnProperty('steps')) {\n const childSteps = step[stepName].steps;\n if (!Array.isArray(childSteps)) throw new Error('Steps must be an array.');\n step[stepName].steps = childSteps.map(childStep => this.transformStep({ step: childStep }));\n }\n\n return step;\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 node.typeId = nanoid(24);\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,recursive:true });\n\n for await (const parsedImport of parsedImports.required) {\n if (parsedImport.type !== 'npm') continue;\n\n if (dependencies.find(w => w.package === parsedImport.package)) continue;\n\n const npmVersions = await fnetListNpmVersions({ name: parsedImport.package, groupBy: { minor: true } });\n const npmVersion = npmVersions[0][0];\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 let assignTransform = {\n key: await this.transformExpression(assignKey),\n value: await this.transformExpression(assingValue)\n }\n\n transform.assign[i] = assignTransform;\n }\n //>\n\n await 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 transform.return = await this.transformExpression(transform.return);\n await 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 = await this.transformExpression(transform.args);\n\n if (transform.result)\n transform.result = await 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 await 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 = await 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 await 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 = await this.transformExpression(transform.raise);\n\n await 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 = await this.transformExpression(child.definition.condition);\n }\n await 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 = await this.transformExpression(transform.next);\n\n await 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 await 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 = await this.transformExpression(node.definition.for.in);\n\n\n await 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 await this.resolveTypeCommon({ node });\n }\n\n async resolveTypeCommon({ node }) {\n const transform = node.context.transform;\n\n if (transform.hasOwnProperty('operation'))\n transform.operation = await this.transformExpression(transform.operation);\n\n if (transform.hasOwnProperty('page'))\n transform.page = await this.transformExpression(transform.page);\n\n if (transform.hasOwnProperty('print'))\n transform.print = await this.transformExpression(transform.print);\n\n if (transform.hasOwnProperty('sleep'))\n transform.sleep = await this.transformExpression(transform.sleep);\n\n if (transform.hasOwnProperty('assert'))\n transform.assert = await this.transformExpression(transform.assert);\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 async transformExpression(value) {\n let temp = await this.transformValue(value);\n temp = JSON.stringify(temp);\n // temp = this.replaceExpressionLegacy(temp);\n temp = this.replaceSpecialPattern(temp);\n return temp;\n }\n\n async transformValue(value) {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n value[i] = await 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]] = await this.transformValue(value[keys[i]]);\n }\n }\n else if (typeof value === 'string') {\n const exp = await fnetExpression({ expression: value });\n if (exp) {\n const { processor, statement } = exp;\n switch (processor) {\n case 'var':\n case 'vs':\n case 'v':\n value = `$::v.${statement}::`;\n break;\n case 'exp':\n case 'e':\n value = `$::${statement}::`;\n break;\n case 'mod':\n case 'm':\n value = `$::closure.module['${statement}']::`;\n break;\n case 'form':\n case 'f':\n value = `$::closure.form.${statement}::`;\n break;\n }\n }\n }\n\n return value;\n }\n\n replaceSpecialPattern(text) {\n const pattern = /\"\\$::(.*?)::\"/g;\n return text.replace(pattern, \"$1\");\n }\n\n replaceExpressionLegacy(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: yaml.dump(this.#workflow) }\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.createBin();\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 await this.createPackageJSON();\n await this.createRollup();\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$$10","require$$12","require$$14","require$$15","require$$26","Builder","require$$6","require$$8"],"mappings":"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"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
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 shelljs = require('shelljs');\nconst { nanoid } = require('nanoid');\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 =nanoid(24);\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 = nanoid(24);\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 shelljs = require('shelljs');\nconst { nanoid } = require('nanoid');\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 = nanoid(24);\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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"}