@10x-media/webhooks 0.1.0-beta.0 → 0.1.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/README.md +21 -149
- package/dist/collections/deliveries.js +99 -0
- package/dist/collections/deliveries.js.map +1 -0
- package/dist/collections/subscriptions.js +123 -0
- package/dist/collections/subscriptions.js.map +1 -0
- package/dist/constants.js +29 -0
- package/dist/constants.js.map +1 -0
- package/dist/delivery/DeliveryStatusCell.d.ts +10 -0
- package/dist/delivery/DeliveryStatusCell.js +42 -0
- package/dist/delivery/DeliveryStatusCell.js.map +1 -0
- package/dist/delivery/RedeliverButton.d.ts +6 -0
- package/dist/delivery/RedeliverButton.js +43 -0
- package/dist/delivery/RedeliverButton.js.map +1 -0
- package/dist/delivery/buildPayload.js +32 -0
- package/dist/delivery/buildPayload.js.map +1 -0
- package/dist/delivery/deliver.js +36 -0
- package/dist/delivery/deliver.js.map +1 -0
- package/dist/delivery/deliverTask.js +80 -0
- package/dist/delivery/deliverTask.js.map +1 -0
- package/dist/delivery/deriveDeliveryStatus.js +10 -0
- package/dist/delivery/deriveDeliveryStatus.js.map +1 -0
- package/dist/delivery/redeliver.js +83 -0
- package/dist/delivery/redeliver.js.map +1 -0
- package/dist/delivery/sendDelivery.js +32 -0
- package/dist/delivery/sendDelivery.js.map +1 -0
- package/dist/delivery/sign.js +10 -0
- package/dist/delivery/sign.js.map +1 -0
- package/dist/events/eventTypes.js +27 -0
- package/dist/events/eventTypes.js.map +1 -0
- package/dist/events/hooks.js +132 -0
- package/dist/events/hooks.js.map +1 -0
- package/dist/exports/client.d.ts +3 -14
- package/dist/exports/client.js +2 -81
- package/dist/exports/i18n.d.ts +3 -37
- package/dist/exports/i18n.js +2 -2
- package/dist/exports/types.d.ts +1 -1
- package/dist/index.d.ts +20 -2
- package/dist/index.js +3 -817
- package/dist/index.js.map +1 -1
- package/dist/{index-CpsTtHO1.d.ts → options.d.ts} +17 -18
- package/dist/options.js +15 -0
- package/dist/options.js.map +1 -0
- package/dist/plugin/registerTranslations.js +19 -0
- package/dist/plugin/registerTranslations.js.map +1 -0
- package/dist/plugin/registerWebhooks.js +109 -0
- package/dist/plugin/registerWebhooks.js.map +1 -0
- package/dist/plugin/resolveMode.js +15 -0
- package/dist/plugin/resolveMode.js.map +1 -0
- package/dist/plugin/resolveSubscriptions.js +53 -0
- package/dist/plugin/resolveSubscriptions.js.map +1 -0
- package/dist/{translations-CnkwrCJ3.js → translations/en.js} +3 -22
- package/dist/translations/en.js.map +1 -0
- package/dist/translations/index.d.ts +14 -0
- package/dist/translations/index.js +26 -0
- package/dist/translations/index.js.map +1 -0
- package/dist/translations/keys.d.ts +31 -0
- package/dist/{keys-BdNiD3rC.js → translations/keys.js} +2 -2
- package/dist/translations/keys.js.map +1 -0
- package/dist/translations/server.js +13 -0
- package/dist/translations/server.js.map +1 -0
- package/dist/translations/useTranslation.js +12 -0
- package/dist/translations/useTranslation.js.map +1 -0
- package/package.json +4 -3
- package/dist/exports/client.js.map +0 -1
- package/dist/keys-BdNiD3rC.js.map +0 -1
- package/dist/translations-CnkwrCJ3.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation.js","names":["useTranslation","usePayloadTranslation"],"sources":["../../src/translations/useTranslation.ts"],"sourcesContent":["'use client'\n\nimport { useTranslation as usePayloadTranslation } from '@payloadcms/ui'\n\nimport type { TranslationKey } from './keys'\n\n/**\n * `useTranslation` bound to this plugin's keys, so `t(keys.X)` typechecks without\n * a per-call `@ts-expect-error`. Returns Payload's `{ t, i18n }` unchanged.\n */\nexport const useTranslation = () => usePayloadTranslation<Record<string, never>, TranslationKey>()\n"],"mappings":";;;;;;;AAUA,MAAaA,yBAAuBC,eAA6D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@10x-media/webhooks",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.2",
|
|
4
4
|
"description": "Outbound webhook subscriptions for Payload v3",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -70,9 +70,10 @@
|
|
|
70
70
|
"tsdown": "0.22.1",
|
|
71
71
|
"typescript": "5.9.3",
|
|
72
72
|
"vitest": "4.1.7",
|
|
73
|
+
"@10x-media/tsconfig": "0.0.0",
|
|
74
|
+
"@10x-media/tsdown-config": "0.0.0",
|
|
73
75
|
"@10x-media/vitest-config": "0.0.0",
|
|
74
|
-
"@10x-media/payload-test-harness": "0.0.0"
|
|
75
|
-
"@10x-media/tsconfig": "0.0.0"
|
|
76
|
+
"@10x-media/payload-test-harness": "0.0.0"
|
|
76
77
|
},
|
|
77
78
|
"publishConfig": {
|
|
78
79
|
"access": "public"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":["useTranslation","usePayloadTranslation","useTranslation","useTranslation"],"sources":["../../src/translations/useTranslation.ts","../../src/delivery/DeliveryStatusCell.tsx","../../src/delivery/RedeliverButton.tsx"],"sourcesContent":["'use client'\n\nimport { useTranslation as usePayloadTranslation } from '@payloadcms/ui'\n\nimport type { TranslationKey } from './keys'\n\n/**\n * `useTranslation` bound to this plugin's keys, so `t(keys.X)` typechecks without\n * a per-call `@ts-expect-error`. Returns Payload's `{ t, i18n }` unchanged.\n */\nexport const useTranslation = () => usePayloadTranslation<Record<string, never>, TranslationKey>()\n","'use client'\n\nimport { Pill } from '@payloadcms/ui'\nimport type { DefaultCellComponentProps } from 'payload'\n\nimport { keys, type TranslationKey } from '../translations/keys'\nimport { useTranslation } from '../translations/useTranslation'\n\ntype MetaEntry = { labelKey: TranslationKey; pillStyle: 'error' | 'light' | 'success' | 'warning' }\n\nconst META: Record<string, MetaEntry> = {\n\tpending: { labelKey: keys.statusPending, pillStyle: 'light' },\n\tsuccess: { labelKey: keys.statusSuccess, pillStyle: 'success' },\n\tfailed: { labelKey: keys.statusFailed, pillStyle: 'warning' },\n\tdead: { labelKey: keys.statusDead, pillStyle: 'error' },\n}\n\nconst FALLBACK: MetaEntry = { labelKey: keys.statusPending, pillStyle: 'light' }\n\n/** List cell rendering a delivery's status as a native Payload Pill. */\nexport const DeliveryStatusCell = ({ cellData }: DefaultCellComponentProps) => {\n\tconst { t } = useTranslation()\n\tconst meta = META[String(cellData)] ?? FALLBACK\n\treturn (\n\t\t<Pill pillStyle={meta.pillStyle} size=\"small\">\n\t\t\t{t(meta.labelKey)}\n\t\t</Pill>\n\t)\n}\n","'use client'\n\nimport { Button, toast, useConfig, useDocumentInfo } from '@payloadcms/ui'\nimport { useState } from 'react'\n\nimport { keys } from '../translations/keys'\nimport { useTranslation } from '../translations/useTranslation'\n\n/** Doc-view action that POSTs to the deliveries redeliver endpoint. */\nexport const RedeliverButton = () => {\n\tconst { id, collectionSlug } = useDocumentInfo()\n\tconst { config } = useConfig()\n\tconst { t } = useTranslation()\n\tconst [busy, setBusy] = useState(false)\n\n\tif (!id || !collectionSlug) {\n\t\treturn null\n\t}\n\n\tconst apiRoute = config.routes?.api ?? '/api'\n\tconst serverURL = config.serverURL ?? ''\n\n\tconst onClick = async () => {\n\t\tsetBusy(true)\n\t\ttry {\n\t\t\tconst res = await fetch(\n\t\t\t\t`${serverURL}${apiRoute}/${collectionSlug}/${encodeURIComponent(String(id))}/redeliver`,\n\t\t\t\t{ method: 'POST', credentials: 'include' }\n\t\t\t)\n\t\t\tif (!res.ok) {\n\t\t\t\tthrow new Error(String(res.status))\n\t\t\t}\n\t\t\ttoast.success(t(keys.redeliverDone))\n\t\t} catch {\n\t\t\ttoast.error(t(keys.redeliver))\n\t\t} finally {\n\t\t\tsetBusy(false)\n\t\t}\n\t}\n\n\treturn (\n\t\t<Button buttonStyle=\"secondary\" disabled={busy} onClick={onClick} size=\"small\">\n\t\t\t{t(keys.redeliver)}\n\t\t</Button>\n\t)\n}\n"],"mappings":";;;;;;;;;;AAUA,MAAaA,yBAAuBC,eAA6D;;;ACAjG,MAAM,OAAkC;CACvC,SAAS;EAAE,UAAU,KAAK;EAAe,WAAW;CAAQ;CAC5D,SAAS;EAAE,UAAU,KAAK;EAAe,WAAW;CAAU;CAC9D,QAAQ;EAAE,UAAU,KAAK;EAAc,WAAW;CAAU;CAC5D,MAAM;EAAE,UAAU,KAAK;EAAY,WAAW;CAAQ;AACvD;AAEA,MAAM,WAAsB;CAAE,UAAU,KAAK;CAAe,WAAW;AAAQ;;AAG/E,MAAa,sBAAsB,EAAE,eAA0C;CAC9E,MAAM,EAAE,MAAMC,iBAAe;CAC7B,MAAM,OAAO,KAAK,OAAO,QAAQ,MAAM;CACvC,OACC,oBAAC,MAAD;EAAM,WAAW,KAAK;EAAW,MAAK;YACpC,EAAE,KAAK,QAAQ;CACX,CAAA;AAER;;;;ACnBA,MAAa,wBAAwB;CACpC,MAAM,EAAE,IAAI,mBAAmB,gBAAgB;CAC/C,MAAM,EAAE,WAAW,UAAU;CAC7B,MAAM,EAAE,MAAMC,iBAAe;CAC7B,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CAEtC,IAAI,CAAC,MAAM,CAAC,gBACX,OAAO;CAGR,MAAM,WAAW,OAAO,QAAQ,OAAO;CACvC,MAAM,YAAY,OAAO,aAAa;CAEtC,MAAM,UAAU,YAAY;EAC3B,QAAQ,IAAI;EACZ,IAAI;GACH,MAAM,MAAM,MAAM,MACjB,GAAG,YAAY,SAAS,GAAG,eAAe,GAAG,mBAAmB,OAAO,EAAE,CAAC,EAAE,aAC5E;IAAE,QAAQ;IAAQ,aAAa;GAAU,CAC1C;GACA,IAAI,CAAC,IAAI,IACR,MAAM,IAAI,MAAM,OAAO,IAAI,MAAM,CAAC;GAEnC,MAAM,QAAQ,EAAE,KAAK,aAAa,CAAC;EACpC,QAAQ;GACP,MAAM,MAAM,EAAE,KAAK,SAAS,CAAC;EAC9B,UAAU;GACT,QAAQ,KAAK;EACd;CACD;CAEA,OACC,oBAAC,QAAD;EAAQ,aAAY;EAAY,UAAU;EAAe;EAAS,MAAK;YACrE,EAAE,KAAK,SAAS;CACV,CAAA;AAEV"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keys-BdNiD3rC.js","names":[],"sources":["../src/translations/keys.ts"],"sourcesContent":["/**\n * Typed translation keys. Lookups must go through these constants, not string\n * literals. Every key here must have a value in every locale (`en.ts`), or it is\n * a type error.\n */\nexport const keys = {\n\tpluginName: 'webhooks:pluginName',\n\tsubscriptionSingular: 'webhooks:subscriptionSingular',\n\tsubscriptionPlural: 'webhooks:subscriptionPlural',\n\tdeliverySingular: 'webhooks:deliverySingular',\n\tdeliveryPlural: 'webhooks:deliveryPlural',\n\tfieldName: 'webhooks:fieldName',\n\tfieldUrl: 'webhooks:fieldUrl',\n\tfieldEnabled: 'webhooks:fieldEnabled',\n\tfieldEvents: 'webhooks:fieldEvents',\n\tfieldSecret: 'webhooks:fieldSecret',\n\tfieldSecretHelp: 'webhooks:fieldSecretHelp',\n\tfieldHeaders: 'webhooks:fieldHeaders',\n\tfieldDescription: 'webhooks:fieldDescription',\n\tstatusPending: 'webhooks:statusPending',\n\tstatusSuccess: 'webhooks:statusSuccess',\n\tstatusFailed: 'webhooks:statusFailed',\n\tstatusDead: 'webhooks:statusDead',\n\tredeliver: 'webhooks:redeliver',\n\tredeliverDone: 'webhooks:redeliverDone',\n} as const\n\nexport type TranslationKey = (typeof keys)[keyof typeof keys]\n"],"mappings":";;;;;;AAKA,MAAa,OAAO;CACnB,YAAY;CACZ,sBAAsB;CACtB,oBAAoB;CACpB,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,UAAU;CACV,cAAc;CACd,aAAa;CACb,aAAa;CACb,iBAAiB;CACjB,cAAc;CACd,kBAAkB;CAClB,eAAe;CACf,eAAe;CACf,cAAc;CACd,YAAY;CACZ,WAAW;CACX,eAAe;AAChB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"translations-CnkwrCJ3.js","names":[],"sources":["../src/translations/en.ts","../src/translations/index.ts"],"sourcesContent":["import { keys, type TranslationKey } from './keys'\n\n/**\n * English values, keyed by the typed constants in `keys.ts`. The\n * `Record<TranslationKey, string>` annotation makes a missing or unknown key a\n * type error. `translations/index.ts` nests these for Payload.\n */\nexport const en: Record<TranslationKey, string> = {\n\t[keys.pluginName]: 'Webhooks',\n\t[keys.subscriptionSingular]: 'Subscription',\n\t[keys.subscriptionPlural]: 'Subscriptions',\n\t[keys.deliverySingular]: 'Delivery',\n\t[keys.deliveryPlural]: 'Deliveries',\n\t[keys.fieldName]: 'Name',\n\t[keys.fieldUrl]: 'Endpoint URL',\n\t[keys.fieldEnabled]: 'Enabled',\n\t[keys.fieldEvents]: 'Events',\n\t[keys.fieldSecret]: 'Signing secret',\n\t[keys.fieldSecretHelp]:\n\t\t'Shown in full once on create, masked afterward. Used to sign deliveries; copy it to the receiver now.',\n\t[keys.fieldHeaders]: 'Custom headers',\n\t[keys.fieldDescription]: 'Description',\n\t[keys.statusPending]: 'Pending',\n\t[keys.statusSuccess]: 'Delivered',\n\t[keys.statusFailed]: 'Failed',\n\t[keys.statusDead]: 'Dead',\n\t[keys.redeliver]: 'Redeliver',\n\t[keys.redeliverDone]: 'Redelivery queued',\n}\n","import { en } from './en'\n\nexport type { TranslationKey } from './keys'\nexport { keys } from './keys'\n\n/**\n * Flat `webhooks:foo` entries to the nested `{ webhooks: { foo } }`\n * shape Payload resolves `t('webhooks:foo')` against (it splits on `:`).\n */\nconst toNested = (flat: Record<string, string>): Record<string, Record<string, string>> => {\n\tconst out: Record<string, Record<string, string>> = {}\n\tfor (const [fullKey, value] of Object.entries(flat)) {\n\t\tconst separator = fullKey.indexOf(':')\n\t\tconst namespace = fullKey.slice(0, separator)\n\t\tconst bucket = out[namespace] ?? {}\n\t\tbucket[fullKey.slice(separator + 1)] = value\n\t\tout[namespace] = bucket\n\t}\n\treturn out\n}\n\n/** Per-locale messages merged into `config.i18n.translations`. English only for now. */\nexport const translations = {\n\ten: toNested(en),\n}\n"],"mappings":";;;;;;;AAOA,MAAa,KAAqC;EAChD,KAAK,aAAa;EAClB,KAAK,uBAAuB;EAC5B,KAAK,qBAAqB;EAC1B,KAAK,mBAAmB;EACxB,KAAK,iBAAiB;EACtB,KAAK,YAAY;EACjB,KAAK,WAAW;EAChB,KAAK,eAAe;EACpB,KAAK,cAAc;EACnB,KAAK,cAAc;EACnB,KAAK,kBACL;EACA,KAAK,eAAe;EACpB,KAAK,mBAAmB;EACxB,KAAK,gBAAgB;EACrB,KAAK,gBAAgB;EACrB,KAAK,eAAe;EACpB,KAAK,aAAa;EAClB,KAAK,YAAY;EACjB,KAAK,gBAAgB;AACvB;;;;;;;ACnBA,MAAM,YAAY,SAAyE;CAC1F,MAAM,MAA8C,CAAC;CACrD,KAAK,MAAM,CAAC,SAAS,UAAU,OAAO,QAAQ,IAAI,GAAG;EACpD,MAAM,YAAY,QAAQ,QAAQ,GAAG;EACrC,MAAM,YAAY,QAAQ,MAAM,GAAG,SAAS;EAC5C,MAAM,SAAS,IAAI,cAAc,CAAC;EAClC,OAAO,QAAQ,MAAM,YAAY,CAAC,KAAK;EACvC,IAAI,aAAa;CAClB;CACA,OAAO;AACR;;AAGA,MAAa,eAAe,EAC3B,IAAI,SAAS,EAAE,EAChB"}
|