n8n-nodes-base 2.45.0 → 2.45.2
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/dist/cjs/build.tsbuildinfo +1 -1
- package/dist/node-definitions/.nodes-hash +1 -1
- package/dist/node-definitions/nodes/n8n-nodes-base/crypto/v1.schema.js +1 -1
- package/dist/node-definitions/nodes/n8n-nodes-base/crypto/v1.ts +1 -1
- package/dist/node-definitions/nodes/n8n-nodes-base/crypto/v2.schema.js +1 -1
- package/dist/node-definitions/nodes/n8n-nodes-base/crypto/v2.ts +1 -1
- package/dist/node-definitions/nodes/n8n-nodes-base/googleAnalytics/v2/resource_report/operation_get.ts +2 -2
- package/dist/node-definitions/nodes/n8n-nodes-base/microsoftOutlook/v2/resource_event/operation_create.ts +2 -2
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.d.ts.map +1 -1
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js +58 -32
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js.map +1 -1
- package/dist/nodes/Microsoft/Teams/v2/helpers/types.d.ts +7 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/types.d.ts.map +1 -1
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.d.ts +19 -6
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.d.ts.map +1 -1
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js +206 -6
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js.map +1 -1
- package/dist/nodes/Microsoft/Teams/v2/transport/index.d.ts +3 -3
- package/dist/nodes/Microsoft/Teams/v2/transport/index.d.ts.map +1 -1
- package/dist/nodes/Microsoft/Teams/v2/transport/index.js.map +1 -1
- package/dist/nodes/Postgres/transport/index.d.ts.map +1 -1
- package/dist/nodes/Postgres/transport/index.js +1 -3
- package/dist/nodes/Postgres/transport/index.js.map +1 -1
- package/dist/types/nodes.json +4 -4
- package/dist/utils/microsoft/transport.d.ts +8 -6
- package/dist/utils/microsoft/transport.d.ts.map +1 -1
- package/dist/utils/microsoft/transport.js.map +1 -1
- package/dist/utils/postgres.d.ts +5 -0
- package/dist/utils/postgres.d.ts.map +1 -1
- package/dist/utils/postgres.js +31 -15
- package/dist/utils/postgres.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
03f0747c4fba6de2aae15e177a13ce25ce4958bfc8f7770b9db5c4307137bab0
|
|
@@ -22,7 +22,7 @@ module.exports = function getSchema({ parameters, z, expressionSchema, stringOrE
|
|
|
22
22
|
dataPropertyName: resolveOneOfSchemas({ parameters, variants: [{ schema: stringOrExpression, required: false, displayOptions: {"show":{"action":["hash"]}}, defaults: {"action":"hash"} }, { schema: stringOrExpression, required: false, displayOptions: {"show":{"action":["hmac"]}}, defaults: {"action":"hash"} }, { schema: stringOrExpression, required: false, displayOptions: {"show":{"action":["sign"]}}, defaults: {"action":"hash"} }, { schema: stringOrExpression, required: false, displayOptions: {"show":{"action":["generate"]}}, defaults: {"action":"hash"} }] }),
|
|
23
23
|
encoding: resolveOneOfSchemas({ parameters, variants: [{ schema: z.union([z.literal('base64'), z.literal('hex'), expressionSchema]), required: false, displayOptions: {"show":{"action":["hash"]}}, defaults: {"action":"hash"} }, { schema: z.union([z.literal('base64'), z.literal('hex'), expressionSchema]), required: false, displayOptions: {"show":{"action":["hmac"]}}, defaults: {"action":"hash"} }, { schema: z.union([z.literal('base64'), z.literal('hex'), expressionSchema]), required: false, displayOptions: {"show":{"action":["sign"]}}, defaults: {"action":"hash"} }] }),
|
|
24
24
|
secret: resolveSchema({ parameters, schema: stringOrExpression, required: true, displayOptions: {"show":{"action":["hmac"]}}, defaults: {"action":"hash"} }),
|
|
25
|
-
algorithm: resolveSchema({ parameters, schema: z.union([z.literal('RSA-MD5'), z.literal('RSA-RIPEMD160'), z.literal('RSA-SHA1'), z.literal('RSA-SHA1-2'), z.literal('RSA-SHA224'), z.literal('RSA-SHA256'), z.literal('RSA-SHA3-224'), z.literal('RSA-SHA3-256'), z.literal('RSA-SHA3-384'), z.literal('RSA-SHA3-512'), z.literal('RSA-SHA384'), z.literal('RSA-SHA512'), z.literal('RSA-SHA512/224'), z.literal('RSA-SHA512/256'), z.literal('RSA-SM3'), z.literal('blake2b512'), z.literal('blake2s256'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-224'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-256'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-384'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-512'), z.literal('md5'), z.literal('md5-sha1'), z.literal('md5WithRSAEncryption'), z.literal('ripemd'), z.literal('ripemd160'), z.literal('ripemd160WithRSA'), z.literal('rmd160'), z.literal('sha1'), z.literal('sha1WithRSAEncryption'), z.literal('sha224'), z.literal('sha224WithRSAEncryption'), z.literal('sha256'), z.literal('sha256WithRSAEncryption'), z.literal('sha3-224'), z.literal('sha3-256'), z.literal('sha3-384'), z.literal('sha3-512'), z.literal('sha384'), z.literal('sha384WithRSAEncryption'), z.literal('sha512'), z.literal('sha512-224'), z.literal('sha512-224WithRSAEncryption'), z.literal('sha512-256'), z.literal('sha512-256WithRSAEncryption'), z.literal('sha512WithRSAEncryption'), z.literal('shake128'), z.literal('shake256'), z.literal('sm3'), z.literal('sm3WithRSAEncryption'), z.literal('ssl3-md5'), z.literal('ssl3-sha1'), expressionSchema]), required: true, displayOptions: {"show":{"action":["sign"]}}, defaults: {"action":"hash"} }),
|
|
25
|
+
algorithm: resolveSchema({ parameters, schema: z.union([z.literal('RSA-MD5'), z.literal('RSA-RIPEMD160'), z.literal('RSA-SHA1'), z.literal('RSA-SHA1-2'), z.literal('RSA-SHA224'), z.literal('RSA-SHA256'), z.literal('RSA-SHA3-224'), z.literal('RSA-SHA3-256'), z.literal('RSA-SHA3-384'), z.literal('RSA-SHA3-512'), z.literal('RSA-SHA384'), z.literal('RSA-SHA512'), z.literal('RSA-SHA512/224'), z.literal('RSA-SHA512/256'), z.literal('RSA-SM3'), z.literal('blake2b-512'), z.literal('blake2b512'), z.literal('blake2s-256'), z.literal('blake2s256'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-224'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-256'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-384'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-512'), z.literal('keccak-224'), z.literal('keccak-256'), z.literal('keccak-384'), z.literal('keccak-512'), z.literal('keccak-kmac-128'), z.literal('keccak-kmac-256'), z.literal('keccak-kmac128'), z.literal('keccak-kmac256'), z.literal('md5'), z.literal('md5-sha1'), z.literal('md5WithRSAEncryption'), z.literal('ripemd'), z.literal('ripemd-160'), z.literal('ripemd160'), z.literal('ripemd160WithRSA'), z.literal('rmd160'), z.literal('sha-1'), z.literal('sha-224'), z.literal('sha-256'), z.literal('sha-256/192'), z.literal('sha-384'), z.literal('sha-512'), z.literal('sha-512/224'), z.literal('sha-512/256'), z.literal('sha1'), z.literal('sha1WithRSAEncryption'), z.literal('sha2-224'), z.literal('sha2-256'), z.literal('sha2-256/192'), z.literal('sha2-384'), z.literal('sha2-512'), z.literal('sha2-512/224'), z.literal('sha2-512/256'), z.literal('sha224'), z.literal('sha224WithRSAEncryption'), z.literal('sha256'), z.literal('sha256-192'), z.literal('sha256WithRSAEncryption'), z.literal('sha3-224'), z.literal('sha3-256'), z.literal('sha3-384'), z.literal('sha3-512'), z.literal('sha384'), z.literal('sha384WithRSAEncryption'), z.literal('sha512'), z.literal('sha512-224'), z.literal('sha512-224WithRSAEncryption'), z.literal('sha512-256'), z.literal('sha512-256WithRSAEncryption'), z.literal('sha512WithRSAEncryption'), z.literal('shake-128'), z.literal('shake-256'), z.literal('shake128'), z.literal('shake256'), z.literal('sm3'), z.literal('sm3WithRSAEncryption'), z.literal('ssl3-md5'), z.literal('ssl3-sha1'), expressionSchema]), required: true, displayOptions: {"show":{"action":["sign"]}}, defaults: {"action":"hash"} }),
|
|
26
26
|
privateKey: resolveSchema({ parameters, schema: stringOrExpression, required: true, displayOptions: {"show":{"action":["sign"]}}, defaults: {"action":"hash"} }),
|
|
27
27
|
encodingType: resolveSchema({ parameters, schema: z.union([z.literal('ascii'), z.literal('base64'), z.literal('hex'), z.literal('uuid'), expressionSchema]), required: false, displayOptions: {"show":{"action":["generate"]}}, defaults: {"action":"hash"} }),
|
|
28
28
|
stringLength: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"action":["generate"],"encodingType":["ascii","base64","hex"]}}, defaults: {"action":"hash","encodingType":"uuid"} }),
|
|
@@ -53,7 +53,7 @@ export interface CryptoV1Params {
|
|
|
53
53
|
* @displayOptions.show { action: ["sign"] }
|
|
54
54
|
* @required when the displayOptions conditions above match
|
|
55
55
|
*/
|
|
56
|
-
algorithm?: 'RSA-MD5' | 'RSA-RIPEMD160' | 'RSA-SHA1' | 'RSA-SHA1-2' | 'RSA-SHA224' | 'RSA-SHA256' | 'RSA-SHA3-224' | 'RSA-SHA3-256' | 'RSA-SHA3-384' | 'RSA-SHA3-512' | 'RSA-SHA384' | 'RSA-SHA512' | 'RSA-SHA512/224' | 'RSA-SHA512/256' | 'RSA-SM3' | 'blake2b512' | 'blake2s256' | 'id-rsassa-pkcs1-v1_5-with-sha3-224' | 'id-rsassa-pkcs1-v1_5-with-sha3-256' | 'id-rsassa-pkcs1-v1_5-with-sha3-384' | 'id-rsassa-pkcs1-v1_5-with-sha3-512' | 'md5' | 'md5-sha1' | 'md5WithRSAEncryption' | 'ripemd' | 'ripemd160' | 'ripemd160WithRSA' | 'rmd160' | 'sha1' | 'sha1WithRSAEncryption' | 'sha224' | 'sha224WithRSAEncryption' | 'sha256' | 'sha256WithRSAEncryption' | 'sha3-224' | 'sha3-256' | 'sha3-384' | 'sha3-512' | 'sha384' | 'sha384WithRSAEncryption' | 'sha512' | 'sha512-224' | 'sha512-224WithRSAEncryption' | 'sha512-256' | 'sha512-256WithRSAEncryption' | 'sha512WithRSAEncryption' | 'shake128' | 'shake256' | 'sm3' | 'sm3WithRSAEncryption' | 'ssl3-md5' | 'ssl3-sha1' | Expression<string>;
|
|
56
|
+
algorithm?: 'RSA-MD5' | 'RSA-RIPEMD160' | 'RSA-SHA1' | 'RSA-SHA1-2' | 'RSA-SHA224' | 'RSA-SHA256' | 'RSA-SHA3-224' | 'RSA-SHA3-256' | 'RSA-SHA3-384' | 'RSA-SHA3-512' | 'RSA-SHA384' | 'RSA-SHA512' | 'RSA-SHA512/224' | 'RSA-SHA512/256' | 'RSA-SM3' | 'blake2b-512' | 'blake2b512' | 'blake2s-256' | 'blake2s256' | 'id-rsassa-pkcs1-v1_5-with-sha3-224' | 'id-rsassa-pkcs1-v1_5-with-sha3-256' | 'id-rsassa-pkcs1-v1_5-with-sha3-384' | 'id-rsassa-pkcs1-v1_5-with-sha3-512' | 'keccak-224' | 'keccak-256' | 'keccak-384' | 'keccak-512' | 'keccak-kmac-128' | 'keccak-kmac-256' | 'keccak-kmac128' | 'keccak-kmac256' | 'md5' | 'md5-sha1' | 'md5WithRSAEncryption' | 'ripemd' | 'ripemd-160' | 'ripemd160' | 'ripemd160WithRSA' | 'rmd160' | 'sha-1' | 'sha-224' | 'sha-256' | 'sha-256/192' | 'sha-384' | 'sha-512' | 'sha-512/224' | 'sha-512/256' | 'sha1' | 'sha1WithRSAEncryption' | 'sha2-224' | 'sha2-256' | 'sha2-256/192' | 'sha2-384' | 'sha2-512' | 'sha2-512/224' | 'sha2-512/256' | 'sha224' | 'sha224WithRSAEncryption' | 'sha256' | 'sha256-192' | 'sha256WithRSAEncryption' | 'sha3-224' | 'sha3-256' | 'sha3-384' | 'sha3-512' | 'sha384' | 'sha384WithRSAEncryption' | 'sha512' | 'sha512-224' | 'sha512-224WithRSAEncryption' | 'sha512-256' | 'sha512-256WithRSAEncryption' | 'sha512WithRSAEncryption' | 'shake-128' | 'shake-256' | 'shake128' | 'shake256' | 'sm3' | 'sm3WithRSAEncryption' | 'ssl3-md5' | 'ssl3-sha1' | Expression<string>;
|
|
57
57
|
/**
|
|
58
58
|
* Private key to use when signing the string
|
|
59
59
|
* @displayOptions.show { action: ["sign"] }
|
|
@@ -21,7 +21,7 @@ module.exports = function getSchema({ parameters, z, expressionSchema, stringOrE
|
|
|
21
21
|
value: resolveOneOfSchemas({ parameters, variants: [{ schema: stringOrExpression, required: true, displayOptions: {"show":{"action":["hash"],"binaryData":[false]}}, defaults: {"action":"hash","binaryData":false} }, { schema: stringOrExpression, required: true, displayOptions: {"show":{"action":["hmac"],"binaryData":[false]}}, defaults: {"action":"hash","binaryData":false} }, { schema: stringOrExpression, required: true, displayOptions: {"show":{"action":["sign"]}}, defaults: {"action":"hash"} }, { schema: stringOrExpression, required: true, displayOptions: {"show":{"action":["encrypt","decrypt"]}}, defaults: {"action":"hash"} }] }),
|
|
22
22
|
dataPropertyName: resolveOneOfSchemas({ parameters, variants: [{ schema: stringOrExpression, required: false, displayOptions: {"show":{"action":["hash"]}}, defaults: {"action":"hash"} }, { schema: stringOrExpression, required: false, displayOptions: {"show":{"action":["hmac"]}}, defaults: {"action":"hash"} }, { schema: stringOrExpression, required: false, displayOptions: {"show":{"action":["sign"]}}, defaults: {"action":"hash"} }, { schema: stringOrExpression, required: false, displayOptions: {"show":{"action":["generate"]}}, defaults: {"action":"hash"} }, { schema: stringOrExpression, required: false, displayOptions: {"show":{"action":["encrypt","decrypt"]}}, defaults: {"action":"hash"} }] }),
|
|
23
23
|
encoding: resolveOneOfSchemas({ parameters, variants: [{ schema: z.union([z.literal('base64'), z.literal('hex'), expressionSchema]), required: false, displayOptions: {"show":{"action":["hash"]}}, defaults: {"action":"hash"} }, { schema: z.union([z.literal('base64'), z.literal('hex'), expressionSchema]), required: false, displayOptions: {"show":{"action":["hmac"]}}, defaults: {"action":"hash"} }, { schema: z.union([z.literal('base64'), z.literal('hex'), expressionSchema]), required: false, displayOptions: {"show":{"action":["sign"]}}, defaults: {"action":"hash"} }] }),
|
|
24
|
-
algorithm: resolveSchema({ parameters, schema: z.union([z.literal('RSA-MD5'), z.literal('RSA-RIPEMD160'), z.literal('RSA-SHA1'), z.literal('RSA-SHA1-2'), z.literal('RSA-SHA224'), z.literal('RSA-SHA256'), z.literal('RSA-SHA3-224'), z.literal('RSA-SHA3-256'), z.literal('RSA-SHA3-384'), z.literal('RSA-SHA3-512'), z.literal('RSA-SHA384'), z.literal('RSA-SHA512'), z.literal('RSA-SHA512/224'), z.literal('RSA-SHA512/256'), z.literal('RSA-SM3'), z.literal('blake2b512'), z.literal('blake2s256'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-224'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-256'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-384'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-512'), z.literal('md5'), z.literal('md5-sha1'), z.literal('md5WithRSAEncryption'), z.literal('ripemd'), z.literal('ripemd160'), z.literal('ripemd160WithRSA'), z.literal('rmd160'), z.literal('sha1'), z.literal('sha1WithRSAEncryption'), z.literal('sha224'), z.literal('sha224WithRSAEncryption'), z.literal('sha256'), z.literal('sha256WithRSAEncryption'), z.literal('sha3-224'), z.literal('sha3-256'), z.literal('sha3-384'), z.literal('sha3-512'), z.literal('sha384'), z.literal('sha384WithRSAEncryption'), z.literal('sha512'), z.literal('sha512-224'), z.literal('sha512-224WithRSAEncryption'), z.literal('sha512-256'), z.literal('sha512-256WithRSAEncryption'), z.literal('sha512WithRSAEncryption'), z.literal('shake128'), z.literal('shake256'), z.literal('sm3'), z.literal('sm3WithRSAEncryption'), z.literal('ssl3-md5'), z.literal('ssl3-sha1'), expressionSchema]), required: true, displayOptions: {"show":{"action":["sign"]}}, defaults: {"action":"hash"} }),
|
|
24
|
+
algorithm: resolveSchema({ parameters, schema: z.union([z.literal('RSA-MD5'), z.literal('RSA-RIPEMD160'), z.literal('RSA-SHA1'), z.literal('RSA-SHA1-2'), z.literal('RSA-SHA224'), z.literal('RSA-SHA256'), z.literal('RSA-SHA3-224'), z.literal('RSA-SHA3-256'), z.literal('RSA-SHA3-384'), z.literal('RSA-SHA3-512'), z.literal('RSA-SHA384'), z.literal('RSA-SHA512'), z.literal('RSA-SHA512/224'), z.literal('RSA-SHA512/256'), z.literal('RSA-SM3'), z.literal('blake2b-512'), z.literal('blake2b512'), z.literal('blake2s-256'), z.literal('blake2s256'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-224'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-256'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-384'), z.literal('id-rsassa-pkcs1-v1_5-with-sha3-512'), z.literal('keccak-224'), z.literal('keccak-256'), z.literal('keccak-384'), z.literal('keccak-512'), z.literal('keccak-kmac-128'), z.literal('keccak-kmac-256'), z.literal('keccak-kmac128'), z.literal('keccak-kmac256'), z.literal('md5'), z.literal('md5-sha1'), z.literal('md5WithRSAEncryption'), z.literal('ripemd'), z.literal('ripemd-160'), z.literal('ripemd160'), z.literal('ripemd160WithRSA'), z.literal('rmd160'), z.literal('sha-1'), z.literal('sha-224'), z.literal('sha-256'), z.literal('sha-256/192'), z.literal('sha-384'), z.literal('sha-512'), z.literal('sha-512/224'), z.literal('sha-512/256'), z.literal('sha1'), z.literal('sha1WithRSAEncryption'), z.literal('sha2-224'), z.literal('sha2-256'), z.literal('sha2-256/192'), z.literal('sha2-384'), z.literal('sha2-512'), z.literal('sha2-512/224'), z.literal('sha2-512/256'), z.literal('sha224'), z.literal('sha224WithRSAEncryption'), z.literal('sha256'), z.literal('sha256-192'), z.literal('sha256WithRSAEncryption'), z.literal('sha3-224'), z.literal('sha3-256'), z.literal('sha3-384'), z.literal('sha3-512'), z.literal('sha384'), z.literal('sha384WithRSAEncryption'), z.literal('sha512'), z.literal('sha512-224'), z.literal('sha512-224WithRSAEncryption'), z.literal('sha512-256'), z.literal('sha512-256WithRSAEncryption'), z.literal('sha512WithRSAEncryption'), z.literal('shake-128'), z.literal('shake-256'), z.literal('shake128'), z.literal('shake256'), z.literal('sm3'), z.literal('sm3WithRSAEncryption'), z.literal('ssl3-md5'), z.literal('ssl3-sha1'), expressionSchema]), required: true, displayOptions: {"show":{"action":["sign"]}}, defaults: {"action":"hash"} }),
|
|
25
25
|
encodingType: resolveSchema({ parameters, schema: z.union([z.literal('ascii'), z.literal('base64'), z.literal('hex'), z.literal('uuid'), expressionSchema]), required: false, displayOptions: {"show":{"action":["generate"]}}, defaults: {"action":"hash"} }),
|
|
26
26
|
stringLength: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"action":["generate"],"encodingType":["ascii","base64","hex"]}}, defaults: {"action":"hash","encodingType":"uuid"} }),
|
|
27
27
|
mode: resolveSchema({ parameters, schema: z.union([z.literal('symmetric'), z.literal('asymmetric'), expressionSchema]), required: false, displayOptions: {"show":{"action":["encrypt","decrypt"]}}, defaults: {"action":"hash"} }),
|
|
@@ -47,7 +47,7 @@ export interface CryptoV2Params {
|
|
|
47
47
|
* @displayOptions.show { action: ["sign"] }
|
|
48
48
|
* @required when the displayOptions conditions above match
|
|
49
49
|
*/
|
|
50
|
-
algorithm?: 'RSA-MD5' | 'RSA-RIPEMD160' | 'RSA-SHA1' | 'RSA-SHA1-2' | 'RSA-SHA224' | 'RSA-SHA256' | 'RSA-SHA3-224' | 'RSA-SHA3-256' | 'RSA-SHA3-384' | 'RSA-SHA3-512' | 'RSA-SHA384' | 'RSA-SHA512' | 'RSA-SHA512/224' | 'RSA-SHA512/256' | 'RSA-SM3' | 'blake2b512' | 'blake2s256' | 'id-rsassa-pkcs1-v1_5-with-sha3-224' | 'id-rsassa-pkcs1-v1_5-with-sha3-256' | 'id-rsassa-pkcs1-v1_5-with-sha3-384' | 'id-rsassa-pkcs1-v1_5-with-sha3-512' | 'md5' | 'md5-sha1' | 'md5WithRSAEncryption' | 'ripemd' | 'ripemd160' | 'ripemd160WithRSA' | 'rmd160' | 'sha1' | 'sha1WithRSAEncryption' | 'sha224' | 'sha224WithRSAEncryption' | 'sha256' | 'sha256WithRSAEncryption' | 'sha3-224' | 'sha3-256' | 'sha3-384' | 'sha3-512' | 'sha384' | 'sha384WithRSAEncryption' | 'sha512' | 'sha512-224' | 'sha512-224WithRSAEncryption' | 'sha512-256' | 'sha512-256WithRSAEncryption' | 'sha512WithRSAEncryption' | 'shake128' | 'shake256' | 'sm3' | 'sm3WithRSAEncryption' | 'ssl3-md5' | 'ssl3-sha1' | Expression<string>;
|
|
50
|
+
algorithm?: 'RSA-MD5' | 'RSA-RIPEMD160' | 'RSA-SHA1' | 'RSA-SHA1-2' | 'RSA-SHA224' | 'RSA-SHA256' | 'RSA-SHA3-224' | 'RSA-SHA3-256' | 'RSA-SHA3-384' | 'RSA-SHA3-512' | 'RSA-SHA384' | 'RSA-SHA512' | 'RSA-SHA512/224' | 'RSA-SHA512/256' | 'RSA-SM3' | 'blake2b-512' | 'blake2b512' | 'blake2s-256' | 'blake2s256' | 'id-rsassa-pkcs1-v1_5-with-sha3-224' | 'id-rsassa-pkcs1-v1_5-with-sha3-256' | 'id-rsassa-pkcs1-v1_5-with-sha3-384' | 'id-rsassa-pkcs1-v1_5-with-sha3-512' | 'keccak-224' | 'keccak-256' | 'keccak-384' | 'keccak-512' | 'keccak-kmac-128' | 'keccak-kmac-256' | 'keccak-kmac128' | 'keccak-kmac256' | 'md5' | 'md5-sha1' | 'md5WithRSAEncryption' | 'ripemd' | 'ripemd-160' | 'ripemd160' | 'ripemd160WithRSA' | 'rmd160' | 'sha-1' | 'sha-224' | 'sha-256' | 'sha-256/192' | 'sha-384' | 'sha-512' | 'sha-512/224' | 'sha-512/256' | 'sha1' | 'sha1WithRSAEncryption' | 'sha2-224' | 'sha2-256' | 'sha2-256/192' | 'sha2-384' | 'sha2-512' | 'sha2-512/224' | 'sha2-512/256' | 'sha224' | 'sha224WithRSAEncryption' | 'sha256' | 'sha256-192' | 'sha256WithRSAEncryption' | 'sha3-224' | 'sha3-256' | 'sha3-384' | 'sha3-512' | 'sha384' | 'sha384WithRSAEncryption' | 'sha512' | 'sha512-224' | 'sha512-224WithRSAEncryption' | 'sha512-256' | 'sha512-256WithRSAEncryption' | 'sha512WithRSAEncryption' | 'shake-128' | 'shake-256' | 'shake128' | 'shake256' | 'sm3' | 'sm3WithRSAEncryption' | 'ssl3-md5' | 'ssl3-sha1' | Expression<string>;
|
|
51
51
|
/**
|
|
52
52
|
* Encoding that will be used to generate string
|
|
53
53
|
* @displayOptions.show { action: ["generate"] }
|
|
@@ -34,13 +34,13 @@ export type GoogleAnalyticsV2ReportGetParams = {
|
|
|
34
34
|
/**
|
|
35
35
|
* Start
|
|
36
36
|
* @displayOptions.show { dateRange: ["custom"], propertyType: ["ga4"] }
|
|
37
|
-
* @default 2026-10-
|
|
37
|
+
* @default 2026-10-14T00:00:00.000+00:00
|
|
38
38
|
*/
|
|
39
39
|
startDate?: string | Expression<string>;
|
|
40
40
|
/**
|
|
41
41
|
* End
|
|
42
42
|
* @displayOptions.show { dateRange: ["custom"], propertyType: ["ga4"] }
|
|
43
|
-
* @default 2026-10-
|
|
43
|
+
* @default 2026-10-21T00:00:00.000+00:00
|
|
44
44
|
*/
|
|
45
45
|
endDate?: string | Expression<string>;
|
|
46
46
|
/**
|
|
@@ -33,12 +33,12 @@ export type MicrosoftOutlookV2EventCreateParams = {
|
|
|
33
33
|
subject: string | Expression<string>;
|
|
34
34
|
/**
|
|
35
35
|
* Start
|
|
36
|
-
* @default 2026-10-
|
|
36
|
+
* @default 2026-10-22T09:12:44.793+00:00
|
|
37
37
|
*/
|
|
38
38
|
startDateTime?: string | Expression<string>;
|
|
39
39
|
/**
|
|
40
40
|
* End
|
|
41
|
-
* @default 2026-10-
|
|
41
|
+
* @default 2026-10-22T09:42:44.793+00:00
|
|
42
42
|
*/
|
|
43
43
|
endDateTime?: string | Expression<string>;
|
|
44
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MicrosoftTeamsTrigger.node.d.ts","sourceRoot":"","sources":["../../../../nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MicrosoftTeamsTrigger.node.d.ts","sourceRoot":"","sources":["../../../../nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,SAAS,EACT,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EAGpB,MAAM,cAAc,CAAC;AAgBtB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,qBAAa,qBAAsB,YAAW,SAAS;IACtD,WAAW,EAAE,oBAAoB,CA4T/B;IAEF,OAAO;;MAEL;IAEF,cAAc;QACb,OAAO;YACA,WAAW,OAAO,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;YAiDnD,MAAM,OAAO,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;YA6C9C,MAAM,OAAO,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;;MAuBpD;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4CpE;CACD"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MicrosoftTeamsTrigger = void 0;
|
|
4
|
+
const ensure_error_1 = require("@n8n/utils/errors/ensure-error");
|
|
5
|
+
const is_record_1 = require("@n8n/utils/is-record");
|
|
4
6
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
7
|
const utils_trigger_1 = require("./v2/helpers/utils-trigger");
|
|
6
8
|
const methods_1 = require("./v2/methods");
|
|
@@ -328,23 +330,41 @@ class MicrosoftTeamsTrigger {
|
|
|
328
330
|
const webhookUrl = this.getNodeWebhookUrl('default');
|
|
329
331
|
const webhookData = this.getWorkflowStaticData('node');
|
|
330
332
|
try {
|
|
331
|
-
const
|
|
332
|
-
const
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
333
|
+
const matchingSubscriptions = await utils_trigger_1.listOwnSubscriptions.call(this, webhookUrl);
|
|
334
|
+
const hasSecret = (0, utils_trigger_1.getStoredSecret)(webhookData) !== undefined;
|
|
335
|
+
// Without the secret the webhook cannot verify any of these subscriptions, for
|
|
336
|
+
// example after the static data was lost, so none of them counts. With it, the
|
|
337
|
+
// ones about to expire do not count. Partition once, before the awaited deletes.
|
|
338
|
+
const validSubscriptions = hasSecret
|
|
339
|
+
? matchingSubscriptions.filter((subscription) => (0, utils_trigger_1.isLiveSubscription)(subscription))
|
|
340
|
+
: [];
|
|
341
|
+
const validIds = new Set(validSubscriptions.map((subscription) => subscription.id));
|
|
342
|
+
// What does not count is removed, so `create()` adds no duplicate next to it.
|
|
343
|
+
for (const { id } of matchingSubscriptions) {
|
|
344
|
+
if (validIds.has(id))
|
|
345
|
+
continue;
|
|
346
|
+
try {
|
|
347
|
+
await utils_trigger_1.deleteSubscription.call(this, id);
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
this.logger.warn('Microsoft Teams Trigger: failed to remove a stale subscription', {
|
|
351
|
+
workflowId: this.getWorkflow().id,
|
|
352
|
+
nodeName: this.getNode().name,
|
|
353
|
+
subscriptionId: id,
|
|
354
|
+
error: (0, ensure_error_1.ensureError)(error).message,
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
if (!hasSecret)
|
|
359
|
+
return false;
|
|
339
360
|
const resourcePaths = await utils_trigger_1.getResourcePath.call(this, event);
|
|
340
361
|
const requiredResources = Array.isArray(resourcePaths) ? resourcePaths : [resourcePaths];
|
|
341
362
|
const subscribedResources = validSubscriptions.map((sub) => sub.resource);
|
|
342
363
|
const allResourcesSubscribed = requiredResources.every((resource) => subscribedResources.includes(resource));
|
|
343
|
-
if (allResourcesSubscribed)
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
return false;
|
|
364
|
+
if (!allResourcesSubscribed)
|
|
365
|
+
return false;
|
|
366
|
+
webhookData.subscriptionIds = validSubscriptions.map((sub) => sub.id);
|
|
367
|
+
return true;
|
|
348
368
|
}
|
|
349
369
|
catch (error) {
|
|
350
370
|
return false;
|
|
@@ -385,16 +405,7 @@ class MicrosoftTeamsTrigger {
|
|
|
385
405
|
return false;
|
|
386
406
|
}
|
|
387
407
|
try {
|
|
388
|
-
await Promise.all(storedIds.map(async (subscriptionId) =>
|
|
389
|
-
try {
|
|
390
|
-
await transport_1.microsoftApiRequest.call(this, 'DELETE', `/v1.0/subscriptions/${subscriptionId}`);
|
|
391
|
-
}
|
|
392
|
-
catch (error) {
|
|
393
|
-
if (error.httpStatusCode !== 404) {
|
|
394
|
-
throw error;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
}));
|
|
408
|
+
await Promise.all(storedIds.map(async (subscriptionId) => await utils_trigger_1.deleteSubscription.call(this, subscriptionId)));
|
|
398
409
|
delete webhookData.subscriptionIds;
|
|
399
410
|
delete webhookData.webhookSecret;
|
|
400
411
|
return true;
|
|
@@ -417,15 +428,30 @@ class MicrosoftTeamsTrigger {
|
|
|
417
428
|
res.status(401).send('Unauthorized').end();
|
|
418
429
|
return { noWebhookResponse: true };
|
|
419
430
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
431
|
+
// `verifyWebhook` proved a non-empty array. Without a stored secret it accepts any
|
|
432
|
+
// item shape, so only records become workflow items.
|
|
433
|
+
const notifications = req.body.value;
|
|
434
|
+
const lifecycleNotifications = notifications.filter(utils_trigger_1.isLifecycleNotification);
|
|
435
|
+
const changeNotifications = notifications.filter((item) => (0, is_record_1.isRecord)(item) && !(0, utils_trigger_1.isLifecycleNotification)(item));
|
|
436
|
+
const workflowData = changeNotifications.map((event) => [
|
|
437
|
+
{
|
|
438
|
+
json: event.resourceData ?? event,
|
|
439
|
+
},
|
|
440
|
+
]);
|
|
441
|
+
if (lifecycleNotifications.length === 0) {
|
|
442
|
+
return { workflowData };
|
|
443
|
+
}
|
|
444
|
+
// Ack before any Graph call: a slow answer makes Graph re-deliver.
|
|
445
|
+
res.status(202).end();
|
|
446
|
+
// A test run would list by the production URL and write production ids into the
|
|
447
|
+
// test static data.
|
|
448
|
+
if (this.getMode() !== 'manual') {
|
|
449
|
+
await utils_trigger_1.handleLifecycleNotifications.call(this, lifecycleNotifications);
|
|
450
|
+
}
|
|
451
|
+
// A lifecycle-only batch must leave `workflowData` undefined: any value starts an execution.
|
|
452
|
+
return changeNotifications.length > 0
|
|
453
|
+
? { noWebhookResponse: true, workflowData }
|
|
454
|
+
: { noWebhookResponse: true };
|
|
429
455
|
}
|
|
430
456
|
}
|
|
431
457
|
exports.MicrosoftTeamsTrigger = MicrosoftTeamsTrigger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MicrosoftTeamsTrigger.node.js","sourceRoot":"","sources":["../../../../nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MicrosoftTeamsTrigger.node.js","sourceRoot":"","sources":["../../../../nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,13 @@ export interface ResourceData {
|
|
|
18
18
|
id: string;
|
|
19
19
|
[key: string]: unknown;
|
|
20
20
|
}
|
|
21
|
+
export interface LifecycleNotification {
|
|
22
|
+
subscriptionId: unknown;
|
|
23
|
+
subscriptionExpirationDateTime?: string;
|
|
24
|
+
tenantId?: string;
|
|
25
|
+
clientState?: string;
|
|
26
|
+
lifecycleEvent: string;
|
|
27
|
+
}
|
|
21
28
|
export interface SubscriptionResponse {
|
|
22
29
|
id: string;
|
|
23
30
|
expirationDateTime: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../nodes/Microsoft/Teams/v2/helpers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B,EAAE,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../nodes/Microsoft/Teams/v2/helpers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B,EAAE,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IAErC,cAAc,EAAE,OAAO,CAAC;IACxB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
import type { IHookFunctions, IWebhookFunctions } from 'n8n-workflow';
|
|
2
|
-
import type { TeamResponse, ChannelResponse, SubscriptionResponse } from './types';
|
|
1
|
+
import type { IHookFunctions, IDataObject, IWebhookFunctions } from 'n8n-workflow';
|
|
2
|
+
import type { TeamResponse, ChannelResponse, SubscriptionResponse, LifecycleNotification } from './types';
|
|
3
3
|
export declare function generateClientState(): string;
|
|
4
|
-
export declare function
|
|
5
|
-
|
|
6
|
-
export declare function
|
|
4
|
+
export declare function isLiveSubscription(subscription: SubscriptionResponse): boolean;
|
|
5
|
+
/** The stored clientState. An empty string counts as none, as in `verifyWebhook`. */
|
|
6
|
+
export declare function getStoredSecret(webhookData: IDataObject): string | undefined;
|
|
7
|
+
/** Deletes one subscription. A `404` counts as done, for example after it expired. */
|
|
8
|
+
export declare function deleteSubscription(this: IHookFunctions | IWebhookFunctions, subscriptionId: string): Promise<void>;
|
|
9
|
+
export declare function fetchAllTeams(this: IHookFunctions | IWebhookFunctions): Promise<TeamResponse[]>;
|
|
10
|
+
export declare function fetchAllChannels(this: IHookFunctions | IWebhookFunctions, teamId: string): Promise<ChannelResponse[]>;
|
|
11
|
+
export declare function createSubscription(this: IHookFunctions | IWebhookFunctions, webhookUrl: string, resourcePath: string, clientState: string): Promise<SubscriptionResponse>;
|
|
12
|
+
export declare function listOwnSubscriptions(this: IHookFunctions | IWebhookFunctions, webhookUrl: string | undefined): Promise<SubscriptionResponse[]>;
|
|
13
|
+
export declare function isLifecycleNotification(item: unknown): item is LifecycleNotification;
|
|
14
|
+
/**
|
|
15
|
+
* Runs after `webhook()` sent the 202. Never throws: a throw skips the static-data
|
|
16
|
+
* save and core would answer an ended response. Lists the subscriptions at most once
|
|
17
|
+
* per request.
|
|
18
|
+
*/
|
|
19
|
+
export declare function handleLifecycleNotifications(this: IWebhookFunctions, items: LifecycleNotification[]): Promise<void>;
|
|
7
20
|
export declare function verifyWebhook(this: IWebhookFunctions): boolean;
|
|
8
|
-
export declare function getResourcePath(this: IHookFunctions, event: string): Promise<string | string[]>;
|
|
21
|
+
export declare function getResourcePath(this: IHookFunctions | IWebhookFunctions, event: string): Promise<string | string[]>;
|
|
9
22
|
//# sourceMappingURL=utils-trigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-trigger.d.ts","sourceRoot":"","sources":["../../../../../../nodes/Microsoft/Teams/v2/helpers/utils-trigger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils-trigger.d.ts","sourceRoot":"","sources":["../../../../../../nodes/Microsoft/Teams/v2/helpers/utils-trigger.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGnF,OAAO,KAAK,EACX,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,SAAS,CAAC;AAWjB,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAYD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,oBAAoB,GAAG,OAAO,CAG9E;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAG5E;AAED,sFAAsF;AACtF,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,cAAc,GAAG,iBAAiB,EACxC,cAAc,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,aAAa,CAClC,IAAI,EAAE,cAAc,GAAG,iBAAiB,GACtC,OAAO,CAAC,YAAY,EAAE,CAAC,CAOzB;AAED,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,cAAc,GAAG,iBAAiB,EACxC,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,EAAE,CAAC,CAS5B;AAED,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,cAAc,GAAG,iBAAiB,EACxC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAoB/B;AAED,wBAAsB,oBAAoB,CACzC,IAAI,EAAE,cAAc,GAAG,iBAAiB,EACxC,UAAU,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAQjC;AAID,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,qBAAqB,CAEpF;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CACjD,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,qBAAqB,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAkKf;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAuB9D;AAED,wBAAsB,eAAe,CACpC,IAAI,EAAE,cAAc,GAAG,iBAAiB,EACxC,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAkH5B"}
|
|
@@ -1,18 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateClientState = generateClientState;
|
|
4
|
+
exports.isLiveSubscription = isLiveSubscription;
|
|
5
|
+
exports.getStoredSecret = getStoredSecret;
|
|
6
|
+
exports.deleteSubscription = deleteSubscription;
|
|
4
7
|
exports.fetchAllTeams = fetchAllTeams;
|
|
5
8
|
exports.fetchAllChannels = fetchAllChannels;
|
|
6
9
|
exports.createSubscription = createSubscription;
|
|
10
|
+
exports.listOwnSubscriptions = listOwnSubscriptions;
|
|
11
|
+
exports.isLifecycleNotification = isLifecycleNotification;
|
|
12
|
+
exports.handleLifecycleNotifications = handleLifecycleNotifications;
|
|
7
13
|
exports.verifyWebhook = verifyWebhook;
|
|
8
14
|
exports.getResourcePath = getResourcePath;
|
|
9
15
|
const crypto_1 = require("crypto");
|
|
16
|
+
const ensure_error_1 = require("@n8n/utils/errors/ensure-error");
|
|
17
|
+
const is_record_1 = require("@n8n/utils/is-record");
|
|
10
18
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
11
19
|
const webhook_signature_verification_1 = require("../../../../../utils/webhook-signature-verification");
|
|
12
20
|
const transport_1 = require("../transport");
|
|
13
21
|
function generateClientState() {
|
|
14
22
|
return (0, crypto_1.randomBytes)(32).toString('hex');
|
|
15
23
|
}
|
|
24
|
+
// Graph caps Teams subscriptions at 4320 minutes. 4318 keeps a margin for clock skew.
|
|
25
|
+
const SUBSCRIPTION_TTL_MINUTES = 4318;
|
|
26
|
+
// A subscription this close to its expiry counts as gone, so the node replaces it in time.
|
|
27
|
+
const SUBSCRIPTION_LIVENESS_MARGIN_MS = 5 * 60 * 1000;
|
|
28
|
+
function newSubscriptionExpiry() {
|
|
29
|
+
return new Date(Date.now() + SUBSCRIPTION_TTL_MINUTES * 60 * 1000).toISOString();
|
|
30
|
+
}
|
|
31
|
+
function isLiveSubscription(subscription) {
|
|
32
|
+
const expiresAt = new Date(subscription.expirationDateTime).getTime();
|
|
33
|
+
return expiresAt - Date.now() > SUBSCRIPTION_LIVENESS_MARGIN_MS;
|
|
34
|
+
}
|
|
35
|
+
/** The stored clientState. An empty string counts as none, as in `verifyWebhook`. */
|
|
36
|
+
function getStoredSecret(webhookData) {
|
|
37
|
+
const secret = webhookData.webhookSecret;
|
|
38
|
+
return typeof secret === 'string' && secret.length > 0 ? secret : undefined;
|
|
39
|
+
}
|
|
40
|
+
/** Deletes one subscription. A `404` counts as done, for example after it expired. */
|
|
41
|
+
async function deleteSubscription(subscriptionId) {
|
|
42
|
+
try {
|
|
43
|
+
await transport_1.microsoftApiRequest.call(this, 'DELETE', transport_1.buildTeamsPath.call(this, ['/v1.0/subscriptions/', { id: subscriptionId }]));
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (!(error instanceof n8n_workflow_1.NodeApiError && error.httpCode === '404'))
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
16
50
|
async function fetchAllTeams() {
|
|
17
51
|
const { value: teams } = (await transport_1.microsoftApiRequest.call(this, 'GET', transport_1.joinedTeamsEndpoint.call(this)));
|
|
18
52
|
return teams;
|
|
@@ -24,7 +58,7 @@ async function fetchAllChannels(teamId) {
|
|
|
24
58
|
return channels;
|
|
25
59
|
}
|
|
26
60
|
async function createSubscription(webhookUrl, resourcePath, clientState) {
|
|
27
|
-
const expirationTime =
|
|
61
|
+
const expirationTime = newSubscriptionExpiry();
|
|
28
62
|
const body = {
|
|
29
63
|
changeType: 'created',
|
|
30
64
|
notificationUrl: webhookUrl,
|
|
@@ -32,17 +66,183 @@ async function createSubscription(webhookUrl, resourcePath, clientState) {
|
|
|
32
66
|
expirationDateTime: expirationTime,
|
|
33
67
|
latestSupportedTlsVersion: 'v1_2',
|
|
34
68
|
lifecycleNotificationUrl: webhookUrl,
|
|
69
|
+
clientState,
|
|
35
70
|
};
|
|
36
|
-
if (clientState) {
|
|
37
|
-
body.clientState = clientState;
|
|
38
|
-
}
|
|
39
71
|
const response = (await transport_1.microsoftApiRequest.call(this, 'POST', '/v1.0/subscriptions', body));
|
|
40
72
|
return response;
|
|
41
73
|
}
|
|
74
|
+
async function listOwnSubscriptions(webhookUrl) {
|
|
75
|
+
const subscriptions = (await transport_1.microsoftApiRequestAllItems.call(this, 'value', 'GET', '/v1.0/subscriptions'));
|
|
76
|
+
return subscriptions.filter((subscription) => subscription.notificationUrl === webhookUrl);
|
|
77
|
+
}
|
|
78
|
+
// Anything with a `lifecycleEvent` is a lifecycle item and never a workflow item; the
|
|
79
|
+
// handler checks the id before it uses it.
|
|
80
|
+
function isLifecycleNotification(item) {
|
|
81
|
+
return (0, is_record_1.isRecord)(item) && typeof item.lifecycleEvent === 'string';
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Runs after `webhook()` sent the 202. Never throws: a throw skips the static-data
|
|
85
|
+
* save and core would answer an ended response. Lists the subscriptions at most once
|
|
86
|
+
* per request.
|
|
87
|
+
*/
|
|
88
|
+
async function handleLifecycleNotifications(items) {
|
|
89
|
+
const webhookData = this.getWorkflowStaticData('node');
|
|
90
|
+
const meta = { workflowId: this.getWorkflow().id, nodeName: this.getNode().name };
|
|
91
|
+
const log = (level, message, fields) => this.logger[level](`Microsoft Teams Trigger: ${message}`, { ...meta, ...fields });
|
|
92
|
+
// Without a stored secret `verifyWebhook` accepts any sender, so no Graph call may
|
|
93
|
+
// follow. The subscriptions expire and the next publish replaces them with a secret.
|
|
94
|
+
const clientState = getStoredSecret(webhookData);
|
|
95
|
+
if (clientState === undefined) {
|
|
96
|
+
log('warn', 'skipped lifecycle notifications: no stored secret, republish the workflow', {});
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const webhookUrl = this.getNodeWebhookUrl('default');
|
|
100
|
+
// Type narrowing only: the subscriptions were created with this URL.
|
|
101
|
+
if (webhookUrl === undefined)
|
|
102
|
+
return;
|
|
103
|
+
const rawIds = Array.isArray(webhookData.subscriptionIds)
|
|
104
|
+
? webhookData.subscriptionIds
|
|
105
|
+
: [];
|
|
106
|
+
const storedIds = rawIds.filter((id) => typeof id === 'string');
|
|
107
|
+
// One listing per request; a rejected listing is never fetched again.
|
|
108
|
+
let ownList;
|
|
109
|
+
const ownSubscriptions = async () => await (ownList ??= listOwnSubscriptions.call(this, webhookUrl));
|
|
110
|
+
// Classify first, so the order inside the batch does not change the outcome. Logged
|
|
111
|
+
// request values are capped: the sender holds the secret, but the body is still input.
|
|
112
|
+
const gone = new Set();
|
|
113
|
+
const toRenew = new Set();
|
|
114
|
+
for (const { subscriptionId, lifecycleEvent } of items) {
|
|
115
|
+
if (typeof subscriptionId !== 'string') {
|
|
116
|
+
log('debug', 'ignored lifecycle event without a subscription id', {
|
|
117
|
+
lifecycleEvent: lifecycleEvent.slice(0, 64),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else if (lifecycleEvent === 'subscriptionRemoved') {
|
|
121
|
+
gone.add(subscriptionId);
|
|
122
|
+
}
|
|
123
|
+
else if (lifecycleEvent === 'reauthorizationRequired') {
|
|
124
|
+
toRenew.add(subscriptionId);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
log('debug', 'ignored lifecycle event', {
|
|
128
|
+
subscriptionId: subscriptionId.slice(0, 64),
|
|
129
|
+
lifecycleEvent: lifecycleEvent.slice(0, 64),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const unresolved = new Set();
|
|
134
|
+
const renewed = new Set();
|
|
135
|
+
let needsReconcile = gone.size > 0;
|
|
136
|
+
for (const subscriptionId of toRenew) {
|
|
137
|
+
if (gone.has(subscriptionId))
|
|
138
|
+
continue;
|
|
139
|
+
let isOwn;
|
|
140
|
+
try {
|
|
141
|
+
isOwn =
|
|
142
|
+
storedIds.includes(subscriptionId) ||
|
|
143
|
+
(await ownSubscriptions()).some((subscription) => subscription.id === subscriptionId);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Route to the reconcile, which awaits the same rejected listing and warns once.
|
|
147
|
+
unresolved.add(subscriptionId);
|
|
148
|
+
needsReconcile = true;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (!isOwn) {
|
|
152
|
+
log('debug', 'skipped renewal: unknown subscription', {
|
|
153
|
+
subscriptionId: subscriptionId.slice(0, 64),
|
|
154
|
+
});
|
|
155
|
+
needsReconcile = true;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
await transport_1.microsoftApiRequest.call(this, 'PATCH', transport_1.buildTeamsPath.call(this, ['/v1.0/subscriptions/', { id: subscriptionId }]), { expirationDateTime: newSubscriptionExpiry() });
|
|
160
|
+
renewed.add(subscriptionId);
|
|
161
|
+
log('debug', 'renewed subscription', { subscriptionId });
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
if (error instanceof n8n_workflow_1.NodeApiError && error.httpCode === '404') {
|
|
165
|
+
gone.add(subscriptionId);
|
|
166
|
+
needsReconcile = true;
|
|
167
|
+
log('debug', 'subscription gone, will re-create', { subscriptionId });
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
log('warn', 'failed to renew subscription', {
|
|
171
|
+
subscriptionId,
|
|
172
|
+
error: (0, ensure_error_1.ensureError)(error).message,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (!needsReconcile) {
|
|
178
|
+
// Store the ids that the listing proved to be own, so `delete()` removes them on unpublish.
|
|
179
|
+
const discovered = [...renewed].filter((id) => !storedIds.includes(id));
|
|
180
|
+
if (discovered.length > 0)
|
|
181
|
+
webhookData.subscriptionIds = [...storedIds, ...discovered];
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const affectedIds = [...gone, ...unresolved].slice(0, 20).map((id) => id.slice(0, 64));
|
|
185
|
+
let subscriptions;
|
|
186
|
+
let requiredResources;
|
|
187
|
+
try {
|
|
188
|
+
subscriptions = await ownSubscriptions();
|
|
189
|
+
const resourcePaths = await getResourcePath.call(this, this.getNodeParameter('event'));
|
|
190
|
+
requiredResources = Array.isArray(resourcePaths) ? resourcePaths : [resourcePaths];
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
log('warn', 'failed to list subscriptions or resolve resources, skipped re-create', {
|
|
194
|
+
subscriptionIds: affectedIds,
|
|
195
|
+
error: (0, ensure_error_1.ensureError)(error).message,
|
|
196
|
+
});
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
// Partition once: an id renewed in this request stays live even when its listed expiry
|
|
200
|
+
// passed meanwhile, and the awaited deletes below must not move the line.
|
|
201
|
+
const live = subscriptions.filter((subscription) => !gone.has(subscription.id) &&
|
|
202
|
+
(renewed.has(subscription.id) || isLiveSubscription(subscription)));
|
|
203
|
+
const liveIds = new Set(live.map((subscription) => subscription.id));
|
|
204
|
+
// Every other own subscription is removed before its replacement is created, so the two
|
|
205
|
+
// never deliver together and Graph does not reject the replacement as a duplicate. One
|
|
206
|
+
// that Graph already removed answers 404, which counts as done.
|
|
207
|
+
for (const { id } of subscriptions) {
|
|
208
|
+
if (liveIds.has(id))
|
|
209
|
+
continue;
|
|
210
|
+
try {
|
|
211
|
+
await deleteSubscription.call(this, id);
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
log('debug', 'failed to remove a stale subscription', {
|
|
215
|
+
subscriptionId: id,
|
|
216
|
+
error: (0, ensure_error_1.ensureError)(error).message,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
const liveResources = new Set(live.map((subscription) => subscription.resource));
|
|
221
|
+
const created = [];
|
|
222
|
+
for (const resource of requiredResources.filter((path) => !liveResources.has(path))) {
|
|
223
|
+
try {
|
|
224
|
+
const subscription = await createSubscription.call(this, webhookUrl, resource, clientState);
|
|
225
|
+
created.push(subscription.id);
|
|
226
|
+
log('debug', 're-created subscription', { resource, subscriptionId: subscription.id });
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
log('warn', 'failed to re-create subscription', {
|
|
230
|
+
resource,
|
|
231
|
+
subscriptionIds: affectedIds,
|
|
232
|
+
error: (0, ensure_error_1.ensureError)(error).message,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
const nextIds = [...live.map((subscription) => subscription.id), ...created];
|
|
237
|
+
// Every save is a DB write and widens the last-write-wins window, so save on change only.
|
|
238
|
+
const unchanged = nextIds.length === rawIds.length && nextIds.every((id) => rawIds.includes(id));
|
|
239
|
+
if (!unchanged)
|
|
240
|
+
webhookData.subscriptionIds = nextIds;
|
|
241
|
+
}
|
|
42
242
|
function verifyWebhook() {
|
|
43
243
|
const req = this.getRequestObject();
|
|
44
244
|
const webhookData = this.getWorkflowStaticData('node');
|
|
45
|
-
const expectedSecret = webhookData
|
|
245
|
+
const expectedSecret = getStoredSecret(webhookData);
|
|
46
246
|
const body = req.body;
|
|
47
247
|
const notifications = body?.value;
|
|
48
248
|
if (!Array.isArray(notifications) || notifications.length === 0) {
|
|
@@ -53,7 +253,7 @@ function verifyWebhook() {
|
|
|
53
253
|
? notification.clientState
|
|
54
254
|
: undefined;
|
|
55
255
|
return (0, webhook_signature_verification_1.verifySignature)({
|
|
56
|
-
getExpectedSignature: () =>
|
|
256
|
+
getExpectedSignature: () => expectedSecret ?? null,
|
|
57
257
|
skipIfNoExpectedSignature: true,
|
|
58
258
|
getActualSignature: () => (typeof actualClientState === 'string' ? actualClientState : null),
|
|
59
259
|
});
|