@camunda8/cli 3.1.0 → 3.2.0-alpha.10
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/CONTEXT.md +7 -15
- package/EXAMPLES.md +253 -1
- package/PLUGIN-HELP.md +1 -1
- package/README.md +50 -180
- package/dist/command-dispatch.d.ts +1 -1
- package/dist/command-dispatch.d.ts.map +1 -1
- package/dist/command-dispatch.js +1 -1
- package/dist/command-dispatch.js.map +1 -1
- package/dist/commands/completion.d.ts +1 -1
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +2 -3
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/deploy.d.ts +13 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +328 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/forms.d.ts +1 -1
- package/dist/commands/forms.d.ts.map +1 -1
- package/dist/commands/forms.js +8 -8
- package/dist/commands/forms.js.map +1 -1
- package/dist/commands/helpers/deploy-helpers.d.ts +120 -0
- package/dist/commands/helpers/deploy-helpers.d.ts.map +1 -0
- package/dist/{deployments.js → commands/helpers/deploy-helpers.js} +307 -155
- package/dist/commands/helpers/deploy-helpers.js.map +1 -0
- package/dist/commands/identity-authorizations.d.ts +5 -18
- package/dist/commands/identity-authorizations.d.ts.map +1 -1
- package/dist/commands/identity-authorizations.js +8 -10
- package/dist/commands/identity-authorizations.js.map +1 -1
- package/dist/commands/identity-groups.d.ts +5 -5
- package/dist/commands/identity-groups.d.ts.map +1 -1
- package/dist/commands/identity-groups.js +7 -8
- package/dist/commands/identity-groups.js.map +1 -1
- package/dist/commands/identity-mapping-rules.d.ts +5 -5
- package/dist/commands/identity-mapping-rules.d.ts.map +1 -1
- package/dist/commands/identity-mapping-rules.js +7 -8
- package/dist/commands/identity-mapping-rules.js.map +1 -1
- package/dist/commands/identity-roles.d.ts +5 -5
- package/dist/commands/identity-roles.d.ts.map +1 -1
- package/dist/commands/identity-roles.js +7 -8
- package/dist/commands/identity-roles.js.map +1 -1
- package/dist/commands/identity-tenants.d.ts +5 -5
- package/dist/commands/identity-tenants.d.ts.map +1 -1
- package/dist/commands/identity-tenants.js +7 -8
- package/dist/commands/identity-tenants.js.map +1 -1
- package/dist/commands/identity-users.d.ts +5 -5
- package/dist/commands/identity-users.d.ts.map +1 -1
- package/dist/commands/identity-users.js +7 -8
- package/dist/commands/identity-users.js.map +1 -1
- package/dist/commands/identity.d.ts +11 -31
- package/dist/commands/identity.d.ts.map +1 -1
- package/dist/commands/identity.js +15 -15
- package/dist/commands/identity.js.map +1 -1
- package/dist/commands/incidents.d.ts +3 -3
- package/dist/commands/incidents.d.ts.map +1 -1
- package/dist/commands/incidents.js +6 -6
- package/dist/commands/incidents.js.map +1 -1
- package/dist/commands/jobs.d.ts +4 -4
- package/dist/commands/jobs.d.ts.map +1 -1
- package/dist/commands/jobs.js +7 -7
- package/dist/commands/jobs.js.map +1 -1
- package/dist/commands/mcp-proxy.d.ts +1 -1
- package/dist/commands/mcp-proxy.d.ts.map +1 -1
- package/dist/commands/mcp-proxy.js +5 -9
- package/dist/commands/mcp-proxy.js.map +1 -1
- package/dist/commands/messages.d.ts +2 -2
- package/dist/commands/messages.d.ts.map +1 -1
- package/dist/commands/messages.js +4 -4
- package/dist/commands/messages.js.map +1 -1
- package/dist/commands/open.d.ts +4 -4
- package/dist/commands/open.d.ts.map +1 -1
- package/dist/commands/open.js +6 -6
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/plugins.d.ts +9 -9
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +2 -7
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/process-definitions.d.ts +2 -2
- package/dist/commands/process-definitions.d.ts.map +1 -1
- package/dist/commands/process-definitions.js +5 -5
- package/dist/commands/process-definitions.js.map +1 -1
- package/dist/commands/process-instances.d.ts +5 -5
- package/dist/commands/process-instances.d.ts.map +1 -1
- package/dist/commands/process-instances.js +8 -9
- package/dist/commands/process-instances.js.map +1 -1
- package/dist/commands/profiles.d.ts +4 -36
- package/dist/commands/profiles.d.ts.map +1 -1
- package/dist/commands/profiles.js +43 -41
- package/dist/commands/profiles.js.map +1 -1
- package/dist/commands/run.d.ts +2 -2
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +4 -4
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/search.d.ts +7 -7
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +9 -11
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/session.d.ts +4 -4
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +26 -5
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/topology.d.ts +1 -1
- package/dist/commands/topology.d.ts.map +1 -1
- package/dist/commands/topology.js +2 -2
- package/dist/commands/topology.js.map +1 -1
- package/dist/commands/user-tasks.d.ts +2 -2
- package/dist/commands/user-tasks.d.ts.map +1 -1
- package/dist/commands/user-tasks.js +5 -5
- package/dist/commands/user-tasks.js.map +1 -1
- package/dist/commands/variables.d.ts +1 -1
- package/dist/commands/variables.d.ts.map +1 -1
- package/dist/commands/variables.js +3 -3
- package/dist/commands/variables.js.map +1 -1
- package/dist/commands/watch.d.ts +2 -2
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +86 -19
- package/dist/commands/watch.js.map +1 -1
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js.map +1 -0
- package/dist/{config.d.ts → core/config.d.ts} +28 -2
- package/dist/core/config.d.ts.map +1 -0
- package/dist/{config.js → core/config.js} +61 -5
- package/dist/core/config.js.map +1 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/{runtime.js → core/runtime.js} +2 -2
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/update-check.d.ts.map +1 -0
- package/dist/core/update-check.js.map +1 -0
- package/dist/default-plugins/bpmn/README.md +12 -3
- package/dist/default-plugins/bpmn/c8ctl-plugin.js +7376 -108
- package/dist/default-plugins/bpmn/package.json +8 -1
- package/dist/default-plugins/cluster/c8ctl-plugin.js +66 -9
- package/dist/default-plugins/element-template/README.md +6 -3
- package/dist/default-plugins/element-template/c8ctl-plugin.js +10195 -229
- package/dist/default-plugins/element-template/docs/design.md +1 -1
- package/dist/default-plugins/element-template/package.json +11 -1
- package/dist/default-plugins/feel/c8ctl-plugin.js +14030 -584
- package/dist/default-plugins/feel/package.json +4 -1
- package/dist/{command-framework.d.ts → framework/command-framework.d.ts} +23 -9
- package/dist/framework/command-framework.d.ts.map +1 -0
- package/dist/{command-framework.js → framework/command-framework.js} +16 -29
- package/dist/framework/command-framework.js.map +1 -0
- package/dist/{command-registry.d.ts → framework/command-registry.d.ts} +35 -8
- package/dist/framework/command-registry.d.ts.map +1 -0
- package/dist/{command-registry.js → framework/command-registry.js} +74 -9
- package/dist/framework/command-registry.js.map +1 -0
- package/dist/{command-validation.d.ts → framework/command-validation.d.ts} +0 -14
- package/dist/framework/command-validation.d.ts.map +1 -0
- package/dist/{command-validation.js → framework/command-validation.js} +1 -34
- package/dist/framework/command-validation.js.map +1 -0
- package/dist/framework/index.d.ts +10 -0
- package/dist/framework/index.d.ts.map +1 -0
- package/dist/framework/index.js +16 -0
- package/dist/framework/index.js.map +1 -0
- package/dist/{plugin-loader.d.ts → framework/plugins/plugin-loader.d.ts} +30 -5
- package/dist/framework/plugins/plugin-loader.d.ts.map +1 -0
- package/dist/{plugin-loader.js → framework/plugins/plugin-loader.js} +26 -10
- package/dist/framework/plugins/plugin-loader.js.map +1 -0
- package/dist/framework/plugins/plugin-registry.d.ts.map +1 -0
- package/dist/{plugin-registry.js → framework/plugins/plugin-registry.js} +1 -1
- package/dist/framework/plugins/plugin-registry.js.map +1 -0
- package/dist/framework/plugins/plugin-version.d.ts.map +1 -0
- package/dist/framework/plugins/plugin-version.js.map +1 -0
- package/dist/{completion.d.ts → framework/ui/completion.d.ts} +2 -2
- package/dist/framework/ui/completion.d.ts.map +1 -0
- package/dist/{completion.js → framework/ui/completion.js} +7 -9
- package/dist/framework/ui/completion.js.map +1 -0
- package/dist/framework/ui/help.d.ts.map +1 -0
- package/dist/{help.js → framework/ui/help.js} +4 -4
- package/dist/framework/ui/help.js.map +1 -0
- package/dist/framework/ui/prompt.d.ts +132 -0
- package/dist/framework/ui/prompt.d.ts.map +1 -0
- package/dist/framework/ui/prompt.js +298 -0
- package/dist/framework/ui/prompt.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -20
- package/dist/index.js.map +1 -1
- package/dist/utils/command-local/deploy-version.d.ts +21 -0
- package/dist/utils/command-local/deploy-version.d.ts.map +1 -0
- package/dist/utils/command-local/deploy-version.js +31 -0
- package/dist/utils/command-local/deploy-version.js.map +1 -0
- package/dist/{mcp-proxy-helpers.d.ts → utils/command-local/mcp-proxy-helpers.d.ts} +1 -1
- package/dist/utils/command-local/mcp-proxy-helpers.d.ts.map +1 -0
- package/dist/{mcp-proxy-helpers.js → utils/command-local/mcp-proxy-helpers.js} +1 -1
- package/dist/utils/command-local/mcp-proxy-helpers.js.map +1 -0
- package/dist/utils/command-local/open-helpers.d.ts.map +1 -0
- package/dist/{open-helpers.js → utils/command-local/open-helpers.js} +2 -2
- package/dist/utils/command-local/open-helpers.js.map +1 -0
- package/dist/{search-helpers.d.ts → utils/command-local/search-helpers.d.ts} +1 -1
- package/dist/utils/command-local/search-helpers.d.ts.map +1 -0
- package/dist/utils/command-local/search-helpers.js.map +1 -0
- package/dist/utils/command-local/watch-constants.d.ts.map +1 -0
- package/dist/utils/command-local/watch-constants.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +16 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/shared/date-filter.d.ts.map +1 -0
- package/dist/utils/shared/date-filter.js.map +1 -0
- package/dist/{ignore.d.ts → utils/shared/ignore.d.ts} +19 -1
- package/dist/utils/shared/ignore.d.ts.map +1 -0
- package/dist/utils/shared/ignore.js +234 -0
- package/dist/utils/shared/ignore.js.map +1 -0
- package/dist/utils/shared/resource-extensions.d.ts.map +1 -0
- package/dist/utils/shared/resource-extensions.js.map +1 -0
- package/dist/utils/shared/validation.d.ts +23 -0
- package/dist/utils/shared/validation.d.ts.map +1 -0
- package/dist/utils/shared/validation.js +43 -0
- package/dist/utils/shared/validation.js.map +1 -0
- package/dist/vendor/bpmnlint.cjs +25907 -0
- package/package.json +12 -14
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/command-framework.d.ts.map +0 -1
- package/dist/command-framework.js.map +0 -1
- package/dist/command-registry.d.ts.map +0 -1
- package/dist/command-registry.js.map +0 -1
- package/dist/command-validation.d.ts.map +0 -1
- package/dist/command-validation.js.map +0 -1
- package/dist/commands/resource-extensions.d.ts.map +0 -1
- package/dist/commands/resource-extensions.js.map +0 -1
- package/dist/completion.d.ts.map +0 -1
- package/dist/completion.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/date-filter.d.ts.map +0 -1
- package/dist/date-filter.js.map +0 -1
- package/dist/default-plugins/bpmn/c8ctl-plugin.js.map +0 -1
- package/dist/default-plugins/bpmn/lint.js +0 -320
- package/dist/default-plugins/bpmn/lint.js.map +0 -1
- package/dist/default-plugins/element-template/c8ctl-plugin.js.map +0 -1
- package/dist/default-plugins/element-template/commands/apply.js +0 -336
- package/dist/default-plugins/element-template/commands/apply.js.map +0 -1
- package/dist/default-plugins/element-template/commands/get-properties.js +0 -344
- package/dist/default-plugins/element-template/commands/get-properties.js.map +0 -1
- package/dist/default-plugins/element-template/commands/get.js +0 -107
- package/dist/default-plugins/element-template/commands/get.js.map +0 -1
- package/dist/default-plugins/element-template/commands/info.js +0 -189
- package/dist/default-plugins/element-template/commands/info.js.map +0 -1
- package/dist/default-plugins/element-template/commands/search.js +0 -102
- package/dist/default-plugins/element-template/commands/search.js.map +0 -1
- package/dist/default-plugins/element-template/commands/sync.js +0 -36
- package/dist/default-plugins/element-template/commands/sync.js.map +0 -1
- package/dist/default-plugins/element-template/helpers.js +0 -429
- package/dist/default-plugins/element-template/helpers.js.map +0 -1
- package/dist/default-plugins/element-template/marketplace.js +0 -586
- package/dist/default-plugins/element-template/marketplace.js.map +0 -1
- package/dist/default-plugins/element-template/template-ref.js +0 -232
- package/dist/default-plugins/element-template/template-ref.js.map +0 -1
- package/dist/default-plugins/feel/c8ctl-plugin.js.map +0 -1
- package/dist/default-plugins/hello-world/README.md +0 -161
- package/dist/default-plugins/hello-world/c8ctl-plugin.js +0 -69
- package/dist/default-plugins/hello-world/package.json +0 -8
- package/dist/deployments.d.ts +0 -42
- package/dist/deployments.d.ts.map +0 -1
- package/dist/deployments.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/help.d.ts.map +0 -1
- package/dist/help.js.map +0 -1
- package/dist/ignore.d.ts.map +0 -1
- package/dist/ignore.js +0 -101
- package/dist/ignore.js.map +0 -1
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js.map +0 -1
- package/dist/mcp-proxy-helpers.d.ts.map +0 -1
- package/dist/mcp-proxy-helpers.js.map +0 -1
- package/dist/open-helpers.d.ts.map +0 -1
- package/dist/open-helpers.js.map +0 -1
- package/dist/plugin-loader.d.ts.map +0 -1
- package/dist/plugin-loader.js.map +0 -1
- package/dist/plugin-registry.d.ts.map +0 -1
- package/dist/plugin-registry.js.map +0 -1
- package/dist/plugin-version.d.ts.map +0 -1
- package/dist/plugin-version.js.map +0 -1
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js.map +0 -1
- package/dist/search-helpers.d.ts.map +0 -1
- package/dist/search-helpers.js.map +0 -1
- package/dist/update-check.d.ts.map +0 -1
- package/dist/update-check.js.map +0 -1
- package/dist/watch-constants.d.ts.map +0 -1
- package/dist/watch-constants.js.map +0 -1
- /package/dist/{client.d.ts → core/client.d.ts} +0 -0
- /package/dist/{client.js → core/client.js} +0 -0
- /package/dist/{errors.d.ts → core/errors.d.ts} +0 -0
- /package/dist/{errors.js → core/errors.js} +0 -0
- /package/dist/{logger.d.ts → core/logger.d.ts} +0 -0
- /package/dist/{logger.js → core/logger.js} +0 -0
- /package/dist/{runtime.d.ts → core/runtime.d.ts} +0 -0
- /package/dist/{update-check.d.ts → core/update-check.d.ts} +0 -0
- /package/dist/{update-check.js → core/update-check.js} +0 -0
- /package/dist/{plugin-registry.d.ts → framework/plugins/plugin-registry.d.ts} +0 -0
- /package/dist/{plugin-version.d.ts → framework/plugins/plugin-version.d.ts} +0 -0
- /package/dist/{plugin-version.js → framework/plugins/plugin-version.js} +0 -0
- /package/dist/{help.d.ts → framework/ui/help.d.ts} +0 -0
- /package/dist/{open-helpers.d.ts → utils/command-local/open-helpers.d.ts} +0 -0
- /package/dist/{search-helpers.js → utils/command-local/search-helpers.js} +0 -0
- /package/dist/{watch-constants.d.ts → utils/command-local/watch-constants.d.ts} +0 -0
- /package/dist/{watch-constants.js → utils/command-local/watch-constants.js} +0 -0
- /package/dist/{date-filter.d.ts → utils/shared/date-filter.d.ts} +0 -0
- /package/dist/{date-filter.js → utils/shared/date-filter.js} +0 -0
- /package/dist/{commands → utils/shared}/resource-extensions.d.ts +0 -0
- /package/dist/{commands → utils/shared}/resource-extensions.js +0 -0
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `c8ctl element-template apply` — apply an element template to a BPMN
|
|
3
|
-
* element via the prebuilt bpmn-js + bpmn-js-element-templates vendor bundle.
|
|
4
|
-
*/
|
|
5
|
-
import { existsSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
6
|
-
import { createRequire } from "node:module";
|
|
7
|
-
import { dirname, resolve as resolvePath } from "node:path";
|
|
8
|
-
import { fileURLToPath } from "node:url";
|
|
9
|
-
import { applySetOverrides, findPropertiesByBindingName, installStdoutEpipeHandler, isRecord, parseArgs, parseSetArg, warnUnmetConditions, } from "../helpers.js";
|
|
10
|
-
import { elementExistsInBpmn, getExecutionPlatformVersion, parseTemplateRef, readBpmnInput, readTemplateFromPathOrUrl, resolveOotbTemplate, } from "../template-ref.js";
|
|
11
|
-
if (!globalThis.c8ctl)
|
|
12
|
-
throw new Error("c8ctl runtime not initialised");
|
|
13
|
-
const c8ctl = globalThis.c8ctl;
|
|
14
|
-
const require = createRequire(import.meta.url);
|
|
15
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
16
|
-
/**
|
|
17
|
-
* Locate the prebuilt vendor bundle. Plugins live in two places:
|
|
18
|
-
* - dev: default-plugins/element-template/commands/apply.ts
|
|
19
|
-
* vendor: ../../../dist/vendor/bpmn-element-templates.cjs
|
|
20
|
-
* - production: dist/default-plugins/element-template/commands/apply.js
|
|
21
|
-
* vendor: ../../../vendor/bpmn-element-templates.cjs
|
|
22
|
-
*/
|
|
23
|
-
function resolveVendorBundle() {
|
|
24
|
-
const candidates = [
|
|
25
|
-
resolvePath(__dirname, "..", "..", "..", "dist", "vendor", "bpmn-element-templates.cjs"),
|
|
26
|
-
resolvePath(__dirname, "..", "..", "..", "vendor", "bpmn-element-templates.cjs"),
|
|
27
|
-
];
|
|
28
|
-
for (const path of candidates) {
|
|
29
|
-
if (existsSync(path)) {
|
|
30
|
-
return path;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
throw new Error("Vendor bundle not found. Run `npm run build:vendor` to build it.\n" +
|
|
34
|
-
`Searched: ${candidates.join(", ")}`);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Find the first child of `extensionElements` whose moddle `$type` matches.
|
|
38
|
-
* Avoids importing bpmn-js's `is()` helper just for one shape check.
|
|
39
|
-
*/
|
|
40
|
-
function findExtensionByType(extensionElements, type) {
|
|
41
|
-
if (!extensionElements) {
|
|
42
|
-
return undefined;
|
|
43
|
-
}
|
|
44
|
-
// biome-ignore lint/plugin: moddle API contract boundary — get() returns untyped collections
|
|
45
|
-
const values = extensionElements.get("values");
|
|
46
|
-
return values?.find((v) => v.$type === type);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Force the source/value of each `--set` into the corresponding moddle child.
|
|
50
|
-
*
|
|
51
|
-
* bpmn-js-element-templates' applyTemplate preserves existing input/output/
|
|
52
|
-
* header/property values on a re-apply (and unconditionally on Dropdown
|
|
53
|
-
* properties — see ChangeElementTemplateHandler#shouldKeepValue, ref
|
|
54
|
-
* bpmn-io/bpmn-js-properties-panel#767). For a CLI the user expectation is
|
|
55
|
-
* "--set wins". After the first applyTemplate we walk the --set args, locate
|
|
56
|
-
* the moddle entry that backs each binding, and update its value via
|
|
57
|
-
* `modeling.updateModdleProperties` so the change goes through the same
|
|
58
|
-
* command stack the library uses internally.
|
|
59
|
-
*
|
|
60
|
-
* Bindings whose moddle entry doesn't exist yet (because their condition was
|
|
61
|
-
* not met against the pre-apply element state) are skipped here and picked
|
|
62
|
-
* up by the second applyTemplate, which re-evaluates conditions against the
|
|
63
|
-
* now-updated element and creates the missing entries using our mutated
|
|
64
|
-
* `prop.value` as the default.
|
|
65
|
-
*/
|
|
66
|
-
function forceSetValues(modeler, element, template, setArgs) {
|
|
67
|
-
const modeling = modeler.get("modeling");
|
|
68
|
-
// biome-ignore lint/plugin: moddle API contract boundary — get() returns untyped ModdleElement
|
|
69
|
-
const extensionElements = element.businessObject.get("extensionElements");
|
|
70
|
-
if (!extensionElements) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
const ioMapping = findExtensionByType(extensionElements, "zeebe:IoMapping");
|
|
74
|
-
const taskHeaders = findExtensionByType(extensionElements, "zeebe:TaskHeaders");
|
|
75
|
-
const taskDefinition = findExtensionByType(extensionElements, "zeebe:TaskDefinition");
|
|
76
|
-
const zeebeProperties = findExtensionByType(extensionElements, "zeebe:Properties");
|
|
77
|
-
for (const arg of setArgs) {
|
|
78
|
-
const { bindingTypeFilter, name, value } = parseSetArg(arg);
|
|
79
|
-
const matches = findPropertiesByBindingName(template.properties, name, bindingTypeFilter);
|
|
80
|
-
for (const prop of matches) {
|
|
81
|
-
updateModdleForProperty(modeling, element, prop, value, {
|
|
82
|
-
ioMapping,
|
|
83
|
-
taskHeaders,
|
|
84
|
-
taskDefinition,
|
|
85
|
-
zeebeProperties,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
function updateModdleForProperty(modeling, element, prop, value, containers) {
|
|
91
|
-
const binding = prop.binding;
|
|
92
|
-
if (!binding) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
switch (binding.type) {
|
|
96
|
-
case "zeebe:input": {
|
|
97
|
-
// biome-ignore lint/plugin: moddle API contract boundary — get() returns untyped collections
|
|
98
|
-
const inputs = (containers.ioMapping?.get("inputParameters") ??
|
|
99
|
-
[]);
|
|
100
|
-
const child = inputs.find((p) => p.target === binding.name);
|
|
101
|
-
if (child) {
|
|
102
|
-
modeling.updateModdleProperties(element, child, { source: value });
|
|
103
|
-
}
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
case "zeebe:output": {
|
|
107
|
-
// biome-ignore lint/plugin: moddle API contract boundary — get() returns untyped collections
|
|
108
|
-
const outputs = (containers.ioMapping?.get("outputParameters") ??
|
|
109
|
-
[]);
|
|
110
|
-
const child = outputs.find((p) => p.source === binding.source);
|
|
111
|
-
if (child) {
|
|
112
|
-
modeling.updateModdleProperties(element, child, { target: value });
|
|
113
|
-
}
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
case "zeebe:taskHeader": {
|
|
117
|
-
// biome-ignore lint/plugin: moddle API contract boundary — get() returns untyped collections
|
|
118
|
-
const headers = (containers.taskHeaders?.get("values") ??
|
|
119
|
-
[]);
|
|
120
|
-
const child = headers.find((h) => h.key === binding.key);
|
|
121
|
-
if (child) {
|
|
122
|
-
modeling.updateModdleProperties(element, child, { value });
|
|
123
|
-
}
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
case "zeebe:property": {
|
|
127
|
-
// biome-ignore lint/plugin: moddle API contract boundary — get() returns untyped collections
|
|
128
|
-
const props = (containers.zeebeProperties?.get("properties") ??
|
|
129
|
-
[]);
|
|
130
|
-
const child = props.find((p) => p.name === binding.name);
|
|
131
|
-
if (child) {
|
|
132
|
-
modeling.updateModdleProperties(element, child, { value });
|
|
133
|
-
}
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
case "zeebe:taskDefinition": {
|
|
137
|
-
if (containers.taskDefinition && binding.property) {
|
|
138
|
-
modeling.updateModdleProperties(element, containers.taskDefinition, {
|
|
139
|
-
[binding.property]: value,
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Apply an element template to a BPMN element using bpmn-js-headless and
|
|
148
|
-
* bpmn-js-element-templates (same libraries as Web/Desktop Modeler).
|
|
149
|
-
*
|
|
150
|
-
* Loaded from a prebuilt CJS vendor bundle since the upstream libraries
|
|
151
|
-
* use extensionless ESM imports that Node.js can't resolve without a bundler.
|
|
152
|
-
*
|
|
153
|
-
* Pass `setArgs` to honor `--set` overrides on re-apply. The first
|
|
154
|
-
* applyTemplate uses the (already-mutated) template defaults for fresh
|
|
155
|
-
* properties; `forceSetValues` then overrides preserved values; a second
|
|
156
|
-
* applyTemplate picks up dependents whose conditions just became met.
|
|
157
|
-
*/
|
|
158
|
-
async function applyElementTemplate(xml, template, elementId, setArgs) {
|
|
159
|
-
const vendorPath = resolveVendorBundle();
|
|
160
|
-
const vendor = require(vendorPath);
|
|
161
|
-
const { Modeler, CloudElementTemplatesCoreModule, ZeebeModdleExtension, HeadlessTextRendererModule, } = vendor;
|
|
162
|
-
// HeadlessTextRendererModule overrides bpmn-js's default textRenderer,
|
|
163
|
-
// which would otherwise call document.createElementNS during importXML
|
|
164
|
-
// (to measure external label bounds) and throw "document is not defined"
|
|
165
|
-
// in Node. The errors are non-fatal but produce noisy stack traces.
|
|
166
|
-
const modeler = new Modeler({
|
|
167
|
-
additionalModules: [
|
|
168
|
-
HeadlessTextRendererModule,
|
|
169
|
-
CloudElementTemplatesCoreModule,
|
|
170
|
-
],
|
|
171
|
-
moddleExtensions: { zeebe: ZeebeModdleExtension },
|
|
172
|
-
});
|
|
173
|
-
await modeler.importXML(xml);
|
|
174
|
-
const elementRegistry = modeler.get("elementRegistry");
|
|
175
|
-
const element = elementRegistry.get(elementId);
|
|
176
|
-
if (!element) {
|
|
177
|
-
throw new Error(`Element "${elementId}" not found in the BPMN diagram`);
|
|
178
|
-
}
|
|
179
|
-
const elementTemplates = modeler.get("elementTemplates");
|
|
180
|
-
elementTemplates.set([template]);
|
|
181
|
-
elementTemplates.applyTemplate(element, template);
|
|
182
|
-
if (setArgs.length > 0) {
|
|
183
|
-
forceSetValues(modeler, element, template, setArgs);
|
|
184
|
-
// Second pass so dependents whose conditions are newly met get
|
|
185
|
-
// created with our mutated defaults.
|
|
186
|
-
elementTemplates.applyTemplate(element, template);
|
|
187
|
-
}
|
|
188
|
-
const result = await modeler.saveXML({ format: true });
|
|
189
|
-
return result.xml;
|
|
190
|
-
}
|
|
191
|
-
export async function applySubcommand(args) {
|
|
192
|
-
const logger = c8ctl.getLogger();
|
|
193
|
-
// applySubcommand writes BPMN XML to stdout in the non-in-place path;
|
|
194
|
-
// install the EPIPE handler before any downstream `head -c N` or
|
|
195
|
-
// `| less` can sever the pipe.
|
|
196
|
-
installStdoutEpipeHandler();
|
|
197
|
-
const parsed = parseArgs(args);
|
|
198
|
-
if (parsed.error) {
|
|
199
|
-
throw new Error(parsed.error);
|
|
200
|
-
}
|
|
201
|
-
const [templateArg, elementId, bpmnFilePath] = parsed.positionals;
|
|
202
|
-
if (parsed.positionals.length > 3) {
|
|
203
|
-
throw new Error(`Unexpected argument: ${parsed.positionals[3]}. Usage: c8ctl element-template apply <template> <element-id> [<file.bpmn>]`);
|
|
204
|
-
}
|
|
205
|
-
if (!templateArg) {
|
|
206
|
-
throw new Error("Missing template argument. Usage: c8ctl element-template apply <template> <element-id> [<file.bpmn>]");
|
|
207
|
-
}
|
|
208
|
-
if (!elementId) {
|
|
209
|
-
throw new Error("Missing element-id argument. Usage: c8ctl element-template apply <template> <element-id> [<file.bpmn>]");
|
|
210
|
-
}
|
|
211
|
-
// Reject incompatible flag combinations before reading stdin —
|
|
212
|
-
// otherwise a piped BPMN stream is consumed (and a long-running
|
|
213
|
-
// producer can hang) just to surface a usage error.
|
|
214
|
-
if (parsed.inPlace && !bpmnFilePath) {
|
|
215
|
-
throw new Error("--in-place cannot be used with stdin input");
|
|
216
|
-
}
|
|
217
|
-
const input = await readBpmnInput(bpmnFilePath);
|
|
218
|
-
if (!input) {
|
|
219
|
-
throw new Error("No BPMN input provided. Pass a file path or pipe BPMN XML via stdin.");
|
|
220
|
-
}
|
|
221
|
-
const ref = parseTemplateRef(templateArg);
|
|
222
|
-
if (!ref) {
|
|
223
|
-
throw new Error("Missing template argument.");
|
|
224
|
-
}
|
|
225
|
-
let template;
|
|
226
|
-
if (ref.kind === "id") {
|
|
227
|
-
const executionPlatformVersion = await getExecutionPlatformVersion(input.xml);
|
|
228
|
-
template = await resolveOotbTemplate(ref, { executionPlatformVersion });
|
|
229
|
-
if (ref.version === undefined && !executionPlatformVersion) {
|
|
230
|
-
logger.warn("BPMN has no modeler:executionPlatformVersion — applying latest version " +
|
|
231
|
-
`(${template.version}) of ${ref.id}.`);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
template = await readTemplateFromPathOrUrl(ref.value);
|
|
236
|
-
}
|
|
237
|
-
// Validate --set overrides against the template before dry-run or real apply,
|
|
238
|
-
// so `--dry-run --set notAProperty=x` fails just as the real apply would.
|
|
239
|
-
let setProperties = [];
|
|
240
|
-
if (parsed.setArgs.length > 0) {
|
|
241
|
-
setProperties = applySetOverrides(template.properties, parsed.setArgs);
|
|
242
|
-
}
|
|
243
|
-
// Dry-run: describe what would happen without mutating anything
|
|
244
|
-
if (c8ctl.dryRun) {
|
|
245
|
-
// Validate the target element exists so dry-run only reports a successful
|
|
246
|
-
// plan when the real apply would also succeed.
|
|
247
|
-
if (!(await elementExistsInBpmn(input.xml, elementId))) {
|
|
248
|
-
throw new Error(`Element "${elementId}" not found in the BPMN diagram`);
|
|
249
|
-
}
|
|
250
|
-
const fallbackId = ref.kind === "id" ? ref.id : ref.value;
|
|
251
|
-
const info = {
|
|
252
|
-
dryRun: true,
|
|
253
|
-
command: "element-template apply",
|
|
254
|
-
template: {
|
|
255
|
-
id: template.id ?? fallbackId,
|
|
256
|
-
name: template.name,
|
|
257
|
-
version: template.version,
|
|
258
|
-
},
|
|
259
|
-
elementId,
|
|
260
|
-
source: input.source,
|
|
261
|
-
inPlace: parsed.inPlace && !!bpmnFilePath,
|
|
262
|
-
setOverrides: parsed.setArgs,
|
|
263
|
-
};
|
|
264
|
-
if (c8ctl.outputMode === "json") {
|
|
265
|
-
logger.json(info);
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
logger.output("Dry run — no changes applied.");
|
|
269
|
-
logger.output(` Template: ${info.template.name ?? info.template.id}${info.template.version != null ? ` v${info.template.version}` : ""}`);
|
|
270
|
-
logger.output(` Element: ${elementId}`);
|
|
271
|
-
logger.output(` Source: ${input.source}`);
|
|
272
|
-
if (info.inPlace) {
|
|
273
|
-
logger.output(` Mode: in-place (would overwrite ${bpmnFilePath})`);
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
logger.output(" Mode: stdout (would print transformed XML)");
|
|
277
|
-
}
|
|
278
|
-
if (parsed.setArgs.length > 0) {
|
|
279
|
-
logger.output(` --set: ${parsed.setArgs.join(", ")}`);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
return;
|
|
283
|
-
}
|
|
284
|
-
let resultXml;
|
|
285
|
-
try {
|
|
286
|
-
resultXml = await applyElementTemplate(input.xml, template, elementId, parsed.setArgs);
|
|
287
|
-
}
|
|
288
|
-
catch (error) {
|
|
289
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
290
|
-
throw new Error(`Error applying template: ${message}`);
|
|
291
|
-
}
|
|
292
|
-
if (setProperties.length > 0) {
|
|
293
|
-
warnUnmetConditions(logger, resultXml, setProperties);
|
|
294
|
-
}
|
|
295
|
-
if (parsed.inPlace && bpmnFilePath) {
|
|
296
|
-
atomicOverwriteFile(bpmnFilePath, resultXml);
|
|
297
|
-
logger.info(`Updated ${bpmnFilePath}`);
|
|
298
|
-
return;
|
|
299
|
-
}
|
|
300
|
-
process.stdout.write(resultXml);
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Overwrite `targetPath` atomically: write to a sibling temp file in
|
|
304
|
-
* the same directory, then `renameSync` over the target. POSIX
|
|
305
|
-
* `rename` is atomic on the same filesystem, so a kill mid-write
|
|
306
|
-
* never destroys the user's BPMN file.
|
|
307
|
-
*
|
|
308
|
-
* Falls back to a direct `writeFileSync` if the rename fails with
|
|
309
|
-
* EXDEV (cross-device link) — vanishingly rare for a file's own
|
|
310
|
-
* sibling, but covers exotic setups like FUSE mounts.
|
|
311
|
-
*/
|
|
312
|
-
function atomicOverwriteFile(targetPath, contents) {
|
|
313
|
-
const target = resolvePath(targetPath);
|
|
314
|
-
const tmp = `${target}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
|
|
315
|
-
try {
|
|
316
|
-
writeFileSync(tmp, contents, "utf-8");
|
|
317
|
-
renameSync(tmp, target);
|
|
318
|
-
}
|
|
319
|
-
catch (error) {
|
|
320
|
-
try {
|
|
321
|
-
unlinkSync(tmp);
|
|
322
|
-
}
|
|
323
|
-
catch {
|
|
324
|
-
// Best-effort cleanup — the original error is what matters.
|
|
325
|
-
}
|
|
326
|
-
const code = isRecord(error) && typeof error.code === "string"
|
|
327
|
-
? error.code
|
|
328
|
-
: undefined;
|
|
329
|
-
if (code === "EXDEV") {
|
|
330
|
-
writeFileSync(target, contents, "utf-8");
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
throw error;
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
//# sourceMappingURL=apply.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/apply.ts"],"names":[],"mappings":"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"}
|