@businessdash/sdk 0.9.81 → 0.9.90
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 +115 -902
- package/assets/{biab-sw.js → bd-sw.js} +2 -2
- package/dist/account-core/index.d.ts +1 -1
- package/dist/account-core/index.d.ts.map +1 -1
- package/dist/adapters-revalidate.d.ts +2 -2
- package/dist/adapters-revalidate.js +2 -2
- package/dist/adapters-revalidate.js.map +1 -1
- package/dist/analytics-core.d.ts +6 -6
- package/dist/analytics-core.d.ts.map +1 -1
- package/dist/analytics-core.js +4 -4
- package/dist/analytics-core.js.map +1 -1
- package/dist/analytics-server.d.ts +6 -6
- package/dist/analytics-server.d.ts.map +1 -1
- package/dist/analytics-server.js +5 -5
- package/dist/auth-handler.d.ts +14 -14
- package/dist/auth-handler.d.ts.map +1 -1
- package/dist/auth-handler.js +16 -16
- package/dist/auth-handler.js.map +1 -1
- package/dist/auth-links.d.ts +2 -2
- package/dist/auth-links.d.ts.map +1 -1
- package/dist/auth-links.js +2 -2
- package/dist/auth-links.js.map +1 -1
- package/dist/{biab-forms.css → bd-forms.css} +158 -158
- package/dist/cli.d.ts +4 -4
- package/dist/cli.js +78 -78
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +158 -147
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +156 -137
- package/dist/client.js.map +1 -1
- package/dist/consent-core/index.cjs +2 -2
- package/dist/consent-core/index.d.ts +2 -2
- package/dist/consent-core/index.d.ts.map +1 -1
- package/dist/consent-core/index.js +10 -8
- package/dist/consent-core/index.js.map +1 -1
- package/dist/contracts.d.ts +411 -52
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +89 -15
- package/dist/contracts.js.map +1 -1
- package/dist/data-model-schema.d.ts +15 -15
- package/dist/data-model-schema.d.ts.map +1 -1
- package/dist/data-model-schema.js +19 -17
- package/dist/data-model-schema.js.map +1 -1
- package/dist/distribution.d.ts +5 -5
- package/dist/distribution.d.ts.map +1 -1
- package/dist/distribution.js +4 -4
- package/dist/element.d.ts +36 -36
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js +43 -43
- package/dist/element.js.map +1 -1
- package/dist/embed-protocol.d.ts +11 -11
- package/dist/embed-protocol.d.ts.map +1 -1
- package/dist/embed-protocol.js +1 -1
- package/dist/embed-protocol.js.map +1 -1
- package/dist/errors.d.ts +15 -15
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +18 -18
- package/dist/errors.js.map +1 -1
- package/dist/forms-core/autocomplete.d.ts +3 -3
- package/dist/forms-core/autocomplete.d.ts.map +1 -1
- package/dist/forms-core/autocomplete.js +2 -2
- package/dist/forms-core/controller.d.ts +10 -10
- package/dist/forms-core/controller.d.ts.map +1 -1
- package/dist/forms-core/controller.js +4 -4
- package/dist/forms-core/controller.js.map +1 -1
- package/dist/forms-core/elements.d.ts +4 -4
- package/dist/forms-core/elements.d.ts.map +1 -1
- package/dist/forms-core/elements.js +7 -7
- package/dist/forms-core/elements.js.map +1 -1
- package/dist/forms-core/formula.d.ts +1 -1
- package/dist/forms-core/formula.js +1 -1
- package/dist/forms-core/index.d.ts +6 -6
- package/dist/forms-core/index.d.ts.map +1 -1
- package/dist/forms-core/index.js +5 -5
- package/dist/forms-core/index.js.map +1 -1
- package/dist/forms-core/units.d.ts +1 -1
- package/dist/forms-core/units.js +1 -1
- package/dist/forms-core/us-states.d.ts +1 -1
- package/dist/forms-core/us-states.js +1 -1
- package/dist/forms-core/validation.d.ts +12 -3
- package/dist/forms-core/validation.d.ts.map +1 -1
- package/dist/forms-core/validation.js +152 -17
- package/dist/forms-core/validation.js.map +1 -1
- package/dist/forms.d.ts +2 -2
- package/dist/forms.d.ts.map +1 -1
- package/dist/forms.js +2 -2
- package/dist/forms.js.map +1 -1
- package/dist/framework-support.js +1 -1
- package/dist/framework-support.js.map +1 -1
- package/dist/gallery-types.d.ts +1 -1
- package/dist/graphql.d.ts +3 -3
- package/dist/graphql.d.ts.map +1 -1
- package/dist/graphql.js +3 -3
- package/dist/graphql.js.map +1 -1
- package/dist/index.cjs +350 -273
- package/dist/index.d.cts +5 -5
- package/dist/index.d.mts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/legal-core/index.cjs +8 -8
- package/dist/legal-core/index.d.ts +3 -3
- package/dist/legal-core/index.d.ts.map +1 -1
- package/dist/legal-core/index.js +11 -11
- package/dist/legal-core/index.js.map +1 -1
- package/dist/marketing-core/index.d.ts +51 -1
- package/dist/marketing-core/index.d.ts.map +1 -1
- package/dist/marketing-core/index.js +35 -0
- package/dist/marketing-core/index.js.map +1 -1
- package/dist/marketing-schema.d.ts +9 -9
- package/dist/marketing-schema.d.ts.map +1 -1
- package/dist/marketing-schema.js +1 -1
- package/dist/mcp.d.ts +4 -4
- package/dist/mcp.js +4 -4
- package/dist/native.d.ts +6 -6
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js +4 -4
- package/dist/native.js.map +1 -1
- package/dist/next-revalidate.d.ts +8 -8
- package/dist/next-revalidate.d.ts.map +1 -1
- package/dist/next-revalidate.js +7 -7
- package/dist/next-revalidate.js.map +1 -1
- package/dist/notifications-core/index.d.ts +1 -1
- package/dist/notifications-core/index.js +1 -1
- package/dist/parallel-pages.d.ts +4 -4
- package/dist/parallel-pages.d.ts.map +1 -1
- package/dist/parallel-pages.js +5 -5
- package/dist/parallel-pages.js.map +1 -1
- package/dist/portal-core/index.d.ts +1 -1
- package/dist/portal-core/index.js +1 -1
- package/dist/proxy.d.ts +18 -18
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +10 -10
- package/dist/proxy.js.map +1 -1
- package/dist/push-core/index.cjs +1 -1
- package/dist/push-core/index.d.ts +1 -1
- package/dist/push-core/index.js +1 -1
- package/dist/push-core/index.js.map +1 -1
- package/dist/react-analytics.d.ts +14 -14
- package/dist/react-analytics.d.ts.map +1 -1
- package/dist/react-analytics.js +15 -15
- package/dist/react-analytics.js.map +1 -1
- package/dist/react-attribution.d.ts +2 -2
- package/dist/react-attribution.d.ts.map +1 -1
- package/dist/react-attribution.js +1 -1
- package/dist/react-marketing.js +5 -5
- package/dist/react-marketing.js.map +1 -1
- package/dist/react.d.ts +38 -61
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +247 -261
- package/dist/react.js.map +1 -1
- package/dist/reserved-paths.d.ts +2 -2
- package/dist/reserved-paths.js +3 -3
- package/dist/reserved-paths.js.map +1 -1
- package/dist/revalidate-verify.d.ts +3 -3
- package/dist/revalidate-verify.d.ts.map +1 -1
- package/dist/revalidate-verify.js +1 -1
- package/dist/revalidate-verify.js.map +1 -1
- package/dist/sdk.d.ts +49 -49
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +47 -51
- package/dist/sdk.js.map +1 -1
- package/dist/seed-core/index.js +8 -8
- package/dist/seed-core/index.js.map +1 -1
- package/dist/seo-core/blog.d.ts +1 -1
- package/dist/seo-core/blog.js +1 -1
- package/dist/seo-core/blog.js.map +1 -1
- package/dist/seo-core/index.cjs +2 -2
- package/dist/seo-core/index.js +1 -1
- package/dist/seo-core/index.js.map +1 -1
- package/dist/seo.d.ts +1 -1
- package/dist/seo.d.ts.map +1 -1
- package/dist/seo.js +1 -1
- package/dist/seo.js.map +1 -1
- package/dist/sitemap-core/index.cjs +3 -3
- package/dist/sitemap-core/index.js +2 -2
- package/dist/sitemap-core/index.js.map +1 -1
- package/dist/socials.d.ts +6 -6
- package/dist/socials.d.ts.map +1 -1
- package/dist/socials.js +5 -5
- package/dist/socials.js.map +1 -1
- package/dist/solid-compat.d.ts +1 -1
- package/dist/solid-compat.js +4 -4
- package/dist/solid-compat.js.map +1 -1
- package/dist/store-core/index.d.ts +1 -1
- package/dist/vanilla.d.ts +12 -12
- package/dist/vanilla.d.ts.map +1 -1
- package/dist/vanilla.js +192 -145
- package/dist/vanilla.js.map +1 -1
- package/openapi.json +264 -1
- package/package.json +8 -8
- package/src/account-core/index.ts +1 -1
- package/src/adapters-revalidate.ts +3 -3
- package/src/analytics-core.ts +8 -8
- package/src/analytics-server.ts +6 -6
- package/src/angular/{biab-form.component.ts → bd-form.component.ts} +269 -161
- package/src/angular/headless.ts +12 -12
- package/src/angular/index.ts +9 -9
- package/src/auth-handler.ts +22 -22
- package/src/auth-links.ts +2 -2
- package/src/cli.ts +81 -81
- package/src/client.ts +218 -193
- package/src/consent-core/index.ts +10 -8
- package/src/contracts.ts +99 -15
- package/src/data-model-schema.ts +29 -26
- package/src/distribution.ts +5 -5
- package/src/element.ts +54 -54
- package/src/embed-protocol.ts +14 -14
- package/src/errors.ts +27 -27
- package/src/forms-core/autocomplete.ts +3 -3
- package/src/forms-core/controller.ts +12 -12
- package/src/forms-core/elements.ts +7 -7
- package/src/forms-core/formula.ts +1 -1
- package/src/forms-core/index.ts +8 -8
- package/src/forms-core/units.ts +1 -1
- package/src/forms-core/us-states.ts +1 -1
- package/src/forms-core/validation.ts +158 -14
- package/src/forms.ts +2 -2
- package/src/framework-support.ts +1 -1
- package/src/gallery-types.ts +1 -1
- package/src/graphql.ts +4 -4
- package/src/index.ts +38 -38
- package/src/legal-core/index.ts +12 -12
- package/src/marketing-core/index.ts +62 -0
- package/src/marketing-schema.ts +9 -9
- package/src/mcp.ts +4 -4
- package/src/native.ts +14 -14
- package/src/next-revalidate.ts +10 -10
- package/src/notifications-core/index.ts +1 -1
- package/src/parallel-pages.ts +6 -6
- package/src/portal-core/index.ts +1 -1
- package/src/proxy.ts +28 -28
- package/src/push-core/index.ts +2 -2
- package/src/qwik.tsx +262 -166
- package/src/react-analytics.tsx +17 -17
- package/src/react-attribution.tsx +2 -2
- package/src/react-marketing.tsx +5 -5
- package/src/react.tsx +541 -500
- package/src/reserved-paths.ts +3 -3
- package/src/revalidate-verify.ts +5 -5
- package/src/sdk.ts +106 -110
- package/src/seed-core/index.ts +8 -8
- package/src/seo-core/blog.ts +2 -2
- package/src/seo-core/index.ts +1 -1
- package/src/seo.ts +1 -1
- package/src/sitemap-core/index.ts +2 -2
- package/src/socials.ts +6 -6
- package/src/solid-compat.tsx +5 -5
- package/src/solid-surfaces.tsx +28 -28
- package/src/solid.tsx +264 -175
- package/src/store-core/index.ts +1 -1
- package/src/styles/{biab-forms.css → bd-forms.css} +158 -158
- package/src/svelte/{BiabForm.svelte → BdForm.svelte} +240 -173
- package/src/svelte/context.ts +16 -16
- package/src/svelte/headless.ts +10 -10
- package/src/svelte/index.ts +16 -16
- package/src/vanilla.ts +250 -169
- package/src/vue/{BiabForm.vue → BdForm.vue} +270 -157
- package/src/vue/headless.ts +11 -11
- package/src/vue/index.ts +26 -26
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* The consumer's codebase is the source of truth for the content model.
|
|
5
5
|
* `defineSiteMarketingSchema()` lets them declare each section as a typed
|
|
6
6
|
* zod schema + UI metadata, and produces an artifact the SDK CLI uploads
|
|
7
|
-
* to
|
|
7
|
+
* to BD:
|
|
8
8
|
*
|
|
9
9
|
* const marketing = defineSiteMarketingSchema({
|
|
10
10
|
* brandTokens: ["company.name", "company.phone", "company.email"],
|
|
@@ -93,7 +93,7 @@ export type SiteMarketingSectionDef<S extends ZodTypeAny = ZodTypeAny> = {
|
|
|
93
93
|
ui?: Record<string, SiteMarketingFieldUI>;
|
|
94
94
|
/** When set, the dashboard renders a "Configure data source →" tile
|
|
95
95
|
* instead of editing the row as a regular form. Items come from the
|
|
96
|
-
* named
|
|
96
|
+
* named BD module at render time. */
|
|
97
97
|
dataSource?: SiteMarketingDataSourceMarker;
|
|
98
98
|
};
|
|
99
99
|
/**
|
|
@@ -105,9 +105,9 @@ export type SiteMarketingSectionDef<S extends ZodTypeAny = ZodTypeAny> = {
|
|
|
105
105
|
export declare function section<S extends ZodTypeAny>(def: SiteMarketingSectionDef<S>): SiteMarketingSectionDef<S>;
|
|
106
106
|
/**
|
|
107
107
|
* Optional `contentSync` configuration consumed by the
|
|
108
|
-
* `
|
|
108
|
+
* `bd sync-content` CLI command. Lets the consumer declare:
|
|
109
109
|
* - Where local JSON content lives on disk
|
|
110
|
-
* - Which directories map to which
|
|
110
|
+
* - Which directories map to which BD pageKeys (explicit) or to
|
|
111
111
|
* follow a glob convention (auto-derived)
|
|
112
112
|
* - Which filename → sectionKey aliases are needed (e.g.
|
|
113
113
|
* `marquee.json` actually means `trustMarquee`)
|
|
@@ -121,12 +121,12 @@ export declare function section<S extends ZodTypeAny>(def: SiteMarketingSectionD
|
|
|
121
121
|
* supply an explicit `pages` array.
|
|
122
122
|
*/
|
|
123
123
|
export type SiteMarketingContentSyncConfig = {
|
|
124
|
-
/** Directory (relative to `
|
|
124
|
+
/** Directory (relative to `bd.config.*`) where JSON content trees live. */
|
|
125
125
|
rootDir: string;
|
|
126
126
|
/**
|
|
127
127
|
* Explicit page directories. Each entry maps a filesystem path
|
|
128
128
|
* (relative to `rootDir`, with optional `{locale}` placeholder) to
|
|
129
|
-
* a `pageKey` in
|
|
129
|
+
* a `pageKey` in BD. When omitted, the CLI auto-discovers using
|
|
130
130
|
* `<rootDir>/<locale>/*` and uses the leaf dir name as the pageKey.
|
|
131
131
|
*
|
|
132
132
|
* Example for a `<locale>/pages/<name>/` + `<locale>/shared/` layout:
|
|
@@ -172,7 +172,7 @@ export type SiteMarketingSchemaInput<Sections extends Record<string, SiteMarketi
|
|
|
172
172
|
brandTokens?: readonly string[];
|
|
173
173
|
/** Free-form metadata shipped alongside the schema (your build SHA, source repo URL, etc.). */
|
|
174
174
|
metadata?: Record<string, string | number | boolean>;
|
|
175
|
-
/** Optional config for `
|
|
175
|
+
/** Optional config for `bd sync-content`. */
|
|
176
176
|
contentSync?: SiteMarketingContentSyncConfig;
|
|
177
177
|
};
|
|
178
178
|
export declare function computeSiteMarketingSchemaChecksum(schemaBody: Record<string, unknown>): Promise<string>;
|
|
@@ -194,9 +194,9 @@ export type SiteMarketingSchemaArtifact = {
|
|
|
194
194
|
export type SiteMarketingClientShape<Sections extends Record<string, SiteMarketingSectionDef>> = {
|
|
195
195
|
/** Reusable section schemas keyed by section key — handy for runtime parsing. */
|
|
196
196
|
readonly sections: Sections;
|
|
197
|
-
/** Optional file-tree →
|
|
197
|
+
/** Optional file-tree → BD mapping for the `sync-content` CLI. */
|
|
198
198
|
readonly contentSync: SiteMarketingContentSyncConfig | undefined;
|
|
199
|
-
/** JSON-Schema artifact ready to upload to
|
|
199
|
+
/** JSON-Schema artifact ready to upload to BD. */
|
|
200
200
|
toJSONSchema(): SiteMarketingSchemaArtifact;
|
|
201
201
|
/** SHA-256 hex digest of the canonicalized JSON-Schema artifact. */
|
|
202
202
|
checksum(): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketing-schema.d.ts","sourceRoot":"","sources":["../src/marketing-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKzC;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,2LAkB/B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GACnC,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,eAAO,MAAM,gCAAgC,+DAInC,CAAC;AAEX,MAAM,MAAM,2BAA2B,GACtC,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC3C,IAAI,EAAE,2BAA2B,CAAC;IAClC,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAIF,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC1C;;
|
|
1
|
+
{"version":3,"file":"marketing-schema.d.ts","sourceRoot":"","sources":["../src/marketing-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/marketing-schema.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* The consumer's codebase is the source of truth for the content model.
|
|
5
5
|
* `defineSiteMarketingSchema()` lets them declare each section as a typed
|
|
6
6
|
* zod schema + UI metadata, and produces an artifact the SDK CLI uploads
|
|
7
|
-
* to
|
|
7
|
+
* to BD:
|
|
8
8
|
*
|
|
9
9
|
* const marketing = defineSiteMarketingSchema({
|
|
10
10
|
* brandTokens: ["company.name", "company.phone", "company.email"],
|
package/dist/mcp.d.ts
CHANGED
|
@@ -11,15 +11,15 @@
|
|
|
11
11
|
* // app/api/mcp/route.ts
|
|
12
12
|
* import { mcpHandler } from '@businessdash/sdk/mcp'
|
|
13
13
|
* export const { POST, GET } = mcpHandler({
|
|
14
|
-
* siteId: process.env.
|
|
15
|
-
* baseUrl: process.env.
|
|
14
|
+
* siteId: process.env.BD_SITE_ID!,
|
|
15
|
+
* baseUrl: process.env.NEXT_PUBLIC_BD_APP_URL!, // https://www.biab.app
|
|
16
16
|
* })
|
|
17
17
|
*
|
|
18
18
|
* // app/.well-known/mcp.json/route.ts
|
|
19
19
|
* import { mcpManifestHandler } from '@businessdash/sdk/mcp'
|
|
20
20
|
* export const GET = mcpManifestHandler({
|
|
21
|
-
* siteId: process.env.
|
|
22
|
-
* baseUrl: process.env.
|
|
21
|
+
* siteId: process.env.BD_SITE_ID!,
|
|
22
|
+
* baseUrl: process.env.NEXT_PUBLIC_BD_APP_URL!,
|
|
23
23
|
* })
|
|
24
24
|
* ```
|
|
25
25
|
*
|
package/dist/mcp.js
CHANGED
|
@@ -11,15 +11,15 @@
|
|
|
11
11
|
* // app/api/mcp/route.ts
|
|
12
12
|
* import { mcpHandler } from '@businessdash/sdk/mcp'
|
|
13
13
|
* export const { POST, GET } = mcpHandler({
|
|
14
|
-
* siteId: process.env.
|
|
15
|
-
* baseUrl: process.env.
|
|
14
|
+
* siteId: process.env.BD_SITE_ID!,
|
|
15
|
+
* baseUrl: process.env.NEXT_PUBLIC_BD_APP_URL!, // https://www.biab.app
|
|
16
16
|
* })
|
|
17
17
|
*
|
|
18
18
|
* // app/.well-known/mcp.json/route.ts
|
|
19
19
|
* import { mcpManifestHandler } from '@businessdash/sdk/mcp'
|
|
20
20
|
* export const GET = mcpManifestHandler({
|
|
21
|
-
* siteId: process.env.
|
|
22
|
-
* baseUrl: process.env.
|
|
21
|
+
* siteId: process.env.BD_SITE_ID!,
|
|
22
|
+
* baseUrl: process.env.NEXT_PUBLIC_BD_APP_URL!,
|
|
23
23
|
* })
|
|
24
24
|
* ```
|
|
25
25
|
*
|
package/dist/native.d.ts
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* - **Auth** — drive the hosted flow directly: `POST auth/start`, open the URL
|
|
25
25
|
* in a web-auth session, then `POST auth/exchange` with the `code` and
|
|
26
26
|
* `state` from your deep-link callback. `client.auth` has all three.
|
|
27
|
-
* - **Forms** — `<
|
|
27
|
+
* - **Forms** — `<bd-form>` is a DOM custom element with no native
|
|
28
28
|
* counterpart. Read the schema and render it with your own components.
|
|
29
29
|
* - **Revalidation** — irrelevant. The webhook targets a server that holds a
|
|
30
30
|
* cache; an app just re-fetches.
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
* import fails to resolve at all, with an error that looks like a missing
|
|
38
38
|
* dependency.
|
|
39
39
|
*/
|
|
40
|
-
export type {
|
|
41
|
-
export {
|
|
42
|
-
export { accessRejectionFromBody,
|
|
43
|
-
export type {
|
|
44
|
-
export {
|
|
40
|
+
export type { BdApiClientOptions, FetchLike } from "./client.js";
|
|
41
|
+
export { BdApiClient, createBdApiClient, } from "./client.js";
|
|
42
|
+
export { accessRejectionFromBody, BdAccessRejectedError, BdApiError, BdFeatureNotEntitledError, BdPaymentLapsedError, type BdPlanGateBody, BdServiceSuspendedError, isBdPlanGateBody, type UnwrappedAccess, type UnwrappedEntitlement, } from "./errors.js";
|
|
43
|
+
export type { BdClient, CreateBdClientOptions, FormFieldDef, FormRenderSettings, FormSchema, FormSubmissionData, FormSubmitResult, FormValidationIssue, GalleryResource, SchedulingBookingResult, SchedulingEventType, SchedulingResource, SchedulingSlot, } from "./sdk.js";
|
|
44
|
+
export { createBdClient } from "./sdk.js";
|
|
45
45
|
//# sourceMappingURL=native.d.ts.map
|
package/dist/native.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EACN,WAAW,EACX,iBAAiB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,cAAc,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,QAAQ,EACR,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/native.js
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* - **Auth** — drive the hosted flow directly: `POST auth/start`, open the URL
|
|
25
25
|
* in a web-auth session, then `POST auth/exchange` with the `code` and
|
|
26
26
|
* `state` from your deep-link callback. `client.auth` has all three.
|
|
27
|
-
* - **Forms** — `<
|
|
27
|
+
* - **Forms** — `<bd-form>` is a DOM custom element with no native
|
|
28
28
|
* counterpart. Read the schema and render it with your own components.
|
|
29
29
|
* - **Revalidation** — irrelevant. The webhook targets a server that holds a
|
|
30
30
|
* cache; an app just re-fetches.
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
* import fails to resolve at all, with an error that looks like a missing
|
|
38
38
|
* dependency.
|
|
39
39
|
*/
|
|
40
|
-
export {
|
|
41
|
-
export { accessRejectionFromBody,
|
|
42
|
-
export {
|
|
40
|
+
export { BdApiClient, createBdApiClient, } from "./client.js";
|
|
41
|
+
export { accessRejectionFromBody, BdAccessRejectedError, BdApiError, BdFeatureNotEntitledError, BdPaymentLapsedError, BdServiceSuspendedError, isBdPlanGateBody, } from "./errors.js";
|
|
42
|
+
export { createBdClient } from "./sdk.js";
|
|
43
43
|
//# sourceMappingURL=native.js.map
|
package/dist/native.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,EACN,WAAW,EACX,iBAAiB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,yBAAyB,EACzB,oBAAoB,EAEpB,uBAAuB,EACvB,gBAAgB,GAGhB,MAAM,aAAa,CAAC;AAgBrB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Drop-in Next.js route handler for
|
|
2
|
+
* Drop-in Next.js route handler for BD revalidation webhooks.
|
|
3
3
|
*
|
|
4
4
|
* Consumer mounts this with literally one line:
|
|
5
5
|
*
|
|
6
|
-
* // app/api/
|
|
6
|
+
* // app/api/bd/revalidate/route.ts
|
|
7
7
|
* export { POST } from "@businessdash/sdk/next/revalidate";
|
|
8
8
|
*
|
|
9
9
|
* That's it. The handler:
|
|
10
10
|
*
|
|
11
|
-
* 1. Reads the shared secret from `
|
|
11
|
+
* 1. Reads the shared secret from `BD_REVALIDATION_SECRET`
|
|
12
12
|
* (override via `createRevalidateHandler({ secret })` if env
|
|
13
13
|
* isn't available — see below).
|
|
14
|
-
* 2. Verifies the `X-
|
|
14
|
+
* 2. Verifies the `X-Bd-Signature: t=<unix>,v1=<hex>` header.
|
|
15
15
|
* Constant-time hash compare, ±5 minute replay window.
|
|
16
16
|
* 3. Calls `revalidateTag(tag, { expire: 0 })` for each tag in
|
|
17
17
|
* the payload.
|
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
* in a separate file so non-Next bundlers don't transitively pick
|
|
25
25
|
* up `next/cache`.
|
|
26
26
|
*/
|
|
27
|
-
import { type
|
|
28
|
-
export { type
|
|
27
|
+
import { type BdPublishPayload, type VerifyOptions, type VerifyResult, verifyAndExtractTags } from "./revalidate-verify.js";
|
|
28
|
+
export { type BdPublishPayload, type VerifyOptions, type VerifyResult, verifyAndExtractTags, };
|
|
29
29
|
export interface CreateRevalidateHandlerOptions {
|
|
30
30
|
/**
|
|
31
31
|
* Override the secret instead of reading from
|
|
32
|
-
* `
|
|
32
|
+
* `BD_REVALIDATION_SECRET`. Useful in tests or when the
|
|
33
33
|
* consumer manages secrets in a non-standard place.
|
|
34
34
|
*/
|
|
35
35
|
secret?: string;
|
|
@@ -37,7 +37,7 @@ export interface CreateRevalidateHandlerOptions {
|
|
|
37
37
|
export declare function createRevalidateHandler(opts?: CreateRevalidateHandlerOptions): (request: Request) => Promise<Response>;
|
|
38
38
|
/**
|
|
39
39
|
* Default `POST` handler the consumer re-exports. Reads the secret
|
|
40
|
-
* from `
|
|
40
|
+
* from `BD_REVALIDATION_SECRET` env automatically.
|
|
41
41
|
*/
|
|
42
42
|
export declare const POST: (request: Request) => Promise<Response>;
|
|
43
43
|
//# sourceMappingURL=next-revalidate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-revalidate.d.ts","sourceRoot":"","sources":["../src/next-revalidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EACN,KAAK,
|
|
1
|
+
{"version":3,"file":"next-revalidate.d.ts","sourceRoot":"","sources":["../src/next-revalidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,oBAAoB,EACpB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,oBAAoB,GACpB,CAAC;AAMF,MAAM,WAAW,8BAA8B;IAC9C;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAgCD,wBAAgB,uBAAuB,CACtC,IAAI,GAAE,8BAAmC,IAEd,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CA4B/D;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,YAlCoB,OAAO,KAAG,OAAO,CAAC,QAAQ,CAkClB,CAAC"}
|
package/dist/next-revalidate.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Drop-in Next.js route handler for
|
|
2
|
+
* Drop-in Next.js route handler for BD revalidation webhooks.
|
|
3
3
|
*
|
|
4
4
|
* Consumer mounts this with literally one line:
|
|
5
5
|
*
|
|
6
|
-
* // app/api/
|
|
6
|
+
* // app/api/bd/revalidate/route.ts
|
|
7
7
|
* export { POST } from "@businessdash/sdk/next/revalidate";
|
|
8
8
|
*
|
|
9
9
|
* That's it. The handler:
|
|
10
10
|
*
|
|
11
|
-
* 1. Reads the shared secret from `
|
|
11
|
+
* 1. Reads the shared secret from `BD_REVALIDATION_SECRET`
|
|
12
12
|
* (override via `createRevalidateHandler({ secret })` if env
|
|
13
13
|
* isn't available — see below).
|
|
14
|
-
* 2. Verifies the `X-
|
|
14
|
+
* 2. Verifies the `X-Bd-Signature: t=<unix>,v1=<hex>` header.
|
|
15
15
|
* Constant-time hash compare, ±5 minute replay window.
|
|
16
16
|
* 3. Calls `revalidateTag(tag, { expire: 0 })` for each tag in
|
|
17
17
|
* the payload.
|
|
@@ -54,12 +54,12 @@ async function callRevalidateTag(tags) {
|
|
|
54
54
|
}
|
|
55
55
|
export function createRevalidateHandler(opts = {}) {
|
|
56
56
|
return async function POST(request) {
|
|
57
|
-
const secret = opts.secret ?? process.env["
|
|
57
|
+
const secret = opts.secret ?? process.env["BD_REVALIDATION_SECRET"];
|
|
58
58
|
if (!secret) {
|
|
59
59
|
return Response.json({ ok: false, reason: "missing_revalidation_secret_env" }, { status: 500 });
|
|
60
60
|
}
|
|
61
61
|
const rawBody = await request.text();
|
|
62
|
-
const sig = request.headers.get("x-
|
|
62
|
+
const sig = request.headers.get("x-bd-signature");
|
|
63
63
|
const verified = verifyAndExtractTags({
|
|
64
64
|
secret,
|
|
65
65
|
rawBody,
|
|
@@ -78,7 +78,7 @@ export function createRevalidateHandler(opts = {}) {
|
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
80
|
* Default `POST` handler the consumer re-exports. Reads the secret
|
|
81
|
-
* from `
|
|
81
|
+
* from `BD_REVALIDATION_SECRET` env automatically.
|
|
82
82
|
*/
|
|
83
83
|
export const POST = createRevalidateHandler();
|
|
84
84
|
//# sourceMappingURL=next-revalidate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-revalidate.js","sourceRoot":"","sources":["../src/next-revalidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAIN,oBAAoB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,kEAAkE;AAClE,sEAAsE;AACtE,OAAO,EAIN,oBAAoB,GACpB,CAAC;AAoBF,KAAK,UAAU,iBAAiB,CAAC,IAAc;IAC9C,iEAAiE;IACjE,oEAAoE;IACpE,mEAAmE;IACnE,uCAAuC;IACvC,MAAM,OAAO,GAAG,YAAY,CAAC;IAC7B,MAAM,GAAG,GAAmD,MAAM,MAAM;IACvE,kBAAkB,CAAC,yBAAyB,CAAC,OAAO,CACpD,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;QACrD,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC;IAC7B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC;YACJ,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACR,qDAAqD;QACtD,CAAC;IACF,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,OAAuC,EAAE;IAEzC,OAAO,KAAK,UAAU,IAAI,CAAC,OAAgB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"next-revalidate.js","sourceRoot":"","sources":["../src/next-revalidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAIN,oBAAoB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,kEAAkE;AAClE,sEAAsE;AACtE,OAAO,EAIN,oBAAoB,GACpB,CAAC;AAoBF,KAAK,UAAU,iBAAiB,CAAC,IAAc;IAC9C,iEAAiE;IACjE,oEAAoE;IACpE,mEAAmE;IACnE,uCAAuC;IACvC,MAAM,OAAO,GAAG,YAAY,CAAC;IAC7B,MAAM,GAAG,GAAmD,MAAM,MAAM;IACvE,kBAAkB,CAAC,yBAAyB,CAAC,OAAO,CACpD,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;QACrD,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC;IAC7B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC;YACJ,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACR,qDAAqD;QACtD,CAAC;IACF,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,OAAuC,EAAE;IAEzC,OAAO,KAAK,UAAU,IAAI,CAAC,OAAgB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC,IAAI,CACnB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,EACxD,EAAE,MAAM,EAAE,GAAG,EAAE,CACf,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,oBAAoB,CAAC;YACrC,MAAM;YACN,OAAO;YACP,eAAe,EAAE,GAAG;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO,QAAQ,CAAC,IAAI,CACnB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,eAAe,EAAE,EACzD,EAAE,MAAM,EAAE,GAAG,EAAE,CACf,CAAC;QACH,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,IAAI,CAAC;YACpB,EAAE,EAAE,IAAI;YACR,WAAW;YACX,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK;SAC7B,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,uBAAuB,EAAE,CAAC"}
|
|
@@ -178,7 +178,7 @@ export declare function createNotificationFeed(options?: NotificationFeedOptions
|
|
|
178
178
|
/**
|
|
179
179
|
* Push notifications relayed by the service worker, for tabs that are open.
|
|
180
180
|
*
|
|
181
|
-
* The worker shipped at `@businessdash/sdk/
|
|
181
|
+
* The worker shipped at `@businessdash/sdk/bd-sw.js` posts every push to its
|
|
182
182
|
* clients. A worker written by hand has to do the same — post
|
|
183
183
|
* `{ type: "businessdash:push", payload }` — or this source hears nothing.
|
|
184
184
|
*/
|
|
@@ -199,7 +199,7 @@ export function createNotificationFeed(options = {}) {
|
|
|
199
199
|
/**
|
|
200
200
|
* Push notifications relayed by the service worker, for tabs that are open.
|
|
201
201
|
*
|
|
202
|
-
* The worker shipped at `@businessdash/sdk/
|
|
202
|
+
* The worker shipped at `@businessdash/sdk/bd-sw.js` posts every push to its
|
|
203
203
|
* clients. A worker written by hand has to do the same — post
|
|
204
204
|
* `{ type: "businessdash:push", payload }` — or this source hears nothing.
|
|
205
205
|
*/
|
package/dist/parallel-pages.d.ts
CHANGED
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
* });
|
|
29
29
|
*
|
|
30
30
|
* `defineParallelPage` is a pure builder — no DB writes, no HTTP. It
|
|
31
|
-
* returns a frozen, type-checked artifact. Push to the
|
|
32
|
-
* later via `
|
|
31
|
+
* returns a frozen, type-checked artifact. Push to the BD server
|
|
32
|
+
* later via `bd sync-parallel-pages` (or the SDK's
|
|
33
33
|
* `client.parallelPages.upsertDefinition()` when wired).
|
|
34
34
|
*/
|
|
35
35
|
export type ParallelPageVariableInput = {
|
|
@@ -68,7 +68,7 @@ export type ParallelPageInput<V extends Record<string, ParallelPageVariableInput
|
|
|
68
68
|
crawlRule?: "inherit" | "index" | "noindex";
|
|
69
69
|
};
|
|
70
70
|
export type ParallelPageDefinition<V extends Record<string, ParallelPageVariableInput>> = {
|
|
71
|
-
readonly $kind: "
|
|
71
|
+
readonly $kind: "bd.parallelPage";
|
|
72
72
|
readonly key: string;
|
|
73
73
|
readonly routePattern: string;
|
|
74
74
|
readonly variables: ReadonlyArray<{
|
|
@@ -96,7 +96,7 @@ export declare function defineParallelPage<V extends Record<string, ParallelPage
|
|
|
96
96
|
/**
|
|
97
97
|
* Type guard for the artifact `defineParallelPage` returns. Useful
|
|
98
98
|
* when consumers export a mixed array of marketing + parallel-page
|
|
99
|
-
* declarations from one `
|
|
99
|
+
* declarations from one `bd.config.ts`.
|
|
100
100
|
*/
|
|
101
101
|
export declare function isParallelPageDefinition(value: unknown): value is ParallelPageDefinition<Record<string, ParallelPageVariableInput>>;
|
|
102
102
|
//# sourceMappingURL=parallel-pages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-pages.d.ts","sourceRoot":"","sources":["../src/parallel-pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,MAAM,MAAM,yBAAyB,GAAG;IACvC,MAAM,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC5B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,IAChD;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,CAAC;IACb,IAAI,EAAE,qBAAqB,CAAC;IAC5B;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,sBAAsB,CACjC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,IAChD;IACH,QAAQ,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"parallel-pages.d.ts","sourceRoot":"","sources":["../src/parallel-pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,MAAM,MAAM,yBAAyB,GAAG;IACvC,MAAM,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC5B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,IAChD;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,CAAC;IACb,IAAI,EAAE,qBAAqB,CAAC;IAC5B;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,sBAAsB,CACjC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,IAChD;IACH,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;QACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;QAChC,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;KAC5C,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;CACpD,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CACjC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,EAClD,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAwExD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,OAAO,GACZ,KAAK,IAAI,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAM5E"}
|
package/dist/parallel-pages.js
CHANGED
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
* });
|
|
29
29
|
*
|
|
30
30
|
* `defineParallelPage` is a pure builder — no DB writes, no HTTP. It
|
|
31
|
-
* returns a frozen, type-checked artifact. Push to the
|
|
32
|
-
* later via `
|
|
31
|
+
* returns a frozen, type-checked artifact. Push to the BD server
|
|
32
|
+
* later via `bd sync-parallel-pages` (or the SDK's
|
|
33
33
|
* `client.parallelPages.upsertDefinition()` when wired).
|
|
34
34
|
*/
|
|
35
35
|
import { parseParallelPagePattern } from "./url-pattern.js";
|
|
@@ -86,7 +86,7 @@ export function defineParallelPage(input) {
|
|
|
86
86
|
throw new Error(`defineParallelPage("${input.key}"): \`meta.title\` and \`meta.description\` are required.`);
|
|
87
87
|
}
|
|
88
88
|
return Object.freeze({
|
|
89
|
-
$kind: "
|
|
89
|
+
$kind: "bd.parallelPage",
|
|
90
90
|
key: input.key,
|
|
91
91
|
routePattern: input.routePattern,
|
|
92
92
|
variables: Object.freeze(variables),
|
|
@@ -98,11 +98,11 @@ export function defineParallelPage(input) {
|
|
|
98
98
|
/**
|
|
99
99
|
* Type guard for the artifact `defineParallelPage` returns. Useful
|
|
100
100
|
* when consumers export a mixed array of marketing + parallel-page
|
|
101
|
-
* declarations from one `
|
|
101
|
+
* declarations from one `bd.config.ts`.
|
|
102
102
|
*/
|
|
103
103
|
export function isParallelPageDefinition(value) {
|
|
104
104
|
return (!!value &&
|
|
105
105
|
typeof value === "object" &&
|
|
106
|
-
value.$kind === "
|
|
106
|
+
value.$kind === "bd.parallelPage");
|
|
107
107
|
}
|
|
108
108
|
//# sourceMappingURL=parallel-pages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-pages.js","sourceRoot":"","sources":["../src/parallel-pages.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parallel-pages.js","sourceRoot":"","sources":["../src/parallel-pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* not put their own customer portal on their own domain in their own design.
|
|
9
9
|
*
|
|
10
10
|
* This is the native path. Four things about the surface shape the design, and
|
|
11
|
-
* all of them come from the audit in `Resources/
|
|
11
|
+
* all of them come from the audit in `Resources/BD-Customer-Portal-SDK-Audit.md`.
|
|
12
12
|
*
|
|
13
13
|
* ## 1. The session is not optional
|
|
14
14
|
*
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* not put their own customer portal on their own domain in their own design.
|
|
9
9
|
*
|
|
10
10
|
* This is the native path. Four things about the surface shape the design, and
|
|
11
|
-
* all of them come from the audit in `Resources/
|
|
11
|
+
* all of them come from the audit in `Resources/BD-Customer-Portal-SDK-Audit.md`.
|
|
12
12
|
*
|
|
13
13
|
* ## 1. The session is not optional
|
|
14
14
|
*
|
package/dist/proxy.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BdCustomerPortalClient } from "./client.js";
|
|
2
2
|
/**
|
|
3
3
|
* Browser-safe customer-portal client.
|
|
4
4
|
*
|
|
@@ -9,49 +9,49 @@ import { BiabDevCustomerPortalClient } from "./client.js";
|
|
|
9
9
|
*
|
|
10
10
|
* Pattern (Next.js example) — your tenant ships:
|
|
11
11
|
* - this client in browser bundles, configured with `proxyBaseUrl`
|
|
12
|
-
* (e.g. `/api/
|
|
12
|
+
* (e.g. `/api/bd/customer-portal`).
|
|
13
13
|
* - a route at that path that calls {@link createCustomerPortalProxyHandler}
|
|
14
|
-
* with your real
|
|
14
|
+
* with your real BD API key + the BD org id this site is pinned to.
|
|
15
15
|
*
|
|
16
16
|
* The browser client only knows the proxy URL. The bearer key never leaves
|
|
17
17
|
* the tenant server.
|
|
18
18
|
*/
|
|
19
19
|
export type BrowserCustomerPortalClientOptions = {
|
|
20
|
-
/** Same-origin proxy path or absolute URL (e.g. "/api/
|
|
20
|
+
/** Same-origin proxy path or absolute URL (e.g. "/api/bd/customer-portal"). */
|
|
21
21
|
proxyBaseUrl: string;
|
|
22
22
|
fetch?: typeof fetch;
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
25
|
* Browser-only client that talks to your tenant's same-origin proxy route.
|
|
26
|
-
* The proxy injects the
|
|
26
|
+
* The proxy injects the BD API key and the `X-BD-Customer-Portal-Org`
|
|
27
27
|
* pin, so the browser never sees either secret.
|
|
28
28
|
*/
|
|
29
|
-
export declare function createBrowserCustomerPortalClient(options: BrowserCustomerPortalClientOptions):
|
|
29
|
+
export declare function createBrowserCustomerPortalClient(options: BrowserCustomerPortalClientOptions): BdCustomerPortalClient;
|
|
30
30
|
/**
|
|
31
31
|
* Helper for the *server-side* proxy route a tenant ships. Returns a fetch
|
|
32
32
|
* handler that:
|
|
33
|
-
* - rewrites incoming request paths to the
|
|
34
|
-
* - injects the
|
|
33
|
+
* - rewrites incoming request paths to the BD host's customer-portal API
|
|
34
|
+
* - injects the BD API key and `X-BD-Customer-Portal-Org` header
|
|
35
35
|
* - forwards the response unchanged.
|
|
36
36
|
*
|
|
37
|
-
* @example // app/api/
|
|
37
|
+
* @example // app/api/bd/customer-portal/[...path]/route.ts
|
|
38
38
|
* export const GET = createCustomerPortalProxyHandler({
|
|
39
|
-
*
|
|
40
|
-
* apiKey: process.env.
|
|
41
|
-
* organizationId: process.env.
|
|
39
|
+
* bdBaseUrl: "https://biab.app/api/package/v1",
|
|
40
|
+
* apiKey: process.env.BD_API_KEY!,
|
|
41
|
+
* organizationId: process.env.BD_ORG_ID!,
|
|
42
42
|
* });
|
|
43
43
|
* export const POST = GET;
|
|
44
44
|
*/
|
|
45
45
|
export type CustomerPortalProxyOptions = {
|
|
46
|
-
|
|
46
|
+
bdBaseUrl: string;
|
|
47
47
|
apiKey: string;
|
|
48
|
-
/** The
|
|
49
|
-
* pinned to. Sent as the `X-
|
|
48
|
+
/** The BD organization id (`org.id` from the portal context) this site is
|
|
49
|
+
* pinned to. Sent as the `X-BD-Customer-Portal-Org` header. */
|
|
50
50
|
organizationId?: string;
|
|
51
51
|
/**
|
|
52
|
-
* @deprecated Use {@link organizationId} (the
|
|
53
|
-
* the platform resolves the pin header by
|
|
54
|
-
* but new integrations should pass the
|
|
52
|
+
* @deprecated Use {@link organizationId} (the BD org id). Still accepted —
|
|
53
|
+
* the platform resolves the pin header by BD id or the legacy provider id —
|
|
54
|
+
* but new integrations should pass the BD org id and drop any
|
|
55
55
|
* provider-specific env var.
|
|
56
56
|
*/
|
|
57
57
|
workosOrganizationId?: string;
|
package/dist/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,sBAAsB,EACtB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAChD,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACrB,CAAC;AAiBF;;;;GAIG;AACH,wBAAgB,iCAAiC,CAChD,OAAO,EAAE,kCAAkC,0BAI3C;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf;oEACgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAmBF,wBAAgB,gCAAgC,CAC/C,OAAO,EAAE,0BAA0B,IAgBrB,SAAS,OAAO,uBA6C9B"}
|
package/dist/proxy.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
class
|
|
1
|
+
import { BdApiClient, BdCustomerPortalClient, } from "./client.js";
|
|
2
|
+
class BrowserBdApiClient extends BdApiClient {
|
|
3
3
|
constructor(options) {
|
|
4
4
|
// Pass a placeholder API key — the proxy ignores the Authorization
|
|
5
5
|
// header from the browser and substitutes its own.
|
|
@@ -15,12 +15,12 @@ class BrowserBiabDevClient extends BiabDevClient {
|
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Browser-only client that talks to your tenant's same-origin proxy route.
|
|
18
|
-
* The proxy injects the
|
|
18
|
+
* The proxy injects the BD API key and the `X-BD-Customer-Portal-Org`
|
|
19
19
|
* pin, so the browser never sees either secret.
|
|
20
20
|
*/
|
|
21
21
|
export function createBrowserCustomerPortalClient(options) {
|
|
22
|
-
const inner = new
|
|
23
|
-
return new
|
|
22
|
+
const inner = new BrowserBdApiClient(options);
|
|
23
|
+
return new BdCustomerPortalClient(inner, null);
|
|
24
24
|
}
|
|
25
25
|
function normalizeSiteOriginForProxy(raw) {
|
|
26
26
|
if (!raw)
|
|
@@ -41,11 +41,11 @@ function normalizeSiteOriginForProxy(raw) {
|
|
|
41
41
|
}
|
|
42
42
|
export function createCustomerPortalProxyHandler(options) {
|
|
43
43
|
const fetchImpl = options.fetch ?? fetch;
|
|
44
|
-
const base = options.
|
|
45
|
-
? options.
|
|
46
|
-
: `${options.
|
|
44
|
+
const base = options.bdBaseUrl.endsWith("/")
|
|
45
|
+
? options.bdBaseUrl
|
|
46
|
+
: `${options.bdBaseUrl}/`;
|
|
47
47
|
const siteOrigin = normalizeSiteOriginForProxy(options.siteOrigin);
|
|
48
|
-
// Prefer the
|
|
48
|
+
// Prefer the BD org id; fall back to the deprecated provider-id alias so
|
|
49
49
|
// existing integrations keep working until they migrate.
|
|
50
50
|
const orgPin = options.organizationId ?? options.workosOrganizationId;
|
|
51
51
|
if (!orgPin) {
|
|
@@ -62,7 +62,7 @@ export function createCustomerPortalProxyHandler(options) {
|
|
|
62
62
|
const upstream = new URL(upstreamPath, base);
|
|
63
63
|
const upstreamHeaders = new Headers();
|
|
64
64
|
upstreamHeaders.set("Authorization", `Bearer ${options.apiKey}`);
|
|
65
|
-
upstreamHeaders.set("X-
|
|
65
|
+
upstreamHeaders.set("X-BD-Customer-Portal-Org", orgPin);
|
|
66
66
|
upstreamHeaders.set("Accept", "application/json");
|
|
67
67
|
if (siteOrigin) {
|
|
68
68
|
upstreamHeaders.set("Origin", siteOrigin);
|
package/dist/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/push-core/index.cjs
CHANGED
|
@@ -111,7 +111,7 @@ async function subscribeToPush(options) {
|
|
|
111
111
|
}
|
|
112
112
|
try {
|
|
113
113
|
const registration = await navigator.serviceWorker.register(
|
|
114
|
-
options.serviceWorkerPath ?? "/
|
|
114
|
+
options.serviceWorkerPath ?? "/bd-sw.js",
|
|
115
115
|
{ scope: options.scope ?? "/" }
|
|
116
116
|
);
|
|
117
117
|
await navigator.serviceWorker.ready;
|
|
@@ -92,7 +92,7 @@ export type SubscribeOptions = {
|
|
|
92
92
|
/** From `GET customer-portal/push`. */
|
|
93
93
|
vapidPublicKey: string;
|
|
94
94
|
/**
|
|
95
|
-
* Path to the service worker ON YOUR ORIGIN. Defaults to `/
|
|
95
|
+
* Path to the service worker ON YOUR ORIGIN. Defaults to `/bd-sw.js`.
|
|
96
96
|
*
|
|
97
97
|
* It must be served from your own domain — a worker on someone else's
|
|
98
98
|
* cannot receive your visitors' push. Copy the one this SDK ships.
|