@hostwebhook/node-types 1.10.14 → 1.10.16

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.
@@ -18,7 +18,7 @@ exports.isNodeType = isNodeType;
18
18
  const PROCESSING_OUTPUTS = [
19
19
  'endpoint', 'router', 'filter', 'transform', 'cache', 'code', 'rateLimiter',
20
20
  'aggregator', 'conditional', 'delay', 'schemaValidator', 'split',
21
- 'emailAction', 'httpAction', 'mongoAction', 'notificationAction', 'sheetsAction', 'loop',
21
+ 'emailAction', 'httpAction', 'mongoAction', 'notificationAction', 'sheetsAction', 'calendarAction', 'loop',
22
22
  ];
23
23
  /** Standard processing input sources */
24
24
  const STANDARD_INPUTS = [
@@ -26,7 +26,7 @@ const STANDARD_INPUTS = [
26
26
  'cache', 'code', 'rateLimiter', 'aggregator', 'conditional', 'delay', 'schemaValidator', 'split', 'loop',
27
27
  ];
28
28
  /** Action nodes that can chain (non-terminal) */
29
- const CHAINABLE_ACTIONS = ['httpAction', 'mongoAction', 'sheetsAction'];
29
+ const CHAINABLE_ACTIONS = ['httpAction', 'mongoAction', 'sheetsAction', 'calendarAction'];
30
30
  /** Full input list for action nodes (standard + chainable actions) */
31
31
  const ACTION_INPUTS = [...STANDARD_INPUTS, ...CHAINABLE_ACTIONS];
32
32
  exports.NODE_CONNECTIONS = {
@@ -36,7 +36,7 @@ exports.NODE_CONNECTIONS = {
36
36
  // ── Pipeline processing nodes ──
37
37
  filter: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
38
38
  transform: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
39
- schemaValidator: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
39
+ schemaValidator: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS, special: { hasRejectionOutputNodes: true } },
40
40
  conditional: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS, special: { hasBranches: true } },
41
41
  delay: { acceptsInputFrom: ['endpoint', 'filter', 'transform', 'cache', 'rateLimiter', 'aggregator', 'conditional', 'delay', 'schemaValidator'], canOutputTo: PROCESSING_OUTPUTS },
42
42
  rateLimiter: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
@@ -47,16 +47,17 @@ exports.NODE_CONNECTIONS = {
47
47
  // ── Flow control nodes ──
48
48
  split: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
49
49
  merge: { acceptsInputFrom: ['endpoint', 'filter', 'transform', 'cache', 'rateLimiter', 'aggregator', 'conditional', 'delay', 'schemaValidator', 'split'], canOutputTo: PROCESSING_OUTPUTS },
50
- approval: { acceptsInputFrom: ['endpoint', 'filter', 'transform'], canOutputTo: ['endpoint', 'filter', 'transform', 'emailAction', 'httpAction', 'mongoAction', 'notificationAction', 'sheetsAction'], special: { hasRejectionOutputNodes: true } },
50
+ approval: { acceptsInputFrom: ['endpoint', 'filter', 'transform'], canOutputTo: ['endpoint', 'filter', 'transform', 'emailAction', 'httpAction', 'mongoAction', 'notificationAction', 'sheetsAction', 'calendarAction'], special: { hasRejectionOutputNodes: true } },
51
51
  loop: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS, special: { hasLoopBack: true } },
52
52
  // ── Routing nodes ──
53
- router: { acceptsInputFrom: ['endpoint', 'scheduledWebhook', 'filter', 'transform'], canOutputTo: ['endpoint', 'notificationAction', 'filter', 'transform', 'emailAction', 'httpAction', 'mongoAction', 'sheetsAction'] },
53
+ router: { acceptsInputFrom: ['endpoint', 'scheduledWebhook', 'filter', 'transform'], canOutputTo: ['endpoint', 'notificationAction', 'filter', 'transform', 'emailAction', 'httpAction', 'mongoAction', 'sheetsAction', 'calendarAction'] },
54
54
  // ── Action nodes ──
55
55
  emailAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: [], special: { isTerminal: true } },
56
56
  httpAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
57
57
  mongoAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
58
58
  notificationAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: [], special: { isTerminal: true } },
59
59
  sheetsAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
60
+ calendarAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
60
61
  // ── Monitoring ──
61
62
  alert: { acceptsInputFrom: ['endpoint', 'scheduledWebhook'], canOutputTo: [], special: { isTerminal: true } },
62
63
  // ── Annotations (visual only, no pipeline processing) ──
