@siglo/notifications 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/steps.js CHANGED
@@ -46,64 +46,148 @@ function createNotificationStep(name, options, enrich) {
46
46
  return await action();
47
47
  }
48
48
  catch (error) {
49
- (0, core_1.recordInspection)({ version: 1, kind: 'notification', outcome: 'failure',
50
- approval: !!enrich, tokenStatus: 'unavailable', durationMs: Date.now() - started,
51
- channel: typeof options.channel === 'string' ? options.channel : undefined });
49
+ (0, core_1.recordInspection)({
50
+ version: 1,
51
+ kind: 'notification',
52
+ outcome: 'failure',
53
+ approval: !!enrich,
54
+ tokenStatus: 'unavailable',
55
+ durationMs: Date.now() - started,
56
+ channel: typeof options.channel === 'string' ? options.channel : undefined,
57
+ });
52
58
  throw error;
53
59
  }
54
60
  };
55
- const dispatchKey = (ctx) => `${typeof ctx?.$stackId === 'function' ? ctx.$stackId() : ctx?.$stackId || ctx?.stackId || 'standalone'}:${name}:${(0, node_crypto_1.createHash)('sha256').update(JSON.stringify(resolve(options.recipient, ctx))).digest('hex')}`;
61
+ const dispatchKey = (ctx) => `${typeof ctx?.$stackId === 'function' ? ctx.$stackId() : ctx?.$stackId || ctx?.stackId || 'standalone'}:${name}:${(0, node_crypto_1.createHash)('sha256')
62
+ .update(JSON.stringify(resolve(options.recipient, ctx)))
63
+ .digest('hex')}`;
56
64
  const action = async (ctx, inspection) => {
57
65
  const channel = resolve(options.channel, ctx), to = resolve(options.recipient, ctx), transport = transportFor(ctx);
58
66
  if (transport.channel !== channel)
59
67
  throw new Error('Notification transport channel mismatch');
60
68
  assertTransportPolicy(name, transport);
61
- const target = typeof to === 'string' ? to : channel === 'email' ? to.email : channel === 'sms' ? to.phone : channel === 'slack' ? to.slackChannelId || to.slackUserId : channel === 'push' ? to.pushToken : to.discordWebhookUrl;
69
+ const target = typeof to === 'string'
70
+ ? to
71
+ : channel === 'email'
72
+ ? to.email
73
+ : channel === 'sms'
74
+ ? to.phone
75
+ : channel === 'slack'
76
+ ? to.slackChannelId || to.slackUserId
77
+ : channel === 'push'
78
+ ? to.pushToken
79
+ : to.discordWebhookUrl;
62
80
  const idempotencyKey = (0, node_crypto_1.createHash)('sha256').update(dispatchKey(ctx)).digest('hex');
63
81
  const intent = await (options.dispatchStore ?? (0, dispatch_1.getNotificationDispatchStore)()).prepare(idempotencyKey, async () => {
64
82
  const enriched = await enrich?.(ctx);
65
- return { message: { to, idempotencyKey, subject: options.subject === undefined ? undefined : resolve(options.subject, ctx), content: resolve(options.template, ctx), interactiveActions: enriched?.actions }, extra: enriched?.extra };
83
+ return {
84
+ message: {
85
+ to,
86
+ idempotencyKey,
87
+ subject: options.subject === undefined ? undefined : resolve(options.subject, ctx),
88
+ content: resolve(options.template, ctx),
89
+ interactiveActions: enriched?.actions,
90
+ },
91
+ extra: enriched?.extra,
92
+ };
66
93
  });
67
94
  inspection.content = (0, core_1.captureInspection)(options.capture, 'preview', intent.message.content);
68
- const result = await transport.send({ ...intent.message, signal: typeof ctx?.$signal === 'function' ? ctx.$signal() : ctx?.$signal });
69
- const metadata = { notificationId: result.id, channel, dispatchedAt: result.timestamp, recipientMasked: `${target.slice(0, 1)}***` };
70
- const stackId = typeof ctx?.$stackId === 'function' ? ctx.$stackId() : ctx?.$stackId || ctx?.stackId || 'standalone';
95
+ const result = await transport.send({
96
+ ...intent.message,
97
+ signal: typeof ctx?.$signal === 'function' ? ctx.$signal() : ctx?.$signal,
98
+ });
99
+ const metadata = {
100
+ notificationId: result.id,
101
+ channel,
102
+ dispatchedAt: result.timestamp,
103
+ recipientMasked: `${target.slice(0, 1)}***`,
104
+ };
105
+ const stackId = typeof ctx?.$stackId === 'function'
106
+ ? ctx.$stackId()
107
+ : ctx?.$stackId || ctx?.stackId || 'standalone';
71
108
  metadata.stackId = stackId;
72
109
  if (enrich && typeof intent.extra?.approvalExpiresAt === 'number') {
73
110
  metadata.approvalExpiresAt = intent.extra.approvalExpiresAt;
74
111
  }
75
- return { ...intent.extra, notificationId: result.id, sentAt: result.timestamp, $notificationMetadata: metadata, notificationMetadata: metadata };
112
+ return {
113
+ ...intent.extra,
114
+ notificationId: result.id,
115
+ sentAt: result.timestamp,
116
+ $notificationMetadata: metadata,
117
+ notificationMetadata: metadata,
118
+ };
76
119
  };
