@sap/joule-studio-dev-cli 0.1.20-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +38 -0
- package/README.md +53 -0
- package/dist/bin/commands/a2a.js +12 -0
- package/dist/bin/commands/a2a.js.map +1 -0
- package/dist/bin/commands/asset.js +20 -0
- package/dist/bin/commands/asset.js.map +1 -0
- package/dist/bin/commands/auth.js +16 -0
- package/dist/bin/commands/auth.js.map +1 -0
- package/dist/bin/commands/init.js +20 -0
- package/dist/bin/commands/init.js.map +1 -0
- package/dist/bin/commands/mcp.js +42 -0
- package/dist/bin/commands/mcp.js.map +1 -0
- package/dist/bin/commands/pro-code.js +12 -0
- package/dist/bin/commands/pro-code.js.map +1 -0
- package/dist/bin/commands/skills.js +27 -0
- package/dist/bin/commands/skills.js.map +1 -0
- package/dist/bin/commands/solution.js +52 -0
- package/dist/bin/commands/solution.js.map +1 -0
- package/dist/bin/help.js +42 -0
- package/dist/bin/help.js.map +1 -0
- package/dist/bin/jl.js +59 -0
- package/dist/bin/jl.js.map +1 -0
- package/dist/bin/login.js +60 -0
- package/dist/bin/login.js.map +1 -0
- package/dist/bin/logout.js +21 -0
- package/dist/bin/logout.js.map +1 -0
- package/dist/lib/a2a/message.js +74 -0
- package/dist/lib/a2a/message.js.map +1 -0
- package/dist/lib/asset/create.js +38 -0
- package/dist/lib/asset/create.js.map +1 -0
- package/dist/lib/asset/delete.js +57 -0
- package/dist/lib/asset/delete.js.map +1 -0
- package/dist/lib/asset/discover.js +46 -0
- package/dist/lib/asset/discover.js.map +1 -0
- package/dist/lib/auth-crypto.js +146 -0
- package/dist/lib/auth-crypto.js.map +1 -0
- package/dist/lib/auth.js +488 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/context.js +35 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/errors.js +47 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/fs-utils.js +34 -0
- package/dist/lib/fs-utils.js.map +1 -0
- package/dist/lib/init/agents.js +55 -0
- package/dist/lib/init/agents.js.map +1 -0
- package/dist/lib/init/shared.js +172 -0
- package/dist/lib/init/shared.js.map +1 -0
- package/dist/lib/mcp/call.js +158 -0
- package/dist/lib/mcp/call.js.map +1 -0
- package/dist/lib/mcp/client.js +100 -0
- package/dist/lib/mcp/client.js.map +1 -0
- package/dist/lib/mcp/list.js +20 -0
- package/dist/lib/mcp/list.js.map +1 -0
- package/dist/lib/mcp/start.js +120 -0
- package/dist/lib/mcp/start.js.map +1 -0
- package/dist/lib/mcp/tools.js +162 -0
- package/dist/lib/mcp/tools.js.map +1 -0
- package/dist/lib/plugin.js +77 -0
- package/dist/lib/plugin.js.map +1 -0
- package/dist/lib/plugins/agent/index.js +32 -0
- package/dist/lib/plugins/agent/index.js.map +1 -0
- package/dist/lib/plugins/agent/templates/asset.yaml.hbs +31 -0
- package/dist/lib/plugins/agent-extension/index.js +32 -0
- package/dist/lib/plugins/agent-extension/index.js.map +1 -0
- package/dist/lib/plugins/agent-extension/templates/asset.yaml.hbs +15 -0
- package/dist/lib/plugins/base-ui/index.js +32 -0
- package/dist/lib/plugins/base-ui/index.js.map +1 -0
- package/dist/lib/plugins/base-ui/templates/asset.yaml.hbs +8 -0
- package/dist/lib/plugins/cap-app/index.js +32 -0
- package/dist/lib/plugins/cap-app/index.js.map +1 -0
- package/dist/lib/plugins/cap-app/templates/asset.yaml.hbs +37 -0
- package/dist/lib/plugins/data-product/index.js +32 -0
- package/dist/lib/plugins/data-product/index.js.map +1 -0
- package/dist/lib/plugins/data-product/templates/asset.yaml.hbs +9 -0
- package/dist/lib/plugins/domain-model-extension/index.js +37 -0
- package/dist/lib/plugins/domain-model-extension/index.js.map +1 -0
- package/dist/lib/plugins/domain-model-extension/templates/asset.yaml.hbs +15 -0
- package/dist/lib/plugins/mcp-server/index.js +36 -0
- package/dist/lib/plugins/mcp-server/index.js.map +1 -0
- package/dist/lib/plugins/mcp-server/templates/asset.yaml.hbs +9 -0
- package/dist/lib/plugins/n8n-workflow/index.js +52 -0
- package/dist/lib/plugins/n8n-workflow/index.js.map +1 -0
- package/dist/lib/plugins/n8n-workflow/templates/asset.yaml.hbs +18 -0
- package/dist/lib/plugins/n8n-workflow/validation/asset-validator.js +62 -0
- package/dist/lib/plugins/n8n-workflow/validation/asset-validator.js.map +1 -0
- package/dist/lib/plugins/n8n-workflow/validation/yaml-validator.js +51 -0
- package/dist/lib/plugins/n8n-workflow/validation/yaml-validator.js.map +1 -0
- package/dist/lib/plugins/vercel-app/index.js +32 -0
- package/dist/lib/plugins/vercel-app/index.js.map +1 -0
- package/dist/lib/plugins/vercel-app/templates/asset.yaml.hbs +12 -0
- package/dist/lib/rule.js +2 -0
- package/dist/lib/rule.js.map +1 -0
- package/dist/lib/schemas/solution-schema.json +178 -0
- package/dist/lib/solution/build.js +186 -0
- package/dist/lib/solution/build.js.map +1 -0
- package/dist/lib/solution/create.js +42 -0
- package/dist/lib/solution/create.js.map +1 -0
- package/dist/lib/solution/deploy.js +66 -0
- package/dist/lib/solution/deploy.js.map +1 -0
- package/dist/lib/solution/list.js +21 -0
- package/dist/lib/solution/list.js.map +1 -0
- package/dist/lib/solution/logs.js +130 -0
- package/dist/lib/solution/logs.js.map +1 -0
- package/dist/lib/solution/status.js +161 -0
- package/dist/lib/solution/status.js.map +1 -0
- package/dist/lib/solution/templates/solution.yaml.hbs +9 -0
- package/dist/lib/solution/util/build-file.js +4 -0
- package/dist/lib/solution/util/build-file.js.map +1 -0
- package/dist/lib/template.js +74 -0
- package/dist/lib/template.js.map +1 -0
- package/dist/lib/term.js +16 -0
- package/dist/lib/term.js.map +1 -0
- package/dist/lib/validate.js +287 -0
- package/dist/lib/validate.js.map +1 -0
- package/dist/lib/yaml.js +33 -0
- package/dist/lib/yaml.js.map +1 -0
- package/dist/package.json +77 -0
- package/package.json +77 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../lib/solution/status.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,IAAI,MAAM,YAAY,CAAA;AAE7B,MAAM,IAAI,GAAG,mDAAmD,CAAA;AAMhE,SAAS,WAAW,CAAC,MAAM,GAAG,EAAE;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IAC9B,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC;AAED,KAAK,UAAU,YAAY;IACvB,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACV,MAAM,8BAA8B,GAAG,CAAC,MAAM,IAAI,CAAA;IACtD,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAA;IAC1D,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAG1F,CAAA;IACH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,qBAAqB,CAAA;IAC/B,CAAC;IAED,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAChD,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;QAC7B,OAAO,CAAC,GAAG,CACP,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CACzG,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,OAAO,CAAC,EAAE;QAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QACrF,EAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,CAAC,EAAE;YACrC,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;IACpC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACnD,MAAM,oBAAoB,CAAA;IAC9B,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IACtC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,UAAiC,EAAE;IACpF,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,IAAI,YAAgC,CAAA;IACpC,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,6DAA6D,CAAA;QACvE,CAAC;QAED,CAAC;QAAA,CAAC,EAAE,EAAE,YAAY,CAAC,GAAG,MAAM,YAAY,EAAE,CAAA;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC1E,CAAC;IACD,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;IACzC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,IAAI,IAAI,EAAE,WAAW,CAAC,CAAA;QAC5D,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAA;YAC5D,MAAM,QAAQ,GAAG,CACb,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CACrE,CAAA;YACd,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACzB,OAAO;gBACH,CAAC,OAAO,KAAK,KAAK,QAAQ;oBACtB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,CAAG,KAAiC,EAAE,IAAe;wBACnD,KAAiC,EAAE,EAAa;wBAChD,KAAiC,EAAE,OAAkB,CAAC,CAAC,IAAI,MAAM,CAAA;QACjF,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,MAAM,CAAA;QACpB,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,aAAa,OAAO,EAAE,CAAA;IAClD,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvC,eAAe,CAAC,GAAG,MAAM,mBAAmB,CAAC;QAC7C,eAAe,CAAC,GAAG,MAAM,iBAAiB,CAAC;KAC9C,CAAC,CAAA;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACnD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAC1C;QAAA,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpC,eAAe,CAAC,GAAG,MAAM,mBAAmB,CAAC;YAC7C,eAAe,CAAC,GAAG,MAAM,iBAAiB,CAAC;SAC9C,CAAC,CAAA;IACN,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,CAAA;QAChH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,mDAAmD,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC5F,OAAM;IACV,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,oCAAoC,OAAO,CAAC,MAAM,IAAI,CAAA;IAChE,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,oCAAoC,OAAO,CAAC,MAAM,IAAI,CAAA;IAChE,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAA4B,CAAA;IAC9D,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAA4B,CAAA;IAClE,MAAM,IAAI,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CACpE,CAAA;IAE9B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,OAAO,GAAG,CAAC,EAAE,CAAC,CAAA;IAC7F,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAA;IACjE,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;IAC7D,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAA;IACpD,IAAI,GAAG,EAAE,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,MAAoC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3F,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAA;QAC5D,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CACP,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CACvG,CAAA;QACL,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAA;IACtE,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAA;IACtF,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACtB,QAAQ;QACR,kBAAkB;QAClB,OAAO;QACP,KAAK;QACL,QAAQ;QACR,UAAU;QACV,WAAW;QACX,YAAY;QACZ,cAAc;QACd,QAAQ;KACX,CAAC,CAAA;IACF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IACI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,CAAC,KAAK,IAAI;YACV,OAAO,CAAC,KAAK,WAAW;YACxB,OAAO,CAAC,KAAK,QAAQ,EACvB,CAAC;YACC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3D,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;IAChD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAA;QACzD,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;IACxC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAA;QAC3F,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAA;QAC1D,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACtE,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,CAAA;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAChH,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-file.js","sourceRoot":"","sources":["../../../../lib/solution/util/build-file.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,8DAA8D,CAAA;AAC1F,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,gBAAgB,YAAY,GAAG,EAAE,GAAG,CAAC,CAAA"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fsUtils from './fs-utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Minimal renderer for .hbs template strings. Supports:
|
|
6
|
+
* {{#section}}...{{/section}} — conditional block (truthy check only)
|
|
7
|
+
* {{{key}}} — unescaped interpolation
|
|
8
|
+
* {{key}} — HTML-escaped interpolation
|
|
9
|
+
*/
|
|
10
|
+
function renderString(template, values) {
|
|
11
|
+
let out = template.replace(/\{\{#(\w+)\}\}([\s\S]*?)\{\{\/\1\}\}/g, (_, key, body) => (values[key] ? body : ''));
|
|
12
|
+
out = out.replace(/\{\{\{(\w+)\}\}\}/g, (_, key) => {
|
|
13
|
+
const val = values[key];
|
|
14
|
+
if (typeof val !== 'string' && typeof val !== 'number' && typeof val !== 'boolean') {
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
17
|
+
return String(val);
|
|
18
|
+
});
|
|
19
|
+
out = out.replace(/\{\{(\w+)\}\}/g, (_, key) => {
|
|
20
|
+
const val = values[key];
|
|
21
|
+
if (typeof val !== 'string' && typeof val !== 'number' && typeof val !== 'boolean') {
|
|
22
|
+
return '';
|
|
23
|
+
}
|
|
24
|
+
return String(val)
|
|
25
|
+
.replaceAll('&', '&')
|
|
26
|
+
.replaceAll('"', '"')
|
|
27
|
+
.replaceAll('<', '<')
|
|
28
|
+
.replaceAll('>', '>');
|
|
29
|
+
});
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Renders a single .hbs template file and returns the string.
|
|
34
|
+
*/
|
|
35
|
+
export function render(templatePath, values = {}) {
|
|
36
|
+
const content = fsUtils.readFile(templatePath);
|
|
37
|
+
return renderString(content, values);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Walks fromDir recursively:
|
|
41
|
+
* - .hbs files are rendered and written without the .hbs extension
|
|
42
|
+
* - other files are copied as-is
|
|
43
|
+
* - directory and file names can themselves contain {{expressions}}
|
|
44
|
+
*
|
|
45
|
+
* Adapted from @sap/cds-dk lib/init/template.js lines 5-46
|
|
46
|
+
*/
|
|
47
|
+
export async function renderAndCopy(fromDir, intoDir, replacements = {}, overwrite = false) {
|
|
48
|
+
const srcRoot = path.resolve(fromDir);
|
|
49
|
+
const destRoot = path.resolve(intoDir);
|
|
50
|
+
function walk(src, dest) {
|
|
51
|
+
if (fsUtils.isDir(src)) {
|
|
52
|
+
fsUtils.mkdirp(dest);
|
|
53
|
+
const entries = fs.readdirSync(src);
|
|
54
|
+
for (const name of entries) {
|
|
55
|
+
const renderedName = renderString(name, replacements);
|
|
56
|
+
walk(path.join(src, name), path.join(dest, renderedName));
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const ext = path.extname(src);
|
|
61
|
+
if (ext === '.hbs') {
|
|
62
|
+
const destFile = dest.replace(/\.hbs$/, '');
|
|
63
|
+
if (overwrite || !fsUtils.exists(destFile)) {
|
|
64
|
+
const content = render(src, replacements);
|
|
65
|
+
fsUtils.writeFile(destFile, content);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else if (overwrite || !fsUtils.exists(dest)) {
|
|
69
|
+
fsUtils.copyFile(src, dest);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
walk(srcRoot, destRoot);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../lib/template.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/term.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const NO_COLOR = 'NO_COLOR' in process.env || !process.stdout.isTTY;
|
|
2
|
+
const _c = (code) => {
|
|
3
|
+
if (NO_COLOR) {
|
|
4
|
+
return s => s;
|
|
5
|
+
}
|
|
6
|
+
return s => `\x1b[${code}m${s}\x1b[0m`;
|
|
7
|
+
};
|
|
8
|
+
export default {
|
|
9
|
+
bold: _c('1'),
|
|
10
|
+
dim: _c('2'),
|
|
11
|
+
green: _c('32'),
|
|
12
|
+
red: _c('31'),
|
|
13
|
+
yellow: _c('33'),
|
|
14
|
+
cyan: _c('36'),
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=term.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"term.js","sourceRoot":"","sources":["../../lib/term.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;AAEnE,MAAM,EAAE,GAAG,CAAC,IAAY,EAA2B,EAAE;IACjD,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,CAAC,CAAC,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAA;AAC1C,CAAC,CAAA;AAED,eAAe;IACX,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC;IACb,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;IACZ,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC;IACf,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC;IACb,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC;IAChB,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;CACjB,CAAA"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { Ajv } from 'ajv';
|
|
5
|
+
import { getPlugin } from './asset/discover.js';
|
|
6
|
+
import Plugin from './plugin.js';
|
|
7
|
+
import term from './term.js';
|
|
8
|
+
import yaml from './yaml.js';
|
|
9
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const solutionSchema = JSON.parse(fs.readFileSync(path.join(__dirname, 'schemas', 'solution-schema.json'), 'utf8'));
|
|
11
|
+
const ajv = new Ajv({ allErrors: true, strict: false });
|
|
12
|
+
const ajvValidate = ajv.compile(solutionSchema);
|
|
13
|
+
function errMsg(e) {
|
|
14
|
+
return e instanceof Error ? e.message : String(e);
|
|
15
|
+
}
|
|
16
|
+
async function resolvePlugin(type) {
|
|
17
|
+
try {
|
|
18
|
+
const PluginClass = await getPlugin(type);
|
|
19
|
+
return new PluginClass();
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function checkEachAsset(ctx, options) {
|
|
26
|
+
const assetsDir = path.join(ctx.solutionDir, 'assets');
|
|
27
|
+
if (!fs.existsSync(assetsDir)) {
|
|
28
|
+
return { pass: true, message: `assets/ missing — ${options.skip}` };
|
|
29
|
+
}
|
|
30
|
+
if (ctx.assetDirs.length === 0) {
|
|
31
|
+
return { pass: true, message: 'no asset subdirectories' };
|
|
32
|
+
}
|
|
33
|
+
const errors = [];
|
|
34
|
+
for (const dir of ctx.assetDirs) {
|
|
35
|
+
const yamlPath = path.join(assetsDir, dir, 'asset.yaml');
|
|
36
|
+
if (!fs.existsSync(yamlPath)) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
let assetYaml;
|
|
40
|
+
try {
|
|
41
|
+
assetYaml = yaml.readYAML(yamlPath);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
errors.push(errMsg(e));
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
await options.process(dir, assetYaml, errors);
|
|
48
|
+
}
|
|
49
|
+
const pass = errors.length === 0;
|
|
50
|
+
return { pass, message: pass ? options.success : errors.join(' | ') };
|
|
51
|
+
}
|
|
52
|
+
export const rules = [
|
|
53
|
+
{
|
|
54
|
+
id: 'solution-yaml-exists',
|
|
55
|
+
description: 'solution.yaml exists in solution root',
|
|
56
|
+
severity: 'error',
|
|
57
|
+
check(ctx) {
|
|
58
|
+
const filePath = path.join(ctx.solutionDir, 'solution.yaml');
|
|
59
|
+
const pass = fs.existsSync(filePath);
|
|
60
|
+
return { pass, message: pass ? 'solution.yaml found' : `solution.yaml not found at ${filePath}` };
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: 'solution-yaml-valid',
|
|
65
|
+
description: 'solution.yaml has required fields (apiVersion, kind, metadata.name, metadata.version)',
|
|
66
|
+
severity: 'error',
|
|
67
|
+
check(ctx) {
|
|
68
|
+
if (!ctx.solutionYaml) {
|
|
69
|
+
return { pass: false, message: 'cannot validate — solution.yaml missing or invalid' };
|
|
70
|
+
}
|
|
71
|
+
const y = ctx.solutionYaml;
|
|
72
|
+
const metadata = y.metadata;
|
|
73
|
+
const missing = [];
|
|
74
|
+
if (y.apiVersion !== 'solution.sap/v1') {
|
|
75
|
+
missing.push(`apiVersion must be 'solution.sap/v1' (got '${y.apiVersion}')`);
|
|
76
|
+
}
|
|
77
|
+
if (y.kind !== 'Solution') {
|
|
78
|
+
missing.push(`kind must be 'Solution' (got '${y.kind}')`);
|
|
79
|
+
}
|
|
80
|
+
if (!metadata?.name) {
|
|
81
|
+
missing.push('metadata.name is missing');
|
|
82
|
+
}
|
|
83
|
+
if (!metadata?.version) {
|
|
84
|
+
missing.push('metadata.version is missing');
|
|
85
|
+
}
|
|
86
|
+
const pass = missing.length === 0;
|
|
87
|
+
return { pass, message: pass ? 'all required fields present' : missing.join('; ') };
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: 'solution-yaml-schema',
|
|
92
|
+
description: 'solution.yaml conforms to the JSON schema (solution-schema.json)',
|
|
93
|
+
severity: 'error',
|
|
94
|
+
check(ctx) {
|
|
95
|
+
if (!ctx.solutionYaml) {
|
|
96
|
+
return { pass: false, message: 'cannot validate — solution.yaml missing or invalid' };
|
|
97
|
+
}
|
|
98
|
+
const pass = ajvValidate(ctx.solutionYaml);
|
|
99
|
+
if (pass) {
|
|
100
|
+
return { pass: true, message: 'schema validation passed' };
|
|
101
|
+
}
|
|
102
|
+
const errors = (ajvValidate.errors ?? []).map(e => `${e.instancePath || '/'} ${e.message}`).join('; ');
|
|
103
|
+
return { pass: false, message: errors };
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: 'assets-dir-exists',
|
|
108
|
+
description: 'assets/ directory exists',
|
|
109
|
+
severity: 'error',
|
|
110
|
+
check(ctx) {
|
|
111
|
+
const dirPath = path.join(ctx.solutionDir, 'assets');
|
|
112
|
+
const pass = fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();
|
|
113
|
+
return { pass, message: pass ? 'assets/ directory found' : 'assets/ directory not found' };
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: 'asset-refs-resolve',
|
|
118
|
+
description: 'every ref in assets[] points to an existing file',
|
|
119
|
+
severity: 'error',
|
|
120
|
+
check(ctx) {
|
|
121
|
+
if (!ctx.solutionYaml) {
|
|
122
|
+
return { pass: true, message: 'skipped — no solution.yaml' };
|
|
123
|
+
}
|
|
124
|
+
const assets = ctx.solutionYaml.assets;
|
|
125
|
+
if (!Array.isArray(assets) || assets.length === 0) {
|
|
126
|
+
return { pass: true, message: 'no asset refs to check' };
|
|
127
|
+
}
|
|
128
|
+
const broken = [];
|
|
129
|
+
for (const entry of assets) {
|
|
130
|
+
if (!entry?.ref) {
|
|
131
|
+
broken.push('(entry missing ref)');
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
const refPath = path.resolve(ctx.solutionDir, entry.ref);
|
|
135
|
+
if (!fs.existsSync(refPath)) {
|
|
136
|
+
broken.push(entry.ref);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const pass = broken.length === 0;
|
|
140
|
+
return {
|
|
141
|
+
pass,
|
|
142
|
+
message: pass ? `all ${assets.length} asset ref(s) resolve` : `broken refs: ${broken.join(', ')}`,
|
|
143
|
+
};
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
id: 'asset-dirs-have-yaml',
|
|
148
|
+
description: 'every subdirectory in assets/ contains an asset.yaml',
|
|
149
|
+
severity: 'warning',
|
|
150
|
+
check(ctx) {
|
|
151
|
+
const assetsDir = path.join(ctx.solutionDir, 'assets');
|
|
152
|
+
if (!fs.existsSync(assetsDir)) {
|
|
153
|
+
return { pass: true, message: 'assets/ missing — skipped' };
|
|
154
|
+
}
|
|
155
|
+
if (ctx.assetDirs.length === 0) {
|
|
156
|
+
return { pass: true, message: 'no asset subdirectories' };
|
|
157
|
+
}
|
|
158
|
+
const missing = ctx.assetDirs.filter(dir => !fs.existsSync(path.join(assetsDir, dir, 'asset.yaml')));
|
|
159
|
+
const pass = missing.length === 0;
|
|
160
|
+
return {
|
|
161
|
+
pass,
|
|
162
|
+
message: pass
|
|
163
|
+
? `all ${ctx.assetDirs.length} asset dir(s) contain asset.yaml`
|
|
164
|
+
: `missing asset.yaml in: ${missing.join(', ')}`,
|
|
165
|
+
};
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
id: 'asset-yaml-valid',
|
|
170
|
+
description: 'every asset.yaml has required envelope fields (apiVersion, kind, metadata.name, type)',
|
|
171
|
+
severity: 'error',
|
|
172
|
+
check(ctx) {
|
|
173
|
+
return checkEachAsset(ctx, {
|
|
174
|
+
skip: 'asset yaml validation skipped',
|
|
175
|
+
success: `all ${ctx.assetDirs.length} asset.yaml file(s) are valid`,
|
|
176
|
+
async process(dir, assetYaml, errors) {
|
|
177
|
+
if (!assetYaml.type) {
|
|
178
|
+
errors.push(`${dir}/asset.yaml: type is missing`);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const plugin = (await resolvePlugin(assetYaml.type)) ?? new Plugin();
|
|
182
|
+
try {
|
|
183
|
+
const issues = await plugin.checkAssetYaml(assetYaml, path.join(ctx.solutionDir, 'assets', dir));
|
|
184
|
+
if (issues.length > 0) {
|
|
185
|
+
errors.push(`${dir}/asset.yaml: ${issues.join('; ')}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
errors.push(`${dir}/asset.yaml: validation threw error: ${errMsg(e)}`);
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
id: 'asset-valid',
|
|
197
|
+
description: 'every asset passes its plugin-specific validation',
|
|
198
|
+
severity: 'error',
|
|
199
|
+
check(ctx) {
|
|
200
|
+
return checkEachAsset(ctx, {
|
|
201
|
+
skip: 'asset validation skipped',
|
|
202
|
+
success: `all ${ctx.assetDirs.length} asset(s) pass plugin validation`,
|
|
203
|
+
async process(dir, assetYaml, errors) {
|
|
204
|
+
if (!assetYaml.type) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const plugin = await resolvePlugin(assetYaml.type);
|
|
208
|
+
if (!plugin) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
try {
|
|
212
|
+
const pluginErrors = await plugin.checkAsset(assetYaml, path.join(ctx.solutionDir, 'assets', dir));
|
|
213
|
+
if (pluginErrors.length > 0) {
|
|
214
|
+
errors.push(`${dir}: ${pluginErrors.join('; ')}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (e) {
|
|
218
|
+
errors.push(`${dir}: validate threw error: ${errMsg(e)}`);
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
];
|
|
225
|
+
export async function validateSolution(_args, _options = {}) {
|
|
226
|
+
const solutionDir = process.cwd();
|
|
227
|
+
console.log(`\nValidating solution at: ${term.bold(solutionDir)}\n`);
|
|
228
|
+
const solutionYamlPath = path.join(solutionDir, 'solution.yaml');
|
|
229
|
+
let solutionYaml = null;
|
|
230
|
+
if (fs.existsSync(solutionYamlPath)) {
|
|
231
|
+
try {
|
|
232
|
+
solutionYaml = yaml.readYAML(solutionYamlPath);
|
|
233
|
+
const metadata = solutionYaml?.metadata;
|
|
234
|
+
if (metadata && !metadata.description) {
|
|
235
|
+
metadata.description = '';
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch (e) {
|
|
239
|
+
console.log(` ${term.red('✗ [error]')} solution.yaml could not be read`);
|
|
240
|
+
console.log(` ${term.dim(errMsg(e))}`);
|
|
241
|
+
console.log();
|
|
242
|
+
console.log(term.red('Validation failed.'));
|
|
243
|
+
process.exitCode = 1;
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const assetsDir = path.join(solutionDir, 'assets');
|
|
248
|
+
const assetDirs = fs.existsSync(assetsDir)
|
|
249
|
+
? fs
|
|
250
|
+
.readdirSync(assetsDir, { withFileTypes: true })
|
|
251
|
+
.filter(d => d.isDirectory())
|
|
252
|
+
.map(d => d.name)
|
|
253
|
+
: [];
|
|
254
|
+
const ctx = { solutionDir, solutionYaml, assetDirs };
|
|
255
|
+
let hasErrors = false;
|
|
256
|
+
for (const rule of rules) {
|
|
257
|
+
const result = await rule.check(ctx);
|
|
258
|
+
let icon;
|
|
259
|
+
let label;
|
|
260
|
+
if (result.pass) {
|
|
261
|
+
icon = term.green('✓');
|
|
262
|
+
label = '';
|
|
263
|
+
}
|
|
264
|
+
else if (rule.severity === 'error') {
|
|
265
|
+
icon = term.red('✗');
|
|
266
|
+
label = term.red(' [error]');
|
|
267
|
+
hasErrors = true;
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
icon = term.yellow('!');
|
|
271
|
+
label = term.yellow(' [warning]');
|
|
272
|
+
}
|
|
273
|
+
console.log(` ${icon}${label} ${rule.description}`);
|
|
274
|
+
if (!result.pass) {
|
|
275
|
+
console.log(` ${term.dim(result.message)}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
console.log();
|
|
279
|
+
if (hasErrors) {
|
|
280
|
+
console.log(term.red('Validation failed.'));
|
|
281
|
+
process.exitCode = 1;
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
console.log(term.green('Validation passed.'));
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../lib/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/yaml.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import YAML from 'yaml';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
export default {
|
|
4
|
+
readYAML(filePath) {
|
|
5
|
+
const doc = YAML.parseDocument(fs.readFileSync(filePath, 'utf8'));
|
|
6
|
+
if (doc.errors.length > 0) {
|
|
7
|
+
throw `${filePath}: ${doc.errors[0].message.split('\n')[0]}`;
|
|
8
|
+
}
|
|
9
|
+
const unknownTag = doc.warnings.find(w => w.code === 'TAG_RESOLVE_FAILED');
|
|
10
|
+
if (unknownTag) {
|
|
11
|
+
throw `${filePath}: unsafe YAML tag rejected (${unknownTag.message.split('\n')[0]})`;
|
|
12
|
+
}
|
|
13
|
+
const result = doc.toJS();
|
|
14
|
+
if (result === null || typeof result !== 'object' || Array.isArray(result)) {
|
|
15
|
+
throw `${filePath}: expected a YAML mapping at the document root`;
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
},
|
|
19
|
+
writeYAML(filePath, obj) {
|
|
20
|
+
const content = YAML.stringify(obj, {
|
|
21
|
+
collectionStyle: 'block',
|
|
22
|
+
lineWidth: 150,
|
|
23
|
+
directives: false,
|
|
24
|
+
});
|
|
25
|
+
fs.writeFileSync(filePath, content, 'utf8');
|
|
26
|
+
},
|
|
27
|
+
updateYAML(filePath, mutatorFn) {
|
|
28
|
+
const obj = this.readYAML(filePath);
|
|
29
|
+
mutatorFn(obj);
|
|
30
|
+
this.writeYAML(filePath, obj);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=yaml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../lib/yaml.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,SAAS,CAAA;AAExB,eAAe;IACX,QAAQ,CAAC,QAAgB;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QACjE,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,GAAG,QAAQ,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAChE,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAA;QAC1E,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,GAAG,QAAQ,+BAA+B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACxF,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QACzB,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACzE,MAAM,GAAG,QAAQ,gDAAgD,CAAA;QACrE,CAAC;QACD,OAAO,MAAiC,CAAA;IAC5C,CAAC;IAED,SAAS,CAAC,QAAgB,EAAE,GAA4B;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;YAChC,eAAe,EAAE,OAAO;YACxB,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,KAAK;SACpB,CAAC,CAAA;QACF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED,UAAU,CAAC,QAAgB,EAAE,SAAiD;QAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACnC,SAAS,CAAC,GAAG,CAAC,CAAA;QACd,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IACjC,CAAC;CACJ,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "module",
|
|
3
|
+
"name": "@sap/joule-studio-dev-cli",
|
|
4
|
+
"version": "0.1.20-alpha.3",
|
|
5
|
+
"description": "Joule Studio Dev CLI tools to create, manage and deploy Joule Studio solutions",
|
|
6
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
7
|
+
"bin": {
|
|
8
|
+
"jl": "dist/bin/jl.js"
|
|
9
|
+
},
|
|
10
|
+
"main": "dist/lib/plugin.js",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"ajv": "8.20.0",
|
|
13
|
+
"commander": "14.0.3",
|
|
14
|
+
"yaml": "2.9.0"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@cyclonedx/cyclonedx-npm": "4.2.1",
|
|
18
|
+
"@types/jest": "^30.0.0",
|
|
19
|
+
"@types/node": "^24",
|
|
20
|
+
"@typescript-eslint/eslint-plugin": "^8.59.4",
|
|
21
|
+
"@typescript-eslint/parser": "^8.59.4",
|
|
22
|
+
"eslint": "^10",
|
|
23
|
+
"eslint-config-prettier": "^10.1.8",
|
|
24
|
+
"eslint-plugin-jest": "^29",
|
|
25
|
+
"eslint-plugin-jsdoc": "^62",
|
|
26
|
+
"globals": "^15",
|
|
27
|
+
"jest": "^30",
|
|
28
|
+
"prettier": "^3",
|
|
29
|
+
"ts-jest": "^29.4.10",
|
|
30
|
+
"typescript": "^6",
|
|
31
|
+
"vitepress": "^1"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsc && node scripts/copy-assets.js",
|
|
35
|
+
"prepare": "npm run build",
|
|
36
|
+
"typecheck": "tsc --noEmit",
|
|
37
|
+
"lint": "eslint '{bin,lib}/**/*.ts'",
|
|
38
|
+
"lint:fix": "eslint '{bin,lib}/**/*.ts' --fix",
|
|
39
|
+
"format": "prettier --write '{bin,lib}/**/*.ts'",
|
|
40
|
+
"format:check": "prettier --check '{bin,lib}/**/*.ts'",
|
|
41
|
+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js --colors --coverage --coverageReporters=lcov --coverageReporters=text",
|
|
42
|
+
"sbom": "cyclonedx-npm --output-file bom.json --output-format JSON",
|
|
43
|
+
"test:e2e": "node --env-file-if-exists=.env test/integration/e2e-test.js",
|
|
44
|
+
"docs:dev": "vitepress dev docs",
|
|
45
|
+
"docs:build": "vitepress build docs",
|
|
46
|
+
"docs:preview": "vitepress preview docs"
|
|
47
|
+
},
|
|
48
|
+
"jest": {
|
|
49
|
+
"extensionsToTreatAsEsm": [
|
|
50
|
+
".ts"
|
|
51
|
+
],
|
|
52
|
+
"transform": {
|
|
53
|
+
"^.+\\.ts$": [
|
|
54
|
+
"ts-jest",
|
|
55
|
+
{
|
|
56
|
+
"useESM": true
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"moduleNameMapper": {
|
|
61
|
+
"^(\\.{1,2}/.*)\\.js$": "$1"
|
|
62
|
+
},
|
|
63
|
+
"collectCoverageFrom": [
|
|
64
|
+
"lib/**/*.ts",
|
|
65
|
+
"bin/**/*.ts",
|
|
66
|
+
"!lib/**/*.d.ts"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
"engines": {
|
|
70
|
+
"node": ">=24"
|
|
71
|
+
},
|
|
72
|
+
"files": [
|
|
73
|
+
"dist/",
|
|
74
|
+
"LICENSE",
|
|
75
|
+
"README.md"
|
|
76
|
+
]
|
|
77
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "module",
|
|
3
|
+
"name": "@sap/joule-studio-dev-cli",
|
|
4
|
+
"version": "0.1.20-alpha.3",
|
|
5
|
+
"description": "Joule Studio Dev CLI tools to create, manage and deploy Joule Studio solutions",
|
|
6
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
7
|
+
"bin": {
|
|
8
|
+
"jl": "dist/bin/jl.js"
|
|
9
|
+
},
|
|
10
|
+
"main": "dist/lib/plugin.js",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"ajv": "8.20.0",
|
|
13
|
+
"commander": "14.0.3",
|
|
14
|
+
"yaml": "2.9.0"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@cyclonedx/cyclonedx-npm": "4.2.1",
|
|
18
|
+
"@types/jest": "^30.0.0",
|
|
19
|
+
"@types/node": "^24",
|
|
20
|
+
"@typescript-eslint/eslint-plugin": "^8.59.4",
|
|
21
|
+
"@typescript-eslint/parser": "^8.59.4",
|
|
22
|
+
"eslint": "^10",
|
|
23
|
+
"eslint-config-prettier": "^10.1.8",
|
|
24
|
+
"eslint-plugin-jest": "^29",
|
|
25
|
+
"eslint-plugin-jsdoc": "^62",
|
|
26
|
+
"globals": "^15",
|
|
27
|
+
"jest": "^30",
|
|
28
|
+
"prettier": "^3",
|
|
29
|
+
"ts-jest": "^29.4.10",
|
|
30
|
+
"typescript": "^6",
|
|
31
|
+
"vitepress": "^1"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsc && node scripts/copy-assets.js",
|
|
35
|
+
"prepare": "npm run build",
|
|
36
|
+
"typecheck": "tsc --noEmit",
|
|
37
|
+
"lint": "eslint '{bin,lib}/**/*.ts'",
|
|
38
|
+
"lint:fix": "eslint '{bin,lib}/**/*.ts' --fix",
|
|
39
|
+
"format": "prettier --write '{bin,lib}/**/*.ts'",
|
|
40
|
+
"format:check": "prettier --check '{bin,lib}/**/*.ts'",
|
|
41
|
+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js --colors --coverage --coverageReporters=lcov --coverageReporters=text",
|
|
42
|
+
"sbom": "cyclonedx-npm --output-file bom.json --output-format JSON",
|
|
43
|
+
"test:e2e": "node --env-file-if-exists=.env test/integration/e2e-test.js",
|
|
44
|
+
"docs:dev": "vitepress dev docs",
|
|
45
|
+
"docs:build": "vitepress build docs",
|
|
46
|
+
"docs:preview": "vitepress preview docs"
|
|
47
|
+
},
|
|
48
|
+
"jest": {
|
|
49
|
+
"extensionsToTreatAsEsm": [
|
|
50
|
+
".ts"
|
|
51
|
+
],
|
|
52
|
+
"transform": {
|
|
53
|
+
"^.+\\.ts$": [
|
|
54
|
+
"ts-jest",
|
|
55
|
+
{
|
|
56
|
+
"useESM": true
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"moduleNameMapper": {
|
|
61
|
+
"^(\\.{1,2}/.*)\\.js$": "$1"
|
|
62
|
+
},
|
|
63
|
+
"collectCoverageFrom": [
|
|
64
|
+
"lib/**/*.ts",
|
|
65
|
+
"bin/**/*.ts",
|
|
66
|
+
"!lib/**/*.d.ts"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
"engines": {
|
|
70
|
+
"node": ">=24"
|
|
71
|
+
},
|
|
72
|
+
"files": [
|
|
73
|
+
"dist/",
|
|
74
|
+
"LICENSE",
|
|
75
|
+
"README.md"
|
|
76
|
+
]
|
|
77
|
+
}
|