n8n-workflow 2.38.0 → 2.39.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 (71) hide show
  1. package/dist/cjs/build.tsbuildinfo +1 -1
  2. package/dist/cjs/expression-sandboxing.d.ts.map +1 -1
  3. package/dist/cjs/expression-sandboxing.js +52 -0
  4. package/dist/cjs/expression-sandboxing.js.map +1 -1
  5. package/dist/cjs/extensions/array-extensions.d.ts.map +1 -1
  6. package/dist/cjs/extensions/array-extensions.js +42 -19
  7. package/dist/cjs/extensions/array-extensions.js.map +1 -1
  8. package/dist/cjs/extensions/expression-extension.d.ts.map +1 -1
  9. package/dist/cjs/extensions/expression-extension.js +5 -4
  10. package/dist/cjs/extensions/expression-extension.js.map +1 -1
  11. package/dist/cjs/extensions/extended-functions.d.ts.map +1 -1
  12. package/dist/cjs/extensions/extended-functions.js +10 -1
  13. package/dist/cjs/extensions/extended-functions.js.map +1 -1
  14. package/dist/cjs/extensions/object-extensions.d.ts.map +1 -1
  15. package/dist/cjs/extensions/object-extensions.js +11 -6
  16. package/dist/cjs/extensions/object-extensions.js.map +1 -1
  17. package/dist/cjs/index.d.ts +1 -0
  18. package/dist/cjs/index.d.ts.map +1 -1
  19. package/dist/cjs/index.js +1 -0
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/interfaces.d.ts +59 -7
  22. package/dist/cjs/interfaces.d.ts.map +1 -1
  23. package/dist/cjs/interfaces.js.map +1 -1
  24. package/dist/cjs/mcp-helpers.d.ts +74 -4
  25. package/dist/cjs/mcp-helpers.d.ts.map +1 -1
  26. package/dist/cjs/mcp-helpers.js +70 -3
  27. package/dist/cjs/mcp-helpers.js.map +1 -1
  28. package/dist/cjs/nodes-api-version.d.ts +33 -0
  29. package/dist/cjs/nodes-api-version.d.ts.map +1 -0
  30. package/dist/cjs/nodes-api-version.js +29 -0
  31. package/dist/cjs/nodes-api-version.js.map +1 -0
  32. package/dist/cjs/trigger-identity.d.ts +1 -9
  33. package/dist/cjs/trigger-identity.d.ts.map +1 -1
  34. package/dist/cjs/trigger-identity.js +7 -17
  35. package/dist/cjs/trigger-identity.js.map +1 -1
  36. package/dist/esm/expression-sandboxing.d.ts.map +1 -1
  37. package/dist/esm/expression-sandboxing.js +52 -0
  38. package/dist/esm/expression-sandboxing.js.map +1 -1
  39. package/dist/esm/extensions/array-extensions.d.ts.map +1 -1
  40. package/dist/esm/extensions/array-extensions.js +42 -19
  41. package/dist/esm/extensions/array-extensions.js.map +1 -1
  42. package/dist/esm/extensions/expression-extension.d.ts.map +1 -1
  43. package/dist/esm/extensions/expression-extension.js +5 -4
  44. package/dist/esm/extensions/expression-extension.js.map +1 -1
  45. package/dist/esm/extensions/extended-functions.d.ts.map +1 -1
  46. package/dist/esm/extensions/extended-functions.js +10 -1
  47. package/dist/esm/extensions/extended-functions.js.map +1 -1
  48. package/dist/esm/extensions/object-extensions.d.ts.map +1 -1
  49. package/dist/esm/extensions/object-extensions.js +11 -6
  50. package/dist/esm/extensions/object-extensions.js.map +1 -1
  51. package/dist/esm/index.d.ts +1 -0
  52. package/dist/esm/index.d.ts.map +1 -1
  53. package/dist/esm/index.js +1 -0
  54. package/dist/esm/index.js.map +1 -1
  55. package/dist/esm/interfaces.d.ts +59 -7
  56. package/dist/esm/interfaces.d.ts.map +1 -1
  57. package/dist/esm/interfaces.js.map +1 -1
  58. package/dist/esm/mcp-helpers.d.ts +74 -4
  59. package/dist/esm/mcp-helpers.d.ts.map +1 -1
  60. package/dist/esm/mcp-helpers.js +67 -3
  61. package/dist/esm/mcp-helpers.js.map +1 -1
  62. package/dist/esm/nodes-api-version.d.ts +33 -0
  63. package/dist/esm/nodes-api-version.d.ts.map +1 -0
  64. package/dist/esm/nodes-api-version.js +25 -0
  65. package/dist/esm/nodes-api-version.js.map +1 -0
  66. package/dist/esm/trigger-identity.d.ts +1 -9
  67. package/dist/esm/trigger-identity.d.ts.map +1 -1
  68. package/dist/esm/trigger-identity.js +7 -17
  69. package/dist/esm/trigger-identity.js.map +1 -1
  70. package/dist/esm/typecheck.tsbuildinfo +1 -1
  71. package/package.json +14 -13