77
120
  const step = new core_1.Step(name, ctx => {
78
121
  const inspection = {
79
- version: 1, kind: 'notification', outcome: 'failure', approval: !!enrich,
80
- channel: typeof options.channel === 'string' ? options.channel : undefined
122
+ version: 1,
123
+ kind: 'notification',
124
+ outcome: 'failure',
125
+ approval: !!enrich,
126
+ channel: typeof options.channel === 'string' ? options.channel : undefined,
81
127
  };
82
- return (0, core_1.observeEcosystem)(inspection, () => action(ctx, inspection), result => ({ channel: result.$notificationMetadata.channel,
83
- notificationId: result.notificationId, approvalState: enrich ? 'requested' : undefined, approvalExpiresAt: result.$notificationMetadata.approvalExpiresAt, tokenStatus: enrich ? 'issued' : 'unavailable' }));
128
+ return (0, core_1.observeEcosystem)(inspection, () => action(ctx, inspection), result => ({
129
+ channel: result.$notificationMetadata.channel,
130
+ notificationId: result.notificationId,
131
+ approvalState: enrich ? 'requested' : undefined,
132
+ approvalExpiresAt: result.$notificationMetadata.approvalExpiresAt,
133
+ tokenStatus: enrich ? 'issued' : 'unavailable',
134
+ }));
84
135
  });
