@objectstack/plugin-webhooks 15.1.1 → 16.0.0-rc.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/.turbo/turbo-build.log +20 -20
- package/CHANGELOG.md +51 -0
- package/dist/{chunk-I63ISOGO.cjs → chunk-PTMJ5BLL.cjs} +4 -4
- package/dist/chunk-PTMJ5BLL.cjs.map +1 -0
- package/dist/{chunk-YQG6SUP3.js → chunk-RBCYKJVL.js} +4 -4
- package/dist/chunk-RBCYKJVL.js.map +1 -0
- package/dist/index.cjs +35 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12 -5
- package/dist/index.js.map +1 -1
- package/dist/schema.cjs +2 -2
- package/dist/schema.d.cts +145 -830
- package/dist/schema.d.ts +145 -830
- package/dist/schema.js +1 -1
- package/dist/{translations-AV47AVPV.js → translations-EPJYANXJ.js} +9 -9
- package/dist/translations-EPJYANXJ.js.map +1 -0
- package/dist/{translations-OAKKANSP.cjs → translations-L2JAQDJB.cjs} +9 -9
- package/dist/translations-L2JAQDJB.cjs.map +1 -0
- package/package.json +4 -4
- package/src/auto-enqueuer.test.ts +37 -0
- package/src/auto-enqueuer.ts +24 -10
- package/src/sys-webhook.object.ts +3 -3
- package/src/translations/en.objects.generated.ts +2 -2
- package/src/translations/es-ES.objects.generated.ts +2 -2
- package/src/translations/ja-JP.objects.generated.ts +2 -2
- package/src/translations/zh-CN.objects.generated.ts +2 -2
- package/dist/chunk-I63ISOGO.cjs.map +0 -1
- package/dist/chunk-YQG6SUP3.js.map +0 -1
- package/dist/translations-AV47AVPV.js.map +0 -1
- package/dist/translations-OAKKANSP.cjs.map +0 -1
package/dist/schema.js
CHANGED
|
@@ -17,11 +17,11 @@ var enObjects = {
|
|
|
17
17
|
},
|
|
18
18
|
object_name: {
|
|
19
19
|
label: "Object",
|
|
20
|
-
help: "Short object name whose events fire this webhook
|
|
20
|
+
help: "Short object name whose record events (create/update/delete) fire this webhook"
|
|
21
21
|
},
|
|
22
22
|
triggers: {
|
|
23
23
|
label: "Triggers",
|
|
24
|
-
help: "Comma-separated event list: create,update,delete
|
|
24
|
+
help: "Comma-separated event list: create,update,delete"
|
|
25
25
|
},
|
|
26
26
|
url: {
|
|
27
27
|
label: "Target URL",
|
|
@@ -196,11 +196,11 @@ var zhCNObjects = {
|
|
|
196
196
|
},
|
|
197
197
|
object_name: {
|
|
198
198
|
label: "\u5BF9\u8C61",
|
|
199
|
-
help: "\u89E6\u53D1\u8BE5 Webhook \u7684\
|
|
199
|
+
help: "\u89E6\u53D1\u8BE5 Webhook \u7684\u8BB0\u5F55\u4E8B\u4EF6\uFF08create/update/delete\uFF09\u7684\u77ED\u5BF9\u8C61\u540D"
|
|
200
200
|
},
|
|
201
201
|
triggers: {
|
|
202
202
|
label: "\u89E6\u53D1\u5668",
|
|
203
|
-
help: "\u4EE5\u9017\u53F7\u5206\u9694\u7684\u4E8B\u4EF6\u5217\u8868\uFF1Acreate,update,delete
|
|
203
|
+
help: "\u4EE5\u9017\u53F7\u5206\u9694\u7684\u4E8B\u4EF6\u5217\u8868\uFF1Acreate,update,delete"
|
|
204
204
|
},
|
|
205
205
|
url: {
|
|
206
206
|
label: "\u76EE\u6807 URL",
|
|
@@ -375,11 +375,11 @@ var jaJPObjects = {
|
|
|
375
375
|
},
|
|
376
376
|
object_name: {
|
|
377
377
|
label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
|
|
378
|
-
help: "\u3053\u306E\u30A6\u30A7\u30D6\u30D5\u30C3\u30AF\u3092\u767A\u706B\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u77ED\u7E2E\u540D
|
|
378
|
+
help: "\u3053\u306E\u30A6\u30A7\u30D6\u30D5\u30C3\u30AF\u3092\u767A\u706B\u3059\u308B\u30EC\u30B3\u30FC\u30C9\u30A4\u30D9\u30F3\u30C8\uFF08create/update/delete\uFF09\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u77ED\u7E2E\u540D"
|
|
379
379
|
},
|
|
380
380
|
triggers: {
|
|
381
381
|
label: "\u30C8\u30EA\u30AC\u30FC",
|
|
382
|
-
help: "\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30A4\u30D9\u30F3\u30C8\u30EA\u30B9\u30C8: create,update,delete
|
|
382
|
+
help: "\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30A4\u30D9\u30F3\u30C8\u30EA\u30B9\u30C8: create,update,delete"
|
|
383
383
|
},
|
|
384
384
|
url: {
|
|
385
385
|
label: "\u30BF\u30FC\u30B2\u30C3\u30C8 URL",
|
|
@@ -554,11 +554,11 @@ var esESObjects = {
|
|
|
554
554
|
},
|
|
555
555
|
object_name: {
|
|
556
556
|
label: "Objeto",
|
|
557
|
-
help: "Nombre corto del objeto cuyos eventos
|
|
557
|
+
help: "Nombre corto del objeto cuyos eventos de registro (create/update/delete) activan este Webhook."
|
|
558
558
|
},
|
|
559
559
|
triggers: {
|
|
560
560
|
label: "Desencadenantes",
|
|
561
|
-
help: "Lista de eventos separada por comas: create,update,delete
|
|
561
|
+
help: "Lista de eventos separada por comas: create,update,delete."
|
|
562
562
|
},
|
|
563
563
|
url: {
|
|
564
564
|
label: "URL de destino",
|
|
@@ -724,4 +724,4 @@ var WebhooksTranslations = {
|
|
|
724
724
|
export {
|
|
725
725
|
WebhooksTranslations
|
|
726
726
|
};
|
|
727
|
-
//# sourceMappingURL=translations-
|
|
727
|
+
//# sourceMappingURL=translations-EPJYANXJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/translations/en.objects.generated.ts","../src/translations/zh-CN.objects.generated.ts","../src/translations/ja-JP.objects.generated.ts","../src/translations/es-ES.objects.generated.ts","../src/translations/index.ts"],"sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'en'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const enObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhooks\",\n description: \"Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"Name\",\n help: \"Unique snake_case name — referenced in logs and audit\"\n },\n label: {\n label: \"Display Label\"\n },\n object_name: {\n label: \"Object\",\n help: \"Short object name whose record events (create/update/delete) fire this webhook\"\n },\n triggers: {\n label: \"Triggers\",\n help: \"Comma-separated event list: create,update,delete\"\n },\n url: {\n label: \"Target URL\",\n help: \"External endpoint that receives the POST\"\n },\n method: {\n label: \"HTTP Method\",\n help: \"GET / POST / PUT / PATCH / DELETE\"\n },\n description: {\n label: \"Description\"\n },\n active: {\n label: \"Active\",\n help: \"Inactive webhooks are skipped by the dispatcher\"\n },\n definition_json: {\n label: \"Definition\",\n help: \"Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config\"\n },\n created_at: {\n label: \"Created At\"\n },\n updated_at: {\n label: \"Updated At\"\n }\n },\n _views: {\n active: {\n label: \"Active\"\n },\n inactive: {\n label: \"Inactive\"\n },\n by_object: {\n label: \"By Object\"\n },\n all_webhooks: {\n label: \"All\"\n }\n }\n },\n sys_webhook_delivery: {\n label: \"Webhook Delivery\",\n pluralLabel: \"Webhook Deliveries\",\n description: \"Durable outbox row for one webhook attempt. Managed by @objectstack/plugin-webhooks; do not write directly.\",\n fields: {\n id: {\n label: \"Delivery ID\",\n help: \"UUID — also doubles as the receiver-side idempotency key\"\n },\n webhook_id: {\n label: \"Webhook ID\",\n help: \"FK to sys_webhook.id (loosely coupled — denormalised URL/secret on row)\"\n },\n event_id: {\n label: \"Event ID\",\n help: \"Source event id; UNIQUE(event_id, webhook_id) for dedup\"\n },\n event_type: {\n label: \"Event Type\",\n help: \"e.g. data.record.created\"\n },\n url: {\n label: \"Target URL\",\n help: \"Snapshotted at enqueue so config edits do not rewrite live rows\"\n },\n method: {\n label: \"Method\"\n },\n headers_json: {\n label: \"Headers JSON\"\n },\n secret: {\n label: \"HMAC Secret\"\n },\n timeout_ms: {\n label: \"Timeout (ms)\"\n },\n payload_json: {\n label: \"Payload JSON\"\n },\n partition_key: {\n label: \"Partition\",\n help: \"hash(webhook_id) mod partitionCount — precomputed for cheap WHERE\"\n },\n status: {\n label: \"Status\",\n help: \"pending | in_flight | success | failed | dead\"\n },\n attempts: {\n label: \"Attempts\",\n help: \"Number of POST attempts made so far\"\n },\n claimed_by: {\n label: \"Claimed By\"\n },\n claimed_at: {\n label: \"Claimed At (ms)\"\n },\n next_retry_at: {\n label: \"Next Retry At (ms)\"\n },\n last_attempted_at: {\n label: \"Last Attempted At (ms)\"\n },\n response_code: {\n label: \"HTTP Status\"\n },\n response_body: {\n label: \"Response Body (capped)\"\n },\n error: {\n label: \"Error\"\n },\n created_at: {\n label: \"Created At (ms)\"\n },\n updated_at: {\n label: \"Updated At (ms)\"\n }\n },\n _views: {\n recent: {\n label: \"Recent\"\n },\n failures: {\n label: \"Failures\"\n },\n in_flight: {\n label: \"In Flight\"\n },\n pending: {\n label: \"Pending\"\n },\n by_status: {\n label: \"By Status\"\n },\n by_webhook: {\n label: \"By Webhook\"\n },\n all_deliveries: {\n label: \"All\"\n }\n },\n _actions: {\n redeliver: {\n label: \"Redeliver\",\n confirmText: \"Replay this delivery? The receiver will get the original payload again — they must be idempotent on the X-Objectstack-Delivery header.\",\n successMessage: \"Queued for redelivery\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'zh-CN'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const zhCNObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhook\",\n description: \"外发 HTTP Webhook 订阅。可在代码中通过 defineWebhook() 编写,或在 Studio 编辑器中维护;由 HTTP 连接器插件执行。\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"名称\",\n help: \"唯一的 snake_case 名称——用于日志和审计引用\"\n },\n label: {\n label: \"显示标签\"\n },\n object_name: {\n label: \"对象\",\n help: \"触发该 Webhook 的记录事件(create/update/delete)的短对象名\"\n },\n triggers: {\n label: \"触发器\",\n help: \"以逗号分隔的事件列表:create,update,delete\"\n },\n url: {\n label: \"目标 URL\",\n help: \"接收 POST 请求的外部端点\"\n },\n method: {\n label: \"HTTP 方法\",\n help: \"GET / POST / PUT / PATCH / DELETE\"\n },\n description: {\n label: \"描述\"\n },\n active: {\n label: \"启用\",\n help: \"停用的 Webhook 会被调度器跳过\"\n },\n definition_json: {\n label: \"定义\",\n help: \"序列化的 Webhook JSON(参见 @objectstack/spec/automation/webhook)——包含完整的 headers/auth/retry/payload 配置\"\n },\n created_at: {\n label: \"创建时间\"\n },\n updated_at: {\n label: \"更新时间\"\n }\n },\n _views: {\n active: {\n label: \"启用\"\n },\n inactive: {\n label: \"停用\"\n },\n by_object: {\n label: \"按对象\"\n },\n all_webhooks: {\n label: \"全部\"\n }\n }\n },\n sys_webhook_delivery: {\n label: \"Webhook Delivery\",\n pluralLabel: \"Webhook Deliveries\",\n description: \"Durable outbox row for one webhook attempt. Managed by @objectstack/plugin-webhooks; do not write directly.\",\n fields: {\n id: {\n label: \"Delivery ID\",\n help: \"UUID — also doubles as the receiver-side idempotency key\"\n },\n webhook_id: {\n label: \"Webhook ID\",\n help: \"FK to sys_webhook.id (loosely coupled — denormalised URL/secret on row)\"\n },\n event_id: {\n label: \"Event ID\",\n help: \"Source event id; UNIQUE(event_id, webhook_id) for dedup\"\n },\n event_type: {\n label: \"Event Type\",\n help: \"e.g. data.record.created\"\n },\n url: {\n label: \"Target URL\",\n help: \"Snapshotted at enqueue so config edits do not rewrite live rows\"\n },\n method: {\n label: \"Method\"\n },\n headers_json: {\n label: \"Headers JSON\"\n },\n secret: {\n label: \"HMAC Secret\"\n },\n timeout_ms: {\n label: \"Timeout (ms)\"\n },\n payload_json: {\n label: \"Payload JSON\"\n },\n partition_key: {\n label: \"Partition\",\n help: \"hash(webhook_id) mod partitionCount — precomputed for cheap WHERE\"\n },\n status: {\n label: \"Status\",\n help: \"pending | in_flight | success | failed | dead\"\n },\n attempts: {\n label: \"Attempts\",\n help: \"Number of POST attempts made so far\"\n },\n claimed_by: {\n label: \"Claimed By\"\n },\n claimed_at: {\n label: \"Claimed At (ms)\"\n },\n next_retry_at: {\n label: \"Next Retry At (ms)\"\n },\n last_attempted_at: {\n label: \"Last Attempted At (ms)\"\n },\n response_code: {\n label: \"HTTP Status\"\n },\n response_body: {\n label: \"Response Body (capped)\"\n },\n error: {\n label: \"Error\"\n },\n created_at: {\n label: \"Created At (ms)\"\n },\n updated_at: {\n label: \"Updated At (ms)\"\n }\n },\n _views: {\n recent: {\n label: \"Recent\"\n },\n failures: {\n label: \"Failures\"\n },\n in_flight: {\n label: \"In Flight\"\n },\n pending: {\n label: \"Pending\"\n },\n by_status: {\n label: \"By Status\"\n },\n by_webhook: {\n label: \"By Webhook\"\n },\n all_deliveries: {\n label: \"All\"\n }\n },\n _actions: {\n redeliver: {\n label: \"Redeliver\",\n confirmText: \"Replay this delivery? The receiver will get the original payload again — they must be idempotent on the X-Objectstack-Delivery header.\",\n successMessage: \"Queued for redelivery\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'ja-JP'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const jaJPObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhook\",\n description: \"送信 HTTP Webhook サブスクリプション。defineWebhook() またはスタジオエディタで作成し、HTTP コネクタプラグインが実行します。\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"名前\",\n help: \"一意の snake_case 名 — ログおよび監査で参照\"\n },\n label: {\n label: \"表示名\"\n },\n object_name: {\n label: \"オブジェクト\",\n help: \"このウェブフックを発火するレコードイベント(create/update/delete)のオブジェクト短縮名\"\n },\n triggers: {\n label: \"トリガー\",\n help: \"カンマ区切りのイベントリスト: create,update,delete\"\n },\n url: {\n label: \"ターゲット URL\",\n help: \"POST を受信する外部エンドポイント\"\n },\n method: {\n label: \"HTTP メソッド\",\n help: \"GET / POST / PUT / PATCH / DELETE\"\n },\n description: {\n label: \"説明\"\n },\n active: {\n label: \"有効\",\n help: \"無効にするとディスパッチャにスキップされます\"\n },\n definition_json: {\n label: \"定義\",\n help: \"シリアライズされた Webhook JSON(@objectstack/spec/automation/webhook 参照)— ヘッダー/認証/リトライ/ペイロード設定を含む\"\n },\n created_at: {\n label: \"作成日時\"\n },\n updated_at: {\n label: \"更新日時\"\n }\n },\n _views: {\n active: {\n label: \"有効\"\n },\n inactive: {\n label: \"無効\"\n },\n by_object: {\n label: \"オブジェクト別\"\n },\n all_webhooks: {\n label: \"すべて\"\n }\n }\n },\n sys_webhook_delivery: {\n label: \"Webhook Delivery\",\n pluralLabel: \"Webhook Deliveries\",\n description: \"Durable outbox row for one webhook attempt. Managed by @objectstack/plugin-webhooks; do not write directly.\",\n fields: {\n id: {\n label: \"Delivery ID\",\n help: \"UUID — also doubles as the receiver-side idempotency key\"\n },\n webhook_id: {\n label: \"Webhook ID\",\n help: \"FK to sys_webhook.id (loosely coupled — denormalised URL/secret on row)\"\n },\n event_id: {\n label: \"Event ID\",\n help: \"Source event id; UNIQUE(event_id, webhook_id) for dedup\"\n },\n event_type: {\n label: \"Event Type\",\n help: \"e.g. data.record.created\"\n },\n url: {\n label: \"Target URL\",\n help: \"Snapshotted at enqueue so config edits do not rewrite live rows\"\n },\n method: {\n label: \"Method\"\n },\n headers_json: {\n label: \"Headers JSON\"\n },\n secret: {\n label: \"HMAC Secret\"\n },\n timeout_ms: {\n label: \"Timeout (ms)\"\n },\n payload_json: {\n label: \"Payload JSON\"\n },\n partition_key: {\n label: \"Partition\",\n help: \"hash(webhook_id) mod partitionCount — precomputed for cheap WHERE\"\n },\n status: {\n label: \"Status\",\n help: \"pending | in_flight | success | failed | dead\"\n },\n attempts: {\n label: \"Attempts\",\n help: \"Number of POST attempts made so far\"\n },\n claimed_by: {\n label: \"Claimed By\"\n },\n claimed_at: {\n label: \"Claimed At (ms)\"\n },\n next_retry_at: {\n label: \"Next Retry At (ms)\"\n },\n last_attempted_at: {\n label: \"Last Attempted At (ms)\"\n },\n response_code: {\n label: \"HTTP Status\"\n },\n response_body: {\n label: \"Response Body (capped)\"\n },\n error: {\n label: \"Error\"\n },\n created_at: {\n label: \"Created At (ms)\"\n },\n updated_at: {\n label: \"Updated At (ms)\"\n }\n },\n _views: {\n recent: {\n label: \"Recent\"\n },\n failures: {\n label: \"Failures\"\n },\n in_flight: {\n label: \"In Flight\"\n },\n pending: {\n label: \"Pending\"\n },\n by_status: {\n label: \"By Status\"\n },\n by_webhook: {\n label: \"By Webhook\"\n },\n all_deliveries: {\n label: \"All\"\n }\n },\n _actions: {\n redeliver: {\n label: \"Redeliver\",\n confirmText: \"Replay this delivery? The receiver will get the original payload again — they must be idempotent on the X-Objectstack-Delivery header.\",\n successMessage: \"Queued for redelivery\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'es-ES'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const esESObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhooks\",\n description: \"Suscripción saliente de Webhook HTTP. Se crea mediante defineWebhook() en código o con el editor de Studio; la ejecuta el plugin del conector HTTP.\",\n fields: {\n id: {\n label: \"ID de webhook\"\n },\n name: {\n label: \"Nombre\",\n help: \"Nombre snake_case único; se usa en los registros y en la auditoría.\"\n },\n label: {\n label: \"Nombre visible\"\n },\n object_name: {\n label: \"Objeto\",\n help: \"Nombre corto del objeto cuyos eventos de registro (create/update/delete) activan este Webhook.\"\n },\n triggers: {\n label: \"Desencadenantes\",\n help: \"Lista de eventos separada por comas: create,update,delete.\"\n },\n url: {\n label: \"URL de destino\",\n help: \"Endpoint externo que recibe el POST.\"\n },\n method: {\n label: \"Método HTTP\",\n help: \"GET / POST / PUT / PATCH / DELETE\"\n },\n description: {\n label: \"Descripción\"\n },\n active: {\n label: \"Activo\",\n help: \"Los Webhooks inactivos se omiten en el despachador.\"\n },\n definition_json: {\n label: \"Definición\",\n help: \"JSON serializado de Webhook (consulte @objectstack/spec/automation/webhook): configuración completa de cabeceras/auth/reintentos/payload.\"\n },\n created_at: {\n label: \"Creado el\"\n },\n updated_at: {\n label: \"Actualizado el\"\n }\n },\n _views: {\n active: {\n label: \"Activo\"\n },\n inactive: {\n label: \"Inactivo\"\n },\n by_object: {\n label: \"Por objeto\"\n },\n all_webhooks: {\n label: \"Todos\"\n }\n }\n },\n sys_webhook_delivery: {\n label: \"Webhook Delivery\",\n pluralLabel: \"Webhook Deliveries\",\n description: \"Durable outbox row for one webhook attempt. Managed by @objectstack/plugin-webhooks; do not write directly.\",\n fields: {\n id: {\n label: \"Delivery ID\",\n help: \"UUID — also doubles as the receiver-side idempotency key\"\n },\n webhook_id: {\n label: \"Webhook ID\",\n help: \"FK to sys_webhook.id (loosely coupled — denormalised URL/secret on row)\"\n },\n event_id: {\n label: \"Event ID\",\n help: \"Source event id; UNIQUE(event_id, webhook_id) for dedup\"\n },\n event_type: {\n label: \"Event Type\",\n help: \"e.g. data.record.created\"\n },\n url: {\n label: \"Target URL\",\n help: \"Snapshotted at enqueue so config edits do not rewrite live rows\"\n },\n method: {\n label: \"Method\"\n },\n headers_json: {\n label: \"Headers JSON\"\n },\n secret: {\n label: \"HMAC Secret\"\n },\n timeout_ms: {\n label: \"Timeout (ms)\"\n },\n payload_json: {\n label: \"Payload JSON\"\n },\n partition_key: {\n label: \"Partition\",\n help: \"hash(webhook_id) mod partitionCount — precomputed for cheap WHERE\"\n },\n status: {\n label: \"Status\",\n help: \"pending | in_flight | success | failed | dead\"\n },\n attempts: {\n label: \"Attempts\",\n help: \"Number of POST attempts made so far\"\n },\n claimed_by: {\n label: \"Claimed By\"\n },\n claimed_at: {\n label: \"Claimed At (ms)\"\n },\n next_retry_at: {\n label: \"Next Retry At (ms)\"\n },\n last_attempted_at: {\n label: \"Last Attempted At (ms)\"\n },\n response_code: {\n label: \"HTTP Status\"\n },\n response_body: {\n label: \"Response Body (capped)\"\n },\n error: {\n label: \"Error\"\n },\n created_at: {\n label: \"Created At (ms)\"\n },\n updated_at: {\n label: \"Updated At (ms)\"\n }\n },\n _views: {\n recent: {\n label: \"Recent\"\n },\n failures: {\n label: \"Failures\"\n },\n in_flight: {\n label: \"In Flight\"\n },\n pending: {\n label: \"Pending\"\n },\n by_status: {\n label: \"By Status\"\n },\n by_webhook: {\n label: \"By Webhook\"\n },\n all_deliveries: {\n label: \"All\"\n }\n },\n _actions: {\n redeliver: {\n label: \"Redeliver\",\n confirmText: \"Replay this delivery? The receiver will get the original payload again — they must be idempotent on the X-Objectstack-Delivery header.\",\n successMessage: \"Queued for redelivery\"\n }\n }\n }\n};\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * WebhooksTranslations — i18n bundle owned by this plugin (ADR-0029 D8).\n *\n * Object label/field/view/action translations for the sys_* objects this\n * plugin owns. Loaded at runtime via the plugin's `kernel:ready` hook\n * (`i18n.loadTranslations`). Regenerate with `os i18n extract` against\n * `scripts/i18n-extract.config.ts`.\n */\n\nimport type { TranslationBundle } from '@objectstack/spec/system';\nimport { enObjects } from './en.objects.generated.js';\nimport { zhCNObjects } from './zh-CN.objects.generated.js';\nimport { jaJPObjects } from './ja-JP.objects.generated.js';\nimport { esESObjects } from './es-ES.objects.generated.js';\n\nexport const WebhooksTranslations: TranslationBundle = {\n en: { objects: enObjects },\n 'zh-CN': { objects: zhCNObjects },\n 'ja-JP': { objects: jaJPObjects },\n 'es-ES': { objects: esESObjects },\n};\n"],"mappings":"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","names":[]}
|
|
@@ -17,11 +17,11 @@ var enObjects = {
|
|
|
17
17
|
},
|
|
18
18
|
object_name: {
|
|
19
19
|
label: "Object",
|
|
20
|
-
help: "Short object name whose events fire this webhook
|
|
20
|
+
help: "Short object name whose record events (create/update/delete) fire this webhook"
|
|
21
21
|
},
|
|
22
22
|
triggers: {
|
|
23
23
|
label: "Triggers",
|
|
24
|
-
help: "Comma-separated event list: create,update,delete
|
|
24
|
+
help: "Comma-separated event list: create,update,delete"
|
|
25
25
|
},
|
|
26
26
|
url: {
|
|
27
27
|
label: "Target URL",
|
|
@@ -196,11 +196,11 @@ var zhCNObjects = {
|
|
|
196
196
|
},
|
|
197
197
|
object_name: {
|
|
198
198
|
label: "\u5BF9\u8C61",
|
|
199
|
-
help: "\u89E6\u53D1\u8BE5 Webhook \u7684\
|
|
199
|
+
help: "\u89E6\u53D1\u8BE5 Webhook \u7684\u8BB0\u5F55\u4E8B\u4EF6\uFF08create/update/delete\uFF09\u7684\u77ED\u5BF9\u8C61\u540D"
|
|
200
200
|
},
|
|
201
201
|
triggers: {
|
|
202
202
|
label: "\u89E6\u53D1\u5668",
|
|
203
|
-
help: "\u4EE5\u9017\u53F7\u5206\u9694\u7684\u4E8B\u4EF6\u5217\u8868\uFF1Acreate,update,delete
|
|
203
|
+
help: "\u4EE5\u9017\u53F7\u5206\u9694\u7684\u4E8B\u4EF6\u5217\u8868\uFF1Acreate,update,delete"
|
|
204
204
|
},
|
|
205
205
|
url: {
|
|
206
206
|
label: "\u76EE\u6807 URL",
|
|
@@ -375,11 +375,11 @@ var jaJPObjects = {
|
|
|
375
375
|
},
|
|
376
376
|
object_name: {
|
|
377
377
|
label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
|
|
378
|
-
help: "\u3053\u306E\u30A6\u30A7\u30D6\u30D5\u30C3\u30AF\u3092\u767A\u706B\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u77ED\u7E2E\u540D
|
|
378
|
+
help: "\u3053\u306E\u30A6\u30A7\u30D6\u30D5\u30C3\u30AF\u3092\u767A\u706B\u3059\u308B\u30EC\u30B3\u30FC\u30C9\u30A4\u30D9\u30F3\u30C8\uFF08create/update/delete\uFF09\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u77ED\u7E2E\u540D"
|
|
379
379
|
},
|
|
380
380
|
triggers: {
|
|
381
381
|
label: "\u30C8\u30EA\u30AC\u30FC",
|
|
382
|
-
help: "\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30A4\u30D9\u30F3\u30C8\u30EA\u30B9\u30C8: create,update,delete
|
|
382
|
+
help: "\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30A4\u30D9\u30F3\u30C8\u30EA\u30B9\u30C8: create,update,delete"
|
|
383
383
|
},
|
|
384
384
|
url: {
|
|
385
385
|
label: "\u30BF\u30FC\u30B2\u30C3\u30C8 URL",
|
|
@@ -554,11 +554,11 @@ var esESObjects = {
|
|
|
554
554
|
},
|
|
555
555
|
object_name: {
|
|
556
556
|
label: "Objeto",
|
|
557
|
-
help: "Nombre corto del objeto cuyos eventos
|
|
557
|
+
help: "Nombre corto del objeto cuyos eventos de registro (create/update/delete) activan este Webhook."
|
|
558
558
|
},
|
|
559
559
|
triggers: {
|
|
560
560
|
label: "Desencadenantes",
|
|
561
|
-
help: "Lista de eventos separada por comas: create,update,delete
|
|
561
|
+
help: "Lista de eventos separada por comas: create,update,delete."
|
|
562
562
|
},
|
|
563
563
|
url: {
|
|
564
564
|
label: "URL de destino",
|
|
@@ -724,4 +724,4 @@ var WebhooksTranslations = {
|
|
|
724
724
|
|
|
725
725
|
|
|
726
726
|
exports.WebhooksTranslations = WebhooksTranslations;
|
|
727
|
-
//# sourceMappingURL=translations-
|
|
727
|
+
//# sourceMappingURL=translations-L2JAQDJB.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/framework/framework/packages/plugins/plugin-webhooks/dist/translations-L2JAQDJB.cjs","../src/translations/en.objects.generated.ts","../src/translations/zh-CN.objects.generated.ts","../src/translations/ja-JP.objects.generated.ts","../src/translations/es-ES.objects.generated.ts","../src/translations/index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/framework/framework/packages/plugins/plugin-webhooks/dist/translations-L2JAQDJB.cjs","sourcesContent":[null,"// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'en'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const enObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhooks\",\n description: \"Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"Name\",\n help: \"Unique snake_case name — referenced in logs and audit\"\n },\n label: {\n label: \"Display Label\"\n },\n object_name: {\n label: \"Object\",\n help: \"Short object name whose record events (create/update/delete) fire this webhook\"\n },\n triggers: {\n label: \"Triggers\",\n help: \"Comma-separated event list: create,update,delete\"\n },\n url: {\n label: \"Target URL\",\n help: \"External endpoint that receives the POST\"\n },\n method: {\n label: \"HTTP Method\",\n help: \"GET / POST / PUT / PATCH / DELETE\"\n },\n description: {\n label: \"Description\"\n },\n active: {\n label: \"Active\",\n help: \"Inactive webhooks are skipped by the dispatcher\"\n },\n definition_json: {\n label: \"Definition\",\n help: \"Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config\"\n },\n created_at: {\n label: \"Created At\"\n },\n updated_at: {\n label: \"Updated At\"\n }\n },\n _views: {\n active: {\n label: \"Active\"\n },\n inactive: {\n label: \"Inactive\"\n },\n by_object: {\n label: \"By Object\"\n },\n all_webhooks: {\n label: \"All\"\n }\n }\n },\n sys_webhook_delivery: {\n label: \"Webhook Delivery\",\n pluralLabel: \"Webhook Deliveries\",\n description: \"Durable outbox row for one webhook attempt. Managed by @objectstack/plugin-webhooks; do not write directly.\",\n fields: {\n id: {\n label: \"Delivery ID\",\n help: \"UUID — also doubles as the receiver-side idempotency key\"\n },\n webhook_id: {\n label: \"Webhook ID\",\n help: \"FK to sys_webhook.id (loosely coupled — denormalised URL/secret on row)\"\n },\n event_id: {\n label: \"Event ID\",\n help: \"Source event id; UNIQUE(event_id, webhook_id) for dedup\"\n },\n event_type: {\n label: \"Event Type\",\n help: \"e.g. data.record.created\"\n },\n url: {\n label: \"Target URL\",\n help: \"Snapshotted at enqueue so config edits do not rewrite live rows\"\n },\n method: {\n label: \"Method\"\n },\n headers_json: {\n label: \"Headers JSON\"\n },\n secret: {\n label: \"HMAC Secret\"\n },\n timeout_ms: {\n label: \"Timeout (ms)\"\n },\n payload_json: {\n label: \"Payload JSON\"\n },\n partition_key: {\n label: \"Partition\",\n help: \"hash(webhook_id) mod partitionCount — precomputed for cheap WHERE\"\n },\n status: {\n label: \"Status\",\n help: \"pending | in_flight | success | failed | dead\"\n },\n attempts: {\n label: \"Attempts\",\n help: \"Number of POST attempts made so far\"\n },\n claimed_by: {\n label: \"Claimed By\"\n },\n claimed_at: {\n label: \"Claimed At (ms)\"\n },\n next_retry_at: {\n label: \"Next Retry At (ms)\"\n },\n last_attempted_at: {\n label: \"Last Attempted At (ms)\"\n },\n response_code: {\n label: \"HTTP Status\"\n },\n response_body: {\n label: \"Response Body (capped)\"\n },\n error: {\n label: \"Error\"\n },\n created_at: {\n label: \"Created At (ms)\"\n },\n updated_at: {\n label: \"Updated At (ms)\"\n }\n },\n _views: {\n recent: {\n label: \"Recent\"\n },\n failures: {\n label: \"Failures\"\n },\n in_flight: {\n label: \"In Flight\"\n },\n pending: {\n label: \"Pending\"\n },\n by_status: {\n label: \"By Status\"\n },\n by_webhook: {\n label: \"By Webhook\"\n },\n all_deliveries: {\n label: \"All\"\n }\n },\n _actions: {\n redeliver: {\n label: \"Redeliver\",\n confirmText: \"Replay this delivery? The receiver will get the original payload again — they must be idempotent on the X-Objectstack-Delivery header.\",\n successMessage: \"Queued for redelivery\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'zh-CN'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const zhCNObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhook\",\n description: \"外发 HTTP Webhook 订阅。可在代码中通过 defineWebhook() 编写,或在 Studio 编辑器中维护;由 HTTP 连接器插件执行。\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"名称\",\n help: \"唯一的 snake_case 名称——用于日志和审计引用\"\n },\n label: {\n label: \"显示标签\"\n },\n object_name: {\n label: \"对象\",\n help: \"触发该 Webhook 的记录事件(create/update/delete)的短对象名\"\n },\n triggers: {\n label: \"触发器\",\n help: \"以逗号分隔的事件列表:create,update,delete\"\n },\n url: {\n label: \"目标 URL\",\n help: \"接收 POST 请求的外部端点\"\n },\n method: {\n label: \"HTTP 方法\",\n help: \"GET / POST / PUT / PATCH / DELETE\"\n },\n description: {\n label: \"描述\"\n },\n active: {\n label: \"启用\",\n help: \"停用的 Webhook 会被调度器跳过\"\n },\n definition_json: {\n label: \"定义\",\n help: \"序列化的 Webhook JSON(参见 @objectstack/spec/automation/webhook)——包含完整的 headers/auth/retry/payload 配置\"\n },\n created_at: {\n label: \"创建时间\"\n },\n updated_at: {\n label: \"更新时间\"\n }\n },\n _views: {\n active: {\n label: \"启用\"\n },\n inactive: {\n label: \"停用\"\n },\n by_object: {\n label: \"按对象\"\n },\n all_webhooks: {\n label: \"全部\"\n }\n }\n },\n sys_webhook_delivery: {\n label: \"Webhook Delivery\",\n pluralLabel: \"Webhook Deliveries\",\n description: \"Durable outbox row for one webhook attempt. Managed by @objectstack/plugin-webhooks; do not write directly.\",\n fields: {\n id: {\n label: \"Delivery ID\",\n help: \"UUID — also doubles as the receiver-side idempotency key\"\n },\n webhook_id: {\n label: \"Webhook ID\",\n help: \"FK to sys_webhook.id (loosely coupled — denormalised URL/secret on row)\"\n },\n event_id: {\n label: \"Event ID\",\n help: \"Source event id; UNIQUE(event_id, webhook_id) for dedup\"\n },\n event_type: {\n label: \"Event Type\",\n help: \"e.g. data.record.created\"\n },\n url: {\n label: \"Target URL\",\n help: \"Snapshotted at enqueue so config edits do not rewrite live rows\"\n },\n method: {\n label: \"Method\"\n },\n headers_json: {\n label: \"Headers JSON\"\n },\n secret: {\n label: \"HMAC Secret\"\n },\n timeout_ms: {\n label: \"Timeout (ms)\"\n },\n payload_json: {\n label: \"Payload JSON\"\n },\n partition_key: {\n label: \"Partition\",\n help: \"hash(webhook_id) mod partitionCount — precomputed for cheap WHERE\"\n },\n status: {\n label: \"Status\",\n help: \"pending | in_flight | success | failed | dead\"\n },\n attempts: {\n label: \"Attempts\",\n help: \"Number of POST attempts made so far\"\n },\n claimed_by: {\n label: \"Claimed By\"\n },\n claimed_at: {\n label: \"Claimed At (ms)\"\n },\n next_retry_at: {\n label: \"Next Retry At (ms)\"\n },\n last_attempted_at: {\n label: \"Last Attempted At (ms)\"\n },\n response_code: {\n label: \"HTTP Status\"\n },\n response_body: {\n label: \"Response Body (capped)\"\n },\n error: {\n label: \"Error\"\n },\n created_at: {\n label: \"Created At (ms)\"\n },\n updated_at: {\n label: \"Updated At (ms)\"\n }\n },\n _views: {\n recent: {\n label: \"Recent\"\n },\n failures: {\n label: \"Failures\"\n },\n in_flight: {\n label: \"In Flight\"\n },\n pending: {\n label: \"Pending\"\n },\n by_status: {\n label: \"By Status\"\n },\n by_webhook: {\n label: \"By Webhook\"\n },\n all_deliveries: {\n label: \"All\"\n }\n },\n _actions: {\n redeliver: {\n label: \"Redeliver\",\n confirmText: \"Replay this delivery? The receiver will get the original payload again — they must be idempotent on the X-Objectstack-Delivery header.\",\n successMessage: \"Queued for redelivery\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'ja-JP'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const jaJPObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhook\",\n description: \"送信 HTTP Webhook サブスクリプション。defineWebhook() またはスタジオエディタで作成し、HTTP コネクタプラグインが実行します。\",\n fields: {\n id: {\n label: \"Webhook ID\"\n },\n name: {\n label: \"名前\",\n help: \"一意の snake_case 名 — ログおよび監査で参照\"\n },\n label: {\n label: \"表示名\"\n },\n object_name: {\n label: \"オブジェクト\",\n help: \"このウェブフックを発火するレコードイベント(create/update/delete)のオブジェクト短縮名\"\n },\n triggers: {\n label: \"トリガー\",\n help: \"カンマ区切りのイベントリスト: create,update,delete\"\n },\n url: {\n label: \"ターゲット URL\",\n help: \"POST を受信する外部エンドポイント\"\n },\n method: {\n label: \"HTTP メソッド\",\n help: \"GET / POST / PUT / PATCH / DELETE\"\n },\n description: {\n label: \"説明\"\n },\n active: {\n label: \"有効\",\n help: \"無効にするとディスパッチャにスキップされます\"\n },\n definition_json: {\n label: \"定義\",\n help: \"シリアライズされた Webhook JSON(@objectstack/spec/automation/webhook 参照)— ヘッダー/認証/リトライ/ペイロード設定を含む\"\n },\n created_at: {\n label: \"作成日時\"\n },\n updated_at: {\n label: \"更新日時\"\n }\n },\n _views: {\n active: {\n label: \"有効\"\n },\n inactive: {\n label: \"無効\"\n },\n by_object: {\n label: \"オブジェクト別\"\n },\n all_webhooks: {\n label: \"すべて\"\n }\n }\n },\n sys_webhook_delivery: {\n label: \"Webhook Delivery\",\n pluralLabel: \"Webhook Deliveries\",\n description: \"Durable outbox row for one webhook attempt. Managed by @objectstack/plugin-webhooks; do not write directly.\",\n fields: {\n id: {\n label: \"Delivery ID\",\n help: \"UUID — also doubles as the receiver-side idempotency key\"\n },\n webhook_id: {\n label: \"Webhook ID\",\n help: \"FK to sys_webhook.id (loosely coupled — denormalised URL/secret on row)\"\n },\n event_id: {\n label: \"Event ID\",\n help: \"Source event id; UNIQUE(event_id, webhook_id) for dedup\"\n },\n event_type: {\n label: \"Event Type\",\n help: \"e.g. data.record.created\"\n },\n url: {\n label: \"Target URL\",\n help: \"Snapshotted at enqueue so config edits do not rewrite live rows\"\n },\n method: {\n label: \"Method\"\n },\n headers_json: {\n label: \"Headers JSON\"\n },\n secret: {\n label: \"HMAC Secret\"\n },\n timeout_ms: {\n label: \"Timeout (ms)\"\n },\n payload_json: {\n label: \"Payload JSON\"\n },\n partition_key: {\n label: \"Partition\",\n help: \"hash(webhook_id) mod partitionCount — precomputed for cheap WHERE\"\n },\n status: {\n label: \"Status\",\n help: \"pending | in_flight | success | failed | dead\"\n },\n attempts: {\n label: \"Attempts\",\n help: \"Number of POST attempts made so far\"\n },\n claimed_by: {\n label: \"Claimed By\"\n },\n claimed_at: {\n label: \"Claimed At (ms)\"\n },\n next_retry_at: {\n label: \"Next Retry At (ms)\"\n },\n last_attempted_at: {\n label: \"Last Attempted At (ms)\"\n },\n response_code: {\n label: \"HTTP Status\"\n },\n response_body: {\n label: \"Response Body (capped)\"\n },\n error: {\n label: \"Error\"\n },\n created_at: {\n label: \"Created At (ms)\"\n },\n updated_at: {\n label: \"Updated At (ms)\"\n }\n },\n _views: {\n recent: {\n label: \"Recent\"\n },\n failures: {\n label: \"Failures\"\n },\n in_flight: {\n label: \"In Flight\"\n },\n pending: {\n label: \"Pending\"\n },\n by_status: {\n label: \"By Status\"\n },\n by_webhook: {\n label: \"By Webhook\"\n },\n all_deliveries: {\n label: \"All\"\n }\n },\n _actions: {\n redeliver: {\n label: \"Redeliver\",\n confirmText: \"Replay this delivery? The receiver will get the original payload again — they must be idempotent on the X-Objectstack-Delivery header.\",\n successMessage: \"Queued for redelivery\"\n }\n }\n }\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Auto-generated by 'os i18n extract' for locale 'es-ES'.\n * Edit translations in place; re-run extract (with --merge) to fill new gaps.\n * Do not hand-edit the structure — only the leaf string values.\n */\n\nimport type { TranslationData } from '@objectstack/spec/system';\n\nexport const esESObjects: NonNullable<TranslationData['objects']> = {\n sys_webhook: {\n label: \"Webhook\",\n pluralLabel: \"Webhooks\",\n description: \"Suscripción saliente de Webhook HTTP. Se crea mediante defineWebhook() en código o con el editor de Studio; la ejecuta el plugin del conector HTTP.\",\n fields: {\n id: {\n label: \"ID de webhook\"\n },\n name: {\n label: \"Nombre\",\n help: \"Nombre snake_case único; se usa en los registros y en la auditoría.\"\n },\n label: {\n label: \"Nombre visible\"\n },\n object_name: {\n label: \"Objeto\",\n help: \"Nombre corto del objeto cuyos eventos de registro (create/update/delete) activan este Webhook.\"\n },\n triggers: {\n label: \"Desencadenantes\",\n help: \"Lista de eventos separada por comas: create,update,delete.\"\n },\n url: {\n label: \"URL de destino\",\n help: \"Endpoint externo que recibe el POST.\"\n },\n method: {\n label: \"Método HTTP\",\n help: \"GET / POST / PUT / PATCH / DELETE\"\n },\n description: {\n label: \"Descripción\"\n },\n active: {\n label: \"Activo\",\n help: \"Los Webhooks inactivos se omiten en el despachador.\"\n },\n definition_json: {\n label: \"Definición\",\n help: \"JSON serializado de Webhook (consulte @objectstack/spec/automation/webhook): configuración completa de cabeceras/auth/reintentos/payload.\"\n },\n created_at: {\n label: \"Creado el\"\n },\n updated_at: {\n label: \"Actualizado el\"\n }\n },\n _views: {\n active: {\n label: \"Activo\"\n },\n inactive: {\n label: \"Inactivo\"\n },\n by_object: {\n label: \"Por objeto\"\n },\n all_webhooks: {\n label: \"Todos\"\n }\n }\n },\n sys_webhook_delivery: {\n label: \"Webhook Delivery\",\n pluralLabel: \"Webhook Deliveries\",\n description: \"Durable outbox row for one webhook attempt. Managed by @objectstack/plugin-webhooks; do not write directly.\",\n fields: {\n id: {\n label: \"Delivery ID\",\n help: \"UUID — also doubles as the receiver-side idempotency key\"\n },\n webhook_id: {\n label: \"Webhook ID\",\n help: \"FK to sys_webhook.id (loosely coupled — denormalised URL/secret on row)\"\n },\n event_id: {\n label: \"Event ID\",\n help: \"Source event id; UNIQUE(event_id, webhook_id) for dedup\"\n },\n event_type: {\n label: \"Event Type\",\n help: \"e.g. data.record.created\"\n },\n url: {\n label: \"Target URL\",\n help: \"Snapshotted at enqueue so config edits do not rewrite live rows\"\n },\n method: {\n label: \"Method\"\n },\n headers_json: {\n label: \"Headers JSON\"\n },\n secret: {\n label: \"HMAC Secret\"\n },\n timeout_ms: {\n label: \"Timeout (ms)\"\n },\n payload_json: {\n label: \"Payload JSON\"\n },\n partition_key: {\n label: \"Partition\",\n help: \"hash(webhook_id) mod partitionCount — precomputed for cheap WHERE\"\n },\n status: {\n label: \"Status\",\n help: \"pending | in_flight | success | failed | dead\"\n },\n attempts: {\n label: \"Attempts\",\n help: \"Number of POST attempts made so far\"\n },\n claimed_by: {\n label: \"Claimed By\"\n },\n claimed_at: {\n label: \"Claimed At (ms)\"\n },\n next_retry_at: {\n label: \"Next Retry At (ms)\"\n },\n last_attempted_at: {\n label: \"Last Attempted At (ms)\"\n },\n response_code: {\n label: \"HTTP Status\"\n },\n response_body: {\n label: \"Response Body (capped)\"\n },\n error: {\n label: \"Error\"\n },\n created_at: {\n label: \"Created At (ms)\"\n },\n updated_at: {\n label: \"Updated At (ms)\"\n }\n },\n _views: {\n recent: {\n label: \"Recent\"\n },\n failures: {\n label: \"Failures\"\n },\n in_flight: {\n label: \"In Flight\"\n },\n pending: {\n label: \"Pending\"\n },\n by_status: {\n label: \"By Status\"\n },\n by_webhook: {\n label: \"By Webhook\"\n },\n all_deliveries: {\n label: \"All\"\n }\n },\n _actions: {\n redeliver: {\n label: \"Redeliver\",\n confirmText: \"Replay this delivery? The receiver will get the original payload again — they must be idempotent on the X-Objectstack-Delivery header.\",\n successMessage: \"Queued for redelivery\"\n }\n }\n }\n};\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * WebhooksTranslations — i18n bundle owned by this plugin (ADR-0029 D8).\n *\n * Object label/field/view/action translations for the sys_* objects this\n * plugin owns. Loaded at runtime via the plugin's `kernel:ready` hook\n * (`i18n.loadTranslations`). Regenerate with `os i18n extract` against\n * `scripts/i18n-extract.config.ts`.\n */\n\nimport type { TranslationBundle } from '@objectstack/spec/system';\nimport { enObjects } from './en.objects.generated.js';\nimport { zhCNObjects } from './zh-CN.objects.generated.js';\nimport { jaJPObjects } from './ja-JP.objects.generated.js';\nimport { esESObjects } from './es-ES.objects.generated.js';\n\nexport const WebhooksTranslations: TranslationBundle = {\n en: { objects: enObjects },\n 'zh-CN': { objects: zhCNObjects },\n 'ja-JP': { objects: jaJPObjects },\n 'es-ES': { objects: esESObjects },\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@objectstack/plugin-webhooks",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "16.0.0-rc.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Persistent, cluster-aware webhook dispatcher. Durable outbox + per-partition cluster.lock for exactly-once-ish delivery across nodes. See content/docs/concepts/webhook-delivery.mdx.",
|
|
6
6
|
"type": "module",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@objectstack/core": "
|
|
23
|
-
"@objectstack/service-messaging": "
|
|
24
|
-
"@objectstack/spec": "
|
|
22
|
+
"@objectstack/core": "16.0.0-rc.0",
|
|
23
|
+
"@objectstack/service-messaging": "16.0.0-rc.0",
|
|
24
|
+
"@objectstack/spec": "16.0.0-rc.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "^26.1.1",
|
|
@@ -292,6 +292,43 @@ describe('AutoEnqueuer', () => {
|
|
|
292
292
|
await ae.stop();
|
|
293
293
|
});
|
|
294
294
|
|
|
295
|
+
it('warns and ignores a legacy trigger the engine never emits (#3196)', async () => {
|
|
296
|
+
// A row authored before undelete/api were removed keeps its valid
|
|
297
|
+
// triggers; the dead ones are dropped with a warning (drift-guard).
|
|
298
|
+
const engine = new FakeEngine({
|
|
299
|
+
sys_webhook: [webhook({ triggers: 'create,undelete,api' })],
|
|
300
|
+
});
|
|
301
|
+
const realtime = new FakeRealtime();
|
|
302
|
+
const { enqueue, calls } = makeRecorder();
|
|
303
|
+
const warn = vi.fn();
|
|
304
|
+
const ae = new AutoEnqueuer(engine, realtime, enqueue, { refreshIntervalMs: 0, logger: { warn } });
|
|
305
|
+
await ae.start();
|
|
306
|
+
|
|
307
|
+
await realtime.publish(event('created', 'contact', { id: 'c-1' }));
|
|
308
|
+
await flush();
|
|
309
|
+
|
|
310
|
+
expect(calls).toHaveLength(1); // the valid `create` trigger still fires
|
|
311
|
+
expect(warn).toHaveBeenCalledWith(
|
|
312
|
+
expect.stringContaining('undelete'),
|
|
313
|
+
expect.objectContaining({ unknown: expect.arrayContaining(['undelete', 'api']) }),
|
|
314
|
+
);
|
|
315
|
+
await ae.stop();
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
it('skips a webhook whose only triggers are removed values (#3196)', async () => {
|
|
319
|
+
const engine = new FakeEngine({ sys_webhook: [webhook({ triggers: 'undelete,api' })] });
|
|
320
|
+
const realtime = new FakeRealtime();
|
|
321
|
+
const { enqueue, calls } = makeRecorder();
|
|
322
|
+
const ae = new AutoEnqueuer(engine, realtime, enqueue, { refreshIntervalMs: 0 });
|
|
323
|
+
await ae.start();
|
|
324
|
+
|
|
325
|
+
await realtime.publish(event('created', 'contact', { id: 'c-1' }));
|
|
326
|
+
await flush();
|
|
327
|
+
|
|
328
|
+
expect(calls).toHaveLength(0);
|
|
329
|
+
await ae.stop();
|
|
330
|
+
});
|
|
331
|
+
|
|
295
332
|
it('self-heals the cache when sys_webhook changes', async () => {
|
|
296
333
|
const engine = new FakeEngine({ sys_webhook: [] });
|
|
297
334
|
const realtime = new FakeRealtime();
|
package/src/auto-enqueuer.ts
CHANGED
|
@@ -28,8 +28,8 @@ interface OptionalLogger {
|
|
|
28
28
|
interface CachedSubscription {
|
|
29
29
|
id: string;
|
|
30
30
|
name: string;
|
|
31
|
-
objectName: string | undefined; // empty = matches all objects
|
|
32
|
-
triggers: Set<'create' | 'update' | 'delete'
|
|
31
|
+
objectName: string | undefined; // empty = matches all objects
|
|
32
|
+
triggers: Set<'create' | 'update' | 'delete'>;
|
|
33
33
|
url: string;
|
|
34
34
|
method?: string;
|
|
35
35
|
headers?: Record<string, string>;
|
|
@@ -226,13 +226,26 @@ export class AutoEnqueuer {
|
|
|
226
226
|
triggerList = s.split(',');
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
|
+
const normalized = triggerList.map((t) => t.trim().toLowerCase()).filter(Boolean);
|
|
230
|
+
// [#3196] Drop (and warn about) any trigger the enqueuer can't map to an
|
|
231
|
+
// emitted record event — e.g. a legacy `sys_webhook` row authored with
|
|
232
|
+
// the now-removed `undelete`/`api` values, which would otherwise sit in
|
|
233
|
+
// the cache matching nothing. A loud drift-guard so a dead trigger can't
|
|
234
|
+
// silently no-op again.
|
|
235
|
+
const unknown = normalized.filter((t) => !DISPATCHABLE_WEBHOOK_TRIGGERS.has(t));
|
|
236
|
+
if (unknown.length > 0) {
|
|
237
|
+
this.logger.warn?.(
|
|
238
|
+
`[webhook-auto-enqueuer] webhook '${(row.name as string) ?? row.id}' declares trigger(s) the engine never emits: ` +
|
|
239
|
+
`${unknown.join(', ')} — ignored. Dispatchable triggers: create, update, delete.`,
|
|
240
|
+
{ id: row.id, unknown },
|
|
241
|
+
);
|
|
242
|
+
}
|
|
229
243
|
const triggers = new Set(
|
|
230
|
-
|
|
231
|
-
.map((t) => t.trim().toLowerCase())
|
|
232
|
-
.filter(Boolean) as Array<'create' | 'update' | 'delete' | 'undelete'>,
|
|
244
|
+
normalized.filter((t) => DISPATCHABLE_WEBHOOK_TRIGGERS.has(t)) as Array<'create' | 'update' | 'delete'>,
|
|
233
245
|
);
|
|
234
246
|
if (triggers.size === 0) {
|
|
235
|
-
//
|
|
247
|
+
// No dispatchable triggers (or a manual-only webhook with none) —
|
|
248
|
+
// skip auto-enqueue.
|
|
236
249
|
return null;
|
|
237
250
|
}
|
|
238
251
|
|
|
@@ -278,7 +291,7 @@ export class AutoEnqueuer {
|
|
|
278
291
|
if (event.object === this.subscriptionsObject) return; // self-heal handles its own
|
|
279
292
|
|
|
280
293
|
const action = event.type.slice('data.record.'.length) as
|
|
281
|
-
| 'created' | 'updated' | 'deleted' |
|
|
294
|
+
| 'created' | 'updated' | 'deleted' | string;
|
|
282
295
|
const trigger = mapActionToTrigger(action);
|
|
283
296
|
if (!trigger) return;
|
|
284
297
|
|
|
@@ -353,7 +366,7 @@ export class AutoEnqueuer {
|
|
|
353
366
|
|
|
354
367
|
function mapActionToTrigger(
|
|
355
368
|
action: string,
|
|
356
|
-
): 'create' | 'update' | 'delete' |
|
|
369
|
+
): 'create' | 'update' | 'delete' | null {
|
|
357
370
|
switch (action) {
|
|
358
371
|
case 'created':
|
|
359
372
|
return 'create';
|
|
@@ -361,9 +374,10 @@ function mapActionToTrigger(
|
|
|
361
374
|
return 'update';
|
|
362
375
|
case 'deleted':
|
|
363
376
|
return 'delete';
|
|
364
|
-
case 'undeleted':
|
|
365
|
-
return 'undelete';
|
|
366
377
|
default:
|
|
367
378
|
return null;
|
|
368
379
|
}
|
|
369
380
|
}
|
|
381
|
+
|
|
382
|
+
/** The trigger values the enqueuer can actually map from an emitted record event. */
|
|
383
|
+
const DISPATCHABLE_WEBHOOK_TRIGGERS: ReadonlySet<string> = new Set(['create', 'update', 'delete']);
|
|
@@ -116,12 +116,12 @@ export const SysWebhook = ObjectSchema.create({
|
|
|
116
116
|
// Object picker (same widget as sys_sharing_rule) instead of a free-text
|
|
117
117
|
// machine name. Falls back to a text input when the widget is unavailable.
|
|
118
118
|
widget: 'object-ref',
|
|
119
|
-
description: 'Short object name whose events fire this webhook
|
|
119
|
+
description: 'Short object name whose record events (create/update/delete) fire this webhook',
|
|
120
120
|
group: 'Definition',
|
|
121
121
|
}),
|
|
122
122
|
|
|
123
123
|
triggers: Field.select(
|
|
124
|
-
['create', 'update', 'delete'
|
|
124
|
+
['create', 'update', 'delete'],
|
|
125
125
|
{
|
|
126
126
|
label: 'Triggers',
|
|
127
127
|
required: false,
|
|
@@ -129,7 +129,7 @@ export const SysWebhook = ObjectSchema.create({
|
|
|
129
129
|
// an array; the auto-enqueuer parser also tolerates the legacy
|
|
130
130
|
// comma-separated / JSON-string forms so existing rows keep working.
|
|
131
131
|
multiple: true,
|
|
132
|
-
description: 'Record events that fire this webhook
|
|
132
|
+
description: 'Record events that fire this webhook',
|
|
133
133
|
group: 'Definition',
|
|
134
134
|
},
|
|
135
135
|
),
|
|
@@ -26,11 +26,11 @@ export const enObjects: NonNullable<TranslationData['objects']> = {
|
|
|
26
26
|
},
|
|
27
27
|
object_name: {
|
|
28
28
|
label: "Object",
|
|
29
|
-
help: "Short object name whose events fire this webhook
|
|
29
|
+
help: "Short object name whose record events (create/update/delete) fire this webhook"
|
|
30
30
|
},
|
|
31
31
|
triggers: {
|
|
32
32
|
label: "Triggers",
|
|
33
|
-
help: "Comma-separated event list: create,update,delete
|
|
33
|
+
help: "Comma-separated event list: create,update,delete"
|
|
34
34
|
},
|
|
35
35
|
url: {
|
|
36
36
|
label: "Target URL",
|
|
@@ -26,11 +26,11 @@ export const esESObjects: NonNullable<TranslationData['objects']> = {
|
|
|
26
26
|
},
|
|
27
27
|
object_name: {
|
|
28
28
|
label: "Objeto",
|
|
29
|
-
help: "Nombre corto del objeto cuyos eventos
|
|
29
|
+
help: "Nombre corto del objeto cuyos eventos de registro (create/update/delete) activan este Webhook."
|
|
30
30
|
},
|
|
31
31
|
triggers: {
|
|
32
32
|
label: "Desencadenantes",
|
|
33
|
-
help: "Lista de eventos separada por comas: create,update,delete
|
|
33
|
+
help: "Lista de eventos separada por comas: create,update,delete."
|
|
34
34
|
},
|
|
35
35
|
url: {
|
|
36
36
|
label: "URL de destino",
|
|
@@ -26,11 +26,11 @@ export const jaJPObjects: NonNullable<TranslationData['objects']> = {
|
|
|
26
26
|
},
|
|
27
27
|
object_name: {
|
|
28
28
|
label: "オブジェクト",
|
|
29
|
-
help: "
|
|
29
|
+
help: "このウェブフックを発火するレコードイベント(create/update/delete)のオブジェクト短縮名"
|
|
30
30
|
},
|
|
31
31
|
triggers: {
|
|
32
32
|
label: "トリガー",
|
|
33
|
-
help: "カンマ区切りのイベントリスト: create,update,delete
|
|
33
|
+
help: "カンマ区切りのイベントリスト: create,update,delete"
|
|
34
34
|
},
|
|
35
35
|
url: {
|
|
36
36
|
label: "ターゲット URL",
|
|
@@ -26,11 +26,11 @@ export const zhCNObjects: NonNullable<TranslationData['objects']> = {
|
|
|
26
26
|
},
|
|
27
27
|
object_name: {
|
|
28
28
|
label: "对象",
|
|
29
|
-
help: "触发该 Webhook
|
|
29
|
+
help: "触发该 Webhook 的记录事件(create/update/delete)的短对象名"
|
|
30
30
|
},
|
|
31
31
|
triggers: {
|
|
32
32
|
label: "触发器",
|
|
33
|
-
help: "以逗号分隔的事件列表:create,update,delete
|
|
33
|
+
help: "以逗号分隔的事件列表:create,update,delete"
|
|
34
34
|
},
|
|
35
35
|
url: {
|
|
36
36
|
label: "目标 URL",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/framework/framework/packages/plugins/plugin-webhooks/dist/chunk-I63ISOGO.cjs","../src/sys-webhook.object.ts"],"names":[],"mappings":"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","file":"/home/runner/work/framework/framework/packages/plugins/plugin-webhooks/dist/chunk-I63ISOGO.cjs","sourcesContent":[null,"// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_webhook — Outbound HTTP integration configuration (runtime).\n *\n * Persists a single {@link Webhook} envelope per row so administrators\n * can author, enable/disable, and edit webhook subscriptions from the\n * Studio UI without code changes. The canonical Zod schema for the\n * `definition_json` envelope lives at `@objectstack/spec/automation/webhook`.\n *\n * One row per `name`. The automation runtime\n * (`@objectstack/service-automation`, built-in `http_request` node) loads\n * active rows on boot + on `sys_webhook:changed` events, registers\n * `afterInsert` / `afterUpdate` / `afterDelete` listeners for the\n * targeted object, and dispatches outbound HTTP calls when matching\n * record events fire.\n *\n * Ownership (ADR-0029 K2.a): this object is **owned by\n * `@objectstack/plugin-webhooks`** — the plugin that consumes these rows —\n * alongside its sibling `sys_webhook_delivery`. It used to live in the\n * `@objectstack/platform-objects` monolith and be imported here; the\n * definition now lives with its owner so the plugin ships both data and\n * behavior as one unit.\n *\n * Platform-wide on purpose: every project (standalone, single-tenant,\n * cloud) can integrate with external systems (Slack, Stripe, internal\n * services) the same way.\n *\n * @namespace sys\n */\nexport const SysWebhook = ObjectSchema.create({\n name: 'sys_webhook',\n label: 'Webhook',\n pluralLabel: 'Webhooks',\n icon: 'webhook',\n isSystem: true,\n managedBy: 'config',\n // Authoring a webhook from the UI requires a structured form for the\n // headers / auth / retry / payload blocks — the generic JSON textarea\n // is acceptable as a v1 until a dedicated builder lands. Re-enable\n // create/edit/delete so admins can at least toggle `active` and edit\n // simple URL/method fields without round-tripping through code.\n userActions: { create: true, edit: true, delete: true, import: false },\n description: 'Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.',\n displayNameField: 'name',\n nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{label}',\n highlightFields: ['name', 'object_name', 'url', 'active', 'updated_at'],\n\n listViews: {\n active: {\n type: 'grid',\n name: 'active',\n label: 'Active',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: true }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n inactive: {\n type: 'grid',\n name: 'inactive',\n label: 'Inactive',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: false }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n by_object: {\n type: 'grid',\n name: 'by_object',\n label: 'By Object',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['object_name', 'label', 'url', 'active', 'updated_at'],\n sort: [{ field: 'object_name', order: 'asc' }, { field: 'label', order: 'asc' }],\n grouping: { fields: [{ field: 'object_name', order: 'asc', collapsed: false }] },\n pagination: { pageSize: 100 },\n },\n all_webhooks: {\n type: 'grid',\n name: 'all_webhooks',\n label: 'All',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n },\n\n fields: {\n id: Field.text({ label: 'Webhook ID', required: true, readonly: true, group: 'System' }),\n\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 100,\n description: 'Unique snake_case name — referenced in logs and audit',\n group: 'Definition',\n }),\n\n label: Field.text({\n label: 'Display Label',\n required: false,\n maxLength: 200,\n group: 'Definition',\n }),\n\n object_name: Field.text({\n label: 'Object',\n required: false,\n maxLength: 100,\n // Object picker (same widget as sys_sharing_rule) instead of a free-text\n // machine name. Falls back to a text input when the widget is unavailable.\n widget: 'object-ref',\n description: 'Short object name whose events fire this webhook (blank = manual / API-triggered)',\n group: 'Definition',\n }),\n\n triggers: Field.select(\n ['create', 'update', 'delete', 'undelete', 'api'],\n {\n label: 'Triggers',\n required: false,\n // Multi-select instead of a hand-typed comma-separated string. Stored as\n // an array; the auto-enqueuer parser also tolerates the legacy\n // comma-separated / JSON-string forms so existing rows keep working.\n multiple: true,\n description: 'Record events that fire this webhook (empty = manual / API-triggered)',\n group: 'Definition',\n },\n ),\n\n url: Field.text({\n label: 'Target URL',\n required: true,\n maxLength: 2048,\n description: 'External endpoint that receives the POST',\n group: 'Definition',\n }),\n\n method: Field.select(\n ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],\n {\n label: 'HTTP Method',\n required: true,\n // Select instead of free text. Option values are lowercased by the\n // Field.select helper (get/post/…); the auto-enqueuer upper-cases the\n // resolved method before delivery, so existing 'POST' rows and the\n // lowercase option values both normalise correctly.\n defaultValue: 'post',\n description: 'HTTP method used for the callback request',\n group: 'Definition',\n },\n ),\n\n description: Field.textarea({ label: 'Description', required: false, group: 'Definition' }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n description: 'Inactive webhooks are skipped by the dispatcher',\n group: 'Definition',\n }),\n\n definition_json: Field.textarea({\n label: 'Definition',\n required: true,\n description: 'Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config',\n group: 'Definition',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name'], unique: true },\n { fields: ['object_name'] },\n { fields: ['active', 'object_name'] },\n ],\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sys-webhook.object.ts"],"sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_webhook — Outbound HTTP integration configuration (runtime).\n *\n * Persists a single {@link Webhook} envelope per row so administrators\n * can author, enable/disable, and edit webhook subscriptions from the\n * Studio UI without code changes. The canonical Zod schema for the\n * `definition_json` envelope lives at `@objectstack/spec/automation/webhook`.\n *\n * One row per `name`. The automation runtime\n * (`@objectstack/service-automation`, built-in `http_request` node) loads\n * active rows on boot + on `sys_webhook:changed` events, registers\n * `afterInsert` / `afterUpdate` / `afterDelete` listeners for the\n * targeted object, and dispatches outbound HTTP calls when matching\n * record events fire.\n *\n * Ownership (ADR-0029 K2.a): this object is **owned by\n * `@objectstack/plugin-webhooks`** — the plugin that consumes these rows —\n * alongside its sibling `sys_webhook_delivery`. It used to live in the\n * `@objectstack/platform-objects` monolith and be imported here; the\n * definition now lives with its owner so the plugin ships both data and\n * behavior as one unit.\n *\n * Platform-wide on purpose: every project (standalone, single-tenant,\n * cloud) can integrate with external systems (Slack, Stripe, internal\n * services) the same way.\n *\n * @namespace sys\n */\nexport const SysWebhook = ObjectSchema.create({\n name: 'sys_webhook',\n label: 'Webhook',\n pluralLabel: 'Webhooks',\n icon: 'webhook',\n isSystem: true,\n managedBy: 'config',\n // Authoring a webhook from the UI requires a structured form for the\n // headers / auth / retry / payload blocks — the generic JSON textarea\n // is acceptable as a v1 until a dedicated builder lands. Re-enable\n // create/edit/delete so admins can at least toggle `active` and edit\n // simple URL/method fields without round-tripping through code.\n userActions: { create: true, edit: true, delete: true, import: false },\n description: 'Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.',\n displayNameField: 'name',\n nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{label}',\n highlightFields: ['name', 'object_name', 'url', 'active', 'updated_at'],\n\n listViews: {\n active: {\n type: 'grid',\n name: 'active',\n label: 'Active',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: true }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n inactive: {\n type: 'grid',\n name: 'inactive',\n label: 'Inactive',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: false }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n by_object: {\n type: 'grid',\n name: 'by_object',\n label: 'By Object',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['object_name', 'label', 'url', 'active', 'updated_at'],\n sort: [{ field: 'object_name', order: 'asc' }, { field: 'label', order: 'asc' }],\n grouping: { fields: [{ field: 'object_name', order: 'asc', collapsed: false }] },\n pagination: { pageSize: 100 },\n },\n all_webhooks: {\n type: 'grid',\n name: 'all_webhooks',\n label: 'All',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n },\n\n fields: {\n id: Field.text({ label: 'Webhook ID', required: true, readonly: true, group: 'System' }),\n\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 100,\n description: 'Unique snake_case name — referenced in logs and audit',\n group: 'Definition',\n }),\n\n label: Field.text({\n label: 'Display Label',\n required: false,\n maxLength: 200,\n group: 'Definition',\n }),\n\n object_name: Field.text({\n label: 'Object',\n required: false,\n maxLength: 100,\n // Object picker (same widget as sys_sharing_rule) instead of a free-text\n // machine name. Falls back to a text input when the widget is unavailable.\n widget: 'object-ref',\n description: 'Short object name whose events fire this webhook (blank = manual / API-triggered)',\n group: 'Definition',\n }),\n\n triggers: Field.select(\n ['create', 'update', 'delete', 'undelete', 'api'],\n {\n label: 'Triggers',\n required: false,\n // Multi-select instead of a hand-typed comma-separated string. Stored as\n // an array; the auto-enqueuer parser also tolerates the legacy\n // comma-separated / JSON-string forms so existing rows keep working.\n multiple: true,\n description: 'Record events that fire this webhook (empty = manual / API-triggered)',\n group: 'Definition',\n },\n ),\n\n url: Field.text({\n label: 'Target URL',\n required: true,\n maxLength: 2048,\n description: 'External endpoint that receives the POST',\n group: 'Definition',\n }),\n\n method: Field.select(\n ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],\n {\n label: 'HTTP Method',\n required: true,\n // Select instead of free text. Option values are lowercased by the\n // Field.select helper (get/post/…); the auto-enqueuer upper-cases the\n // resolved method before delivery, so existing 'POST' rows and the\n // lowercase option values both normalise correctly.\n defaultValue: 'post',\n description: 'HTTP method used for the callback request',\n group: 'Definition',\n },\n ),\n\n description: Field.textarea({ label: 'Description', required: false, group: 'Definition' }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n description: 'Inactive webhooks are skipped by the dispatcher',\n group: 'Definition',\n }),\n\n definition_json: Field.textarea({\n label: 'Definition',\n required: true,\n description: 'Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config',\n group: 'Definition',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name'], unique: true },\n { fields: ['object_name'] },\n { fields: ['active', 'object_name'] },\n ],\n});\n"],"mappings":"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","names":[]}
|