@camunda8/cli 2.8.0-alpha.9 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/EXAMPLES.md +22 -5
- package/PLUGIN-HELP.md +26 -0
- package/README.md +37 -4
- package/dist/command-dispatch.d.ts.map +1 -1
- package/dist/command-dispatch.js +2 -1
- package/dist/command-dispatch.js.map +1 -1
- package/dist/command-registry.d.ts +30 -0
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +34 -1
- package/dist/command-registry.js.map +1 -1
- package/dist/commands/plugins.d.ts +21 -0
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +74 -1
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/resource-extensions.d.ts +12 -0
- package/dist/commands/resource-extensions.d.ts.map +1 -1
- package/dist/commands/resource-extensions.js +13 -1
- package/dist/commands/resource-extensions.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +5 -3
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +21 -12
- package/dist/commands/watch.js.map +1 -1
- package/dist/completion.d.ts.map +1 -1
- package/dist/completion.js +140 -13
- package/dist/completion.js.map +1 -1
- package/dist/default-plugins/bpmn/README.md +69 -0
- package/dist/default-plugins/bpmn/c8ctl-plugin.js +125 -0
- package/dist/default-plugins/bpmn/c8ctl-plugin.js.map +1 -0
- package/dist/default-plugins/bpmn/lint.js +259 -0
- package/dist/default-plugins/bpmn/lint.js.map +1 -0
- package/dist/default-plugins/bpmn/package.json +8 -0
- package/dist/default-plugins/cluster/package.json +1 -1
- package/dist/default-plugins/element-template/AGENTS.md +65 -0
- package/dist/default-plugins/element-template/README.md +331 -0
- package/dist/default-plugins/element-template/c8ctl-plugin.js +247 -0
- package/dist/default-plugins/element-template/c8ctl-plugin.js.map +1 -0
- package/dist/default-plugins/element-template/commands/apply.js +298 -0
- package/dist/default-plugins/element-template/commands/apply.js.map +1 -0
- package/dist/default-plugins/element-template/commands/get-properties.js +344 -0
- package/dist/default-plugins/element-template/commands/get-properties.js.map +1 -0
- package/dist/default-plugins/element-template/commands/get.js +107 -0
- package/dist/default-plugins/element-template/commands/get.js.map +1 -0
- package/dist/default-plugins/element-template/commands/info.js +189 -0
- package/dist/default-plugins/element-template/commands/info.js.map +1 -0
- package/dist/default-plugins/element-template/commands/search.js +101 -0
- package/dist/default-plugins/element-template/commands/search.js.map +1 -0
- package/dist/default-plugins/element-template/commands/sync.js +36 -0
- package/dist/default-plugins/element-template/commands/sync.js.map +1 -0
- package/dist/default-plugins/element-template/docs/design.md +145 -0
- package/dist/default-plugins/element-template/helpers.js +404 -0
- package/dist/default-plugins/element-template/helpers.js.map +1 -0
- package/dist/default-plugins/element-template/marketplace.js +396 -0
- package/dist/default-plugins/element-template/marketplace.js.map +1 -0
- package/dist/default-plugins/element-template/package.json +8 -0
- package/dist/default-plugins/element-template/template-ref.js +232 -0
- package/dist/default-plugins/element-template/template-ref.js.map +1 -0
- package/dist/default-plugins/element-template/vendor-src/bundle-entry.js +44 -0
- package/dist/default-plugins/feel/README.md +163 -0
- package/dist/default-plugins/feel/c8ctl-plugin.js +616 -0
- package/dist/default-plugins/feel/c8ctl-plugin.js.map +1 -0
- package/dist/default-plugins/feel/package.json +8 -0
- package/dist/deployments.d.ts +1 -0
- package/dist/deployments.d.ts.map +1 -1
- package/dist/deployments.js +89 -20
- package/dist/deployments.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +156 -5
- package/dist/help.js.map +1 -1
- package/dist/ignore.d.ts +16 -1
- package/dist/ignore.d.ts.map +1 -1
- package/dist/ignore.js +55 -3
- package/dist/ignore.js.map +1 -1
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +294 -25
- package/dist/index.js.map +1 -1
- package/dist/plugin-loader.d.ts +168 -7
- package/dist/plugin-loader.d.ts.map +1 -1
- package/dist/plugin-loader.js +284 -21
- package/dist/plugin-loader.js.map +1 -1
- package/dist/runtime.d.ts +10 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +6 -0
- package/dist/runtime.js.map +1 -1
- package/dist/vendor/bpmn-element-templates.cjs +59639 -0
- package/package.json +20 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-properties.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/get-properties.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `c8ctl element-template get` — print the raw template JSON to stdout
|
|
3
|
+
* (pipe-friendly).
|
|
4
|
+
*
|
|
5
|
+
* For local paths and URLs we pass the source bytes through unchanged (no
|
|
6
|
+
* parse/stringify round-trip — preserves whitespace, key order, trailing
|
|
7
|
+
* newline). For OOTB ids we don't have the upstream bytes, so we
|
|
8
|
+
* serialize the cached object with a 2-space indent. Designed for shell
|
|
9
|
+
* redirection:
|
|
10
|
+
*
|
|
11
|
+
* c8ctl element-template get <id> > template.json
|
|
12
|
+
*
|
|
13
|
+
* No trailing hints or colored output — they would corrupt the piped
|
|
14
|
+
* payload.
|
|
15
|
+
*/
|
|
16
|
+
import { parseTemplateJson, readFileOrUrl } from "../helpers.js";
|
|
17
|
+
import { loadCache } from "../marketplace.js";
|
|
18
|
+
import { parseTemplateRef, resolveOotbTemplate } from "../template-ref.js";
|
|
19
|
+
export async function getSubcommand(args) {
|
|
20
|
+
const usage = "Usage: c8ctl element-template get <template> [--no-icon]";
|
|
21
|
+
let templateArg;
|
|
22
|
+
let noIcon = false;
|
|
23
|
+
for (let i = 0; i < args.length; i++) {
|
|
24
|
+
const arg = args[i];
|
|
25
|
+
if (arg === "--") {
|
|
26
|
+
// All tokens after `--` are literal positionals — not flags.
|
|
27
|
+
for (const rest of args.slice(i + 1)) {
|
|
28
|
+
if (templateArg === undefined) {
|
|
29
|
+
templateArg = rest;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
throw new Error(`Unexpected argument: ${rest}. ${usage}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
if (arg === "--no-icon") {
|
|
38
|
+
noIcon = true;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (arg.startsWith("-")) {
|
|
42
|
+
throw new Error(`Unknown flag: ${arg}. ${usage}`);
|
|
43
|
+
}
|
|
44
|
+
if (templateArg === undefined) {
|
|
45
|
+
templateArg = arg;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
throw new Error(`Unexpected argument: ${arg}. ${usage}`);
|
|
49
|
+
}
|
|
50
|
+
if (!templateArg) {
|
|
51
|
+
throw new Error(`Missing template argument. ${usage}`);
|
|
52
|
+
}
|
|
53
|
+
const ref = parseTemplateRef(templateArg);
|
|
54
|
+
if (!ref) {
|
|
55
|
+
throw new Error(`Missing template argument. ${usage}`);
|
|
56
|
+
}
|
|
57
|
+
if (ref.kind === "path" || ref.kind === "url") {
|
|
58
|
+
const content = await readFileOrUrl(ref.value);
|
|
59
|
+
// Pass-through preserves whitespace + key order — but --no-icon
|
|
60
|
+
// requires a parse/strip/re-stringify round-trip, which loses
|
|
61
|
+
// that. The user is opting in to the rewrite by asking for it.
|
|
62
|
+
if (noIcon) {
|
|
63
|
+
const template = parseTemplateJson(content);
|
|
64
|
+
const stripped = stripIcon(template);
|
|
65
|
+
process.stdout.write(`${JSON.stringify(stripped, null, 2)}\n`);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
process.stdout.write(content);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// OOTB id: no upstream bytes available — stringify the cached object.
|
|
72
|
+
// We deliberately do NOT auto-bootstrap here: the bootstrap log lines
|
|
73
|
+
// would interleave with the JSON payload on stdout and corrupt any
|
|
74
|
+
// shell redirect (`> template.json`). Surface the missing-cache case
|
|
75
|
+
// as an explicit error pointing at `sync`.
|
|
76
|
+
if (loadCache() === null) {
|
|
77
|
+
throw new Error("Element template cache not found. Run 'c8ctl element-template sync' first.");
|
|
78
|
+
}
|
|
79
|
+
const template = await resolveOotbTemplate(ref);
|
|
80
|
+
// The cache injects `metadata.upstreamRef` (our internal pointer for
|
|
81
|
+
// incremental sync); strip it so the output matches what you'd get
|
|
82
|
+
// from the marketplace, not c8ctl's cache shape.
|
|
83
|
+
let cleaned = stripInternalMetadata(template);
|
|
84
|
+
if (noIcon) {
|
|
85
|
+
cleaned = stripIcon(cleaned);
|
|
86
|
+
}
|
|
87
|
+
process.stdout.write(`${JSON.stringify(cleaned, null, 2)}\n`);
|
|
88
|
+
}
|
|
89
|
+
function stripInternalMetadata(template) {
|
|
90
|
+
if (!template.metadata?.upstreamRef) {
|
|
91
|
+
return template;
|
|
92
|
+
}
|
|
93
|
+
const { metadata, ...rest } = template;
|
|
94
|
+
const { upstreamRef: _ignored, ...metaRest } = metadata;
|
|
95
|
+
if (Object.keys(metaRest).length === 0) {
|
|
96
|
+
return { ...rest, properties: template.properties };
|
|
97
|
+
}
|
|
98
|
+
return { ...rest, properties: template.properties, metadata: metaRest };
|
|
99
|
+
}
|
|
100
|
+
function stripIcon(template) {
|
|
101
|
+
if (!template.icon) {
|
|
102
|
+
return template;
|
|
103
|
+
}
|
|
104
|
+
const { icon: _icon, ...rest } = template;
|
|
105
|
+
return { ...rest, properties: template.properties };
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `c8ctl element-template info` — show a keyed card of template-level
|
|
3
|
+
* metadata.
|
|
4
|
+
*
|
|
5
|
+
* Also hosts the shared inspect-arg parser (used by `info` and
|
|
6
|
+
* `get-properties`), the template-header renderer (used by `info` and
|
|
7
|
+
* `search`), and the generic keyed-card layout used by both header and
|
|
8
|
+
* property-detail cards.
|
|
9
|
+
*/
|
|
10
|
+
import { styleText } from "node:util";
|
|
11
|
+
import { loadTemplate } from "../template-ref.js";
|
|
12
|
+
if (!globalThis.c8ctl)
|
|
13
|
+
throw new Error("c8ctl runtime not initialised");
|
|
14
|
+
const c8ctl = globalThis.c8ctl;
|
|
15
|
+
/**
|
|
16
|
+
* Parse the shared inspect args: `<template> [<name>...] [--group <id>...]`.
|
|
17
|
+
* `--group` is repeatable. Comma-separated values are NOT split — pass
|
|
18
|
+
* `--group a --group b` for multiple ids.
|
|
19
|
+
*/
|
|
20
|
+
export function parseInspectArgs(args, usage, { allowPropertyNames, allowFilters, }) {
|
|
21
|
+
let templateArg;
|
|
22
|
+
const propertyArgs = [];
|
|
23
|
+
const groups = [];
|
|
24
|
+
let detailed = false;
|
|
25
|
+
let afterDoubleDash = false;
|
|
26
|
+
for (let i = 0; i < args.length; i++) {
|
|
27
|
+
const arg = args[i];
|
|
28
|
+
if (!afterDoubleDash && arg === "--") {
|
|
29
|
+
afterDoubleDash = true;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (!afterDoubleDash && (arg === "--group" || arg.startsWith("--group="))) {
|
|
33
|
+
if (!allowFilters) {
|
|
34
|
+
throw new Error(`Unknown flag: --group. ${usage}`);
|
|
35
|
+
}
|
|
36
|
+
const value = arg === "--group" ? args[++i] : arg.slice("--group=".length);
|
|
37
|
+
if (value === undefined || value === "") {
|
|
38
|
+
throw new Error(`--group requires a value (group id). ${usage}`);
|
|
39
|
+
}
|
|
40
|
+
groups.push(value);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (!afterDoubleDash && (arg === "--detailed" || arg === "-d")) {
|
|
44
|
+
if (!allowFilters) {
|
|
45
|
+
throw new Error(`Unknown flag: ${arg}. ${usage}`);
|
|
46
|
+
}
|
|
47
|
+
detailed = true;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (!afterDoubleDash && arg.startsWith("-")) {
|
|
51
|
+
throw new Error(`Unknown flag: ${arg}. ${usage}`);
|
|
52
|
+
}
|
|
53
|
+
if (templateArg === undefined) {
|
|
54
|
+
templateArg = arg;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (!allowPropertyNames) {
|
|
58
|
+
throw new Error(`Unexpected argument: ${arg}. ${usage}`);
|
|
59
|
+
}
|
|
60
|
+
propertyArgs.push(arg);
|
|
61
|
+
}
|
|
62
|
+
if (!templateArg) {
|
|
63
|
+
throw new Error(`Missing template argument. ${usage}`);
|
|
64
|
+
}
|
|
65
|
+
return { templateArg, propertyArgs, groups, detailed };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Project a template into the JSON summary shape — only the fields
|
|
69
|
+
* the text output surfaces (name/id/version, description, applies-to,
|
|
70
|
+
* engines, docs link), but using the element-templates JSON schema's
|
|
71
|
+
* own field names. No invented derivations; no full-template dump.
|
|
72
|
+
*/
|
|
73
|
+
export function buildTemplateSummary(template) {
|
|
74
|
+
return {
|
|
75
|
+
name: template.name,
|
|
76
|
+
id: template.id,
|
|
77
|
+
version: template.version,
|
|
78
|
+
description: template.description,
|
|
79
|
+
documentationRef: template.documentationRef,
|
|
80
|
+
appliesTo: template.appliesTo,
|
|
81
|
+
elementType: template.elementType,
|
|
82
|
+
engines: template.engines,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Render template-level metadata as a keyed card.
|
|
87
|
+
*/
|
|
88
|
+
export function formatTemplateHeaderLines(template, fallbackName, { autoResolvedVersion = false } = {}) {
|
|
89
|
+
const fields = [];
|
|
90
|
+
if (template.id) {
|
|
91
|
+
fields.push(["ID", template.id]);
|
|
92
|
+
}
|
|
93
|
+
if (template.version !== undefined) {
|
|
94
|
+
const versionCell = autoResolvedVersion
|
|
95
|
+
? `${template.version} ${styleText("dim", "(latest; @<n> to pin)")}`
|
|
96
|
+
: String(template.version);
|
|
97
|
+
fields.push(["Version", versionCell]);
|
|
98
|
+
}
|
|
99
|
+
const appliesValue = formatAppliesToValue(template);
|
|
100
|
+
if (appliesValue) {
|
|
101
|
+
fields.push(["Applies to", appliesValue]);
|
|
102
|
+
}
|
|
103
|
+
if (template.engines?.camunda) {
|
|
104
|
+
fields.push(["Engines", template.engines.camunda]);
|
|
105
|
+
}
|
|
106
|
+
if (template.description) {
|
|
107
|
+
fields.push(["Description", template.description]);
|
|
108
|
+
}
|
|
109
|
+
if (template.documentationRef) {
|
|
110
|
+
fields.push(["Docs", styleText("dim", template.documentationRef)]);
|
|
111
|
+
}
|
|
112
|
+
return formatKeyedCard({
|
|
113
|
+
title: template.name ?? fallbackName ?? "Template",
|
|
114
|
+
fields,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Resolve `appliesTo` and `elementType.value` into a single value cell.
|
|
119
|
+
*/
|
|
120
|
+
export function formatAppliesToValue(template) {
|
|
121
|
+
const applies = Array.isArray(template.appliesTo)
|
|
122
|
+
? template.appliesTo.filter((v) => Boolean(v))
|
|
123
|
+
: [];
|
|
124
|
+
const elementType = template.elementType?.value;
|
|
125
|
+
if (applies.length === 0 && !elementType) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const left = applies.length === 0
|
|
129
|
+
? null
|
|
130
|
+
: applies.length === 1
|
|
131
|
+
? applies[0]
|
|
132
|
+
: applies.length === 2
|
|
133
|
+
? applies.join(" or ")
|
|
134
|
+
: `${applies.slice(0, -1).join(", ")}, or ${applies[applies.length - 1]}`;
|
|
135
|
+
if (left && elementType && !applies.includes(elementType)) {
|
|
136
|
+
return `${left} → ${elementType}`;
|
|
137
|
+
}
|
|
138
|
+
if (left) {
|
|
139
|
+
return left;
|
|
140
|
+
}
|
|
141
|
+
return elementType ?? null;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Generic keyed-card renderer used by both the template header and the
|
|
145
|
+
* property detail card.
|
|
146
|
+
*/
|
|
147
|
+
export function formatKeyedCard({ title, subtitle, fields, }) {
|
|
148
|
+
const lines = [];
|
|
149
|
+
const titleParts = [styleText("bold", title)];
|
|
150
|
+
if (subtitle) {
|
|
151
|
+
titleParts.push(styleText("dim", subtitle));
|
|
152
|
+
}
|
|
153
|
+
lines.push(titleParts.join(" "));
|
|
154
|
+
if (fields.length === 0) {
|
|
155
|
+
return lines;
|
|
156
|
+
}
|
|
157
|
+
const keyWidth = Math.max(0, ...fields.map(([k]) => k.length));
|
|
158
|
+
for (const [key, value] of fields) {
|
|
159
|
+
const paddedKey = key.padEnd(keyWidth);
|
|
160
|
+
const styledKey = key ? styleText("dim", paddedKey) : paddedKey;
|
|
161
|
+
lines.push(` ${styledKey} ${value}`);
|
|
162
|
+
}
|
|
163
|
+
return lines;
|
|
164
|
+
}
|
|
165
|
+
export async function infoSubcommand(args) {
|
|
166
|
+
const logger = c8ctl.getLogger();
|
|
167
|
+
const usage = "Usage: c8ctl element-template info <template>";
|
|
168
|
+
const parsed = parseInspectArgs(args, usage, {
|
|
169
|
+
allowPropertyNames: false,
|
|
170
|
+
allowFilters: false,
|
|
171
|
+
});
|
|
172
|
+
const { template, autoResolvedVersion } = await loadTemplate(parsed.templateArg);
|
|
173
|
+
if (c8ctl.outputMode === "json") {
|
|
174
|
+
logger.json(buildTemplateSummary(template));
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
// Template metadata card. The version row carries a dim parenthetical
|
|
178
|
+
// when the version was auto-resolved from an OOTB id.
|
|
179
|
+
for (const line of formatTemplateHeaderLines(template, parsed.templateArg, {
|
|
180
|
+
autoResolvedVersion,
|
|
181
|
+
})) {
|
|
182
|
+
logger.output(line);
|
|
183
|
+
}
|
|
184
|
+
logger.output("");
|
|
185
|
+
// Trailing hint — point at get-properties for the property listing.
|
|
186
|
+
logger.output(styleText("dim", "For settable properties, run:\n" +
|
|
187
|
+
` c8ctl element-template get-properties ${parsed.templateArg}`));
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/info.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,IAAI,CAAC,UAAU,CAAC,KAAK;IAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACxE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAS/B;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC/B,IAAc,EACd,KAAa,EACb,EACC,kBAAkB,EAClB,YAAY,GAC4C;IAEzD,IAAI,WAA+B,CAAC;IACpC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,eAAe,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,eAAe,GAAG,IAAI,CAAC;YACvB,SAAS;QACV,CAAC;QACD,IAAI,CAAC,eAAe,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,KAAK,GACV,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,SAAS;QACV,CAAC;QACD,IAAI,CAAC,eAAe,IAAI,CAAC,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,SAAS;QACV,CAAC;QACD,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/B,WAAW,GAAG,GAAG,CAAC;YAClB,SAAS;QACV,CAAC;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CACnC,QAAkB;IAElB,OAAO;QACN,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,OAAO,EAAE,QAAQ,CAAC,OAAO;KACzB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACxC,QAAkB,EAClB,YAAgC,EAChC,EAAE,mBAAmB,GAAG,KAAK,KAAwC,EAAE;IAEvE,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,mBAAmB;YACtC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,EAAE,uBAAuB,CAAC,EAAE;YACrE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,eAAe,CAAC;QACtB,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,YAAY,IAAI,UAAU;QAClD,MAAM;KACN,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAkB;IACtD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;QAChD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,EAAE,CAAC;IACN,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GACT,OAAO,CAAC,MAAM,KAAK,CAAC;QACnB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBACrB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;IAE9E,IAAI,IAAI,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3D,OAAO,GAAG,IAAI,MAAM,WAAW,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,WAAW,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,MAAM,GAKN;IACA,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACd,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,+CAA+C,CAAC;IAE9D,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE;QAC5C,kBAAkB,EAAE,KAAK;QACzB,YAAY,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,GAAG,MAAM,YAAY,CAC3D,MAAM,CAAC,WAAW,CAClB,CAAC;IAEF,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5C,OAAO;IACR,CAAC;IAED,sEAAsE;IACtE,sDAAsD;IACtD,KAAK,MAAM,IAAI,IAAI,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;QAC1E,mBAAmB;KACnB,CAAC,EAAE,CAAC;QACJ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAElB,oEAAoE;IACpE,MAAM,CAAC,MAAM,CACZ,SAAS,CACR,KAAK,EACL,iCAAiC;QAChC,2CAA2C,MAAM,CAAC,WAAW,EAAE,CAChE,CACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `c8ctl element-template search` — search the local cache of OOTB
|
|
3
|
+
* element templates by name/id, with auto-bootstrap on first run.
|
|
4
|
+
*/
|
|
5
|
+
import { styleText } from "node:util";
|
|
6
|
+
import { bootstrapIfNeeded, nudgeIfStale, searchTemplates, } from "../marketplace.js";
|
|
7
|
+
import { buildTemplateSummary, formatTemplateHeaderLines } from "./info.js";
|
|
8
|
+
if (!globalThis.c8ctl)
|
|
9
|
+
throw new Error("c8ctl runtime not initialised");
|
|
10
|
+
const c8ctl = globalThis.c8ctl;
|
|
11
|
+
export async function searchSubcommand(args) {
|
|
12
|
+
const logger = c8ctl.getLogger();
|
|
13
|
+
const usage = "Usage: c8ctl element-template search <query> [--limit N]";
|
|
14
|
+
// Default cap that covers the common "AWS"-shaped query without
|
|
15
|
+
// dumping the whole catalogue. Pass --limit to widen.
|
|
16
|
+
const DEFAULT_LIMIT = 20;
|
|
17
|
+
let limit = DEFAULT_LIMIT;
|
|
18
|
+
const queryParts = [];
|
|
19
|
+
for (let i = 0; i < args.length; i++) {
|
|
20
|
+
const arg = args[i];
|
|
21
|
+
if (arg === "--") {
|
|
22
|
+
queryParts.push(...args.slice(i + 1));
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
if (arg === "--limit" || arg.startsWith("--limit=")) {
|
|
26
|
+
const value = arg === "--limit" ? args[++i] : arg.slice("--limit=".length);
|
|
27
|
+
if (value === undefined || value === "") {
|
|
28
|
+
throw new Error(`--limit requires a value (positive integer). ${usage}`);
|
|
29
|
+
}
|
|
30
|
+
const parsed = Number(value);
|
|
31
|
+
if (!Number.isInteger(parsed) || parsed < 1) {
|
|
32
|
+
throw new Error(`--limit must be a positive integer; got "${value}". ${usage}`);
|
|
33
|
+
}
|
|
34
|
+
limit = parsed;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (arg.startsWith("-")) {
|
|
38
|
+
throw new Error(`Unknown flag: ${arg}. ${usage}`);
|
|
39
|
+
}
|
|
40
|
+
queryParts.push(arg);
|
|
41
|
+
}
|
|
42
|
+
const query = queryParts.join(" ").trim();
|
|
43
|
+
if (!query) {
|
|
44
|
+
throw new Error(`Missing query. ${usage}`);
|
|
45
|
+
}
|
|
46
|
+
await bootstrapIfNeeded({ logger });
|
|
47
|
+
nudgeIfStale(logger);
|
|
48
|
+
// Deprecated filtering and per-id latest-version reduction are done
|
|
49
|
+
// inside searchTemplates() so the latest non-deprecated version of a
|
|
50
|
+
// connector is still returned when its newest version is deprecated.
|
|
51
|
+
const allMatches = searchTemplates(query);
|
|
52
|
+
const total = allMatches.length;
|
|
53
|
+
const limited = allMatches.slice(0, limit);
|
|
54
|
+
const truncated = total > limited.length;
|
|
55
|
+
if (c8ctl.outputMode === "json") {
|
|
56
|
+
// JSON consumers see `count` (post-limit) and `total` (pre-limit).
|
|
57
|
+
// `count !== total` is the explicit truncation signal — no need to
|
|
58
|
+
// inspect a separate field.
|
|
59
|
+
logger.json({
|
|
60
|
+
query,
|
|
61
|
+
count: limited.length,
|
|
62
|
+
total,
|
|
63
|
+
matches: limited.map(buildTemplateSummary),
|
|
64
|
+
});
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (total === 0) {
|
|
68
|
+
logger.output(`No element templates match '${query}'.`);
|
|
69
|
+
logger.output("");
|
|
70
|
+
logger.output(styleText("dim", "Try a broader query, or run 'c8ctl element-template sync' to refresh the cache."));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// Header — when truncated, lead with "Showing X of Y" so the elision
|
|
74
|
+
// is visible on the first line; otherwise the plain count is enough.
|
|
75
|
+
// Dim because it's meta-info above the result cards, matching how
|
|
76
|
+
// get-properties styles its "Showing X of Y properties" line.
|
|
77
|
+
const matchWord = total === 1 ? "match" : "matches";
|
|
78
|
+
logger.output(styleText("dim", truncated
|
|
79
|
+
? `Showing ${limited.length} of ${total} ${matchWord} for '${query}'`
|
|
80
|
+
: `${total} ${matchWord} for '${query}'`));
|
|
81
|
+
logger.output("");
|
|
82
|
+
for (let i = 0; i < limited.length; i++) {
|
|
83
|
+
const t = limited[i];
|
|
84
|
+
for (const line of formatTemplateHeaderLines(t, t.id)) {
|
|
85
|
+
logger.output(line);
|
|
86
|
+
}
|
|
87
|
+
if (i < limited.length - 1) {
|
|
88
|
+
logger.output("");
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Trailing hint.
|
|
92
|
+
logger.output("");
|
|
93
|
+
if (truncated) {
|
|
94
|
+
logger.output(styleText("dim", `Refine the query or pass --limit ${total} to see them all.`));
|
|
95
|
+
logger.output("");
|
|
96
|
+
}
|
|
97
|
+
const exampleId = limited[0]?.id ?? "<id>";
|
|
98
|
+
logger.output(styleText("dim", "For details on a template:\n" +
|
|
99
|
+
` c8ctl element-template info ${exampleId}`));
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `c8ctl element-template sync` — refresh the local OOTB element template
|
|
3
|
+
* cache from the marketplace.
|
|
4
|
+
*/
|
|
5
|
+
import { syncTemplates } from "../marketplace.js";
|
|
6
|
+
if (!globalThis.c8ctl)
|
|
7
|
+
throw new Error("c8ctl runtime not initialised");
|
|
8
|
+
const c8ctl = globalThis.c8ctl;
|
|
9
|
+
export async function syncSubcommand(args) {
|
|
10
|
+
const logger = c8ctl.getLogger();
|
|
11
|
+
let prune = false;
|
|
12
|
+
for (let i = 0; i < args.length; i++) {
|
|
13
|
+
const arg = args[i];
|
|
14
|
+
if (arg === "--prune") {
|
|
15
|
+
prune = true;
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
if (arg === "--") {
|
|
19
|
+
// No positional args expected — reject anything after `--`.
|
|
20
|
+
const rest = args.slice(i + 1);
|
|
21
|
+
if (rest.length > 0) {
|
|
22
|
+
throw new Error(`Unexpected argument: ${rest[0]}. Usage: c8ctl element-template sync [--prune]`);
|
|
23
|
+
}
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
if (arg.startsWith("-")) {
|
|
27
|
+
throw new Error(`Unknown flag: ${arg}. Usage: c8ctl element-template sync [--prune]`);
|
|
28
|
+
}
|
|
29
|
+
throw new Error(`Unexpected argument: ${arg}. Usage: c8ctl element-template sync [--prune]`);
|
|
30
|
+
}
|
|
31
|
+
const summary = await syncTemplates({ logger, prune });
|
|
32
|
+
if (c8ctl.outputMode === "json") {
|
|
33
|
+
logger.json(summary);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,IAAI,CAAC,UAAU,CAAC,KAAK;IAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACxE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IACjC,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvB,KAAK,GAAG,IAAI,CAAC;YACb,SAAS;QACV,CAAC;QACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,4DAA4D;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACd,wBAAwB,IAAI,CAAC,CAAC,CAAC,gDAAgD,CAC/E,CAAC;YACH,CAAC;YACD,MAAM;QACP,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACd,iBAAiB,GAAG,gDAAgD,CACpE,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CACd,wBAAwB,GAAG,gDAAgD,CAC3E,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvD,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# `element-template` plugin design
|
|
2
|
+
|
|
3
|
+
Lives at `default-plugins/element-template/`. Applies Camunda element
|
|
4
|
+
templates to BPMN elements and inspects their settable properties — for
|
|
5
|
+
local files, arbitrary URLs, and out-of-the-box (OOTB) connector
|
|
6
|
+
templates resolved by id.
|
|
7
|
+
|
|
8
|
+
## Vendor bundle for `bpmn-js-element-templates`
|
|
9
|
+
|
|
10
|
+
`apply` runs the same `Modeler` + `CloudElementTemplatesCoreModule` +
|
|
11
|
+
`ZeebeModdleExtension` stack as the Web/Desktop Modeler. Those upstream
|
|
12
|
+
libraries publish ESM with extensionless internal imports
|
|
13
|
+
(`import './foo'`), which Node refuses to resolve without a bundler.
|
|
14
|
+
|
|
15
|
+
Workaround: `default-plugins/element-template/vendor-src/bundle-entry.js`
|
|
16
|
+
re-exports the three modules; `npm run build:vendor` esbuilds it into
|
|
17
|
+
`dist/vendor/bpmn-element-templates.cjs`. The plugin loads it via
|
|
18
|
+
`createRequire(import.meta.url)`.
|
|
19
|
+
|
|
20
|
+
`resolveVendorBundle()` checks dev (`../../dist/vendor/...`) and prod
|
|
21
|
+
(`../../vendor/...`) paths because `dist/default-plugins/...` is the
|
|
22
|
+
shipped layout but during development we run directly from
|
|
23
|
+
`default-plugins/...`.
|
|
24
|
+
|
|
25
|
+
## OOTB template integration
|
|
26
|
+
|
|
27
|
+
Three sources publish the OOTB connector templates:
|
|
28
|
+
|
|
29
|
+
| | Source-of-truth | Inlines templates? | Has all versions? | Used by |
|
|
30
|
+
|---|---|---|---|---|
|
|
31
|
+
| `marketplace.cloud.camunda.io/api/v1/ootb-connectors` | mirrors GH | no, URL refs | yes | Desktop Modeler |
|
|
32
|
+
| `github.com/camunda/connectors/connector-templates.json` | yes | no, URL refs | yes | (the marketplace) |
|
|
33
|
+
| `@camunda/connectors-element-templates` (npm) | derived | yes (~9MB) | yes, may lag | (Web Modeler skill) |
|
|
34
|
+
|
|
35
|
+
We chose the **marketplace endpoint** for parity with Desktop Modeler:
|
|
36
|
+
|
|
37
|
+
- Desktop Modeler is released and deployed widely; the endpoint contract
|
|
38
|
+
is effectively stable.
|
|
39
|
+
- The endpoint already proxies the GH source-of-truth; using it means
|
|
40
|
+
we benefit from any future server-side filtering/versioning the
|
|
41
|
+
marketplace adds.
|
|
42
|
+
- npm package was rejected: confirmed lag against the GH source and
|
|
43
|
+
some entries are missing `version`/`engines` (pre-versioned legacy
|
|
44
|
+
templates).
|
|
45
|
+
- GH directly was rejected because the marketplace gives us the same
|
|
46
|
+
content with one less reason to drift from Modeler's behavior.
|
|
47
|
+
|
|
48
|
+
The endpoint is overridable via `C8CTL_OOTB_ELEMENT_TEMPLATES_URL`
|
|
49
|
+
(useful for testing).
|
|
50
|
+
|
|
51
|
+
## Cache strategy
|
|
52
|
+
|
|
53
|
+
We mirror Desktop Modeler's approach
|
|
54
|
+
(`camunda-modeler/app/lib/template-updater/`):
|
|
55
|
+
|
|
56
|
+
- Cache lives in `<userDataDir>/element-templates/`:
|
|
57
|
+
- `templates.json` — flat array of all template objects (matches
|
|
58
|
+
Modeler's `.camunda-connector-templates.json` shape).
|
|
59
|
+
- `fetched-at` — epoch ms of last index sync.
|
|
60
|
+
- Each cached template gets `metadata.upstreamRef = <ref-url>` injected.
|
|
61
|
+
Since each `ref` is a commit-pinned `raw.githubusercontent.com` URL,
|
|
62
|
+
"upstreamRef unchanged" ⇒ "content unchanged" ⇒ no re-fetch needed.
|
|
63
|
+
Subsequent syncs only fetch refs that aren't already in the cache.
|
|
64
|
+
- Per-template fetch failures are logged + counted, never abort the run.
|
|
65
|
+
|
|
66
|
+
### Lifecycle
|
|
67
|
+
|
|
68
|
+
- **First time the index is needed** (search, sync, or
|
|
69
|
+
`apply`/`get-properties`/`info` with an `<id>` arg): bootstrap
|
|
70
|
+
auto-runs — full fetch, ~459 templates, visible per-template
|
|
71
|
+
progress. `get` deliberately does NOT bootstrap (its progress
|
|
72
|
+
logs would corrupt `get <id> > template.json` redirects).
|
|
73
|
+
- **Local file or URL paths** for `apply`/`get-properties`/`info`:
|
|
74
|
+
never trigger bootstrap. The plugin classifies the template arg
|
|
75
|
+
before touching the cache.
|
|
76
|
+
- **Stale cache** (>7 days since `fetched-at`): warn-only, suggesting
|
|
77
|
+
`c8ctl element-template sync`. We don't auto-refresh — surprise
|
|
78
|
+
network activity inside `apply` is undesirable and the index is
|
|
79
|
+
small enough that manual sync is cheap.
|
|
80
|
+
- **`sync`** always re-fetches the index but skips already-cached
|
|
81
|
+
refs. **`sync --prune`** drops cached entries no longer in the
|
|
82
|
+
fresh index (opt-in: a user may keep a legacy version intentionally).
|
|
83
|
+
- **First-run + offline**: hard-fail with a clear message. No bundled
|
|
84
|
+
fallback.
|
|
85
|
+
|
|
86
|
+
### Why not lazy per-template fetch on apply?
|
|
87
|
+
|
|
88
|
+
Earlier draft considered fetching only the requested `(id, version)`
|
|
89
|
+
on demand. Rejected because **search needs the template names**, which
|
|
90
|
+
live inside the template files (the index has only `id`/`version`/`ref`).
|
|
91
|
+
Eager bulk fetch makes search instant; the ~14 MB / ~30 s first-run
|
|
92
|
+
cost is acceptable, and incremental syncs are cheap.
|
|
93
|
+
|
|
94
|
+
## Version resolution
|
|
95
|
+
|
|
96
|
+
`apply` and `get-properties` accept three template-arg shapes:
|
|
97
|
+
|
|
98
|
+
| Shape | Detection | Resolution |
|
|
99
|
+
|---|---|---|
|
|
100
|
+
| `https://...` | starts with `http(s)://` | fetched directly, no cache |
|
|
101
|
+
| local path | contains `/`/`\`, starts with `.`, or ends with `.json` | read from disk |
|
|
102
|
+
| `<id>` or `<id>@<version>` | otherwise | resolved against cache |
|
|
103
|
+
|
|
104
|
+
For `<id>` (no `@<version>`):
|
|
105
|
+
|
|
106
|
+
- `apply` parses the BPMN file's `modeler:executionPlatformVersion`
|
|
107
|
+
attribute via bpmn-moddle (the same moddle instance used for the main
|
|
108
|
+
parse), then picks the highest cached version where
|
|
109
|
+
`semver.satisfies(coerce(executionPlatformVersion), engines.camunda)`
|
|
110
|
+
is true. Templates without `engines.camunda` are treated as
|
|
111
|
+
compatible (legacy fallback).
|
|
112
|
+
- `get-properties` has no BPMN context, so it picks the latest version
|
|
113
|
+
and warns the user to pin with `id@<n>` if they want a specific one
|
|
114
|
+
(same annotation as `info`).
|
|
115
|
+
|
|
116
|
+
Errors include the available versions to make the next step obvious:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
Failed to element-template apply: Element template 'io.camunda.connectors.aws.s3.v1' has no version 99. Available: 1, 2.
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Search
|
|
123
|
+
|
|
124
|
+
Substring case-insensitive match on `name`, `description`, `id`, and `keywords`
|
|
125
|
+
(matches Modeler's discovery path, plus `id` for CLI users who already know roughly
|
|
126
|
+
what they want). Deprecated versions are filtered out before the per-id
|
|
127
|
+
latest-version reduction, so the latest non-deprecated version of a connector
|
|
128
|
+
surfaces even when its newest version is deprecated. Output is a flat sequence
|
|
129
|
+
of template cards (no grouping by category).
|
|
130
|
+
|
|
131
|
+
## Plugin dependencies
|
|
132
|
+
|
|
133
|
+
`semver` is a root dep (added in this work) imported directly. Walking up from the plugin
|
|
134
|
+
file finds the root `node_modules`. Plugin-local deps would also work
|
|
135
|
+
but the pattern matches how `bpmn-moddle`/`bpmnlint` are consumed
|
|
136
|
+
across plugins.
|
|
137
|
+
|
|
138
|
+
## Plugin runtime extension
|
|
139
|
+
|
|
140
|
+
Plugins previously had to duplicate the cross-platform user-data-dir
|
|
141
|
+
logic from `src/config.ts`. We added `getUserDataDir()` to
|
|
142
|
+
`C8ctlPluginRuntime` and wired it through `C8ctlDeps.init()` so the
|
|
143
|
+
plugin can ask the runtime for the path (and pick up the
|
|
144
|
+
`C8CTL_DATA_DIR` override) without re-implementing the platform
|
|
145
|
+
branches.
|