package/dist/dispatch.js CHANGED
@@ -11,7 +11,7 @@ exports.NODE_DISPATCH = {
11
11
  // ── Pipeline processing (generic dispatch) ──
12
12
  filter: { service: 'filterNodesService', collection: 'filternodes', hasFilters: true, outputFields: ['outputNodes'], customDispatch: false },
13
13
  transform: { service: 'transformNodesService', collection: 'transformnodes', hasFilters: false, outputFields: ['outputNodes'], customDispatch: false },
14
- schemaValidator: { service: 'schemaValidatorsService', collection: 'schemavalidators', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true },
14
+ schemaValidator: { service: 'schemaValidatorsService', collection: 'schemavalidators', hasFilters: false, outputFields: ['outputNodes', 'invalidOutputNodes'], customDispatch: true },
15
15
  delay: { service: 'delayNodesService', collection: 'delaynodes', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true },
16
16
  rateLimiter: { service: 'rateLimiterNodesService', collection: 'ratelimiternodes', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true },
17
17
  aggregator: { service: 'aggregatorNodesService', collection: 'aggregatornodes', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true },
@@ -32,6 +32,7 @@ exports.NODE_DISPATCH = {
32
32
  mongoAction: { service: 'mongoActionsService', collection: 'mongoactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true },
33
33
  notificationAction: { service: 'notificationActionsService', collection: 'notificationactions', hasFilters: true, outputFields: [], customDispatch: true },
34
34
  sheetsAction: { service: 'sheetsActionsService', collection: 'sheetsactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true },
35
+ calendarAction: { service: 'calendarActionsService', collection: 'calendaractions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true },
35
36
  // ── Source + monitoring ──
36
37
  alert: { service: 'alertService', collection: 'alerts', hasFilters: false, outputFields: [], customDispatch: true },
37
38
  endpoint: { service: 'endpointsService', collection: 'endpoints', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true },
package/dist/registry.js CHANGED
@@ -146,6 +146,12 @@ exports.NODE_REGISTRY = {
146
146
  stateKey: 'sheetsActions', allStateKey: 'allSheetsActions',
147
147
  color: '#34d399', testable: true,
148
148
  },
149
+ calendarAction: {
150
+ type: 'calendarAction', prefix: 'cal', label: 'Google Calendar Action',
151
+ group: 'Actions', detailPath: '/dashboard/calendar-actions', apiPath: '/calendar-actions',
152
+ stateKey: 'calendarActions', allStateKey: 'allCalendarActions',
153
+ color: '#60a5fa', testable: true,
154
+ },
149
155
  // ── Monitoring ──
150
156
  alert: {
151
157
  type: 'alert', prefix: 'al', label: 'Alert',
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** All valid node type identifiers */
2
- export type NodeType = 'endpoint' | 'scheduledWebhook' | 'filter' | 'transform' | 'schemaValidator' | 'conditional' | 'delay' | 'rateLimiter' | 'aggregator' | 'cache' | 'code' | 'ai' | 'merge' | 'approval' | 'split' | 'loop' | 'router' | 'emailAction' | 'httpAction' | 'mongoAction' | 'notificationAction' | 'sheetsAction' | 'alert' | 'stickyNote';
2
+ export type NodeType = 'endpoint' | 'scheduledWebhook' | 'filter' | 'transform' | 'schemaValidator' | 'conditional' | 'delay' | 'rateLimiter' | 'aggregator' | 'cache' | 'code' | 'ai' | 'merge' | 'approval' | 'split' | 'loop' | 'router' | 'emailAction' | 'httpAction' | 'mongoAction' | 'notificationAction' | 'sheetsAction' | 'calendarAction' | 'alert' | 'stickyNote';
3
3
  /** Node role in the pipeline */
4
4
  export type NodeRole = 'source' | 'processing' | 'flowControl' | 'routing' | 'action' | 'monitoring';
5
5
  /** Handle positions on the canvas node */
package/dist/ui.js CHANGED
@@ -13,7 +13,7 @@ exports.NODE_UI = {
13
13
  // ── Pipeline processing nodes ──
14
14
  filter: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
15
15
  transform: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
16
- schemaValidator: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
16
+ schemaValidator: { fromNodes: true, toNodes: true, outputHandles: ['right'], special: { loopBackAllowed: true, connectModal: 'output-group', outputGroups: { fixedGroups: [{ name: 'Valid', field: 'outputNodes' }, { name: 'Invalid', field: 'invalidOutputNodes' }], label: 'path' } } },
17
17
  conditional: { fromNodes: true, toNodes: true, outputHandles: ['right'], special: { loopBackAllowed: true, connectModal: 'output-group', outputGroups: { field: 'branches', nameField: 'name', summaryField: 'filterMode', label: 'branch', elseField: 'elseOutputNodes' } } },
18
18
  delay: { fromNodes: true, toNodes: true },
19
19
  rateLimiter: { fromNodes: true, toNodes: true },
@@ -34,6 +34,7 @@ exports.NODE_UI = {
34
34
  mongoAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
35
35
  notificationAction: { fromNodes: true, toNodes: false, inputHandles: ['left', 'top'], dotHandles: { input: ['left-in', 'top-in'] }, special: { isTerminal: true, routerTargetLabel: 'notification' } },
36
36
  sheetsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
37
+ calendarAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
37
38
  // ── Monitoring ──
38
39
  alert: { fromNodes: true, toNodes: false, inputHandles: ['bottom'], special: { isTerminal: true } },
39
40
  // ── Annotations ──
@@ -54,6 +55,7 @@ exports.PREFIX_TO_TYPE = [
54
55
  { prefix: 'sv-', type: 'schemaValidator', canvasType: 'schema-validator' },
55
56
  { prefix: 'delay-', type: 'delay', canvasType: 'delay-node' },
56
57
  { prefix: 'sheet-', type: 'sheetsAction', canvasType: 'sheets-action' },
58
+ { prefix: 'cal-', type: 'calendarAction', canvasType: 'calendarAction' },
57
59
  { prefix: 'appr-', type: 'approval', canvasType: 'approval-node' },
58
60
  { prefix: 'merge-', type: 'merge', canvasType: 'merge' },
59
61
  { prefix: 'cond-', type: 'conditional', canvasType: 'conditional' },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hostwebhook/node-types",
3
- "version": "1.10.14",
3
+ "version": "1.10.16",
4
4
  "description": "Shared node type definitions, connection rules, and dispatch config for HostWebhook",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",