@@ -1,8 +1,72 @@
1
+ import { isRecord } from '@n8n/utils/is-record';
2
+ const OAUTH2_REFRESH_BUFFER_MS = 2 * 60 * 1000;
3
+ const OAUTH2_REFRESH_BUFFER_RATIO = 0.1;
1
4
  /**
2
- * Returns `true` for `mcpOAuth2Api` and any credential type ending in
3
- * `McpOAuth2Api` (e.g. `notionMcpOAuth2Api`, `githubMcpOAuth2Api`).
5
+ * The endpoint as the registry configured it: a literal URL, or the unresolved
6
+ * template for a templated row. Only for describing the row (node defaults,
7
+ * search results). Anything that opens a connection needs the resolved URL from
8
+ * `prepareMcpRegistryConnection`.
9
+ */
10
+ export function getConfiguredEndpointUrl(connection) {
11
+ return connection.isTemplated ? connection.urlTemplate : connection.endpointUrl;
12
+ }
13
+ /**
14
+ * Returns `true` for MCP-specific and native OAuth2 credential naming conventions.
4
15
  */
5
16
  export function isMcpOAuth2Authentication(authentication) {
6
- return authentication === 'mcpOAuth2Api' || authentication.endsWith('McpOAuth2Api');
17
+ return (authentication === 'oAuth2Api' ||
18
+ authentication.endsWith('OAuth2Api') ||
19
+ authentication.endsWith('OAuth2'));
20
+ }
21
+ /** Return true when an MCP OAuth2 token is close enough to expiry to refresh it. */
22
+ export function shouldRefreshMcpOAuth2Token(tokenData, grantType) {
23
+ if (!isRecord(tokenData))
24
+ return false;
25
+ if (grantType !== 'clientCredentials' && !(tokenData.refresh_token ?? tokenData.refreshToken)) {
26
+ return false;
27
+ }
28
+ const expiresAt = Number(tokenData.n8n_expires_at);
29
+ if (!Number.isFinite(expiresAt))
30
+ return false;
31
+ const expiresInMs = Number(tokenData.expires_in) * 1000;
32
+ const refreshBufferMs = Number.isFinite(expiresInMs) && expiresInMs > 0
33
+ ? Math.min(OAUTH2_REFRESH_BUFFER_MS, expiresInMs * OAUTH2_REFRESH_BUFFER_RATIO)
34
+ : OAUTH2_REFRESH_BUFFER_MS;
35
+ return Date.now() + refreshBufferMs >= expiresAt;
36
+ }
37
+ export function getMcpAuthHeaders(authentication, credentialData) {
38
+ if (isMcpOAuth2Authentication(authentication)) {
39
+ const tokenData = credentialData.oauthTokenData;
40
+ const accessToken = isRecord(tokenData)
41
+ ? (tokenData.access_token ?? tokenData.accessToken)
42
+ : undefined;
43
+ return typeof accessToken === 'string' && accessToken.length > 0
44
+ ? { ['Authorization']: `Bearer ${accessToken}` }
45
+ : {};
46
+ }
47
+ if (authentication === 'bearerAuth') {
48
+ return typeof credentialData.token === 'string' && credentialData.token.length > 0
49
+ ? { ['Authorization']: `Bearer ${credentialData.token}` }
50
+ : {};
51
+ }
52
+ if (authentication === 'headerAuth') {
53
+ return typeof credentialData.name === 'string' &&
54
+ credentialData.name.length > 0 &&
55
+ typeof credentialData.value === 'string'
56
+ ? { [credentialData.name]: credentialData.value }
57
+ : {};
58
+ }
59
+ if (authentication !== 'multipleHeadersAuth')
60
+ return {};
61
+ const headers = credentialData.headers;
62
+ const values = isRecord(headers) ? headers.values : undefined;
63
+ if (!Array.isArray(values))
64
+ return {};
65
+ return Object.fromEntries(values.flatMap((entry) => {
66
+ if (!isRecord(entry))
67
+ return [];
68
+ const { name, value } = entry;
69
+ return typeof name === 'string' && typeof value === 'string' ? [[name, value]] : [];
70
+ }));
7
71
  }
