@omriashke/dynamico-core 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,63 @@
1
+ import type { PropsSchema } from "./types.js";
2
+ export type BookPreviewJson = Record<string, unknown>;
3
+ export interface BookPreviewConfig {
4
+ fixtures?: Record<string, BookPreviewJson>;
5
+ entries?: BookPreviewEntry[];
6
+ /** Legacy alias — normalized to `entries`. */
7
+ stories?: BookPreviewEntry[];
8
+ }
9
+ export interface BookPreviewEntry {
10
+ id: string;
11
+ kind?: "info";
12
+ blocks?: BookPreviewBlock[];
13
+ }
14
+ export type BookPreviewBlock = {
15
+ type: "component";
16
+ component: string;
17
+ props?: BookPreviewJson;
18
+ } | {
19
+ type: "stack";
20
+ items: BookPreviewBlockItem[];
21
+ } | {
22
+ type: "row";
23
+ items: BookPreviewBlockItem[];
24
+ } | {
25
+ type: "variantGrid";
26
+ component: string;
27
+ variants: Array<{
28
+ id: string;
29
+ props?: BookPreviewJson;
30
+ }>;
31
+ };
32
+ export type BookPreviewBlockItem = {
33
+ component: string;
34
+ props?: BookPreviewJson;
35
+ };
36
+ export interface BookPreviewPropSet {
37
+ entryId: string;
38
+ location: string;
39
+ props: Record<string, unknown>;
40
+ }
41
+ export interface BookPreviewValidationResult {
42
+ ok: boolean;
43
+ errors: string[];
44
+ }
45
+ /**
46
+ * Merge `$fixture` references into concrete prop objects.
47
+ *
48
+ * Supports both:
49
+ * - top-level: `{ "$fixture": "articleCard", "variant": "default" }`
50
+ * - per-field: `{ "data": { "$fixture": "articleCard" } }`
51
+ */
52
+ export declare function resolveBookFixtures(props: BookPreviewJson | undefined, fixtures: Record<string, BookPreviewJson>): BookPreviewJson;
53
+ /**
54
+ * Resolve book-config prop DSL to runtime values for schema validation.
55
+ * React element placeholders (`$component`) become null; callbacks (`$fn`) become no-ops.
56
+ */
57
+ export declare function resolveBookPropValues(props: BookPreviewJson, fixtures: Record<string, BookPreviewJson>): Record<string, unknown>;
58
+ export declare function normalizeBookPreviewConfig(raw: BookPreviewConfig): BookPreviewConfig;
59
+ /** Collect every resolved prop bag used to preview `componentName` in book.config.json. */
60
+ export declare function collectBookPreviewPropSets(config: BookPreviewConfig, componentName: string): BookPreviewPropSet[];
61
+ /** Validate every book.config.json preview of a component against its propsSchema. */
62
+ export declare function validateBookPreviewsForComponent(schema: PropsSchema, config: BookPreviewConfig, componentName: string): BookPreviewValidationResult;
63
+ //# sourceMappingURL=bookPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bookPreview.d.ts","sourceRoot":"","sources":["../src/bookPreview.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,eAAe,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,oBAAoB,EAAE,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,oBAAoB,EAAE,CAAA;CAAE,GAC9C;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;CAC1D,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC;AAElF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACxC,eAAe,CAuBjB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAwBD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,iBAAiB,GAAG,iBAAiB,CAGpF;AAED,2FAA2F;AAC3F,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,kBAAkB,EAAE,CAYtB;AA+ED,sFAAsF;AACtF,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,2BAA2B,CAgB7B"}
@@ -0,0 +1,147 @@
1
+ import { validateProps } from "./propsSchema.js";
2
+ /**
3
+ * Merge `$fixture` references into concrete prop objects.
4
+ *
5
+ * Supports both:
6
+ * - top-level: `{ "$fixture": "articleCard", "variant": "default" }`
7
+ * - per-field: `{ "data": { "$fixture": "articleCard" } }`
8
+ */
9
+ export function resolveBookFixtures(props, fixtures) {
10
+ if (!props)
11
+ return {};
12
+ let merged = { ...props };
13
+ if ("$fixture" in merged && typeof merged.$fixture === "string") {
14
+ const fixtureKey = merged.$fixture;
15
+ const base = fixtures[fixtureKey] ?? {};
16
+ const { $fixture: _omit, ...rest } = merged;
17
+ merged = { ...base, ...rest };
18
+ }
19
+ const out = {};
20
+ for (const [key, value] of Object.entries(merged)) {
21
+ if (value && typeof value === "object" && !Array.isArray(value) && "$fixture" in value) {
22
+ const fixtureKey = value.$fixture;
23
+ const base = fixtures[fixtureKey] ?? {};
24
+ const { $fixture: _omit, ...rest } = value;
25
+ out[key] = { ...base, ...rest };
26
+ }
27
+ else {
28
+ out[key] = value;
29
+ }
30
+ }
31
+ return out;
32
+ }
33
+ /**
34
+ * Resolve book-config prop DSL to runtime values for schema validation.
35
+ * React element placeholders (`$component`) become null; callbacks (`$fn`) become no-ops.
36
+ */
37
+ export function resolveBookPropValues(props, fixtures) {
38
+ const out = {};
39
+ for (const [key, value] of Object.entries(props)) {
40
+ out[key] = resolveBookPropValue(value, fixtures);
41
+ }
42
+ return out;
43
+ }
44
+ function resolveBookPropValue(value, fixtures) {
45
+ if (value === null || typeof value !== "object")
46
+ return value;
47
+ if (Array.isArray(value)) {
48
+ return value.map((item) => resolveBookPropValue(item, fixtures));
49
+ }
50
+ const obj = value;
51
+ if ("$fn" in obj && obj.$fn === "noop") {
52
+ return () => undefined;
53
+ }
54
+ if ("$component" in obj && typeof obj.$component === "string") {
55
+ return null;
56
+ }
57
+ if ("$fixture" in obj) {
58
+ return resolveBookPropValues(resolveBookFixtures(obj, fixtures), fixtures);
59
+ }
60
+ const nested = {};
61
+ for (const [key, nestedValue] of Object.entries(obj)) {
62
+ nested[key] = resolveBookPropValue(nestedValue, fixtures);
63
+ }
64
+ return nested;
65
+ }
66
+ export function normalizeBookPreviewConfig(raw) {
67
+ const entries = raw.entries ?? raw.stories ?? [];
68
+ return { ...raw, entries };
69
+ }
70
+ /** Collect every resolved prop bag used to preview `componentName` in book.config.json. */
71
+ export function collectBookPreviewPropSets(config, componentName) {
72
+ const normalized = normalizeBookPreviewConfig(config);
73
+ const fixtures = normalized.fixtures ?? {};
74
+ const out = [];
75
+ for (const entry of normalized.entries ?? []) {
76
+ if (entry.kind === "info")
77
+ continue;
78
+ for (const block of entry.blocks ?? []) {
79
+ collectFromBlock(block, componentName, fixtures, entry.id, out);
80
+ }
81
+ }
82
+ return out;
83
+ }
84
+ function collectFromBlock(block, componentName, fixtures, entryId, out) {
85
+ switch (block.type) {
86
+ case "component":
87
+ collectFromComponentUse(block.component, block.props, componentName, fixtures, entryId, "preview", out);
88
+ return;
89
+ case "stack":
90
+ case "row":
91
+ for (const item of block.items) {
92
+ collectFromComponentUse(item.component, item.props, componentName, fixtures, entryId, "preview", out);
93
+ }
94
+ return;
95
+ case "variantGrid":
96
+ for (const variant of block.variants) {
97
+ collectFromComponentUse(block.component, variant.props, componentName, fixtures, entryId, `variant '${variant.id}'`, out);
98
+ }
99
+ return;
100
+ default:
101
+ return;
102
+ }
103
+ }
104
+ function collectFromComponentUse(usedComponent, props, componentName, fixtures, entryId, location, out) {
105
+ if (usedComponent === componentName) {
106
+ out.push({
107
+ entryId,
108
+ location,
109
+ props: resolveBookPropValues(resolveBookFixtures(props, fixtures), fixtures),
110
+ });
111
+ }
112
+ collectNestedComponentProps(props, componentName, fixtures, entryId, out);
113
+ }
114
+ function collectNestedComponentProps(props, componentName, fixtures, entryId, out) {
115
+ if (!props)
116
+ return;
117
+ for (const [key, value] of Object.entries(props)) {
118
+ if (!value || typeof value !== "object" || Array.isArray(value))
119
+ continue;
120
+ const obj = value;
121
+ if ("$component" in obj && obj.$component === componentName) {
122
+ const nestedProps = obj.props ?? {};
123
+ out.push({
124
+ entryId,
125
+ location: `prop '${key}'`,
126
+ props: resolveBookPropValues(resolveBookFixtures(nestedProps, fixtures), fixtures),
127
+ });
128
+ }
129
+ collectNestedComponentProps(obj, componentName, fixtures, entryId, out);
130
+ }
131
+ }
132
+ /** Validate every book.config.json preview of a component against its propsSchema. */
133
+ export function validateBookPreviewsForComponent(schema, config, componentName) {
134
+ const sets = collectBookPreviewPropSets(config, componentName);
135
+ if (sets.length === 0) {
136
+ return { ok: true, errors: [] };
137
+ }
138
+ const errors = [];
139
+ for (const set of sets) {
140
+ const result = validateProps(schema, set.props);
141
+ if (!result.ok) {
142
+ errors.push(`book entry '${set.entryId}' (${set.location}): ${result.errors.join("; ")}`);
143
+ }
144
+ }
145
+ return { ok: errors.length === 0, errors };
146
+ }
147
+ //# sourceMappingURL=bookPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bookPreview.js","sourceRoot":"","sources":["../src/bookPreview.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,5 +3,6 @@ export { Registry } from "./registry.js";
3
3
  export { loadModule } from "./loader.js";
