@sixtyninecommerce/client 0.24.0 → 0.25.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/README.md +21 -0
- package/dist/admin/forms.js +19 -0
- package/dist/admin/forms.js.map +1 -1
- package/dist/admin/http.d.ts +9 -0
- package/dist/admin/http.d.ts.map +1 -1
- package/dist/admin/http.js +3 -0
- package/dist/admin/http.js.map +1 -1
- package/dist/admin/index.d.ts +63 -0
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +67 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/redirects.d.ts +6 -0
- package/dist/admin/redirects.d.ts.map +1 -1
- package/dist/admin/redirects.js +12 -0
- package/dist/admin/redirects.js.map +1 -1
- package/dist/admin/types.d.ts +63 -0
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/cache-tags.d.ts +19 -0
- package/dist/cache-tags.d.ts.map +1 -1
- package/dist/cache-tags.js +19 -0
- package/dist/cache-tags.js.map +1 -1
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -0
- package/dist/client.js.map +1 -1
- package/dist/commerce/age-verification.js +3 -3
- package/dist/commerce/age-verification.js.map +1 -1
- package/dist/commerce/branding.js +7 -0
- package/dist/commerce/branding.js.map +1 -1
- package/dist/commerce/cart.js +25 -0
- package/dist/commerce/cart.js.map +1 -1
- package/dist/commerce/checkout.d.ts +68 -0
- package/dist/commerce/checkout.d.ts.map +1 -1
- package/dist/commerce/checkout.js +83 -0
- package/dist/commerce/checkout.js.map +1 -1
- package/dist/commerce/customer.d.ts +58 -0
- package/dist/commerce/customer.d.ts.map +1 -1
- package/dist/commerce/customer.js +65 -0
- package/dist/commerce/customer.js.map +1 -1
- package/dist/commerce/pickup-location-parser.d.ts +18 -0
- package/dist/commerce/pickup-location-parser.d.ts.map +1 -1
- package/dist/commerce/pickup-location-parser.js +28 -0
- package/dist/commerce/pickup-location-parser.js.map +1 -1
- package/dist/commerce/placement-error.d.ts +52 -0
- package/dist/commerce/placement-error.d.ts.map +1 -1
- package/dist/commerce/placement-error.js +87 -0
- package/dist/commerce/placement-error.js.map +1 -1
- package/dist/commerce/products.d.ts +48 -0
- package/dist/commerce/products.d.ts.map +1 -1
- package/dist/commerce/products.js +92 -0
- package/dist/commerce/products.js.map +1 -1
- package/dist/commerce/queries.d.ts +113 -27
- package/dist/commerce/queries.d.ts.map +1 -1
- package/dist/commerce/queries.js +188 -2
- package/dist/commerce/queries.js.map +1 -1
- package/dist/commerce/quotes.js +33 -0
- package/dist/commerce/quotes.js.map +1 -1
- package/dist/commerce/saved-lists.d.ts +7 -7
- package/dist/commerce/saved-lists.d.ts.map +1 -1
- package/dist/commerce/saved-lists.js +1 -1
- package/dist/commerce/search.js +3 -0
- package/dist/commerce/search.js.map +1 -1
- package/dist/commerce/shipping.js +3 -3
- package/dist/commerce/shipping.js.map +1 -1
- package/dist/commerce/stock-notifications.d.ts +11 -0
- package/dist/commerce/stock-notifications.d.ts.map +1 -1
- package/dist/commerce/stock-notifications.js +11 -0
- package/dist/commerce/stock-notifications.js.map +1 -1
- package/dist/commerce/vat-validation.js +4 -4
- package/dist/commerce/vat-validation.js.map +1 -1
- package/dist/constants.d.ts +31 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +32 -0
- package/dist/constants.js.map +1 -1
- package/dist/content/asset-urls.d.ts +50 -0
- package/dist/content/asset-urls.d.ts.map +1 -1
- package/dist/content/asset-urls.js +92 -0
- package/dist/content/asset-urls.js.map +1 -1
- package/dist/content/assets.d.ts +15 -0
- package/dist/content/assets.d.ts.map +1 -1
- package/dist/content/assets.js +15 -0
- package/dist/content/assets.js.map +1 -1
- package/dist/content/collection-pages.d.ts +5 -0
- package/dist/content/collection-pages.d.ts.map +1 -1
- package/dist/content/collection-pages.js +8 -0
- package/dist/content/collection-pages.js.map +1 -1
- package/dist/content/collections.d.ts +14 -0
- package/dist/content/collections.d.ts.map +1 -1
- package/dist/content/collections.js +16 -0
- package/dist/content/collections.js.map +1 -1
- package/dist/content/filtered-products.d.ts +18 -0
- package/dist/content/filtered-products.d.ts.map +1 -1
- package/dist/content/filtered-products.js +16 -0
- package/dist/content/filtered-products.js.map +1 -1
- package/dist/content/form-field-types.d.ts +6 -0
- package/dist/content/form-field-types.d.ts.map +1 -1
- package/dist/content/form-field-types.js +12 -0
- package/dist/content/form-field-types.js.map +1 -1
- package/dist/content/forms.d.ts +16 -0
- package/dist/content/forms.d.ts.map +1 -1
- package/dist/content/forms.js +23 -0
- package/dist/content/forms.js.map +1 -1
- package/dist/content/items.d.ts +26 -0
- package/dist/content/items.d.ts.map +1 -1
- package/dist/content/items.js +33 -0
- package/dist/content/items.js.map +1 -1
- package/dist/content/resolve.js +6 -0
- package/dist/content/resolve.js.map +1 -1
- package/dist/content/sitemap.d.ts +5 -0
- package/dist/content/sitemap.d.ts.map +1 -1
- package/dist/content/sitemap.js +5 -0
- package/dist/content/sitemap.js.map +1 -1
- package/dist/core/context.js +6 -0
- package/dist/core/context.js.map +1 -1
- package/dist/core/headers.js +2 -0
- package/dist/core/headers.js.map +1 -1
- package/dist/core/http.d.ts +8 -0
- package/dist/core/http.d.ts.map +1 -1
- package/dist/core/http.js +89 -1
- package/dist/core/http.js.map +1 -1
- package/dist/credit/credit-status.js +2 -2
- package/dist/credit/credit-status.js.map +1 -1
- package/dist/credit/payment-terms.js +2 -2
- package/dist/credit/payment-terms.js.map +1 -1
- package/dist/currency/exchange.d.ts +11 -0
- package/dist/currency/exchange.d.ts.map +1 -1
- package/dist/currency/exchange.js +11 -0
- package/dist/currency/exchange.js.map +1 -1
- package/dist/errors.d.ts +50 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +48 -2
- package/dist/errors.js.map +1 -1
- package/dist/events/envelope.d.ts +36 -0
- package/dist/events/envelope.d.ts.map +1 -1
- package/dist/events/envelope.js +12 -0
- package/dist/events/envelope.js.map +1 -1
- package/dist/events/index.d.ts +13 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +13 -0
- package/dist/events/index.js.map +1 -1
- package/dist/events/payloads.d.ts +19 -0
- package/dist/events/payloads.d.ts.map +1 -1
- package/dist/events/payloads.js +12 -0
- package/dist/events/payloads.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/media/index.js +2 -0
- package/dist/media/index.js.map +1 -1
- package/dist/media/urls.d.ts +52 -0
- package/dist/media/urls.d.ts.map +1 -1
- package/dist/media/urls.js +38 -0
- package/dist/media/urls.js.map +1 -1
- package/dist/media/video.d.ts +16 -0
- package/dist/media/video.d.ts.map +1 -1
- package/dist/media/video.js +16 -0
- package/dist/media/video.js.map +1 -1
- package/dist/next/artifact-handler.d.ts +22 -0
- package/dist/next/artifact-handler.d.ts.map +1 -1
- package/dist/next/artifact-handler.js +22 -0
- package/dist/next/artifact-handler.js.map +1 -1
- package/dist/next/event-revalidate-handler.d.ts +67 -0
- package/dist/next/event-revalidate-handler.d.ts.map +1 -1
- package/dist/next/event-revalidate-handler.js +48 -0
- package/dist/next/event-revalidate-handler.js.map +1 -1
- package/dist/next/index.d.ts +6 -0
- package/dist/next/index.d.ts.map +1 -1
- package/dist/next/index.js +6 -0
- package/dist/next/index.js.map +1 -1
- package/dist/next/json-ld.d.ts +9 -0
- package/dist/next/json-ld.d.ts.map +1 -1
- package/dist/next/json-ld.js +9 -0
- package/dist/next/json-ld.js.map +1 -1
- package/dist/next/metadata.d.ts +18 -0
- package/dist/next/metadata.d.ts.map +1 -1
- package/dist/next/metadata.js +21 -0
- package/dist/next/metadata.js.map +1 -1
- package/dist/next/redirect-middleware.d.ts +39 -0
- package/dist/next/redirect-middleware.d.ts.map +1 -1
- package/dist/next/redirect-middleware.js +32 -0
- package/dist/next/redirect-middleware.js.map +1 -1
- package/dist/next/revalidate-handler.d.ts +30 -0
- package/dist/next/revalidate-handler.d.ts.map +1 -1
- package/dist/next/revalidate-handler.js +22 -0
- package/dist/next/revalidate-handler.js.map +1 -1
- package/dist/order-scope.d.ts +27 -0
- package/dist/order-scope.d.ts.map +1 -1
- package/dist/order-scope.js +29 -0
- package/dist/order-scope.js.map +1 -1
- package/dist/pricing/format.d.ts +17 -0
- package/dist/pricing/format.d.ts.map +1 -1
- package/dist/pricing/format.js +19 -0
- package/dist/pricing/format.js.map +1 -1
- package/dist/pricing/index.d.ts +8 -1
- package/dist/pricing/index.d.ts.map +1 -1
- package/dist/pricing/index.js +18 -2
- package/dist/pricing/index.js.map +1 -1
- package/dist/pricing/tax-display.d.ts +77 -0
- package/dist/pricing/tax-display.d.ts.map +1 -1
- package/dist/pricing/tax-display.js +85 -0
- package/dist/pricing/tax-display.js.map +1 -1
- package/dist/pricing/tiers.d.ts +9 -0
- package/dist/pricing/tiers.d.ts.map +1 -1
- package/dist/pricing/tiers.js +9 -0
- package/dist/pricing/tiers.js.map +1 -1
- package/dist/pricing/validation.d.ts +56 -1
- package/dist/pricing/validation.d.ts.map +1 -1
- package/dist/pricing/validation.js +61 -0
- package/dist/pricing/validation.js.map +1 -1
- package/dist/redirects/index.d.ts +1 -0
- package/dist/redirects/index.d.ts.map +1 -1
- package/dist/redirects/index.js +1 -0
- package/dist/redirects/index.js.map +1 -1
- package/dist/redirects/store.d.ts +20 -0
- package/dist/redirects/store.d.ts.map +1 -1
- package/dist/redirects/store.js +57 -0
- package/dist/redirects/store.js.map +1 -1
- package/dist/redirects/types.d.ts +24 -0
- package/dist/redirects/types.d.ts.map +1 -1
- package/dist/redirects/types.js +1 -0
- package/dist/redirects/types.js.map +1 -1
- package/dist/revalidation/event-plan.d.ts +48 -0
- package/dist/revalidation/event-plan.d.ts.map +1 -1
- package/dist/revalidation/event-plan.js +61 -0
- package/dist/revalidation/event-plan.js.map +1 -1
- package/dist/revalidation/event-verify.d.ts +25 -0
- package/dist/revalidation/event-verify.d.ts.map +1 -1
- package/dist/revalidation/event-verify.js +27 -0
- package/dist/revalidation/event-verify.js.map +1 -1
- package/dist/revalidation/types.d.ts +20 -0
- package/dist/revalidation/types.d.ts.map +1 -1
- package/dist/revalidation/types.js +10 -0
- package/dist/revalidation/types.js.map +1 -1
- package/dist/revalidation/url-context.d.ts +25 -0
- package/dist/revalidation/url-context.d.ts.map +1 -1
- package/dist/revalidation/url-context.js +17 -0
- package/dist/revalidation/url-context.js.map +1 -1
- package/dist/revalidation/verify.d.ts +8 -0
- package/dist/revalidation/verify.d.ts.map +1 -1
- package/dist/revalidation/verify.js +8 -0
- package/dist/revalidation/verify.js.map +1 -1
- package/dist/seo/ai.d.ts +17 -0
- package/dist/seo/ai.d.ts.map +1 -1
- package/dist/seo/ai.js +12 -0
- package/dist/seo/ai.js.map +1 -1
- package/dist/seo/alternates.js +13 -0
- package/dist/seo/alternates.js.map +1 -1
- package/dist/seo/artifacts.d.ts +13 -0
- package/dist/seo/artifacts.d.ts.map +1 -1
- package/dist/seo/artifacts.js +19 -0
- package/dist/seo/artifacts.js.map +1 -1
- package/dist/seo/canonical.d.ts +15 -0
- package/dist/seo/canonical.d.ts.map +1 -1
- package/dist/seo/canonical.js +24 -0
- package/dist/seo/canonical.js.map +1 -1
- package/dist/seo/index.js +6 -0
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/json-ld.d.ts +13 -0
- package/dist/seo/json-ld.d.ts.map +1 -1
- package/dist/seo/json-ld.js +32 -0
- package/dist/seo/json-ld.js.map +1 -1
- package/dist/seo/locale-tag.d.ts +31 -0
- package/dist/seo/locale-tag.d.ts.map +1 -1
- package/dist/seo/locale-tag.js +31 -0
- package/dist/seo/locale-tag.js.map +1 -1
- package/dist/seo/meta-tags.d.ts +29 -0
- package/dist/seo/meta-tags.d.ts.map +1 -1
- package/dist/seo/meta-tags.js +28 -0
- package/dist/seo/meta-tags.js.map +1 -1
- package/dist/seo/metadata-parser.d.ts +24 -0
- package/dist/seo/metadata-parser.d.ts.map +1 -1
- package/dist/seo/metadata-parser.js +38 -0
- package/dist/seo/metadata-parser.js.map +1 -1
- package/dist/seo/metadata-types.d.ts +16 -0
- package/dist/seo/metadata-types.d.ts.map +1 -1
- package/dist/seo/product-path.d.ts +96 -0
- package/dist/seo/product-path.d.ts.map +1 -1
- package/dist/seo/product-path.js +96 -0
- package/dist/seo/product-path.js.map +1 -1
- package/dist/seo/robots.d.ts +17 -0
- package/dist/seo/robots.d.ts.map +1 -1
- package/dist/seo/robots.js +12 -0
- package/dist/seo/robots.js.map +1 -1
- package/dist/seo/types.d.ts +39 -0
- package/dist/seo/types.d.ts.map +1 -1
- package/dist/seo/url-builder.d.ts +31 -0
- package/dist/seo/url-builder.d.ts.map +1 -1
- package/dist/seo/url-builder.js +36 -0
- package/dist/seo/url-builder.js.map +1 -1
- package/dist/types.d.ts +1163 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -134,6 +134,27 @@ client.setAuthToken(token);
|
|
|
134
134
|
const data = await client.graphql(`query { activeChannel { id } }`);
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
+
## Deprecated: the `/admin` surface
|
|
138
|
+
|
|
139
|
+
`@sixtyninecommerce/client/admin` (`createCommerceAdminClient`) is **deprecated**. Use
|
|
140
|
+
[`@sixtyninecommerce/admin`](https://www.npmjs.com/package/@sixtyninecommerce/admin) instead: it
|
|
141
|
+
carries the platform's error hierarchy, cursor pagination and tenant context, and it is where every
|
|
142
|
+
other back-office capability lands. It covers forms (list, read by id or slug, slug upsert, delete)
|
|
143
|
+
and redirects (list, create, update, delete).
|
|
144
|
+
|
|
145
|
+
Five things have no successor yet, and are the reason to stay on this surface:
|
|
146
|
+
|
|
147
|
+
| Here | Why the successor cannot do it |
|
|
148
|
+
|---|---|
|
|
149
|
+
| `forms.update` | the only way to RENAME a slug — `upsertBySlug` keys on it |
|
|
150
|
+
| `forms.addField` / `updateField` / `removeField` | the slug upsert is non-destructive, so a field can be added but never removed |
|
|
151
|
+
| `forms.listSubmissions` | no successor |
|
|
152
|
+
| `redirects.import` | bulk upsert by source path with per-row rejections — the migration case |
|
|
153
|
+
| `redirects.upsert` | create-or-update one redirect by source path |
|
|
154
|
+
|
|
155
|
+
This surface still works and is unchanged; it will be removed in a future major, not before those
|
|
156
|
+
land.
|
|
157
|
+
|
|
137
158
|
## Modules
|
|
138
159
|
|
|
139
160
|
| Module | Description |
|
package/dist/admin/forms.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { StorefrontError } from '../errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* The admin surface speaks the CMS's snake_case DTOs; these mappers translate
|
|
4
|
+
* the camelCase SDK inputs. Only defined keys are forwarded so PATCH stays a
|
|
5
|
+
* true partial update.
|
|
6
|
+
*/
|
|
2
7
|
function fieldTranslationBody(t) {
|
|
3
8
|
const body = { language_code: t.languageCode, label: t.label };
|
|
4
9
|
if (t.placeholder !== undefined)
|
|
@@ -61,6 +66,17 @@ function formBody(input) {
|
|
|
61
66
|
body.fields = input.fields.map((f) => fieldBody(f));
|
|
62
67
|
return body;
|
|
63
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* `GET /forms/by-slug/:slug` is a PUBLIC CMS route with OPTIONAL auth: an
|
|
71
|
+
* invalid or expired admin token — and equally a valid one whose user has no
|
|
72
|
+
* access to the requested channel — is not rejected. The CMS answers 200 with
|
|
73
|
+
* the storefront projection, which carries neither `channelId` nor field ids.
|
|
74
|
+
* Returning that as an `AdminFormRecord` would hand the caller `undefined`
|
|
75
|
+
* under a `string` type, and the next `removeField`/`updateField` call would
|
|
76
|
+
* fail as an opaque "uuid is expected" 400 that names neither the token nor
|
|
77
|
+
* the channel. `channelId` is the discriminator — the entity always has it,
|
|
78
|
+
* the projection never does.
|
|
79
|
+
*/
|
|
64
80
|
function assertAdminForm(form, slug) {
|
|
65
81
|
if (form && typeof form.channelId === 'string' && form.channelId.length > 0)
|
|
66
82
|
return;
|
|
@@ -69,6 +85,9 @@ function assertAdminForm(form, slug) {
|
|
|
69
85
|
export function createFormsAdminMethods(http) {
|
|
70
86
|
return {
|
|
71
87
|
async getBySlug(slug, options) {
|
|
88
|
+
// Same route the public client reads, but the admin token makes the CMS
|
|
89
|
+
// return the raw entity (field ids, settings, notification emails)
|
|
90
|
+
// instead of the storefront projection.
|
|
72
91
|
const res = await http.request('GET', `/forms/by-slug/${encodeURIComponent(slug)}`, undefined, options);
|
|
73
92
|
assertAdminForm(res.data, slug);
|
|
74
93
|
return res.data;
|
package/dist/admin/forms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/admin/forms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/admin/forms.ts"],"names":[],"mappings":"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"}
|
package/dist/admin/http.d.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { type ServiceName } from '../errors.js';
|
|
2
2
|
import type { RequestOptions } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Minimal authenticated HTTP client for the admin (authoring) surfaces, which
|
|
5
|
+
* live on the CMS (forms) and the plugins service (redirects). Every request
|
|
6
|
+
* carries the admin Bearer token and the target channel. Kept separate from the
|
|
7
|
+
* public `core/http` client (which never sends admin auth) so the credential
|
|
8
|
+
* path is unmistakable.
|
|
9
|
+
*/
|
|
3
10
|
export interface AdminHttpConfig {
|
|
11
|
+
/** Origin of the service this client talks to. */
|
|
4
12
|
baseUrl: string;
|
|
13
|
+
/** Which service — used to label thrown `StorefrontError`s. */
|
|
5
14
|
service: ServiceName;
|
|
6
15
|
channelId: string;
|
|
7
16
|
adminToken: string;
|
package/dist/admin/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/admin/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,WAAW,EAAmB,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/admin/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,WAAW,EAAmB,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;GAMG;AAEH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAChG;AAkCD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAgElE"}
|
package/dist/admin/http.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { REQUEST_TIMEOUT_MS } from '../constants.js';
|
|
2
2
|
import { StorefrontError } from '../errors.js';
|
|
3
|
+
/** Parse a non-2xx response into a structured StorefrontError. */
|
|
3
4
|
async function toAdminError(response, service) {
|
|
4
5
|
let body = {};
|
|
5
6
|
try {
|
|
@@ -9,6 +10,7 @@ async function toAdminError(response, service) {
|
|
|
9
10
|
}
|
|
10
11
|
}
|
|
11
12
|
catch {
|
|
13
|
+
// Non-JSON error body — fall back to the status line.
|
|
12
14
|
}
|
|
13
15
|
const rawMessage = body.message;
|
|
14
16
|
const message = Array.isArray(rawMessage)
|
|
@@ -50,6 +52,7 @@ export function createAdminHttp(config) {
|
|
|
50
52
|
if (!response.ok) {
|
|
51
53
|
throw await toAdminError(response, config.service);
|
|
52
54
|
}
|
|
55
|
+
// 204 No Content (DELETE) — nothing to parse.
|
|
53
56
|
if (response.status === 204) {
|
|
54
57
|
return undefined;
|
|
55
58
|
}
|
package/dist/admin/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/admin/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAqC,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/admin/http.ts"],"names":[],"mappings":"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"}
|
package/dist/admin/index.d.ts
CHANGED
|
@@ -1,4 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@sixtyninecommerce/client/admin` — the ADMIN (authoring) surface.
|
|
3
|
+
*
|
|
4
|
+
* DEPRECATED in favour of
|
|
5
|
+
* [`@sixtyninecommerce/admin`](https://www.npmjs.com/package/@sixtyninecommerce/admin). The
|
|
6
|
+
* machine-readable `@deprecated` tag is on {@link createCommerceAdminClient} itself, NOT here: a
|
|
7
|
+
* module-level tag above an `import` attaches to that import declaration and marks no exported
|
|
8
|
+
* symbol, so no consumer's editor would ever strike the call through.
|
|
9
|
+
*
|
|
10
|
+
* Unlike the public storefront client, every call here is permission-gated and
|
|
11
|
+
* requires a Vendure admin session token (or an `s69t_` API token) holding the
|
|
12
|
+
* relevant permissions — CreateCmsForm/UpdateCmsForm/ReadCmsForm for `forms`,
|
|
13
|
+
* UpdateChannel for `redirects`. It is a deliberately separate factory so the
|
|
14
|
+
* credential requirement is impossible to miss. Use it for server-side
|
|
15
|
+
* authoring (e.g. scaffolding a contact form or registering redirects during a
|
|
16
|
+
* migration); never ship an admin token to a browser.
|
|
17
|
+
*
|
|
18
|
+
* `forms` talks to the CMS; `redirects` talks to the plugins service, so set
|
|
19
|
+
* `pluginsUrl` when you use it against a non-default host.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { createCommerceAdminClient } from '@sixtyninecommerce/client/admin';
|
|
24
|
+
*
|
|
25
|
+
* const admin = createCommerceAdminClient({
|
|
26
|
+
* cmsUrl: 'https://cms.example.com',
|
|
27
|
+
* channelId: '<tenant-channel-id>',
|
|
28
|
+
* adminToken: process.env.SIXTYNINE_COMMERCE_API_TOKEN!,
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* await admin.forms.upsertBySlug('contact', {
|
|
32
|
+
* name: 'Contact',
|
|
33
|
+
* notificationEmails: 'team@example.com',
|
|
34
|
+
* fields: [{ name: 'Email', slug: 'email', fieldType: 'email', isRequired: true }],
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* await admin.redirects.create({ oldPath: '/old-page', newPath: '/new-page' });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
1
40
|
import type { CommerceAdminClient, CommerceAdminClientConfig } from './types.js';
|
|
41
|
+
/**
|
|
42
|
+
* Create the admin (authoring) client.
|
|
43
|
+
*
|
|
44
|
+
* @deprecated Use [`@sixtyninecommerce/admin`](https://www.npmjs.com/package/@sixtyninecommerce/admin)
|
|
45
|
+
* instead — `createAdminClient` — on the platform's own error hierarchy, cursor
|
|
46
|
+
* pagination and tenant context, and where every other back-office capability
|
|
47
|
+
* lands.
|
|
48
|
+
*
|
|
49
|
+
* What it covers today: forms — list, read by id or slug, slug upsert, delete;
|
|
50
|
+
* redirects — list, create, update, delete.
|
|
51
|
+
*
|
|
52
|
+
* What has NO successor yet, and is the reason to stay here:
|
|
53
|
+
* - `forms.update` — the only way to RENAME a form's slug (`upsertBySlug` keys
|
|
54
|
+
* on the slug and cannot change it);
|
|
55
|
+
* - `forms.addField` / `updateField` / `removeField` — the slug upsert is
|
|
56
|
+
* non-destructive, so a field can be added but never removed through it;
|
|
57
|
+
* - `forms.listSubmissions`;
|
|
58
|
+
* - `redirects.import` — bulk upsert by source path with per-row rejections,
|
|
59
|
+
* which is the migration case this surface exists for;
|
|
60
|
+
* - `redirects.upsert` — create-or-update one redirect by source path.
|
|
61
|
+
*
|
|
62
|
+
* This surface still works and is unchanged; it will be removed in a future
|
|
63
|
+
* major, not before those land.
|
|
64
|
+
*/
|
|
2
65
|
export declare function createCommerceAdminClient(config: CommerceAdminClientConfig): CommerceAdminClient;
|
|
3
66
|
export type { AdminFormFieldRecord, AdminFormRecord, AdminRedirectRecord, CommerceAdminClient, CommerceAdminClientConfig, FormCreateInput, FormFieldInput, FormFieldTranslationInput, FormSubmissionListOptions, FormSubmissionListResult, FormSubmissionRecord, FormsAdminModule, FormTranslationInput, FormUpdateInput, FormUpsertInput, RedirectCreateInput, RedirectImportRejection, RedirectImportResult, RedirectsAdminModule, RedirectUpdateInput, } from './types.js';
|
|
4
67
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB,GAAG,mBAAmB,CA+ChG;AAED,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
package/dist/admin/index.js
CHANGED
|
@@ -1,6 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@sixtyninecommerce/client/admin` — the ADMIN (authoring) surface.
|
|
3
|
+
*
|
|
4
|
+
* DEPRECATED in favour of
|
|
5
|
+
* [`@sixtyninecommerce/admin`](https://www.npmjs.com/package/@sixtyninecommerce/admin). The
|
|
6
|
+
* machine-readable `@deprecated` tag is on {@link createCommerceAdminClient} itself, NOT here: a
|
|
7
|
+
* module-level tag above an `import` attaches to that import declaration and marks no exported
|
|
8
|
+
* symbol, so no consumer's editor would ever strike the call through.
|
|
9
|
+
*
|
|
10
|
+
* Unlike the public storefront client, every call here is permission-gated and
|
|
11
|
+
* requires a Vendure admin session token (or an `s69t_` API token) holding the
|
|
12
|
+
* relevant permissions — CreateCmsForm/UpdateCmsForm/ReadCmsForm for `forms`,
|
|
13
|
+
* UpdateChannel for `redirects`. It is a deliberately separate factory so the
|
|
14
|
+
* credential requirement is impossible to miss. Use it for server-side
|
|
15
|
+
* authoring (e.g. scaffolding a contact form or registering redirects during a
|
|
16
|
+
* migration); never ship an admin token to a browser.
|
|
17
|
+
*
|
|
18
|
+
* `forms` talks to the CMS; `redirects` talks to the plugins service, so set
|
|
19
|
+
* `pluginsUrl` when you use it against a non-default host.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { createCommerceAdminClient } from '@sixtyninecommerce/client/admin';
|
|
24
|
+
*
|
|
25
|
+
* const admin = createCommerceAdminClient({
|
|
26
|
+
* cmsUrl: 'https://cms.example.com',
|
|
27
|
+
* channelId: '<tenant-channel-id>',
|
|
28
|
+
* adminToken: process.env.SIXTYNINE_COMMERCE_API_TOKEN!,
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* await admin.forms.upsertBySlug('contact', {
|
|
32
|
+
* name: 'Contact',
|
|
33
|
+
* notificationEmails: 'team@example.com',
|
|
34
|
+
* fields: [{ name: 'Email', slug: 'email', fieldType: 'email', isRequired: true }],
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* await admin.redirects.create({ oldPath: '/old-page', newPath: '/new-page' });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
1
40
|
import { createFormsAdminMethods } from './forms.js';
|
|
2
41
|
import { createAdminHttp } from './http.js';
|
|
3
42
|
import { createRedirectsAdminMethods } from './redirects.js';
|
|
43
|
+
/**
|
|
44
|
+
* Create the admin (authoring) client.
|
|
45
|
+
*
|
|
46
|
+
* @deprecated Use [`@sixtyninecommerce/admin`](https://www.npmjs.com/package/@sixtyninecommerce/admin)
|
|
47
|
+
* instead — `createAdminClient` — on the platform's own error hierarchy, cursor
|
|
48
|
+
* pagination and tenant context, and where every other back-office capability
|
|
49
|
+
* lands.
|
|
50
|
+
*
|
|
51
|
+
* What it covers today: forms — list, read by id or slug, slug upsert, delete;
|
|
52
|
+
* redirects — list, create, update, delete.
|
|
53
|
+
*
|
|
54
|
+
* What has NO successor yet, and is the reason to stay here:
|
|
55
|
+
* - `forms.update` — the only way to RENAME a form's slug (`upsertBySlug` keys
|
|
56
|
+
* on the slug and cannot change it);
|
|
57
|
+
* - `forms.addField` / `updateField` / `removeField` — the slug upsert is
|
|
58
|
+
* non-destructive, so a field can be added but never removed through it;
|
|
59
|
+
* - `forms.listSubmissions`;
|
|
60
|
+
* - `redirects.import` — bulk upsert by source path with per-row rejections,
|
|
61
|
+
* which is the migration case this surface exists for;
|
|
62
|
+
* - `redirects.upsert` — create-or-update one redirect by source path.
|
|
63
|
+
*
|
|
64
|
+
* This surface still works and is unchanged; it will be removed in a future
|
|
65
|
+
* major, not before those land.
|
|
66
|
+
*/
|
|
4
67
|
export function createCommerceAdminClient(config) {
|
|
5
68
|
if (!config.adminToken) {
|
|
6
69
|
throw new Error('createCommerceAdminClient requires an adminToken (a Vendure admin session token holding the CmsForm permissions).');
|
|
@@ -19,6 +82,10 @@ export function createCommerceAdminClient(config) {
|
|
|
19
82
|
adminToken: config.adminToken,
|
|
20
83
|
fetch: fetchFn,
|
|
21
84
|
});
|
|
85
|
+
// `pluginsUrl` stays optional so the pre-existing forms-only signature keeps
|
|
86
|
+
// working — but it must never silently DEFAULT, or a self-hosted caller who
|
|
87
|
+
// passed only `cmsUrl` would ship their admin token to the hosted SaaS host.
|
|
88
|
+
// Fail on first use of `redirects` instead.
|
|
22
89
|
const pluginsHttp = config.pluginsUrl
|
|
23
90
|
? createAdminHttp({
|
|
24
91
|
baseUrl: config.pluginsUrl,
|
package/dist/admin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAkB,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiC;IACzE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IACjD,MAAM,OAAO,GAAG,eAAe,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IACH,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,4CAA4C;IAC5C,MAAM,WAAW,GAAc,MAAM,CAAC,UAAU;QAC9C,CAAC,CAAC,eAAe,CAAC;YACd,OAAO,EAAE,MAAM,CAAC,UAAU;YAC1B,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,OAAO;SACf,CAAC;QACJ,CAAC,CAAC;YACE,OAAO;gBACL,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,qHAAqH,CACtH,CACF,CAAC;YACJ,CAAC;SACF,CAAC;IAEN,OAAO;QACL,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC;QACvC,SAAS,EAAE,2BAA2B,CAAC,WAAW,CAAC;KACpD,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin (authoring) surface for the tenant's URL redirects, on the plugins
|
|
3
|
+
* service. Reads and writes here are permission-gated (`UpdateChannel`); the
|
|
4
|
+
* unauthenticated map a storefront middleware consumes is the separate
|
|
5
|
+
* `redirects` module on the public client.
|
|
6
|
+
*/
|
|
1
7
|
import type { RedirectStatusCode } from '../redirects/types.js';
|
|
2
8
|
import type { AdminHttp } from './http.js';
|
|
3
9
|
import type { RedirectsAdminModule } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirects.d.ts","sourceRoot":"","sources":["../../src/admin/redirects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"redirects.d.ts","sourceRoot":"","sources":["../../src/admin/redirects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAIV,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAUpB,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,SAAS,GAAG,oBAAoB,CAqDjF;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
package/dist/admin/redirects.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin (authoring) surface for the tenant's URL redirects, on the plugins
|
|
3
|
+
* service. Reads and writes here are permission-gated (`UpdateChannel`); the
|
|
4
|
+
* unauthenticated map a storefront middleware consumes is the separate
|
|
5
|
+
* `redirects` module on the public client.
|
|
6
|
+
*/
|
|
1
7
|
function toWire(input) {
|
|
2
8
|
const body = {};
|
|
3
9
|
if (input.oldPath !== undefined)
|
|
@@ -9,6 +15,8 @@ function toWire(input) {
|
|
|
9
15
|
return body;
|
|
10
16
|
}
|
|
11
17
|
export function createRedirectsAdminMethods(http) {
|
|
18
|
+
// Captured in a local so `upsert` does not depend on `this` — every other
|
|
19
|
+
// module surface in this SDK survives `const { upsert } = admin.redirects`.
|
|
12
20
|
const importRedirects = (redirects, options) => http.request('POST', '/redirects/import', { redirects: redirects.map(toWire) }, options);
|
|
13
21
|
return {
|
|
14
22
|
list(options) {
|
|
@@ -24,6 +32,10 @@ export function createRedirectsAdminMethods(http) {
|
|
|
24
32
|
await http.request('DELETE', `/redirects/${encodeURIComponent(id)}`, undefined, options);
|
|
25
33
|
},
|
|
26
34
|
import: importRedirects,
|
|
35
|
+
/**
|
|
36
|
+
* Create-or-update by source path. The platform's bulk endpoint already
|
|
37
|
+
* upserts on `old_path`, so a single-item import is the idempotent write.
|
|
38
|
+
*/
|
|
27
39
|
async upsert(input, options) {
|
|
28
40
|
const result = await importRedirects([input], options);
|
|
29
41
|
const rejection = result.rejected[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirects.js","sourceRoot":"","sources":["../../src/admin/redirects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"redirects.js","sourceRoot":"","sources":["../../src/admin/redirects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,SAAS,MAAM,CAAC,KAAgD;IAC9D,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/D,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/D,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAe;IACzD,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,eAAe,GAAmC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAC7E,IAAI,CAAC,OAAO,CACV,MAAM,EACN,mBAAmB,EACnB,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EACpC,OAAO,CACR,CAAC;IAEJ,OAAO;QACL,IAAI,CAAC,OAAO;YACV,OAAO,IAAI,CAAC,OAAO,CAAwB,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,OAAO;YACnB,OAAO,IAAI,CAAC,OAAO,CAAsB,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO;YACvB,OAAO,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,EACtC,MAAM,CAAC,KAAK,CAAC,EACb,OAAO,CACR,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO;YACtB,MAAM,IAAI,CAAC,OAAO,CAChB,QAAQ,EACR,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,EACtC,SAAS,EACT,OAAO,CACR,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,eAAe;QAEvB;;;WAGG;QACH,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO;YACzB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/admin/types.d.ts
CHANGED
|
@@ -1,9 +1,28 @@
|
|
|
1
1
|
import type { RequestOptions } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Admin (authoring) surface types. These endpoints are PERMISSION-GATED and
|
|
4
|
+
* require a Vendure admin session token holding CreateCmsForm/UpdateCmsForm/
|
|
5
|
+
* ReadCmsForm — never a storefront/anonymous token. Kept in a separate module
|
|
6
|
+
* from the public storefront client so the credential requirement is explicit.
|
|
7
|
+
*/
|
|
2
8
|
export interface CommerceAdminClientConfig {
|
|
9
|
+
/** Base CMS URL, e.g. `https://cms.example.com`. Required for `forms`. */
|
|
3
10
|
cmsUrl: string;
|
|
11
|
+
/**
|
|
12
|
+
* Base plugins-service URL, e.g. `https://plugins.example.com`. REQUIRED to
|
|
13
|
+
* use `redirects` — there is deliberately no default, so a self-hosted caller
|
|
14
|
+
* can never send an admin token to the hosted SaaS host by omission. Omit it
|
|
15
|
+
* only when you use `forms` alone; the first `redirects` call then rejects.
|
|
16
|
+
*/
|
|
4
17
|
pluginsUrl?: string;
|
|
18
|
+
/** Target tenant channel id (sent as `x-channel-id`). */
|
|
5
19
|
channelId: string;
|
|
20
|
+
/**
|
|
21
|
+
* A Vendure admin session token holding the CmsForm permissions. Sent as
|
|
22
|
+
* `Authorization: Bearer <token>` — treat it as a secret.
|
|
23
|
+
*/
|
|
6
24
|
adminToken: string;
|
|
25
|
+
/** Fetch implementation (defaults to `globalThis.fetch`). */
|
|
7
26
|
fetch?: typeof globalThis.fetch;
|
|
8
27
|
}
|
|
9
28
|
export interface FormTranslationInput {
|
|
@@ -23,10 +42,13 @@ export interface FormFieldTranslationInput {
|
|
|
23
42
|
export interface FormFieldInput {
|
|
24
43
|
name: string;
|
|
25
44
|
slug: string;
|
|
45
|
+
/** One of the registry field types (see FORM_FIELD_TYPES / getFormFieldTypes). */
|
|
26
46
|
fieldType: string;
|
|
27
47
|
isRequired?: boolean;
|
|
28
48
|
position?: number;
|
|
49
|
+
/** Presentational config (e.g. select option labels). */
|
|
29
50
|
config?: Record<string, unknown>;
|
|
51
|
+
/** Validation constraints (authoritative over `config` for the same keys). */
|
|
30
52
|
validation?: Record<string, unknown>;
|
|
31
53
|
translations?: FormFieldTranslationInput[];
|
|
32
54
|
}
|
|
@@ -48,6 +70,7 @@ export interface FormUpdateInput {
|
|
|
48
70
|
settings?: Record<string, unknown>;
|
|
49
71
|
translations?: FormTranslationInput[];
|
|
50
72
|
}
|
|
73
|
+
/** Body for the idempotent upsert-by-slug. The slug travels in the URL. */
|
|
51
74
|
export interface FormUpsertInput {
|
|
52
75
|
name: string;
|
|
53
76
|
notificationEmails?: string;
|
|
@@ -55,8 +78,10 @@ export interface FormUpsertInput {
|
|
|
55
78
|
submitAction?: string;
|
|
56
79
|
settings?: Record<string, unknown>;
|
|
57
80
|
translations?: FormTranslationInput[];
|
|
81
|
+
/** Fields to upsert by slug. Fields not listed are left untouched. */
|
|
58
82
|
fields?: FormFieldInput[];
|
|
59
83
|
}
|
|
84
|
+
/** A form field row as returned by the admin (full-entity) responses. */
|
|
60
85
|
export interface AdminFormFieldRecord {
|
|
61
86
|
id: string;
|
|
62
87
|
formId: string;
|
|
@@ -67,8 +92,10 @@ export interface AdminFormFieldRecord {
|
|
|
67
92
|
position: number;
|
|
68
93
|
config: Record<string, unknown> | null;
|
|
69
94
|
validation: Record<string, unknown> | null;
|
|
95
|
+
/** Forward-compat: additional entity fields (translations, timestamps, …). */
|
|
70
96
|
[key: string]: unknown;
|
|
71
97
|
}
|
|
98
|
+
/** A form as returned by the admin (full-entity) responses. */
|
|
72
99
|
export interface AdminFormRecord {
|
|
73
100
|
id: string;
|
|
74
101
|
channelId: string;
|
|
@@ -79,6 +106,7 @@ export interface AdminFormRecord {
|
|
|
79
106
|
notificationEmails: string | null;
|
|
80
107
|
settings: Record<string, unknown> | null;
|
|
81
108
|
fields?: AdminFormFieldRecord[];
|
|
109
|
+
/** Forward-compat: translations, timestamps, and any additional entity fields. */
|
|
82
110
|
[key: string]: unknown;
|
|
83
111
|
}
|
|
84
112
|
export interface FormSubmissionRecord {
|
|
@@ -103,34 +131,65 @@ export interface FormSubmissionListResult {
|
|
|
103
131
|
};
|
|
104
132
|
}
|
|
105
133
|
export interface FormsAdminModule {
|
|
134
|
+
/**
|
|
135
|
+
* Read a form by slug as the FULL admin entity — including each field's `id`,
|
|
136
|
+
* which the public projection omits. Needed to address a field for
|
|
137
|
+
* update/removal.
|
|
138
|
+
*
|
|
139
|
+
* The underlying CMS route is public with optional auth, so an unaccepted
|
|
140
|
+
* admin token yields the storefront projection with a 200 rather than a 401.
|
|
141
|
+
* This method REJECTS that response with a `StorefrontError` instead of
|
|
142
|
+
* returning a record whose `channelId`/field ids are `undefined`.
|
|
143
|
+
*/
|
|
106
144
|
getBySlug(slug: string, options?: RequestOptions): Promise<AdminFormRecord>;
|
|
145
|
+
/** Create a form (create-only; 409 if the slug exists). Needs CreateCmsForm. */
|
|
107
146
|
create(input: FormCreateInput, options?: RequestOptions): Promise<AdminFormRecord>;
|
|
147
|
+
/** Update a form by id. Needs UpdateCmsForm. */
|
|
108
148
|
update(id: string, input: FormUpdateInput, options?: RequestOptions): Promise<AdminFormRecord>;
|
|
149
|
+
/** Idempotent create-or-update by slug, upserting listed fields. Needs Create or Update. */
|
|
109
150
|
upsertBySlug(slug: string, input: FormUpsertInput, options?: RequestOptions): Promise<AdminFormRecord>;
|
|
151
|
+
/** Soft-delete a form by id. Needs DeleteCmsForm. */
|
|
110
152
|
remove(id: string, options?: RequestOptions): Promise<void>;
|
|
153
|
+
/** Add a field to a form. Needs CreateCmsForm. */
|
|
111
154
|
addField(formId: string, input: FormFieldInput, options?: RequestOptions): Promise<AdminFormFieldRecord>;
|
|
155
|
+
/** Update a field. Needs UpdateCmsForm. */
|
|
112
156
|
updateField(formId: string, fieldId: string, input: Partial<FormFieldInput>, options?: RequestOptions): Promise<AdminFormFieldRecord>;
|
|
157
|
+
/** Soft-delete a field. Needs DeleteCmsForm. */
|
|
113
158
|
removeField(formId: string, fieldId: string, options?: RequestOptions): Promise<void>;
|
|
159
|
+
/** List a form's submissions (offset-paginated). Needs ReadCmsForm. */
|
|
114
160
|
listSubmissions(formId: string, options?: FormSubmissionListOptions & RequestOptions): Promise<FormSubmissionListResult>;
|
|
115
161
|
}
|
|
116
162
|
export interface CommerceAdminClient {
|
|
117
163
|
forms: FormsAdminModule;
|
|
118
164
|
redirects: RedirectsAdminModule;
|
|
119
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* A stored redirect as the plugins service returns it. Writes take snake_case
|
|
168
|
+
* (`old_path`), reads come back as the entity's camelCase fields — the same
|
|
169
|
+
* asymmetry the forms admin surface has.
|
|
170
|
+
*/
|
|
120
171
|
export interface AdminRedirectRecord {
|
|
121
172
|
id: string;
|
|
122
173
|
channelId: string;
|
|
123
174
|
oldPath: string;
|
|
124
175
|
newPath: string;
|
|
125
176
|
statusCode: number;
|
|
177
|
+
/** `manual`, `import`, or `auto` (created by the URL-change engine). */
|
|
126
178
|
source?: string;
|
|
127
179
|
createdAt: string;
|
|
128
180
|
updatedAt: string;
|
|
181
|
+
/** Forward-compat: any additional entity fields. */
|
|
129
182
|
[key: string]: unknown;
|
|
130
183
|
}
|
|
131
184
|
export interface RedirectCreateInput {
|
|
185
|
+
/**
|
|
186
|
+
* Source path — a literal site-relative path, e.g. `/old-page`. Wildcards,
|
|
187
|
+
* `[slug]`/`:param` segments and query strings are rejected.
|
|
188
|
+
*/
|
|
132
189
|
oldPath: string;
|
|
190
|
+
/** Destination — a path (`/new-page`) or an absolute `https://` URL. */
|
|
133
191
|
newPath: string;
|
|
192
|
+
/** 301 (default), 302, 303, 307 or 308. */
|
|
134
193
|
statusCode?: import('../redirects/types.js').RedirectStatusCode;
|
|
135
194
|
}
|
|
136
195
|
export interface RedirectUpdateInput {
|
|
@@ -138,6 +197,7 @@ export interface RedirectUpdateInput {
|
|
|
138
197
|
newPath?: string;
|
|
139
198
|
statusCode?: import('../redirects/types.js').RedirectStatusCode;
|
|
140
199
|
}
|
|
200
|
+
/** A row the platform refused, identified by its index in the submitted batch. */
|
|
141
201
|
export interface RedirectImportRejection {
|
|
142
202
|
index: number;
|
|
143
203
|
oldPath: string;
|
|
@@ -146,6 +206,7 @@ export interface RedirectImportRejection {
|
|
|
146
206
|
export interface RedirectImportResult {
|
|
147
207
|
created: number;
|
|
148
208
|
updated: number;
|
|
209
|
+
/** Rows that failed validation. The rest of the batch still landed. */
|
|
149
210
|
rejected: RedirectImportRejection[];
|
|
150
211
|
}
|
|
151
212
|
export interface RedirectsAdminModule {
|
|
@@ -153,7 +214,9 @@ export interface RedirectsAdminModule {
|
|
|
153
214
|
create(input: RedirectCreateInput, options?: RequestOptions): Promise<AdminRedirectRecord>;
|
|
154
215
|
update(id: string, input: RedirectUpdateInput, options?: RequestOptions): Promise<AdminRedirectRecord>;
|
|
155
216
|
remove(id: string, options?: RequestOptions): Promise<void>;
|
|
217
|
+
/** Bulk upsert by source path. Bad rows are reported, never fatal. */
|
|
156
218
|
import(inputs: RedirectCreateInput[], options?: RequestOptions): Promise<RedirectImportResult>;
|
|
219
|
+
/** Create-or-update one redirect by source path. Throws if the row is rejected. */
|
|
157
220
|
upsert(input: RedirectCreateInput, options?: RequestOptions): Promise<RedirectImportResult>;
|
|
158
221
|
}
|
|
159
222
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/admin/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/admin/types.ts"],"names":[],"mappings":"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"}
|
package/dist/cache-tags.d.ts
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The cache-tag convention shared by this SDK's fetches and its revalidation
|
|
3
|
+
* handlers. One module, so the tag a fetch is stamped with and the tag an event
|
|
4
|
+
* purges can never be spelled differently.
|
|
5
|
+
*
|
|
6
|
+
* - `product:<productId>` — Vendure product id. Purged by `product.*` and
|
|
7
|
+
* `product_variant.price_changed`.
|
|
8
|
+
* - `collection:<collectionId>` — Vendure collection id. Purged by
|
|
9
|
+
* `collection.membership_changed`.
|
|
10
|
+
* - `seo-artifact` — the platform-rendered sitemap/robots/llms.txt proxied by
|
|
11
|
+
* `createSeoArtifactHandler`. The event handler purges it with every plan
|
|
12
|
+
* that revalidates anything; the legacy dispatcher lists it in every
|
|
13
|
+
* delivery's `tags`.
|
|
14
|
+
*/
|
|
1
15
|
export declare const SEO_ARTIFACT_TAG = "seo-artifact";
|
|
2
16
|
export declare function productCacheTag(productId: string): string;
|
|
3
17
|
export declare function collectionCacheTag(collectionId: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* The tags a page resolved from a routes-manifest entry should read with: the
|
|
20
|
+
* entry's own id tag for a product or collection, none for a CMS page (content
|
|
21
|
+
* events revalidate those by path).
|
|
22
|
+
*/
|
|
4
23
|
export declare function cacheTagsForRoute(route: {
|
|
5
24
|
readonly type: string;
|
|
6
25
|
readonly id: string;
|
package/dist/cache-tags.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-tags.d.ts","sourceRoot":"","sources":["../src/cache-tags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache-tags.d.ts","sourceRoot":"","sources":["../src/cache-tags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAIjG"}
|