@sudajs/theme-engine 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/assets.d.ts CHANGED
@@ -21,15 +21,36 @@ export interface ThemeUnsplashAssetSummary {
21
21
  authorName?: string;
22
22
  }
23
23
  export type ResolveAssetPathOptions = {
24
+ /** Primary public asset base URL (CDN). Typically ASSET_BASE_URL. */
24
25
  assetBaseUrl?: string;
26
+ /**
27
+ * Optional secondary resolver for callers that need to inspect the path
28
+ * (e.g. `themes/<key>/<version>/...`) and produce a URL different from a
29
+ * simple `${assetBaseUrl}/${path}` join. Tried before `fallbackBaseUrl`.
30
+ */
25
31
  legacyResolve?: (path: string) => string | undefined;
32
+ /**
33
+ * Last-resort base URL applied when neither `assetBaseUrl` nor
34
+ * `legacyResolve` produced a URL. Use this to keep dev/test environments
35
+ * from emitting unresolved relative paths (which the browser would then
36
+ * load from the site origin and 404 against). Typically the app URL or a
37
+ * dev-only proxy origin.
38
+ */
39
+ fallbackBaseUrl?: string;
26
40
  };
27
41
  export interface ResolveThemeRuntimeUrlOptions {
28
42
  /** CDN/public asset base URL, typically ASSET_BASE_URL or S3_PUBLIC_BASE_URL. */
29
43
  assetBaseUrl?: string;
30
44
  /** Public storage base URL from the active S3/OSS storage config. */
31
45
  storagePublicBaseUrl?: string;
32
- /** App URL fallback. Currently unsupported because theme assets are not app-served. */
46
+ /**
47
+ * Last-resort base URL when neither `assetBaseUrl` nor
48
+ * `storagePublicBaseUrl` is configured. Resolution is best-effort: callers
49
+ * usually pass the app URL (optionally namespaced under a dev proxy path)
50
+ * so theme assets degrade to a recognisable URL instead of throwing.
51
+ */
52
+ fallbackBaseUrl?: string;
53
+ /** App URL fallback. @deprecated use `fallbackBaseUrl` instead. */
33
54
  appUrl?: string;
34
55
  }
35
56
  /**
@@ -37,8 +58,10 @@ export interface ResolveThemeRuntimeUrlOptions {
37
58
  *
38
59
  * - Empty / undefined values return `undefined`.
39
60
  * - Absolute URLs (http/https/protocol-relative/data) are returned as-is.
40
- * - Otherwise the value is treated as a canonical asset path and joined with
41
- * `assetBaseUrl`; if no base url is configured, `legacyResolve` is consulted.
61
+ * - Otherwise the value is treated as a canonical asset path and resolved
62
+ * against `assetBaseUrl`, then `legacyResolve`, then `fallbackBaseUrl`. If
63
+ * none of those produce a URL the original path is returned untouched, so
64
+ * resolution never throws.
42
65
  */
43
66
  export declare function resolveAssetPath(value: string | undefined, options?: ResolveAssetPathOptions): string | undefined;
44
67
  /**
@@ -47,6 +70,14 @@ export declare function resolveAssetPath(value: string | undefined, options?: Re
47
70
  * the registry storage prefix.
48
71
  */
49
72
  export declare function createThemeAssetPath(themeKey: string, version: string, relativePath: string): string;
73
+ /**
74
+ * Resolve the runtime URL for a theme-bundled asset. Tries (in order):
75
+ * `assetBaseUrl`, `storagePublicBaseUrl`, then `fallbackBaseUrl` /`appUrl`.
76
+ *
77
+ * Resolution never throws — callers always receive a string. If nothing is
78
+ * configured the raw `themes/<key>/<version>/<rel>` path is returned, which
79
+ * surfaces the misconfiguration in the browser without crashing the page.
80
+ */
50
81
  export declare function resolveThemeRuntimeUrl(themeKey: string, version: string, relativePath: string, options: ResolveThemeRuntimeUrlOptions): string;
