@revenexx/studio-integrations 1.2.0 → 1.4.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.
Files changed (82) hide show
  1. package/CHANGELOG.md +581 -0
  2. package/dist/module.json +1 -1
  3. package/dist/runtime/components/Integrations/CanvasShortcutsDialog.d.vue.ts +9 -0
  4. package/dist/runtime/components/Integrations/CanvasShortcutsDialog.vue +53 -0
  5. package/dist/runtime/components/Integrations/CanvasShortcutsDialog.vue.d.ts +9 -0
  6. package/dist/runtime/components/Integrations/EditorTip.vue +2 -15
  7. package/dist/runtime/components/Integrations/NodeConfigDynamicSchema.vue +10 -2
  8. package/dist/runtime/components/Integrations/NodeConfigField.d.vue.ts +15 -1
  9. package/dist/runtime/components/Integrations/NodeConfigField.vue +158 -49
  10. package/dist/runtime/components/Integrations/NodeConfigField.vue.d.ts +15 -1
  11. package/dist/runtime/components/Integrations/NodeInspector.d.vue.ts +5 -1
  12. package/dist/runtime/components/Integrations/NodeInspector.vue +136 -81
  13. package/dist/runtime/components/Integrations/NodeInspector.vue.d.ts +5 -1
  14. package/dist/runtime/components/Integrations/NodeVersionMoveDialog.d.vue.ts +21 -0
  15. package/dist/runtime/components/Integrations/NodeVersionMoveDialog.vue +133 -0
  16. package/dist/runtime/components/Integrations/NodeVersionMoveDialog.vue.d.ts +21 -0
  17. package/dist/runtime/components/Integrations/RunDetailPanel.vue +80 -33
  18. package/dist/runtime/components/Integrations/StateNamespaceCreateDialog.d.vue.ts +16 -0
  19. package/dist/runtime/components/Integrations/StateNamespaceCreateDialog.vue +111 -0
  20. package/dist/runtime/components/Integrations/StateNamespaceCreateDialog.vue.d.ts +16 -0
  21. package/dist/runtime/components/Integrations/TemplateCard.d.vue.ts +0 -4
  22. package/dist/runtime/components/Integrations/TemplateCard.vue +3 -6
  23. package/dist/runtime/components/Integrations/TemplateCard.vue.d.ts +0 -4
  24. package/dist/runtime/components/Integrations/TemplateInstallStep.d.vue.ts +25 -0
  25. package/dist/runtime/components/Integrations/TemplateInstallStep.vue +198 -0
  26. package/dist/runtime/components/Integrations/TemplateInstallStep.vue.d.ts +25 -0
  27. package/dist/runtime/components/Integrations/WorkflowContextMenu.d.vue.ts +2 -2
  28. package/dist/runtime/components/Integrations/WorkflowContextMenu.vue +22 -40
  29. package/dist/runtime/components/Integrations/WorkflowContextMenu.vue.d.ts +2 -2
  30. package/dist/runtime/components/Integrations/WorkflowCreateDialog.vue +94 -65
  31. package/dist/runtime/components/Integrations/WorkflowEditor.d.vue.ts +36 -2
  32. package/dist/runtime/components/Integrations/WorkflowEditor.vue +200 -54
  33. package/dist/runtime/components/Integrations/WorkflowEditor.vue.d.ts +36 -2
  34. package/dist/runtime/components/Integrations/WorkflowRunReplayPanel.d.vue.ts +6 -2
  35. package/dist/runtime/components/Integrations/WorkflowRunReplayPanel.vue +4 -106
  36. package/dist/runtime/components/Integrations/WorkflowRunReplayPanel.vue.d.ts +6 -2
  37. package/dist/runtime/components/Integrations/WorkflowStateNamespacesDialog.d.vue.ts +13 -0
  38. package/dist/runtime/components/Integrations/WorkflowStateNamespacesDialog.vue +216 -0
  39. package/dist/runtime/components/Integrations/WorkflowStateNamespacesDialog.vue.d.ts +13 -0
  40. package/dist/runtime/components/Integrations/WorkflowsTable.vue +22 -11
  41. package/dist/runtime/composables/useCanvasShortcuts.d.ts +34 -0
  42. package/dist/runtime/composables/useCanvasShortcuts.js +11 -8
  43. package/dist/runtime/composables/useCredentialTypes.js +3 -9
  44. package/dist/runtime/composables/useIntegrationsCredentials.js +6 -14
  45. package/dist/runtime/composables/useIntegrationsNodes.js +2 -2
  46. package/dist/runtime/composables/useIntegrationsRuns.js +8 -13
  47. package/dist/runtime/composables/useIntegrationsSecrets.js +5 -5
  48. package/dist/runtime/composables/useIntegrationsTemplates.js +10 -8
  49. package/dist/runtime/composables/useIntegrationsTriggers.js +1 -4
  50. package/dist/runtime/composables/useIntegrationsWorkflows.js +11 -7
  51. package/dist/runtime/data/canvasShortcuts.d.ts +208 -0
  52. package/dist/runtime/data/canvasShortcuts.js +68 -0
  53. package/dist/runtime/data/integrationNodeCatalog.d.ts +25 -0
  54. package/dist/runtime/data/integrationNodeCatalog.js +8 -0
  55. package/dist/runtime/data/nodeVersionMove.d.ts +72 -0
  56. package/dist/runtime/data/nodeVersionMove.js +65 -0
  57. package/dist/runtime/i18n/messages/de.json +83 -20
  58. package/dist/runtime/i18n/messages/en.json +83 -20
  59. package/dist/runtime/pages/integrations/templates/[slug].vue +22 -132
  60. package/dist/runtime/pages/integrations/workflows/[id].vue +158 -53
  61. package/dist/runtime/pages/integrations/workflows/index.vue +23 -4
  62. package/dist/runtime/types/integrations.d.ts +44 -1
  63. package/dist/runtime/utils/apiEnvelope.d.ts +27 -0
  64. package/dist/runtime/utils/apiEnvelope.js +20 -0
  65. package/dist/runtime/utils/buildSettle.d.ts +68 -0
  66. package/dist/runtime/utils/buildSettle.js +29 -0
  67. package/dist/runtime/utils/configDefaults.d.ts +18 -0
  68. package/dist/runtime/utils/configDefaults.js +7 -0
  69. package/dist/runtime/utils/errorPathAdvice.d.ts +60 -0
  70. package/dist/runtime/utils/errorPathAdvice.js +19 -0
  71. package/dist/runtime/utils/notify.d.ts +2 -2
  72. package/dist/runtime/utils/runEnvelope.d.ts +12 -0
  73. package/dist/runtime/utils/runEnvelope.js +2 -1
  74. package/dist/runtime/utils/selectOptions.d.ts +48 -0
  75. package/dist/runtime/utils/selectOptions.js +19 -0
  76. package/dist/runtime/utils/settingCondition.d.ts +48 -0
  77. package/dist/runtime/utils/settingCondition.js +84 -0
  78. package/dist/runtime/utils/shortcutLabel.d.ts +40 -0
  79. package/dist/runtime/utils/shortcutLabel.js +48 -0
  80. package/dist/runtime/utils/stateNamespaceName.d.ts +23 -0
  81. package/dist/runtime/utils/stateNamespaceName.js +8 -0
  82. package/package.json +1 -1