85
- step.schema({ '~standard': { version: 1, vendor: 'siglo-notifications', validate: async (ctx) => inspectPreAction(async () => {
136
+ step.schema({
137
+ '~standard': {
138
+ version: 1,
139
+ vendor: 'siglo-notifications',
140
+ validate: async (ctx) => inspectPreAction(async () => {
86
141
  const channel = resolve(options.channel, ctx), to = resolve(options.recipient, ctx);
87
- const target = typeof to === 'string' ? to : channel === 'email' ? to.email : channel === 'sms' ? to.phone : channel === 'slack' ? to.slackChannelId || to.slackUserId : channel === 'push' ? to.pushToken : to.discordWebhookUrl;
88
- const valid = target && (channel === 'email' ? /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(target) : channel === 'sms' ? /^\+[1-9]\d{6,14}$/.test(target) : channel === 'slack' ? /^[A-Z][A-Z0-9]+$/.test(target) : channel === 'push' ? target.length > 0 : /^https:\/\/discord.com\/api\/webhooks\//.test(target));
142
+ const target = typeof to === 'string'
143
+ ? to
144
+ : channel === 'email'
145
+ ? to.email
146
+ : channel === 'sms'
147
+ ? to.phone
148
+ : channel === 'slack'
149
+ ? to.slackChannelId || to.slackUserId
150
+ : channel === 'push'
151
+ ? to.pushToken
152
+ : to.discordWebhookUrl;
153
+ const valid = target &&
154
+ (channel === 'email'
155
+ ? /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(target)
156
+ : channel === 'sms'
157
+ ? /^\+[1-9]\d{6,14}$/.test(target)
158
+ : channel === 'slack'
159
+ ? /^[A-Z][A-Z0-9]+$/.test(target)
160
+ : channel === 'push'
161
+ ? target.length > 0
162
+ : /^https:\/\/discord.com\/api\/webhooks\//.test(target));
89
163
  if (!valid)
90
164
  throw new core_1.ValidationException([{ field: 'recipient', message: 'Invalid notification recipient' }], { phase: 'validation', retryable: false });
91
165
  if (options.dataSchema)
92
166
  await (0, http_1.validatePayload)(options.dataSchema, options.data?.(ctx) ?? ctx, 'validation', name);
93
167
  return { value: ctx };
94
- }) } });
168
+ }),
169
+ },
170
+ });
95
171
  step.onAfter(async (output) => {
96
172
  const metadata = output.$notificationMetadata;
97
173
  const stackId = metadata.stackId;
98
- for (const type of (enrich ? ['notification:dispatched', 'approval:requested'] : ['notification:dispatched'])) {
174
+ for (const type of (enrich
175
+ ? ['notification:dispatched', 'approval:requested']
176
+ : ['notification:dispatched'])) {
99
177
  (0, core_1.emitMonitoringEvent)({ monitor: core_1.defaultStorageManager.getStack(stackId)?.monitor }, (0, core_1.redactEvent)({ type, stackId, stepId: name, timestamp: output.sentAt, ...metadata }));
100
178
  }
101
179
  return output;
102
180
  });
103
- step.onBefore(async (ctx) => inspectPreAction(() => { assertTransportPolicy(name, transportFor(ctx)); return true; }));
181
+ step.onBefore(async (ctx) => inspectPreAction(() => {
182
+ assertTransportPolicy(name, transportFor(ctx));
183
+ return true;
184
+ }));
104
185
  if (options.transport)
105
186
  step.allowNetwork(options.transport.allowedHosts);
106
- step.idempotent(dispatchKey, { ttlMs: (options.deduplicationTtl ?? 86400) * 1000, store: options.idempotencyStore });
187
+ step.idempotent(dispatchKey, {
188
+ ttlMs: (options.deduplicationTtl ?? 86400) * 1000,
189
+ store: options.idempotencyStore,
190
+ });
107
191
  if (options.compensateOnFailure) {
108
192
  if (options.transport)
109
193
  step.compensate((out) => cancelNotification(out, options.transport));
@@ -116,16 +200,48 @@ function sendInteractiveApprovalStep(name, options) {
116
200
  const ttl = (0, core_1.parseDuration)(options.timeout);
117
201
  if (!ttl || !Number.isFinite(ttl) || ttl <= 0)
118
202
  throw new Error('Approval timeout must be positive');
119
- return createNotificationStep(name, { capture: options.capture, channel: options.channel, recipient: options.recipient, template: options.title, transport: options.transport, idempotencyStore: options.idempotencyStore, dispatchStore: options.dispatchStore, compensateOnFailure: options.autoCompensate }, async (ctx) => {
203
+ return createNotificationStep(name, {
204
+ capture: options.capture,
205
+ channel: options.channel,
206
+ recipient: options.recipient,
207
+ template: options.title,
208
+ transport: options.transport,
209
+ idempotencyStore: options.idempotencyStore,
210
+ dispatchStore: options.dispatchStore,
211
+ compensateOnFailure: options.autoCompensate,
212
+ }, async (ctx) => {
120
213
  const correlationKey = resolve(options.correlationKey, ctx);
121
- const stackId = typeof ctx?.$stackId === 'function' ? ctx.$stackId() : ctx?.$stackId || ctx?.stackId || correlationKey;
214
+ const stackId = typeof ctx?.$stackId === 'function'
215
+ ? ctx.$stackId()
216
+ : ctx?.$stackId || ctx?.stackId || correlationKey;
122
217
  const expiresAt = Date.now() + ttl;
123
218
  const scope = core_1.stepInspectionStorage.getStore();
124
- const inspection = scope ? { stepId: scope.stepId, stepName: scope.stepName, attempt: scope.attempt, namespace: scope.namespace } : undefined;
125
- const url = async (approved) => { const u = new URL(options.callbackBaseUrl); if (u.protocol !== 'https:' && u.hostname !== 'localhost')
126
- throw new Error('Callback URL must use HTTPS'); u.searchParams.set('token', await (0, tokens_1.signActionToken)({ stackId, correlationKey, expectedEvent: approved ? options.onApproveEvent : options.onRejectEvent, approved, expiresAt, inspection }, options.signingSecret)); return u.toString(); };
219
+ const inspection = scope
220
+ ? { stepId: scope.stepId, stepName: scope.stepName, attempt: scope.attempt, namespace: scope.namespace }
221
+ : undefined;
222
+ const url = async (approved) => {
223
+ const u = new URL(options.callbackBaseUrl);
224
+ if (u.protocol !== 'https:' && u.hostname !== 'localhost')
225
+ throw new Error('Callback URL must use HTTPS');
226
+ u.searchParams.set('token', await (0, tokens_1.signActionToken)({
227
+ stackId,
228
+ correlationKey,
229
+ expectedEvent: approved ? options.onApproveEvent : options.onRejectEvent,
230
+ approved,
231
+ expiresAt,
232
+ inspection,
233
+ }, options.signingSecret));
234
+ return u.toString();
235
+ };
127
236
  const approvalTokens = { approveUrl: await url(true), rejectUrl: await url(false) };
128
- return { actions: { ...approvalTokens, title: resolve(options.title, ctx), description: options.description === undefined ? undefined : resolve(options.description, ctx) }, extra: { correlationKey, approvalTokens, approvalExpiresAt: expiresAt } };
237
+ return {
238
+ actions: {
239
+ ...approvalTokens,
240
+ title: resolve(options.title, ctx),
241
+ description: options.description === undefined ? undefined : resolve(options.description, ctx),
242
+ },
243
+ extra: { correlationKey, approvalTokens, approvalExpiresAt: expiresAt },
244
+ };
129
245
  });
130
246
  }
131
247
  //# sourceMappingURL=steps.js.map
package/dist/steps.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"steps.js","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACnG,qBAAa,yBAA0B,YAAW,qBAAqB;IAGzD,QAAQ,CAAC,OAAO,EAAE,mBAAmB;IAAY,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE;IAAO,OAAO,CAAC,GAAG;IAF9G,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAM;IACtD,QAAQ,CAAC,aAAa,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAM;gBACzC,OAAO,GAAE,mBAA6B,EAAW,YAAY,GAAE,MAAM,EAAO,EAAU,GAAG,eAAW;IACnH,IAAI,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CACxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACnG,qBAAa,yBAA0B,YAAW,qBAAqB;IAI/D,QAAQ,CAAC,OAAO,EAAE,mBAAmB;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE;IAC/B,OAAO,CAAC,GAAG;IALf,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAM;IACtD,QAAQ,CAAC,aAAa,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAM;gBAEjD,OAAO,GAAE,mBAA6B,EACtC,YAAY,GAAE,MAAM,EAAO,EAC5B,GAAG,eAAW;IAEpB,IAAI,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAItF,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1D"}
@@ -12,8 +12,13 @@ class MockNotificationTransport {
12
12
  this.allowedHosts = allowedHosts;
13
13
  this.now = now;
14
14
  }
15
- async send(message) { this.messages.push(message); return { id: `mock-${this.messages.length}`, timestamp: this.now() }; }
16
- async cancel(id, reason) { this.cancellations.push({ id, reason }); }
15
+ async send(message) {
16
+ this.messages.push(message);
17
+ return { id: `mock-${this.messages.length}`, timestamp: this.now() };
18
+ }
19
+ async cancel(id, reason) {
20
+ this.cancellations.push({ id, reason });
21
+ }
17
22
  }
18
23
  exports.MockNotificationTransport = MockNotificationTransport;
19
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":";;;AACA,MAAa,yBAAyB;IAGf;IAAiD;IAAqC;IAFlG,QAAQ,GAAkC,EAAE,CAAC;IAC7C,aAAa,GAAqC,EAAE,CAAC;IAC9D,YAAqB,UAA+B,OAAO,EAAW,eAAyB,EAAE,EAAU,MAAM,IAAI,CAAC,GAAG;QAApG,YAAO,GAAP,OAAO,CAA+B;QAAW,iBAAY,GAAZ,YAAY,CAAe;QAAU,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAC7H,KAAK,CAAC,IAAI,CAAC,OAAoC,IAAgD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACnM,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,MAAc,IAAmB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;CACrG;AAND,8DAMC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":";;;AACA,MAAa,yBAAyB;IAIrB;IACA;IACD;IALH,QAAQ,GAAkC,EAAE,CAAC;IAC7C,aAAa,GAAqC,EAAE,CAAC;IAC9D,YACa,UAA+B,OAAO,EACtC,eAAyB,EAAE,EAC5B,MAAM,IAAI,CAAC,GAAG;QAFb,YAAO,GAAP,OAAO,CAA+B;QACtC,iBAAY,GAAZ,YAAY,CAAe;QAC5B,QAAG,GAAH,GAAG,CAAW;IACvB,CAAC;IACJ,KAAK,CAAC,IAAI,CAAC,OAAoC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACzE,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,MAAc;QACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;CACJ;AAfD,8DAeC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,OAAO,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AACnR,wBAAgB,YAAY,CAAC,OAAO,SAA2B,GAAG,KAAK,CAEtE;AACD,wBAAsB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,SAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAKlK;AACD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiBvK"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,OAAO,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1F;AACD,wBAAgB,YAAY,CAAC,OAAO,SAA2B,GAAG,KAAK,CAEtE;AACD,wBAAsB,eAAe,CACjC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC,EAC/D,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,GAAG,SAAa,GACjB,OAAO,CAAC,MAAM,CAAC,CAOjB;AACD,wBAAsB,iBAAiB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1D,OAAO,CAAC,kBAAkB,CAAC,CAwC7B"}
package/dist/tokens.js CHANGED
@@ -25,15 +25,24 @@ async function verifyActionToken(token, secret, options = {}) {
25
25
  const parts = token.split('.');
26
26
  const p = JSON.parse(Buffer.from(parts[0], 'base64url').toString());
27
27
  const key = typeof secret === 'string' ? secret : await secret.getKey(p.kid);
28
- if (!key || !(0, crypto_1.timingSafeCompare)((0, node_crypto_1.createHmac)('sha256', key).update(parts[0]).digest('base64url'), parts[1], 'base64url'))
28
+ if (!key ||
29
+ !(0, crypto_1.timingSafeCompare)((0, node_crypto_1.createHmac)('sha256', key).update(parts[0]).digest('base64url'), parts[1], 'base64url'))
29
30
  invalidToken();
30
31
  const now = options.now ?? Date.now();
31
- if (![p.stackId, p.correlationKey, p.expectedEvent, p.nonce].every(v => typeof v === 'string' && v.length > 0) || typeof p.approved !== 'boolean' || !Number.isFinite(p.expiresAt) || !Number.isFinite(p.issuedAt) || p.issuedAt > now + (options.toleranceSeconds ?? 0) * 1000)
32
+ if (![p.stackId, p.correlationKey, p.expectedEvent, p.nonce].every(v => typeof v === 'string' && v.length > 0) ||
33
+ typeof p.approved !== 'boolean' ||
34
+ !Number.isFinite(p.expiresAt) ||
35
+ !Number.isFinite(p.issuedAt) ||
36
+ p.issuedAt > now + (options.toleranceSeconds ?? 0) * 1000)
32
37
  invalidToken();
33
- if (p.inspection && (typeof p.inspection.stepId !== 'string' || !p.inspection.stepId ||
34
- typeof p.inspection.stepName !== 'string' || !p.inspection.stepName ||
35
- !Number.isSafeInteger(p.inspection.attempt) || p.inspection.attempt < 1 ||
36
- (p.inspection.namespace !== undefined && typeof p.inspection.namespace !== 'string')))
38
+ if (p.inspection &&
39
+ (typeof p.inspection.stepId !== 'string' ||
40
+ !p.inspection.stepId ||
41
+ typeof p.inspection.stepName !== 'string' ||
42
+ !p.inspection.stepName ||
43
+ !Number.isSafeInteger(p.inspection.attempt) ||
44
+ p.inspection.attempt < 1 ||
45
+ (p.inspection.namespace !== undefined && typeof p.inspection.namespace !== 'string')))
37
46
  invalidToken();
38
47
  if (p.expiresAt <= now)
39
48
  invalidToken('Approval token expired');
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAuB,MAAM,SAAS,CAAC;AAClG,eAAO,MAAM,UAAU,MAAO,MAAM,KAAG,MACsE,CAAC;AAC9G,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAG7E;AACD,UAAU,oBAAoB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAgCD,qBAAa,cAAe,YAAW,qBAAqB;IAG5C,OAAO,CAAC,OAAO;IAF3B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,WAAiB;gBAClB,OAAO,EAAE,oBAAoB;YACnC,IAAI;IAWZ,IAAI,CAAC,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAkChF,SAAS,CACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAC/D,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC;IAkBZ,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAI1D;AACD,qBAAa,eAAgB,YAAW,qBAAqB;IAG7C,OAAO,CAAC,OAAO;IAF3B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,WAAsB;gBACvB,OAAO,EAAE,oBAAoB;IAC3C,IAAI,CAAC,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAmBzF;AACD,qBAAa,iBAAkB,YAAW,qBAAqB;IAG/C,OAAO,CAAC,OAAO;IAF3B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,WAAwB;gBACzB,OAAO,EAAE,oBAAoB;IAC3C,IAAI,CAAC,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAkBzF;AACD,qBAAa,gBAAiB,YAAW,qBAAqB;IAG9C,OAAO,CAAC,OAAO;IAF3B,QAAQ,CAAC,OAAO,aAAa;IAC7B,QAAQ,CAAC,YAAY,WAAmB;gBACpB,OAAO,eAA0B;IAC/C,IAAI,CAAC,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAyBzF;AACD,qBAAa,eAAgB,YAAW,qBAAqB;IAG7C,OAAO,CAAC,OAAO;IAF3B,QAAQ,CAAC,OAAO,SAAS;IACzB,QAAQ,CAAC,YAAY,WAAsB;gBACvB,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;KAAE;IACpG,IAAI,CAAC,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAkBzF;AACD,mFAAmF;AACnF,qBAAa,aAAc,YAAW,qBAAqB;IAInD,OAAO,CAAC,OAAO;IAHnB,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;gBAEpB,OAAO,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,CAAC,IAAI,EAAE;YACb,IAAI,EAAE,MAAM,CAAC;YACb,EAAE,EAAE,MAAM,CAAC;YACX,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,CAAC,EAAE,WAAW,CAAC;SACxB,KAAK,OAAO,CAAC;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxC;IAIC,IAAI,CAAC,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAWzF;AAED,qBAAa,iBAAkB,YAAW,qBAAqB;IAG/C,OAAO,CAAC,OAAO;IAF3B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,WAA2B;gBAC5B,OAAO,EAAE,oBAAoB;IAC3C,IAAI,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAiB/F;AAED,gFAAgF;AAChF,qBAAa,oBAAqB,YAAW,qBAAqB;IAGlD,OAAO,CAAC,OAAO;IAF3B,QAAQ,CAAC,OAAO,UAAU;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;gBACZ,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;KAAE;IAM9F,IAAI,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAsB/F"}
@@ -13,12 +13,24 @@ function renderNotificationHtml(m) {
13
13
  function recipient(m, channel) {
14
14
  if (typeof m.to === 'string')
15
15
  return m.to;
16
- return (channel === 'email' ? m.to.email : channel === 'sms' ? m.to.phone : channel === 'slack' ? m.to.slackChannelId || m.to.slackUserId : m.to.discordWebhookUrl);
16
+ return (channel === 'email'
17
+ ? m.to.email
18
+ : channel === 'sms'
19
+ ? m.to.phone
20
+ : channel === 'slack'
21
+ ? m.to.slackChannelId || m.to.slackUserId
22
+ : m.to.discordWebhookUrl);
17
23
  }
18
24
  async function post(url, headers, body, signal, request = egress_1.publicNotificationFetch) {
19
25
  const u = new URL(url);
20
26
  (0, http_1.assertNetworkPolicy)('notificationTransport', url, u.hostname, u.port);
21
- const r = await request(url, { method: 'POST', headers, body: typeof body === 'string' ? body : JSON.stringify(body), signal, redirect: 'error' });
27
+ const r = await request(url, {
28
+ method: 'POST',
29
+ headers,
30
+ body: typeof body === 'string' ? body : JSON.stringify(body),
31
+ signal,
32
+ redirect: 'error',
33
+ });
22
34
  if (!r.ok)
23
35
  throw new Error(`Notification provider failed (${r.status})`);
24
36
  return r.status === 204 ? {} : r.json();
@@ -38,16 +50,52 @@ class SlackTransport {
38
50
  }
39
51
  async send(m) {
40
52
  const a = m.interactiveActions;
41
- const r = await this.call('chat.postMessage', { channel: recipient(m, this.channel), text: m.content, blocks: [{ type: 'section', text: { type: 'plain_text', text: m.content } }, ...(a ? [{ type: 'actions', elements: [{ type: 'button', text: { type: 'plain_text', text: 'Approve' }, url: a.approveUrl }, { type: 'button', text: { type: 'plain_text', text: 'Reject' }, url: a.rejectUrl }] }] : [])] }, m.signal);
53
+ const r = await this.call('chat.postMessage', {
54
+ channel: recipient(m, this.channel),
55
+ text: m.content,
56
+ blocks: [
57
+ { type: 'section', text: { type: 'plain_text', text: m.content } },
58
+ ...(a
59
+ ? [
60
+ {
61
+ type: 'actions',
62
+ elements: [
63
+ {
64
+ type: 'button',
65
+ text: { type: 'plain_text', text: 'Approve' },
66
+ url: a.approveUrl,
67
+ },
68
+ {
69
+ type: 'button',
70
+ text: { type: 'plain_text', text: 'Reject' },
71
+ url: a.rejectUrl,
72
+ },
73
+ ],
74
+ },
75
+ ]
76
+ : []),
77
+ ],
78
+ }, m.signal);
42
79
  return { id: `${r.channel}:${r.ts}`, timestamp: Date.now() };
43
80
  }
44
81
  async openModal(triggerId, view, signal) {
45
82
  if (!triggerId || !view.title || view.title.length > 24)
46
83
  throw new Error('A trigger ID and modal title of at most 24 characters are required');
47
- const result = await this.call('views.open', { trigger_id: triggerId, view: { type: 'modal', title: { type: 'plain_text', text: view.title }, blocks: view.blocks, callback_id: view.callbackId } }, signal);
84
+ const result = await this.call('views.open', {
85
+ trigger_id: triggerId,
86
+ view: {
87
+ type: 'modal',
88
+ title: { type: 'plain_text', text: view.title },
89
+ blocks: view.blocks,
90
+ callback_id: view.callbackId,
91
+ },
92
+ }, signal);
48
93
  return result.view.id;
49
94
  }
50
- async cancel(id, reason) { const [channel, ts] = id.split(':'); await this.call('chat.update', { channel, ts, text: reason, blocks: [] }); }
95
+ async cancel(id, reason) {
96
+ const [channel, ts] = id.split(':');
97
+ await this.call('chat.update', { channel, ts, text: reason, blocks: [] });
98
+ }
51
99
  }
52
100
  exports.SlackTransport = SlackTransport;
53
101
  class ResendTransport {
@@ -58,7 +106,16 @@ class ResendTransport {
58
106
  this.options = options;
59
107
  }
60
108
  async send(m) {
61
- const r = await post('https://api.resend.com/emails', { Authorization: `Bearer ${this.options.apiKey}`, 'Content-Type': 'application/json', ...(m.idempotencyKey ? { 'Idempotency-Key': m.idempotencyKey } : {}) }, { from: this.options.from, to: recipient(m, this.channel), subject: m.subject ?? m.content, html: renderNotificationHtml(m) }, m.signal, this.options.fetch);
109
+ const r = await post('https://api.resend.com/emails', {
110
+ Authorization: `Bearer ${this.options.apiKey}`,
111
+ 'Content-Type': 'application/json',
112
+ ...(m.idempotencyKey ? { 'Idempotency-Key': m.idempotencyKey } : {}),
113
+ }, {
114
+ from: this.options.from,
115
+ to: recipient(m, this.channel),
116
+ subject: m.subject ?? m.content,
117
+ html: renderNotificationHtml(m),
118
+ }, m.signal, this.options.fetch);
62
119
  return { id: r.id, timestamp: Date.now() };
63
120
  }
64
121
  }
@@ -73,7 +130,18 @@ class SendGridTransport {
73
130
  async send(m) {
74
131
  const url = 'https://api.sendgrid.com/v3/mail/send';
75
132
  (0, http_1.assertNetworkPolicy)('sendgrid', url, 'api.sendgrid.com');
76
- const r = await (this.options.fetch ?? egress_1.publicNotificationFetch)(url, { method: 'POST', redirect: 'error', signal: m.signal, headers: { Authorization: `Bearer ${this.options.apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ personalizations: [{ to: [{ email: recipient(m, this.channel) }] }], from: { email: this.options.from }, subject: m.subject ?? m.content, content: [{ type: 'text/html', value: renderNotificationHtml(m) }] }) });
133
+ const r = await (this.options.fetch ?? egress_1.publicNotificationFetch)(url, {
134
+ method: 'POST',
135
+ redirect: 'error',
136
+ signal: m.signal,
137
+ headers: { Authorization: `Bearer ${this.options.apiKey}`, 'Content-Type': 'application/json' },
138
+ body: JSON.stringify({
139
+ personalizations: [{ to: [{ email: recipient(m, this.channel) }] }],
140
+ from: { email: this.options.from },
141
+ subject: m.subject ?? m.content,
142
+ content: [{ type: 'text/html', value: renderNotificationHtml(m) }],
143
+ }),
144
+ });
77
145
  if (!r.ok)
78
146
  throw new Error(`SendGrid notification failed (${r.status})`);
79
147
  return { id: r.headers.get('x-message-id') ?? '', timestamp: Date.now() };
@@ -92,7 +160,18 @@ class DiscordTransport {
92
160
  if (u.protocol !== 'https:' || u.hostname !== 'discord.com' || !u.pathname.startsWith('/api/webhooks/'))
93
161
  throw new Error('Invalid Discord webhook');
94
162
  u.searchParams.set('wait', 'true');
95
- const r = await post(u.toString(), { 'Content-Type': 'application/json' }, { content: m.content, allowed_mentions: { parse: [] }, embeds: m.interactiveActions ? [{ title: m.interactiveActions.title, description: `${m.interactiveActions.description ?? ''}\n[Approve](${m.interactiveActions.approveUrl}) · [Reject](${m.interactiveActions.rejectUrl})` }] : undefined }, m.signal, this.request);
163
+ const r = await post(u.toString(), { 'Content-Type': 'application/json' }, {
164
+ content: m.content,
165
+ allowed_mentions: { parse: [] },
166
+ embeds: m.interactiveActions
167
+ ? [
168
+ {
169
+ title: m.interactiveActions.title,
170
+ description: `${m.interactiveActions.description ?? ''}\n[Approve](${m.interactiveActions.approveUrl}) · [Reject](${m.interactiveActions.rejectUrl})`,
171
+ },
172
+ ]
173
+ : undefined,
174
+ }, m.signal, this.request);
96
175
  return { id: r.id, timestamp: Date.now() };
97
176
  }
98
177
  }
@@ -107,7 +186,14 @@ class TwilioTransport {
107
186
  async send(m) {
108
187
  if (!/^AC[a-zA-Z0-9]+$/.test(this.options.accountSid))
109
188
  throw new Error('Invalid Twilio account SID');
110
- const r = await post(`https://api.twilio.com/2010-04-01/Accounts/${this.options.accountSid}/Messages.json`, { Authorization: `Basic ${Buffer.from(`${this.options.accountSid}:${this.options.authToken}`).toString('base64')}`, 'Content-Type': 'application/x-www-form-urlencoded' }, new URLSearchParams({ To: recipient(m, this.channel), From: this.options.from, Body: m.content }).toString(), m.signal, this.options.fetch);
189
+ const r = await post(`https://api.twilio.com/2010-04-01/Accounts/${this.options.accountSid}/Messages.json`, {
190
+ Authorization: `Basic ${Buffer.from(`${this.options.accountSid}:${this.options.authToken}`).toString('base64')}`,
191
+ 'Content-Type': 'application/x-www-form-urlencoded',
192
+ }, new URLSearchParams({
193
+ To: recipient(m, this.channel),
194
+ From: this.options.from,
195
+ Body: m.content,
196
+ }).toString(), m.signal, this.options.fetch);
111
197
  return { id: r.sid, timestamp: Date.now() };
112
198
  }
113
199
  }
@@ -123,7 +209,13 @@ class SmtpTransport {
123
209
  }
124
210
  async send(m) {
125
211
  (0, http_1.assertNetworkPolicy)('smtp', `smtp://${this.options.host}`, this.options.host);
126
- const r = await this.options.sendMail({ from: this.options.from, to: recipient(m, this.channel), subject: m.subject ?? m.content, html: renderNotificationHtml(m), signal: m.signal });
212
+ const r = await this.options.sendMail({
213
+ from: this.options.from,
214
+ to: recipient(m, this.channel),
215
+ subject: m.subject ?? m.content,
216
+ html: renderNotificationHtml(m),
217
+ signal: m.signal,
218
+ });
127
219
  return { id: r.messageId, timestamp: Date.now() };
128
220
  }
129
221
  }
@@ -137,8 +229,11 @@ class PostmarkTransport {
137
229
  }
138
230
  async send(message) {
139
231
  const result = await post('https://api.postmarkapp.com/email', { 'X-Postmark-Server-Token': this.options.apiKey, 'Content-Type': 'application/json' }, {
140
- From: this.options.from, To: recipient(message, 'email'), Subject: message.subject ?? message.content,
141
- HtmlBody: renderNotificationHtml(message), TextBody: message.content
232
+ From: this.options.from,
233
+ To: recipient(message, 'email'),
234
+ Subject: message.subject ?? message.content,
235
+ HtmlBody: renderNotificationHtml(message),
236
+ TextBody: message.content,
142
237
  }, message.signal, this.options.fetch);
143
238
  if (result.ErrorCode)
144
239
  throw new Error('Postmark notification request failed');
@@ -159,9 +254,16 @@ class PushWebhookTransport {
159
254
  this.allowedHosts = [url.hostname];
160
255
  }
161
256
  async send(message) {
162
- const result = await post(this.options.url, { ...this.options.headers, 'Content-Type': 'application/json', ...(message.idempotencyKey ? { 'Idempotency-Key': message.idempotencyKey } : {}) }, {
257
+ const result = await post(this.options.url, {
258
+ ...this.options.headers,
259
+ 'Content-Type': 'application/json',
260
+ ...(message.idempotencyKey ? { 'Idempotency-Key': message.idempotencyKey } : {}),
261
+ }, {
163
262
  to: typeof message.to === 'string' ? message.to : message.to.pushToken,
164
- title: message.subject, body: message.content, actions: message.interactiveActions, metadata: message.metadata
263
+ title: message.subject,
264
+ body: message.content,
265
+ actions: message.interactiveActions,
266
+ metadata: message.metadata,
165
267
  }, message.signal, this.options.fetch);
166
268
  if (typeof result.id !== 'string' || !result.id)
167
269
  throw new Error('Push webhook response must contain a message id');