51
82
  /**
52
83
  * Theme-bundled asset path resolver. Themes call this in section
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACtD,CAAC;AAEF,MAAM,WAAW,6BAA6B;IAC5C,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,GAAE,uBAA4B,GACpC,MAAM,GAAG,SAAS,CAWpB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,6BAA6B,GACrC,MAAM,CAmBR;AAED;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;AAElE;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAE9F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAE/F"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACrD;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,6BAA6B;IAC5C,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,GAAE,uBAA4B,GACpC,MAAM,GAAG,SAAS,CAkBpB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,6BAA6B,GACrC,MAAM,CAaR;AAED;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;AAElE;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAE9F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAE/F"}
package/dist/assets.js CHANGED
@@ -9,8 +9,10 @@ function joinAssetUrl(baseUrl, key) {
9
9
  *
10
10
  * - Empty / undefined values return `undefined`.
11
11
  * - Absolute URLs (http/https/protocol-relative/data) are returned as-is.
12
- * - Otherwise the value is treated as a canonical asset path and joined with
13
- * `assetBaseUrl`; if no base url is configured, `legacyResolve` is consulted.
12
+ * - Otherwise the value is treated as a canonical asset path and resolved
13
+ * against `assetBaseUrl`, then `legacyResolve`, then `fallbackBaseUrl`. If
14
+ * none of those produce a URL the original path is returned untouched, so
15
+ * resolution never throws.
14
16
  */