@@ -0,0 +1,40 @@
1
+ /**
2
+ * How a keyboard shortcut is written for a reader, and which physical modifier
3
+ * `mod` stands for.
4
+ *
5
+ * ONE COPY, deliberately. This table existed twice — in the canvas context
6
+ * menu and in the control pane's tooltip — and the platform test existed a
7
+ * third time inside the shortcuts composable. The two tables had already
8
+ * drifted: the tooltip's knew nothing about `backspace`, `tab` or `space`, so a
9
+ * token it was never handed would have rendered as `BACKSPACE`. A shortcut is
10
+ * about to be shown in a third place (the overview the canvas opens), which is
11
+ * two copies too many.
12
+ *
13
+ * `IS_MAC` reads `navigator.platform`, which is deprecated and reports
14
+ * `MacIntel` for an iPad. It is kept because the replacement
15
+ * (`navigator.userAgentData.platform`) is not in every browser we serve, and
16
+ * because being wrong here costs a wrong glyph rather than a wrong key: the
17
+ * MATCHING side reads the same flag, so a machine we misread is a machine where
18
+ * ⌘ and Ctrl swap together and nothing goes silent.
19
+ */
20
+ export declare const IS_MAC: boolean;
21
+ /**
22
+ * A shortcut token string as a reader sees it: `'mod+enter'` → `⌘↵` on a mac,
23
+ * `Ctrl+↵` elsewhere.
24
+ *
25
+ * Alternatives are not rendered — `'f2|space'` is two ways to press one thing,
26
+ * and a caller that wants both writes both. Pass `isMac` to render for the other
27
+ * platform, which is what the unit suite does.
28
+ */
29
+ /**
30
+ * A token string split into its tokens, where one of the tokens may be the
31
+ * separator itself.
32
+ *
33
+ * `'+'.split('+')` is two empty strings, and `'mod++'` is `['mod', '', '']` — so
34
+ * a pair of empties is a literal `+`. Without this the character disappeared:
35
+ * on a mac, where caps are joined with nothing, `+` rendered as an empty key cap,
36
+ * and elsewhere the join only put it back by accident. Exported so the matcher
37
+ * reads a binding the same way this writes it.
38
+ */
39
+ export declare function shortcutTokens(tokens: string): string[];
40
+ export declare function formatShortcut(tokens: string, isMac?: boolean): string;
@@ -0,0 +1,48 @@
1
+ export const IS_MAC = typeof navigator !== "undefined" && /Mac|iPhone|iPad/.test(navigator.platform ?? "");
2
+ const MAC_TOKENS = {
3
+ mod: "\u2318",
4
+ shift: "\u21E7",
5
+ alt: "\u2325",
6
+ ctrl: "\u2303"
7
+ };
8
+ const OTHER_TOKENS = {
9
+ mod: "Ctrl",
10
+ shift: "Shift",
11
+ alt: "Alt",
12
+ ctrl: "Ctrl"
13
+ };
14
+ const KEY_TOKENS = {
15
+ enter: "\u21B5",
16
+ backspace: "\u232B",
17
+ delete: "Del",
18
+ escape: "Esc",
19
+ tab: "Tab",
20
+ space: "Space",
21
+ arrowup: "\u2191",
22
+ arrowdown: "\u2193",
23
+ arrowleft: "\u2190",
24
+ arrowright: "\u2192"
25
+ };
26
+ export function shortcutTokens(tokens) {
27
+ const parts = tokens.split("+");
28
+ const out = [];
29
+ for (let i = 0; i < parts.length; i++) {
30
+ if (parts[i] === "" && parts[i + 1] === "") {
31
+ out.push("+");
32
+ i++;
33
+ continue;
34
+ }
35
+ if (parts[i] === "") continue;
36
+ out.push(parts[i]);
37
+ }
38
+ return out;
39
+ }
40
+ export function formatShortcut(tokens, isMac = IS_MAC) {
41
+ const mods = isMac ? MAC_TOKENS : OTHER_TOKENS;
42
+ const out = [];
43
+ for (const raw of shortcutTokens(tokens)) {
44
+ const t = raw.toLowerCase();
45
+ out.push(mods[t] ?? KEY_TOKENS[t] ?? (t.length === 1 ? t.toUpperCase() : t.charAt(0).toUpperCase() + t.slice(1)));
46
+ }
47
+ return isMac ? out.join("") : out.join("+");
48
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The engine's grammar for a state namespace (PO-374), mirrored in the browser
3
+ * so a name it would refuse is rejected while the author types rather than as a
4
+ * 422 about `blob.state.0` on save.
5
+ *
6
+ * One copy on purpose. Two surfaces declare namespaces — the workflow's State
7
+ * dialog and the picker inside a node's state setting — and a grammar spelled
8
+ * once per surface is one that widens or narrows in a single place, leaving the
9
+ * other accepting names the engine has stopped taking.
10
+ */
11
+ export declare const STATE_NAMESPACE_PATTERN: RegExp;
12
+ /**
13
+ * Which message a typed namespace name earns, as a translation key — or `null`
14
+ * when there is nothing to say. Both callers show the same sentence for the same
15
+ * mistake, which is the other half of holding the grammar in one place.
16
+ *
17
+ * An empty field returns `null`: nobody has answered yet, and a rejection shown
18
+ * before the first keystroke reads as a rejection of the dialog.
19
+ *
20
+ * @param name what the author has typed, trimmed here rather than by the caller
21
+ * @param taken the names the workflow already declares
22
+ */
23
+ export declare function stateNamespaceErrorKey(name: string, taken: string[]): string | null;
@@ -0,0 +1,8 @@
1
+ export const STATE_NAMESPACE_PATTERN = /^[a-z][a-z0-9]*([._-][a-z0-9]+)*$/;
2
+ export function stateNamespaceErrorKey(name, taken) {
3
+ const value = name.trim();
4
+ if (!value) return null;
5
+ if (!STATE_NAMESPACE_PATTERN.test(value)) return "integration.workflows.state.error.invalidName";
6
+ if (taken.includes(value)) return "integration.workflows.state.error.nameExists";
7
+ return null;
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revenexx/studio-integrations",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "type": "module",
5
5
  "description": "Integration Studio (core: workflows, node editor, runs, schedules, credentials, secrets, audit) as a standalone, publishable Nuxt module.",
6
6
  "repository": {