4
4
  export { createRemoteSource, type RemoteSourceOptions } from "./sources/remote.js";
5
5
  export { validateProps, type PropsValidationResult } from "./propsSchema.js";
6
- export { createRuntime, type RuntimeAPI, type DynamicoProviderProps, type DynamicComponentProps, } from "./react/createRuntime.js";
6
+ export { collectBookPreviewPropSets, normalizeBookPreviewConfig, resolveBookFixtures, resolveBookPropValues, validateBookPreviewsForComponent, type BookPreviewBlock, type BookPreviewConfig, type BookPreviewEntry, type BookPreviewPropSet, type BookPreviewValidationResult, } from "./bookPreview.js";
7
+ export { createRuntime, type RuntimeAPI, type CreateRuntimeOptions, type DynamicoProviderProps, type DynamicComponentProps, } from "./react/createRuntime.js";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,OAAO,GACR,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,aAAa,EACb,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,OAAO,GACR,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gCAAgC,EAChC,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,GACjC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -2,5 +2,6 @@ export { Registry } from "./registry.js";
2
2
  export { loadModule } from "./loader.js";
3
3
  export { createRemoteSource } from "./sources/remote.js";
4
4
  export { validateProps } from "./propsSchema.js";
5
+ export { collectBookPreviewPropSets, normalizeBookPreviewConfig, resolveBookFixtures, resolveBookPropValues, validateBookPreviewsForComponent, } from "./bookPreview.js";
5
6
  export { createRuntime, } from "./react/createRuntime.js";
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAA4B,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,aAAa,EAA8B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,aAAa,GAId,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAA4B,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,aAAa,EAA8B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gCAAgC,GAMjC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,GAKd,MAAM,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GAC9C,OAAO,CAoBT"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GAC9C,OAAO,CAuBT"}
package/dist/loader.js CHANGED
@@ -17,7 +17,10 @@ export function loadModule(code, scope, requireRelative) {
17
17
  if (name.startsWith("./") || name.startsWith("../") || name.startsWith("/")) {
18
18
  return requireRelative(name);
19
19
  }
20
- if (Object.prototype.hasOwnProperty.call(scope, name)) {
20
+ // Use `in` (triggers Proxy `has` traps) so that hosts can supply scope
21
+ // via a Proxy and resolve module bindings lazily. Falls back to
22
+ // `hasOwnProperty` semantics for plain object scopes.
23
+ if (name in scope) {
21
24
  return scope[name];
22
25
  }
23
26
  throw new Error(`dynamico: '${name}' is not in host scope. Add it via <DynamicoProvider scope={{...}}>.`);
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,KAAY,EACZ,eAA+C;IAE/C,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,EAA6B,EAAE,CAAC;IAC7D,MAAM,SAAS,GAAG,CAAC,IAAY,EAAW,EAAE;QAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5E,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,sEAAsE,CACzF,CAAC;IACJ,CAAC,CAAC;IAEF,yEAAyE;IACzE,uCAAuC;IACvC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9D,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE5C,OAAO,SAAS,CAAC,OAAO,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,KAAY,EACZ,eAA+C;IAE/C,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,EAA6B,EAAE,CAAC;IAC7D,MAAM,SAAS,GAAG,CAAC,IAAY,EAAW,EAAE;QAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5E,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,uEAAuE;QACvE,gEAAgE;QAChE,sDAAsD;QACtD,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,sEAAsE,CACzF,CAAC;IACJ,CAAC,CAAC;IAEF,yEAAyE;IACzE,uCAAuC;IACvC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9D,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE5C,OAAO,SAAS,CAAC,OAAO,CAAC;AAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"propsSchema.d.ts","sourceRoot":"","sources":["../src/propsSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAWD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,qBAAqB,CAiBvB"}
1
+ {"version":3,"file":"propsSchema.d.ts","sourceRoot":"","sources":["../src/propsSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAYD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,qBAAqB,CAiBvB"}
@@ -4,6 +4,7 @@ const TYPE_CHECKS = {
4
4
  boolean: (v) => typeof v === "boolean",
5
5
  object: (v) => typeof v === "object" && v !== null && !Array.isArray(v),
6
6
  array: (v) => Array.isArray(v),
7
+ function: (v) => typeof v === "function",
7
8
  any: () => true,
8
9
  };
9
10
  export function validateProps(schema, props) {
@@ -29,6 +30,8 @@ function describe(v) {
29
30
  return "null";
30
31
  if (Array.isArray(v))
31
32
  return "array";
33
+ if (typeof v === "function")
34
+ return "function";
32
35
  return typeof v;
33
36
  }
34
37
  //# sourceMappingURL=propsSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"propsSchema.js","sourceRoot":"","sources":["../src/propsSchema.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,GAA4C;IAC3D,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ;IACpC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS;IACtC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI;CAChB,CAAC;AAEF,MAAM,UAAU,aAAa,CAC3B,MAA+B,EAC/B,KAA8B;IAE9B,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,KAAK,CAAC,QAAQ;gBAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,GAAG,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YAClF,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,GAAI,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CACT,SAAS,GAAG,cAAc,KAAK,CAAC,IAAI,SAAS,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IACrC,OAAO,OAAO,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"propsSchema.js","sourceRoot":"","sources":["../src/propsSchema.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,GAA4C;IAC3D,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ;IACpC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS;IACtC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU;IACxC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI;CAChB,CAAC;AAEF,MAAM,UAAU,aAAa,CAC3B,MAA+B,EAC/B,KAA8B;IAE9B,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,KAAK,CAAC,QAAQ;gBAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,GAAG,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YAClF,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,GAAI,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CACT,SAAS,GAAG,cAAc,KAAK,CAAC,IAAI,SAAS,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IACrC,IAAI,OAAO,CAAC,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC/C,OAAO,OAAO,CAAC,CAAC;AAClB,CAAC"}
@@ -4,6 +4,13 @@ export interface RuntimeAPI {
4
4
  DynamicoProvider: React.ComponentType<DynamicoProviderProps>;
5
5
  DynamicComponent: React.ComponentType<DynamicComponentProps>;
6
6
  useDynamico: (name: string) => RegistryEntry | undefined;
7
+ /**
8
+ * Read the merged host scope from inside React. Useful in dynamic
9
+ * components that want to introspect what the host gave them, or to
10
+ * conditionally use scope features (`useScope()['@my/haptics']` may be
11
+ * undefined if the host didn't register it).
12
+ */
13
+ useScope: () => Scope;
7
14
  }
8
15
  export interface DynamicoProviderProps {
9
16
  source: Source;
@@ -18,5 +25,20 @@ export interface DynamicComponentProps {
18
25
  error: DynamicError;
19
26
  }> | React.ReactNode;
20
27
  }
21
- export declare function createRuntime(defaultScope: Scope): RuntimeAPI;
28
+ /**
29
+ * Optional renderer-specific knobs passed by the platform package
30
+ * (`@omriashke/dynamico-web`, `@omriashke/dynamico-native`).
31
+ *
32
+ * The web runtime is fine with the built-in `defaultErrorView` (which renders
33
+ * a plain text Fragment via React.createElement), since DOM accepts text
34
+ * nodes anywhere. React Native does NOT — bare strings throw "Text strings
35
+ * must be rendered within a <Text> component". The native package supplies
36
+ * its own `defaultErrorFallback` that wraps the message in `<Text>`.
37
+ */
38
+ export interface CreateRuntimeOptions {
39
+ defaultErrorFallback?: React.ComponentType<{
40
+ error: DynamicError;
41
+ }>;
42
+ }
43
+ export declare function createRuntime(defaultScope: Scope, options?: CreateRuntimeOptions): RuntimeAPI;
22
44
  //# sourceMappingURL=createRuntime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createRuntime.d.ts","sourceRoot":"","sources":["../../src/react/createRuntime.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAEV,YAAY,EAEZ,aAAa,EACb,KAAK,EACL,MAAM,EACP,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC7D,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC7D,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;CAC1D;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,YAAY,CAAA;KAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;CAChF;AAMD,wBAAgB,aAAa,CAAC,YAAY,EAAE,KAAK,GAAG,UAAU,CA8F7D"}
1
+ {"version":3,"file":"createRuntime.d.ts","sourceRoot":"","sources":["../../src/react/createRuntime.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAEV,YAAY,EAEZ,aAAa,EACb,KAAK,EACL,MAAM,EACP,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC7D,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC7D,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;IACzD;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,KAAK,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,YAAY,CAAA;KAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;CAChF;AAMD;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,oBAAoB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,wBAAgB,aAAa,CAC3B,YAAY,EAAE,KAAK,EACnB,OAAO,GAAE,oBAAyB,GACjC,UAAU,CA+HZ"}
@@ -2,13 +2,24 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { Registry } from "../registry.js";
4
4
  import { validateProps } from "../propsSchema.js";
5
- export function createRuntime(defaultScope) {
5
+ export function createRuntime(defaultScope, options = {}) {
6
6
  const Ctx = React.createContext(null);
7
+ const PlatformDefaultErrorFallback = options.defaultErrorFallback;
7
8
  function DynamicoProvider({ source, scope, children }) {
8
9
  const registry = React.useMemo(() => {
9
10
  const merged = { ...defaultScope, ...(scope ?? {}) };
10
11
  return new Registry(source, merged);
11
12
  }, [source, scope]);
13
+ // Auto-report host scope to the registry on mount so the server-side
14
+ // test validator can enforce "every component imports something the host
15
+ // actually provides". Source implementations that don't support scope
16
+ // reporting (e.g. local in-memory sources) leave the call as a no-op.
17
+ React.useEffect(() => {
18
+ const merged = { ...defaultScope, ...(scope ?? {}) };
19
+ const keys = Object.keys(merged);
20
+ void source.reportScope?.(keys, "host");
21
+ // Re-run whenever the set of keys changes (added/removed providers).
22
+ }, [source, scope]);
12
23
  const value = React.useMemo(() => ({ registry }), [registry]);
13
24
  return _jsx(Ctx.Provider, { value: value, children: children });
14
25
  }
@@ -19,6 +30,9 @@ export function createRuntime(defaultScope) {
19
30
  }
20
31
  return ctx.registry;
21
32
  }
33
+ function useScope() {
34
+ return useRegistry().getScope();
35
+ }
22
36
  function useDynamico(name) {
23
37
  const registry = useRegistry();
24
38
  const subscribe = React.useCallback((cb) => registry.subscribe(name, cb), [registry, name]);
@@ -68,7 +82,20 @@ export function createRuntime(defaultScope) {
68
82
  stack,
69
83
  }), renderFallback: (err) => renderError(errorFallback, err), children: React.createElement(Comp, props ?? {}) }, `${name}@${entry.version}`));
70
84
  }
71
- return { DynamicoProvider, DynamicComponent, useDynamico };
85
+ function renderError(errorFallback, error) {
86
+ if (errorFallback) {
87
+ if (typeof errorFallback === "function") {
88
+ const Fallback = errorFallback;
89
+ return _jsx(Fallback, { error: error });
90
+ }
91
+ return errorFallback;
92
+ }
93
+ if (PlatformDefaultErrorFallback) {
94
+ return _jsx(PlatformDefaultErrorFallback, { error: error });
95
+ }
96
+ return defaultErrorView(error);
97
+ }
98
+ return { DynamicoProvider, DynamicComponent, useDynamico, useScope };
72
99
  }
73
100
  function pickDefault(factory) {
74
101
  if (factory && typeof factory === "object") {
@@ -82,15 +109,6 @@ function pickDefault(factory) {
82
109
  return factory;
83
110
  return undefined;
84
111
  }
85
- function renderError(errorFallback, error) {
86
- if (!errorFallback)
87
- return defaultErrorView(error);
88
- if (typeof errorFallback === "function") {
89
- const Fallback = errorFallback;
90
- return _jsx(Fallback, { error: error });
91
- }
92
- return errorFallback;
93
- }
94
112
  function defaultErrorView(error) {
95
113
  // Renderer-agnostic: plain text node so it works on both DOM and RN.
96
114
  return React.createElement(React.Fragment, null, `[dynamico ${error.kind} error] ${error.name}: ${error.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"createRuntime.js","sourceRoot":"","sources":["../../src/react/createRuntime.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createRuntime.js","sourceRoot":"","sources":["../../src/react/createRuntime.tsx"],"names":[],"mappings":"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"}
@@ -17,6 +17,12 @@ export declare class Registry {
17
17
  constructor(source: Source, scope: Scope);
18
18
  /** Replace or extend the current scope (rare; typically set once). */
19
19
  setScope(scope: Scope): void;
20
+ /**
21
+ * Return the merged host scope. Dynamic components reach the same values
22
+ * via `require(name)`, but `getScope()` lets host code (or `useScope()`
23
+ * inside a dynamic component) introspect what's available.
24
+ */
25
+ getScope(): Scope;
20
26
  /** Get the current entry for a name, if any. */
21
27
  peek(name: string): RegistryEntry | undefined;
22
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,MAAM,EAEP,MAAM,YAAY,CAAC;AAGpB;;;;;;;GAOG;AACH,qBAAa,QAAQ;IAOjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,KAAK;IAPf,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAA6C;gBAG1C,MAAM,EAAE,MAAM,EACvB,KAAK,EAAE,KAAK;IAOtB,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI5B,gDAAgD;IAChD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI7C;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAelD,qDAAqD;IACrD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAa/D,kEAAkE;IAClE,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAOpD;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAezC,OAAO,CAAC,WAAW,CAA8C;IAEjE,OAAO,CAAC,aAAa;IA6CrB;;;OAGG;IACH,OAAO,CAAC,MAAM;IAiDd,OAAO,CAAC,MAAM;CAoBf"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,MAAM,EAEP,MAAM,YAAY,CAAC;AAGpB;;;;;;;GAOG;AACH,qBAAa,QAAQ;IAOjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,KAAK;IAPf,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAA6C;gBAG1C,MAAM,EAAE,MAAM,EACvB,KAAK,EAAE,KAAK;IAOtB,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI5B;;;;OAIG;IACH,QAAQ,IAAI,KAAK;IAIjB,gDAAgD;IAChD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI7C;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAelD,qDAAqD;IACrD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAa/D,kEAAkE;IAClE,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAOpD;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAezC,OAAO,CAAC,WAAW,CAA8C;IAEjE,OAAO,CAAC,aAAa;IA6CrB;;;OAGG;IACH,OAAO,CAAC,MAAM;IAiDd,OAAO,CAAC,MAAM;CAoBf"}
package/dist/registry.js CHANGED
@@ -24,6 +24,14 @@ export class Registry {
24
24
  setScope(scope) {
25
25
  this.scope = scope;
26
26
  }
27
+ /**
28
+ * Return the merged host scope. Dynamic components reach the same values
29
+ * via `require(name)`, but `getScope()` lets host code (or `useScope()`
30
+ * inside a dynamic component) introspect what's available.
31
+ */
32
+ getScope() {
33
+ return this.scope;
34
+ }
27
35
  /** Get the current entry for a name, if any. */
28
36
  peek(name) {
29
37
  return this.entries.get(name);
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,18 @@ export interface RemoteSourceOptions {
10
10
  WebSocket?: typeof WebSocket;
11
11
  /** Reconnection backoff in ms. Default: 1000. */
12
12
  reconnectMs?: number;
13
+ /**
14
+ * Headers to send on every request. Called on each HTTP fetch and on each
15
+ * WebSocket reconnect, so the function can return a freshly-rotated token.
16
+ *
17
+ * - HTTP: merged into the `Authorization: ...` / `x-api-key: ...` request headers.
18
+ * - WebSocket: passed as `new WebSocket(url, undefined, { headers })`. This
19
+ * works on React Native (which extends the standard constructor); browsers
20
+ * silently ignore it because the spec doesn't allow custom WS handshake
21
+ * headers. For browsers behind authenticated reverse proxies, use a
22
+ * query-string token in `wsUrl` or front the registry with cookie auth.
23
+ */
24
+ headers?: () => Record<string, string>;
13
25
  }
14
26
  /**
15
27
  * Talks to @omriashke/dynamico-registry (or any compatible server).
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/sources/remote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,MAAM,EAAgB,MAAM,aAAa,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,kGAAkG;IAClG,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,oFAAoF;IACpF,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAiGvE"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/sources/remote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,MAAM,EAAgB,MAAM,aAAa,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,kGAAkG;IAClG,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,oFAAoF;IACpF,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAuIvE"}
@@ -27,7 +27,14 @@ export function createRemoteSource(options) {
27
27
  if (disposed)
28
28
  return;
29
29
  try {
30
- socket = new WSCtor(wsUrl);
30
+ const hdrs = options.headers?.();
31
+ // RN's WebSocket constructor accepts a third {headers} arg that lets us
32
+ // attach Bearer / x-api-key tokens to the upgrade request. The standard
33
+ // browser WebSocket ignores extra constructor args, so this is a no-op
34
+ // there (use cookies / a query-string token instead).
35
+ socket = hdrs
36
+ ? new WSCtor(wsUrl, undefined, { headers: hdrs })
37
+ : new WSCtor(wsUrl);
31
38
  }
32
39
  catch (err) {
33
40
  scheduleReconnect();
@@ -69,7 +76,10 @@ export function createRemoteSource(options) {
69
76
  connect();
70
77
  return {
71
78
  async fetch(name) {
72
- const res = await fetchImpl(`${httpUrl}/component/${encodeURIComponent(name)}`);
79
+ const init = options.headers
80
+ ? { headers: options.headers() }
81
+ : undefined;
82
+ const res = await fetchImpl(`${httpUrl}/component/${encodeURIComponent(name)}`, init);
73
83
  if (!res.ok) {
74
84
  return {
75
85
  name,
@@ -88,6 +98,28 @@ export function createRemoteSource(options) {
88
98
  listeners.delete(listener);
89
99
  };
90
100
  },
101
+ /**
102
+ * Tell the registry what bare specifiers the host's scope exposes. The
103
+ * registry uses this to validate that every component's imports resolve
104
+ * against something the host actually provides — so a typo or a forgotten
105
+ * scope entry is caught at push time, not at navigation time.
106
+ *
107
+ * Best-effort: failures (network, 5xx, server doesn't support /scope) are
108
+ * silently swallowed; they don't block the app from running.
109
+ */
110
+ async reportScope(keys, reportedBy) {
111
+ try {
112
+ const baseHeaders = options.headers?.() ?? {};
113
+ await fetchImpl(`${httpUrl}/scope`, {
114
+ method: "POST",
115
+ headers: { "content-type": "application/json", ...baseHeaders },
116
+ body: JSON.stringify({ keys: [...keys], reportedBy }),
117
+ });
118
+ }
119
+ catch {
120
+ /* best-effort: never block the host on this */
121
+ }
122
+ },
91
123
  dispose() {
92
124
  disposed = true;
93
125
  try {