15
17
  export function resolveAssetPath(value, options = {}) {
16
18
  if (!value || typeof value !== "string") {
@@ -22,7 +24,14 @@ export function resolveAssetPath(value, options = {}) {
22
24
  if (options.assetBaseUrl) {
23
25
  return joinAssetUrl(options.assetBaseUrl, value);
24
26
  }
25
- return options.legacyResolve?.(value) ?? value;
27
+ const legacy = options.legacyResolve?.(value);
28
+ if (legacy) {
29
+ return legacy;
30
+ }
31
+ if (options.fallbackBaseUrl) {
32
+ return joinAssetUrl(options.fallbackBaseUrl, value);
33
+ }
34
+ return value;
26
35
  }
27
36
  /**
28
37
  * Build the canonical asset path for a theme-bundled asset. Mirrors the
@@ -33,6 +42,14 @@ export function createThemeAssetPath(themeKey, version, relativePath) {
33
42
  const normalizedRelative = relativePath.replace(/^\/+/, "");
34
43
  return `themes/${themeKey}/${version}/${normalizedRelative}`;
35
44
  }
45
+ /**
46
+ * Resolve the runtime URL for a theme-bundled asset. Tries (in order):
47
+ * `assetBaseUrl`, `storagePublicBaseUrl`, then `fallbackBaseUrl` /`appUrl`.
48
+ *
49
+ * Resolution never throws — callers always receive a string. If nothing is
50
+ * configured the raw `themes/<key>/<version>/<rel>` path is returned, which
51
+ * surfaces the misconfiguration in the browser without crashing the page.
52
+ */
36
53
  export function resolveThemeRuntimeUrl(themeKey, version, relativePath, options) {
37
54
  const key = createThemeAssetPath(themeKey, version, relativePath);
38
55
  if (options.assetBaseUrl) {
@@ -41,13 +58,11 @@ export function resolveThemeRuntimeUrl(themeKey, version, relativePath, options)
41
58
  if (options.storagePublicBaseUrl) {
42
59
  return joinAssetUrl(options.storagePublicBaseUrl, key);
43
60
  }
44
- if (options.appUrl) {
45
- throw new Error(`Cannot resolve theme asset "${relativePath}" for ${themeKey}@${version}: ` +
46
- "app URL fallback is not available because theme assets are not served locally. " +
47
- "Configure ASSET_BASE_URL or S3_PUBLIC_BASE_URL.");
61
+ const fallback = options.fallbackBaseUrl ?? options.appUrl;
62
+ if (fallback) {
63
+ return joinAssetUrl(fallback, key);
48
64
  }
49
- throw new Error(`Cannot resolve theme asset "${relativePath}" for ${themeKey}@${version}: ` +
50
- "neither ASSET_BASE_URL nor S3_PUBLIC_BASE_URL is configured, and app URL fallback is unavailable.");
65
+ return key;
51
66
  }
52
67
  /**
53
68
  * Create a per-theme asset resolver bound to the theme's `key` and `version`.
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAsCA,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,GAAW;IAChD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAyB,EACzB,UAAmC,EAAE;IAErC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,OAAe,EACf,YAAoB;IAEpB,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5D,OAAO,UAAU,QAAQ,IAAI,OAAO,IAAI,kBAAkB,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,OAAe,EACf,YAAoB,EACpB,OAAsC;IAEtC,MAAM,GAAG,GAAG,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACjC,OAAO,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,+BAA+B,YAAY,SAAS,QAAQ,IAAI,OAAO,IAAI;YACzE,iFAAiF;YACjF,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CACb,+BAA+B,YAAY,SAAS,QAAQ,IAAI,OAAO,IAAI;QACzE,mGAAmG,CACtG,CAAC;AACJ,CAAC;AAUD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,OAAe;IACxE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA0C;IACzE,OAAO,wBAAwB,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AA2DA,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,GAAW;IAChD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAyB,EACzB,UAAmC,EAAE;IAErC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,OAAe,EACf,YAAoB;IAEpB,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5D,OAAO,UAAU,QAAQ,IAAI,OAAO,IAAI,kBAAkB,EAAE,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,OAAe,EACf,YAAoB,EACpB,OAAsC;IAEtC,MAAM,GAAG,GAAG,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACjC,OAAO,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAC3D,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAUD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,OAAe;IACxE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA0C;IACzE,OAAO,wBAAwB,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC"}
@@ -16,5 +16,12 @@ export interface ThemeRenderMetadata {
16
16
  cms?: unknown;
17
17
  [key: string]: unknown;
18
18
  }
19
+ /**
20
+ * Resolve an asset path/URL using the host-supplied resolver from
21
+ * `metadata.resolveAssetUrl`. Components must rely on the host to provide a
22
+ * fully configured resolver (with base URL, dev fallback, etc.); we never
23
+ * bypass that with a bare path resolution here, which would silently mask a
24
+ * misconfigured host and emit unresolved relative paths to the browser.
25
+ */
19
26
  export declare function resolveAsset(metadata: ThemeRenderMetadata | undefined, value: string | undefined): string | undefined;
20
27
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/components/metadata.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,mBAAmB,GAAG,SAAS,EACzC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAMpB"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/components/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,mBAAmB,GAAG,SAAS,EACzC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAKpB"}
@@ -1,9 +1,14 @@
1
- import { resolveAssetPath } from "../assets.js";
1
+ /**
2
+ * Resolve an asset path/URL using the host-supplied resolver from
3
+ * `metadata.resolveAssetUrl`. Components must rely on the host to provide a
4
+ * fully configured resolver (with base URL, dev fallback, etc.); we never
5
+ * bypass that with a bare path resolution here, which would silently mask a
6
+ * misconfigured host and emit unresolved relative paths to the browser.
7
+ */
2
8
  export function resolveAsset(metadata, value) {
3
9
  if (!value) {
4
10
  return undefined;
5
11
  }
6
- const resolved = metadata?.resolveAssetUrl?.(value);
7
- return resolved ?? resolveAssetPath(value);
12
+ return metadata?.resolveAssetUrl?.(value) ?? value;
8
13
  }
9
14
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/components/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAqB7C,MAAM,UAAU,YAAY,CAC1B,QAAyC,EACzC,KAAyB;IAEzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,EAAE,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/components/metadata.ts"],"names":[],"mappings":"AAmBA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAyC,EACzC,KAAyB;IAEzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,QAAQ,EAAE,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACrD,CAAC"}
@@ -1,8 +1,12 @@
1
1
  import type { ThemeModule } from "../types.js";
2
+ export type ThemeRuntimeModule = {
3
+ default?: ThemeModule;
4
+ };
2
5
  export interface ThemeRuntimeState {
3
6
  theme: ThemeModule | null;
4
7
  isLoading: boolean;
5
8
  error: string | null;
6
9
  }
10
+ export declare function loadThemeRuntime(runtimeUrl: string): Promise<ThemeRuntimeModule>;
7
11
  export declare function useThemeRuntime(runtimeUrl: string | null): ThemeRuntimeState;
8
12
  //# sourceMappingURL=use-theme-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-theme-runtime.d.ts","sourceRoot":"","sources":["../../src/editor/use-theme-runtime.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAI5C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AA4BD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB,CAuD5E"}
1
+ {"version":3,"file":"use-theme-runtime.d.ts","sourceRoot":"","sources":["../../src/editor/use-theme-runtime.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,MAAM,kBAAkB,GAAG;IAAE,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAgBD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAUhF;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB,CAuD5E"}
@@ -14,7 +14,7 @@ function installHostReactGlobals() {
14
14
  host.__SUDA_REACT_DOM__ = ReactDom;
15
15
  host.__SUDA_REACT_DOM_CLIENT__ = ReactDomClient;
16
16
  }
17
- function loadRuntime(runtimeUrl) {
17
+ export function loadThemeRuntime(runtimeUrl) {
18
18
  const existing = runtimeCache.get(runtimeUrl);
19
19
  if (existing) {
20
20
  return existing;
@@ -41,7 +41,7 @@ export function useThemeRuntime(runtimeUrl) {
41
41
  return;
42
42
  }
43
43
  setState({ theme: null, isLoading: true, error: null });
44
- void loadRuntime(runtimeUrl)
44
+ void loadThemeRuntime(runtimeUrl)
45
45
  .then((runtime) => {
46
46
  if (cancelled) {
47
47
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"use-theme-runtime.js","sourceRoot":"","sources":["../../src/editor/use-theme-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-theme-runtime.js","sourceRoot":"","sources":["../../src/editor/use-theme-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ThemeRenderProps } from "./render.js";
2
+ /** Render a runtime theme with a regular React SSR dispatcher, outside Flight. */
3
+ export declare function renderThemeToString(props: ThemeRenderProps): string;
4
+ //# sourceMappingURL=render-string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-string.d.ts","sourceRoot":"","sources":["../../src/render/render-string.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AA2B9D,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAGnE"}
@@ -0,0 +1,23 @@
1
+ import { createRequire } from "node:module";
2
+ import { ThemeRender } from "./render.js";
3
+ let nativeRenderer;
4
+ // Keep React DOM's renderer outside the Next.js Flight module graph. The
5
+ // runtime-loaded theme and this renderer then resolve the same host React.
6
+ const nativeRequire = createRequire(import.meta.url);
7
+ function loadNativeRenderer() {
8
+ if (!nativeRenderer) {
9
+ const reactModule = nativeRequire("react");
10
+ const reactDomServerModule = nativeRequire("react-dom/server");
11
+ nativeRenderer = {
12
+ createElement: reactModule.createElement,
13
+ renderToString: reactDomServerModule.renderToString,
14
+ };
15
+ }
16
+ return nativeRenderer;
17
+ }
18
+ /** Render a runtime theme with a regular React SSR dispatcher, outside Flight. */
19
+ export function renderThemeToString(props) {
20
+ const renderer = loadNativeRenderer();
21
+ return renderer.renderToString(renderer.createElement(ThemeRender, props));
22
+ }
23
+ //# sourceMappingURL=render-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-string.js","sourceRoot":"","sources":["../../src/render/render-string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C,OAAO,EAAE,WAAW,EAAyB,MAAM,UAAU,CAAC;AAO9D,IAAI,cAA0C,CAAC;AAE/C,yEAAyE;AACzE,2EAA2E;AAC3E,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAErD,SAAS,kBAAkB;IACzB,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAA8C,CAAC;QACxF,MAAM,oBAAoB,GAAG,aAAa,CAAC,kBAAkB,CAE5D,CAAC;QACF,cAAc,GAAG;YACf,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,cAAc,EAAE,oBAAoB,CAAC,cAAc;SACpD,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,OAAO,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ReactElement } from "react";
2
+ import { loadThemeRuntime, type ThemeRuntimeModule } from "../editor/use-theme-runtime.js";
3
+ import { type ThemeRenderProps } from "./render.js";
4
+ /**
5
+ * Hydratable client entry for a theme module that was loaded inside the
6
+ * browser. Theme modules must not be passed to this component across an RSC
7
+ * boundary because Puck configs contain render functions.
8
+ */
9
+ export declare function ThemeRenderClient(props: ThemeRenderProps): ReactElement;
10
+ export { loadThemeRuntime, type ThemeRenderProps, type ThemeRuntimeModule };
11
+ //# sourceMappingURL=render.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.client.d.ts","sourceRoot":"","sources":["../../src/render/render.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EACL,gBAAgB,EAChB,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE9D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAEvE;AAED,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { loadThemeRuntime, } from "../editor/use-theme-runtime.js";
4
+ import { ThemeRender } from "./render.js";
5
+ /**
6
+ * Hydratable client entry for a theme module that was loaded inside the
7
+ * browser. Theme modules must not be passed to this component across an RSC
8
+ * boundary because Puck configs contain render functions.
9
+ */
10
+ export function ThemeRenderClient(props) {
11
+ return _jsx(ThemeRender, { ...props });
12
+ }
13
+ export { loadThemeRuntime };
14
+ //# sourceMappingURL=render.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.client.js","sourceRoot":"","sources":["../../src/render/render.client.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAIb,OAAO,EACL,gBAAgB,GAEjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,WAAW,EAAyB,MAAM,UAAU,CAAC;AAE9D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,OAAO,KAAC,WAAW,OAAK,KAAK,GAAI,CAAC;AACpC,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAkD,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { renderThemePage, ThemeRender, type ThemeRenderProps } from "./render/render.js";
2
+ export { renderThemeToString } from "./render/render-string.js";
2
3
  export { getPageSlot, THEME_PAGE_SLOT } from "./render/slot.js";
3
4
  export { extractLayoutChrome, type LayoutChrome } from "./render/chrome.js";
4
5
  export { resolveAsset, type ThemeRenderMetadata } from "./components/metadata.js";
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,GAC/B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7F,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,GAC/B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7F,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
package/dist/server.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // Server-only entry. Pulls `@puckeditor/core/rsc`; import from React Server
2
2
  // Components only (e.g. the public site).
3
3
  export { renderThemePage, ThemeRender } from "./render/render.js";
4
+ export { renderThemeToString } from "./render/render-string.js";
4
5
  export { getPageSlot, THEME_PAGE_SLOT } from "./render/slot.js";
5
6
  export { extractLayoutChrome } from "./render/chrome.js";
6
7
  export { resolveAsset } from "./components/metadata.js";
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,0CAA0C;AAC1C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAyB,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,YAAY,EAA4B,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,GAMjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AAOjC,cAAc,aAAa,CAAC;AAE5B,sDAAsD;AACtD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7F,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,0CAA0C;AAC1C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAyB,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,YAAY,EAA4B,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,GAMjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AAOjC,cAAc,aAAa,CAAC;AAE5B,sDAAsD;AACtD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7F,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudajs/theme-engine",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -22,6 +22,12 @@
22
22
  "types": "./dist/server.d.ts",
23
23
  "import": "./dist/server.js",
24
24
  "default": "./dist/server.js"
25
+ },
26
+ "./client": {
27
+ "development": "./src/render/render.client.tsx",
28
+ "types": "./dist/render/render.client.d.ts",
29
+ "import": "./dist/render/render.client.js",
30
+ "default": "./dist/render/render.client.js"
25
31
  }
26
32
  },
27
33
  "files": [