@hozu/runtime-server 0.21.1 → 0.23.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/seed.d.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  import type { FeatureIR, Json, ProjectIR } from '@hozu/core/ir';
2
2
  /** The context fields the page's address sets for this feature: they win over a kept snapshot (ADR 0067 C4). */
3
3
  export declare function seedKeys(ir: ProjectIR, route: string, feature: FeatureIR): string[];
4
- export declare function seededContext(ir: ProjectIR, route: string, feature: FeatureIR, fns: Record<string, (x: never) => unknown>, params: Json, search: Json): Json | null;
4
+ /** The initial context of a feature on this page: its view's seed from the address and seed queries (ADR 0069 B2). */
5
+ export declare function seededContext(ir: ProjectIR, route: string, feature: FeatureIR, fns: Record<string, (x: never) => unknown>, params: Json, search: Json, data?: {
6
+ run(ref: string, input: Json): Promise<unknown>;
7
+ }): Promise<Json | null>;
5
8
  //# sourceMappingURL=seed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG/D,gHAAgH;AAChH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,MAAM,EAAE,CAQnF;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,EAC1C,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,IAAI,GACX,IAAI,GAAG,IAAI,CAeb"}
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG/D,gHAAgH;AAChH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,MAAM,EAAE,CAQnF;AAQD,sHAAsH;AACtH,wBAAsB,aAAa,CACjC,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,EAC1C,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,IAAI,EACZ,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CA0BtB"}
package/dist/seed.js CHANGED
@@ -11,7 +11,14 @@ export function seedKeys(ir, route, feature) {
11
11
  }
12
12
  return [];
13
13
  }
14
- export function seededContext(ir, route, feature, fns, params, search) {
14
+ const reads = (v, depth) => {
15
+ if (typeof v !== 'object' || v === null)
16
+ return false;
17
+ const x = v;
18
+ return x.ref === 'binding' ? x.depth === depth : Object.values(v).some((y) => reads(y, depth));
19
+ };
20
+ /** The initial context of a feature on this page: its view's seed from the address and seed queries (ADR 0069 B2). */
21
+ export async function seededContext(ir, route, feature, fns, params, search, data) {
15
22
  const machine = feature.machine;
16
23
  const page = ir.pages[route];
17
24
  if (!machine || !page)
@@ -20,13 +27,22 @@ export function seededContext(ir, route, feature, fns, params, search) {
20
27
  const dot = ref.indexOf('.');
21
28
  if (ref.slice(0, dot) !== feature.id)
22
29
  continue;
23
- const seed = feature.views[ref.slice(dot + 1)]?.seed;
30
+ const view = feature.views[ref.slice(dot + 1)];
31
+ const seed = view?.seed;
24
32
  if (!seed)
25
33
  continue;
26
- const env = { context: machine.initialContext, state: null, bindings: [], params, search };
34
+ const base = { context: machine.initialContext, state: null, bindings: [], params, search };
35
+ const results = await Promise.all((view.seedQueries ?? []).map(async (q) => {
36
+ const r = data
37
+ ? (await data.run(q.ref, compileValue(q.input, fns)(base)))
38
+ : null;
39
+ return r?.ok ? (r.value ?? null) : undefined;
40
+ }));
41
+ const env = { ...base, bindings: results.map((r) => r ?? null) };
27
42
  const context = { ...machine.initialContext };
28
43
  for (const [key, v] of Object.entries(seed))
29
- context[key] = compileValue(v, fns)(env);
44
+ if (!results.some((r, i) => r === undefined && reads(v, i)))
45
+ context[key] = compileValue(v, fns)(env);
30
46
  return context;
31
47
  }
32
48
  return null;
package/dist/seed.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,gHAAgH;AAChH,MAAM,UAAU,QAAQ,CAAC,EAAa,EAAE,KAAa,EAAE,OAAkB;IACvE,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,EAAE;YAAE,SAAQ;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;QACpD,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,EAAa,EACb,KAAa,EACb,OAAkB,EAClB,GAA0C,EAC1C,MAAY,EACZ,MAAY;IAEZ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAClC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,EAAE;YAAE,SAAQ;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;QACpD,IAAI,CAAC,IAAI;YAAE,SAAQ;QACnB,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAW,CAAA;QACnG,MAAM,OAAO,GAAG,EAAE,GAAI,OAAO,CAAC,cAAuC,EAAE,CAAA;QACvE,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACrF,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hozu/runtime-server",
3
- "version": "0.21.1",
3
+ "version": "0.23.0",
4
4
  "description": "Hozu server runtime: generated render functions, in-order streaming SSR and a web-standard handler",
5
5
  "keywords": [
6
6
  "hozu",
@@ -40,11 +40,11 @@
40
40
  "access": "public"
41
41
  },
42
42
  "dependencies": {
43
- "@hozu/machine": "0.21.1",
44
- "@hozu/data": "0.21.1",
45
- "@hozu/core": "0.21.1",
46
- "@hozu/runtime-client": "0.21.1",
47
- "@hozu/compiler": "0.21.1"
43
+ "@hozu/compiler": "0.23.0",
44
+ "@hozu/core": "0.23.0",
45
+ "@hozu/data": "0.23.0",
46
+ "@hozu/runtime-client": "0.23.0",
47
+ "@hozu/machine": "0.23.0"
48
48
  },
49
49
  "sideEffects": false
50
50
  }