8
72
  //# sourceMappingURL=mcp-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-helpers.js","sourceRoot":"","sources":["../../src/mcp-helpers.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACxC,cAAsB;IAEtB,OAAO,cAAc,KAAK,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACrF,CAAC"}
1
+ {"version":3,"file":"mcp-helpers.js","sourceRoot":"","sources":["../../src/mcp-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { N8N_NODES_API_VERSION } from '@n8n/constants';
2
+ export { N8N_NODES_API_VERSION };
3
+ /** Minimal package.json shape needed to check node API compatibility. */
4
+ export interface NodesApiVersionPackageJson {
5
+ n8n?: {
6
+ /**
7
+ * Node-authoring API level the package requires. Absent in legacy
8
+ * packages, which are treated as requiring level 1.
9
+ */
10
+ n8nNodesApiVersion?: unknown;
11
+ };
12
+ }
13
+ export type NodesApiVersionCheck = {
14
+ compatible: true;
15
+ /** Effective required API level; 1 for packages without metadata. */
16
+ version: number;
17
+ } | {
18
+ compatible: false;
19
+ reason: 'malformed' | 'unsupported';
20
+ /** The declared value, as read from package.json. */
21
+ declared: unknown;
22
+ };
23
+ /**
24
+ * Read a community package's declared node-authoring API level and check it
25
+ * against the level this runtime supports (`required <= N8N_NODES_API_VERSION`).
26
+ *
27
+ * Missing `n8n.n8nNodesApiVersion` means a legacy package and resolves to
28
+ * level 1. Malformed values (non-integer, non-positive, non-number) are
29
+ * reported as incompatible — the runtime cannot distinguish an old package
30
+ * from a corrupt or hostile one if both fall back to legacy.
31
+ */
32
+ export declare function checkNodesApiVersion(pkgJson: NodesApiVersionPackageJson): NodesApiVersionCheck;
33
+ //# sourceMappingURL=nodes-api-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes-api-version.d.ts","sourceRoot":"","sources":["../../src/nodes-api-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,yEAAyE;AACzE,MAAM,WAAW,0BAA0B;IAC1C,GAAG,CAAC,EAAE;QACL;;;WAGG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;CACF;AAED,MAAM,MAAM,oBAAoB,GAC7B;IACA,UAAU,EAAE,IAAI,CAAC;IACjB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;CACf,GACD;IACA,UAAU,EAAE,KAAK,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;IACpC,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACjB,CAAC;AAEL;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,0BAA0B,GAAG,oBAAoB,CAgB9F"}
@@ -0,0 +1,25 @@
1
+ import { N8N_NODES_API_VERSION } from '@n8n/constants';
2
+ export { N8N_NODES_API_VERSION };
3
+ /**
4
+ * Read a community package's declared node-authoring API level and check it
5
+ * against the level this runtime supports (`required <= N8N_NODES_API_VERSION`).
6
+ *
7
+ * Missing `n8n.n8nNodesApiVersion` means a legacy package and resolves to
8
+ * level 1. Malformed values (non-integer, non-positive, non-number) are
9
+ * reported as incompatible — the runtime cannot distinguish an old package
10
+ * from a corrupt or hostile one if both fall back to legacy.
11
+ */
12
+ export function checkNodesApiVersion(pkgJson) {
13
+ const declared = pkgJson?.n8n?.n8nNodesApiVersion;
14
+ if (declared === undefined) {
15
+ return { compatible: true, version: 1 };
16
+ }
17
+ if (typeof declared !== 'number' || !Number.isInteger(declared) || declared < 1) {
18
+ return { compatible: false, reason: 'malformed', declared };
19
+ }
20
+ if (declared <= N8N_NODES_API_VERSION) {
21
+ return { compatible: true, version: declared };
22
+ }
23
+ return { compatible: false, reason: 'unsupported', declared };
24
+ }
25
+ //# sourceMappingURL=nodes-api-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes-api-version.js","sourceRoot":"","sources":["../../src/nodes-api-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,CAAC;AA0BjC;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAmC;IACvE,MAAM,QAAQ,GAAG,OAAO,EAAE,GAAG,EAAE,kBAAkB,CAAC;IAElD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjF,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,QAAQ,IAAI,qBAAqB,EAAE,CAAC;QACvC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AAC/D,CAAC"}
@@ -19,14 +19,6 @@ export interface TriggerIdentityCapabilities {
19
19
  * sync with how the engine establishes identity (`execution-context.ts`,
20
20
  * manual/parent inheritance) and the resolvers' identifiers (e.g. `N8NIdentifier`):
21
21
  * when a new trigger or identity source is added there, reflect it here too.
22
- *
23
- * `isChatOAuth2Enabled` mirrors the `N8N_ENV_FEAT_CHAT_TRIGGER_OAUTH2` opt-in flag: it
24
- * gates the Chat Trigger's hosted-chat `n8nUserAuth` branch, since that configuration
25
- * only establishes identity through the flagged pipeline. Defaults to `false` so a
26
- * caller that forgets to pass it gets the safe (no-identity) answer rather than a false
27
- * positive.
28
22
  */
29
- export declare function classifyTriggerIdentity(nodeType: string, parameters: INodeParameters | undefined, { isChatOAuth2Enabled }?: {
30
- isChatOAuth2Enabled?: boolean;
31
- }): TriggerIdentityCapabilities;
23
+ export declare function classifyTriggerIdentity(nodeType: string, parameters: INodeParameters | undefined): TriggerIdentityCapabilities;
32
24
  //# sourceMappingURL=trigger-identity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-identity.d.ts","sourceRoot":"","sources":["../../src/trigger-identity.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,WAAW,2BAA2B;IAC3C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wBAAwB,EAAE,OAAO,CAAC;CAClC;AAwCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,eAAe,GAAG,SAAS,EACvC,EAAE,mBAA2B,EAAE,GAAE;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GACrE,2BAA2B,CAwC7B"}
1
+ {"version":3,"file":"trigger-identity.d.ts","sourceRoot":"","sources":["../../src/trigger-identity.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,WAAW,2BAA2B;IAC3C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wBAAwB,EAAE,OAAO,CAAC;CAClC;AAgCD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,eAAe,GAAG,SAAS,GACrC,2BAA2B,CAwC7B"}
@@ -13,16 +13,12 @@ function hasContextEstablishmentHook(parameters) {
13
13
  }
14
14
  /**
15
15
  * Whether a Chat Trigger's `n8nUserAuth` establishes the visitor's n8n identity: only in
16
- * hosted-chat mode (embedded/webhook mode has no page to run the OAuth2 handshake on), only
17
- * when public (a non-public trigger never reaches the auth code at all), and only when the
18
- * chat-trigger OAuth2 pipeline is enabled — with it off, `n8nUserAuth` falls back to a plain
19
- * cookie check that authenticates the request but never binds the visitor's identity for
20
- * credential resolution (`GenericFunctions.ts`'s `validateAuth`). Absent `mode` counts as
21
- * `hostedChat`, its default.
16
+ * hosted-chat mode (embedded/webhook mode has no page to run the OAuth2 handshake on) and
17
+ * only when public (a non-public trigger never reaches the auth code at all). Absent
18
+ * `mode` counts as `hostedChat`, its default.
22
19
  */
23
- function isHostedChatUserAuthTrigger(nodeType, parameters, isChatOAuth2Enabled) {
24
- return (isChatOAuth2Enabled &&
25
- nodeType === CHAT_TRIGGER_NODE_TYPE &&
20
+ function isHostedChatUserAuthTrigger(nodeType, parameters) {
21
+ return (nodeType === CHAT_TRIGGER_NODE_TYPE &&
26
22
  parameters?.public === true &&
27
23
  parameters?.authentication === 'n8nUserAuth' &&
28
24
  (parameters?.mode ?? 'hostedChat') === 'hostedChat');
@@ -35,14 +31,8 @@ function isHostedChatUserAuthTrigger(nodeType, parameters, isChatOAuth2Enabled)
35
31
  * sync with how the engine establishes identity (`execution-context.ts`,
36
32
  * manual/parent inheritance) and the resolvers' identifiers (e.g. `N8NIdentifier`):
37
33
  * when a new trigger or identity source is added there, reflect it here too.
38
- *
39
- * `isChatOAuth2Enabled` mirrors the `N8N_ENV_FEAT_CHAT_TRIGGER_OAUTH2` opt-in flag: it
40
- * gates the Chat Trigger's hosted-chat `n8nUserAuth` branch, since that configuration
41
- * only establishes identity through the flagged pipeline. Defaults to `false` so a
42
- * caller that forgets to pass it gets the safe (no-identity) answer rather than a false
43
- * positive.
44
34
  */
45
- export function classifyTriggerIdentity(nodeType, parameters, { isChatOAuth2Enabled = false } = {}) {
35
+ export function classifyTriggerIdentity(nodeType, parameters) {
46
36
  // Sub-workflows inherit identity from the parent; Chat Hub and MCP-over-n8nOAuth2
47
37
  // inject it. All provide both identity families.
48
38
  const isSubWorkflowTrigger = nodeType === EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE;
@@ -56,7 +46,7 @@ export function classifyTriggerIdentity(nodeType, parameters, { isChatOAuth2Enab
56
46
  const isFormTrigger = nodeType === FORM_TRIGGER_NODE_TYPE && parameters?.authentication === 'n8nUserAuth';
57
47
  if (isSubWorkflowTrigger ||
58
48
  isChatHubTrigger ||
59
- isHostedChatUserAuthTrigger(nodeType, parameters, isChatOAuth2Enabled) ||
49
+ isHostedChatUserAuthTrigger(nodeType, parameters) ||
60
50
  isMcpTrigger ||
61
51
  isFormTrigger ||
62
52
  isOAuth2Webhook) {
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-identity.js","sourceRoot":"","sources":["../../src/trigger-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,sBAAsB,EACtB,kCAAkC,EAClC,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,4CAA4C,EAAE,MAAM,yCAAyC,CAAC;AAgBvG,MAAM,WAAW,GAAgC;IAChD,mBAAmB,EAAE,KAAK;IAC1B,wBAAwB,EAAE,KAAK;CAC/B,CAAC;AAEF,sFAAsF;AACtF,SAAS,2BAA2B,CAAC,UAAuC;IAC3E,MAAM,UAAU,GAAG,4CAA4C,CAAC,UAAU,CAAC,CAAC;IAC5E,OAAO,CACN,UAAU,KAAK,IAAI;QACnB,UAAU,CAAC,OAAO;QAClB,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAC1D,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,2BAA2B,CACnC,QAAgB,EAChB,UAAuC,EACvC,mBAA4B;IAE5B,OAAO,CACN,mBAAmB;QACnB,QAAQ,KAAK,sBAAsB;QACnC,UAAU,EAAE,MAAM,KAAK,IAAI;QAC3B,UAAU,EAAE,cAAc,KAAK,aAAa;QAC5C,CAAC,UAAU,EAAE,IAAI,IAAI,YAAY,CAAC,KAAK,YAAY,CACnD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CACtC,QAAgB,EAChB,UAAuC,EACvC,EAAE,mBAAmB,GAAG,KAAK,EAAE,GAAsC,EAAE;IAEvE,kFAAkF;IAClF,iDAAiD;IACjD,MAAM,oBAAoB,GAAG,QAAQ,KAAK,kCAAkC,CAAC;IAC7E,MAAM,gBAAgB,GACrB,QAAQ,KAAK,sBAAsB,IAAI,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7E,MAAM,YAAY,GACjB,QAAQ,KAAK,qBAAqB,IAAI,UAAU,EAAE,cAAc,KAAK,WAAW,CAAC;IAClF,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,eAAe,GACpB,QAAQ,KAAK,iBAAiB,IAAI,UAAU,EAAE,cAAc,KAAK,WAAW,CAAC;IAC9E,iFAAiF;IACjF,uEAAuE;IACvE,MAAM,aAAa,GAClB,QAAQ,KAAK,sBAAsB,IAAI,UAAU,EAAE,cAAc,KAAK,aAAa,CAAC;IACrF,IACC,oBAAoB;QACpB,gBAAgB;QAChB,2BAA2B,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC;QACtE,YAAY;QACZ,aAAa;QACb,eAAe,EACd,CAAC;QACF,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;IACtE,CAAC;IAED,gFAAgF;IAChF,kFAAkF;IAClF,oEAAoE;IACpE,IAAI,yBAAyB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,qFAAqF;IACrF,IAAI,2BAA2B,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;IACvE,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"trigger-identity.js","sourceRoot":"","sources":["../../src/trigger-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,sBAAsB,EACtB,kCAAkC,EAClC,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,4CAA4C,EAAE,MAAM,yCAAyC,CAAC;AAgBvG,MAAM,WAAW,GAAgC;IAChD,mBAAmB,EAAE,KAAK;IAC1B,wBAAwB,EAAE,KAAK;CAC/B,CAAC;AAEF,sFAAsF;AACtF,SAAS,2BAA2B,CAAC,UAAuC;IAC3E,MAAM,UAAU,GAAG,4CAA4C,CAAC,UAAU,CAAC,CAAC;IAC5E,OAAO,CACN,UAAU,KAAK,IAAI;QACnB,UAAU,CAAC,OAAO;QAClB,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAC1D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,2BAA2B,CAAC,QAAgB,EAAE,UAAuC;IAC7F,OAAO,CACN,QAAQ,KAAK,sBAAsB;QACnC,UAAU,EAAE,MAAM,KAAK,IAAI;QAC3B,UAAU,EAAE,cAAc,KAAK,aAAa;QAC5C,CAAC,UAAU,EAAE,IAAI,IAAI,YAAY,CAAC,KAAK,YAAY,CACnD,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACtC,QAAgB,EAChB,UAAuC;IAEvC,kFAAkF;IAClF,iDAAiD;IACjD,MAAM,oBAAoB,GAAG,QAAQ,KAAK,kCAAkC,CAAC;IAC7E,MAAM,gBAAgB,GACrB,QAAQ,KAAK,sBAAsB,IAAI,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7E,MAAM,YAAY,GACjB,QAAQ,KAAK,qBAAqB,IAAI,UAAU,EAAE,cAAc,KAAK,WAAW,CAAC;IAClF,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,eAAe,GACpB,QAAQ,KAAK,iBAAiB,IAAI,UAAU,EAAE,cAAc,KAAK,WAAW,CAAC;IAC9E,iFAAiF;IACjF,uEAAuE;IACvE,MAAM,aAAa,GAClB,QAAQ,KAAK,sBAAsB,IAAI,UAAU,EAAE,cAAc,KAAK,aAAa,CAAC;IACrF,IACC,oBAAoB;QACpB,gBAAgB;QAChB,2BAA2B,CAAC,QAAQ,EAAE,UAAU,CAAC;QACjD,YAAY;QACZ,aAAa;QACb,eAAe,EACd,CAAC;QACF,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;IACtE,CAAC;IAED,gFAAgF;IAChF,kFAAkF;IAClF,oEAAoE;IACpE,IAAI,yBAAyB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,qFAAqF;IACrF,IAAI,2BAA2B,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;IACvE,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC"}