@hozu/cli 0.13.0 → 0.15.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.
Files changed (104) hide show
  1. package/dist/commands/accept.d.ts +11 -0
  2. package/dist/commands/accept.d.ts.map +1 -0
  3. package/dist/commands/accept.js +55 -0
  4. package/dist/commands/accept.js.map +1 -0
  5. package/dist/commands/add.d.ts.map +1 -1
  6. package/dist/commands/add.js +4 -1
  7. package/dist/commands/add.js.map +1 -1
  8. package/dist/commands/browse-tab.d.ts +2 -0
  9. package/dist/commands/browse-tab.d.ts.map +1 -1
  10. package/dist/commands/browse-tab.js +3 -1
  11. package/dist/commands/browse-tab.js.map +1 -1
  12. package/dist/commands/browse.d.ts +4 -0
  13. package/dist/commands/browse.d.ts.map +1 -1
  14. package/dist/commands/browse.js +80 -9
  15. package/dist/commands/browse.js.map +1 -1
  16. package/dist/commands/build.js +1 -1
  17. package/dist/commands/build.js.map +1 -1
  18. package/dist/commands/call.d.ts +2 -0
  19. package/dist/commands/call.d.ts.map +1 -1
  20. package/dist/commands/call.js +73 -10
  21. package/dist/commands/call.js.map +1 -1
  22. package/dist/commands/check.d.ts.map +1 -1
  23. package/dist/commands/check.js +3 -4
  24. package/dist/commands/check.js.map +1 -1
  25. package/dist/commands/docs.d.ts +3 -1
  26. package/dist/commands/docs.d.ts.map +1 -1
  27. package/dist/commands/docs.js +23 -3
  28. package/dist/commands/docs.js.map +1 -1
  29. package/dist/commands/explain.js +1 -1
  30. package/dist/commands/explain.js.map +1 -1
  31. package/dist/commands/impact.d.ts.map +1 -1
  32. package/dist/commands/impact.js +4 -2
  33. package/dist/commands/impact.js.map +1 -1
  34. package/dist/commands/locate.js +2 -2
  35. package/dist/commands/locate.js.map +1 -1
  36. package/dist/commands/map.d.ts.map +1 -1
  37. package/dist/commands/map.js +5 -3
  38. package/dist/commands/map.js.map +1 -1
  39. package/dist/commands/plan.d.ts.map +1 -1
  40. package/dist/commands/plan.js +8 -0
  41. package/dist/commands/plan.js.map +1 -1
  42. package/dist/commands/scaffold.d.ts.map +1 -1
  43. package/dist/commands/scaffold.js +19 -22
  44. package/dist/commands/scaffold.js.map +1 -1
  45. package/dist/commands/serve.d.ts.map +1 -1
  46. package/dist/commands/serve.js +2 -0
  47. package/dist/commands/serve.js.map +1 -1
  48. package/dist/commands/show.d.ts +11 -0
  49. package/dist/commands/show.d.ts.map +1 -0
  50. package/dist/commands/show.js +55 -0
  51. package/dist/commands/show.js.map +1 -0
  52. package/dist/commands/validate.d.ts.map +1 -1
  53. package/dist/commands/validate.js +9 -3
  54. package/dist/commands/validate.js.map +1 -1
  55. package/dist/commands/why.d.ts +6 -0
  56. package/dist/commands/why.d.ts.map +1 -0
  57. package/dist/commands/why.js +73 -0
  58. package/dist/commands/why.js.map +1 -0
  59. package/dist/contract.d.ts +47 -21
  60. package/dist/contract.d.ts.map +1 -1
  61. package/dist/index.d.ts +0 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +0 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/main.d.ts +2 -0
  66. package/dist/main.d.ts.map +1 -1
  67. package/dist/main.js +127 -65
  68. package/dist/main.js.map +1 -1
  69. package/dist/migrate/step-0.11.d.ts +7 -1
  70. package/dist/migrate/step-0.11.d.ts.map +1 -1
  71. package/dist/migrate/step-0.11.js +6 -4
  72. package/dist/migrate/step-0.11.js.map +1 -1
  73. package/dist/migrate/step-0.14.d.ts +6 -0
  74. package/dist/migrate/step-0.14.d.ts.map +1 -0
  75. package/dist/migrate/step-0.14.js +40 -0
  76. package/dist/migrate/step-0.14.js.map +1 -0
  77. package/dist/migrate/step-0.15.d.ts +14 -0
  78. package/dist/migrate/step-0.15.d.ts.map +1 -0
  79. package/dist/migrate/step-0.15.js +94 -0
  80. package/dist/migrate/step-0.15.js.map +1 -0
  81. package/dist/migrate/steps.d.ts.map +1 -1
  82. package/dist/migrate/steps.js +22 -1
  83. package/dist/migrate/steps.js.map +1 -1
  84. package/dist/output.d.ts.map +1 -1
  85. package/dist/output.js +2 -76
  86. package/dist/output.js.map +1 -1
  87. package/package.json +8 -8
  88. package/schema/call.schema.json +6 -1
  89. package/schema/check.schema.json +48 -3
  90. package/schema/inspect.schema.json +103 -1
  91. package/schema/map.schema.json +14 -0
  92. package/schema/migrate.schema.json +48 -3
  93. package/schema/render.schema.json +6 -1
  94. package/schema/show.schema.json +79 -0
  95. package/schema/why.schema.json +983 -0
  96. package/dist/commands/graph.d.ts +0 -7
  97. package/dist/commands/graph.d.ts.map +0 -1
  98. package/dist/commands/graph.js +0 -137
  99. package/dist/commands/graph.js.map +0 -1
  100. package/schema/explain.schema.json +0 -171
  101. package/schema/graph.schema.json +0 -109
  102. package/schema/impact.schema.json +0 -242
  103. package/schema/locate.schema.json +0 -488
  104. package/schema/validate.schema.json +0 -383
@@ -0,0 +1,14 @@
1
+ import type { Json } from '@hozu/core/ir';
2
+ import { type Note } from './ast.ts';
3
+ /**
4
+ * 0.14 → 0.15 (ADR 0056 B): every server-run `scope: 'user'` query and every server-run mutation gets
5
+ * `access: 'anyone'`, which is the 0.14 behaviour. HZ090 then lists the user queries to tighten.
6
+ */
7
+ export declare function addAccess(file: string, source: string): {
8
+ code: string;
9
+ notes: Note[];
10
+ count: number;
11
+ };
12
+ /** The 0.14 IR in 0.15 terms: every effect that now needs access had the behaviour of 'anyone'. */
13
+ export declare function normalize014(ir: Json): Json;
14
+ //# sourceMappingURL=step-0.15.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-0.15.d.ts","sourceRoot":"","sources":["../../src/migrate/step-0.15.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAOL,KAAK,IAAI,EAGV,MAAM,UAAU,CAAA;AAmCjB;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAsCtG;AAED,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAS3C"}
@@ -0,0 +1,94 @@
1
+ import { applyEdits, coreLocals, endOf, lineOf, parseStripped, walk, } from './ast.js';
2
+ const keyOf = (p) => p.type === 'Property' ? (p.key.type === 'Identifier' ? p.key.name : String(p.key.value)) : null;
3
+ /** The quote the object already uses for a string value, else the module's usual quote. */
4
+ function quoteOf(source, object) {
5
+ for (const p of object.properties)
6
+ if (p.type === 'Property' && p.value.type === 'Literal' && typeof p.value.value === 'string')
7
+ return source[p.value.start] === '"' ? '"' : "'";
8
+ return (source.match(/'/g)?.length ?? 0) >= (source.match(/"/g)?.length ?? 0) ? "'" : '"';
9
+ }
10
+ const literalOf = (object, key) => {
11
+ const p = object.properties.find((x) => keyOf(x) === key);
12
+ return p?.value?.type === 'Literal' ? p.value.value : undefined;
13
+ };
14
+ /** Inserts `prop` as the object's last property, in its style: a new indented line, or `, prop` on one line. */
15
+ function append(source, js, object, prop, edits) {
16
+ const last = object.properties.at(-1);
17
+ if (!last) {
18
+ edits.push([object.start, object.end, `{ ${prop} }`]);
19
+ return;
20
+ }
21
+ const end = endOf(source, js, last.end);
22
+ const comma = /^\s*,/.exec(js.slice(end, object.end));
23
+ if (source.slice(object.start, object.end).includes('\n')) {
24
+ const lineStart = source.lastIndexOf('\n', last.start) + 1;
25
+ const indent = /^[ \t]*/.exec(source.slice(lineStart))[0];
26
+ const at = comma ? end + comma[0].length : end;
27
+ edits.push([at, at, `${comma ? '' : ','}\n${indent}${prop}${comma ? ',' : ''}`]);
28
+ }
29
+ else
30
+ edits.push([end, end, `, ${prop}`]);
31
+ }
32
+ /**
33
+ * 0.14 → 0.15 (ADR 0056 B): every server-run `scope: 'user'` query and every server-run mutation gets
34
+ * `access: 'anyone'`, which is the 0.14 behaviour. HZ090 then lists the user queries to tighten.
35
+ */
36
+ export function addAccess(file, source) {
37
+ if (!source.includes('@hozu/core'))
38
+ return { code: source, notes: [], count: 0 };
39
+ let program;
40
+ let js;
41
+ try {
42
+ ;
43
+ ({ program, js } = parseStripped(source));
44
+ }
45
+ catch {
46
+ return { code: source, notes: [], count: 0 };
47
+ }
48
+ const locals = coreLocals(program, ['query', 'mutation']);
49
+ if (!locals.size)
50
+ return { code: source, notes: [], count: 0 };
51
+ const edits = [];
52
+ const notes = [];
53
+ walk(program, (n) => {
54
+ if (n.type !== 'CallExpression' || n.callee.type !== 'Identifier' || !locals.has(n.callee.name))
55
+ return;
56
+ const kind = locals.get(n.callee.name);
57
+ const arg = n.arguments[0];
58
+ if (arg?.type !== 'ObjectExpression')
59
+ return;
60
+ if (arg.properties.some((p) => keyOf(p) === 'access'))
61
+ return;
62
+ const runs = literalOf(arg, 'runs');
63
+ const needs = kind === 'mutation' ? runs === 'server' : runs === 'server' && literalOf(arg, 'scope') === 'user';
64
+ const unknown = runs === undefined ||
65
+ (kind === 'query' && literalOf(arg, 'scope') === undefined) ||
66
+ arg.properties.some((p) => p.type === 'SpreadElement');
67
+ if (unknown) {
68
+ notes.push({
69
+ file,
70
+ line: lineOf(source, n.start),
71
+ message: `${kind}(…) whose runs or scope is not a literal: add access by hand if it runs on the server`,
72
+ see: 'auth',
73
+ });
74
+ return;
75
+ }
76
+ if (needs)
77
+ append(source, js, arg, `access: ${quoteOf(source, arg)}anyone${quoteOf(source, arg)}`, edits);
78
+ });
79
+ return { code: applyEdits(source, edits), notes, count: edits.length };
80
+ }
81
+ /** The 0.14 IR in 0.15 terms: every effect that now needs access had the behaviour of 'anyone'. */
82
+ export function normalize014(ir) {
83
+ const out = structuredClone(ir);
84
+ for (const f of Object.values(out.features ?? {})) {
85
+ for (const q of Object.values(f.queries ?? {}))
86
+ if (q.scope === 'user' && q.runs === 'server' && !q.access)
87
+ q.access = { kind: 'anyone' };
88
+ for (const m of Object.values(f.mutations ?? {}))
89
+ if (m.runs === 'server' && !m.access)
90
+ m.access = { kind: 'anyone' };
91
+ }
92
+ return out;
93
+ }
94
+ //# sourceMappingURL=step-0.15.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-0.15.js","sourceRoot":"","sources":["../../src/migrate/step-0.15.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/migrate/steps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAIpC,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACrF,sGAAsG;IACtG,SAAS,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAA;IACzB,yFAAyF;IACzF,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACvE;AAED,sGAAsG;AACtG,eAAO,MAAM,KAAK,EAAE,IAAI,EAiCvB,CAAA;AAED,eAAO,MAAM,MAAM,QAAiB,CAAA;AAEpC,eAAO,MAAM,OAAO,YAAa,MAAM,KAAG,MAAkD,CAAA;AAI5F,eAAO,MAAM,YAAY,MAAO,MAAM,KAAK,MAAM,KAAG,MAInD,CAAA;AAED,gFAAgF;AAChF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,IAAI,CAU7D"}
1
+ {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/migrate/steps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAMpC,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACrF,sGAAsG;IACtG,SAAS,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAA;IACzB,yFAAyF;IACzF,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACvE;AAED,sGAAsG;AACtG,eAAO,MAAM,KAAK,EAAE,IAAI,EAqDvB,CAAA;AAED,eAAO,MAAM,MAAM,QAAiB,CAAA;AAEpC,eAAO,MAAM,OAAO,YAAa,MAAM,KAAG,MAAkD,CAAA;AAI5F,eAAO,MAAM,YAAY,MAAO,MAAM,KAAK,MAAM,KAAG,MAInD,CAAA;AAED,gFAAgF;AAChF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,IAAI,CAU7D"}
@@ -1,5 +1,7 @@
1
- import { addRunsServer, normalize010 } from './step-0.11.js';
1
+ import { addRuns, addRunsServer, normalize010 } from './step-0.11.js';
2
2
  import { ignoreHozu } from './step-0.12.js';
3
+ import { rewriteScripts } from './step-0.14.js';
4
+ import { addAccess, normalize014 } from './step-0.15.js';
3
5
  /** One step per release from 0.11 on (ADR 0049 §6); 0.10.0 is the oldest supported starting point. */
4
6
  export const steps = [
5
7
  {
@@ -34,6 +36,25 @@ export const steps = [
34
36
  return ir;
35
37
  },
36
38
  },
39
+ {
40
+ from: '0.13',
41
+ to: '0.14',
42
+ summary: "runs: 'either' where runs is omitted (0.14 requires it); package.json scripts call hozu check, and hozu graph scripts are removed (ADR 0053)",
43
+ rewrite: (file, source) => addRuns('either', file, source),
44
+ normalize: (ir) => {
45
+ ;
46
+ ir.accept ??= [];
47
+ return ir;
48
+ },
49
+ files: rewriteScripts,
50
+ },
51
+ {
52
+ from: '0.14',
53
+ to: '0.15',
54
+ summary: "access: 'anyone' on every server-run user query and mutation, the 0.14 behaviour (ADR 0056 B); HZ090 then lists the user queries to tighten",
55
+ rewrite: addAccess,
56
+ normalize: normalize014,
57
+ },
37
58
  ];
38
59
  export const OLDEST = steps[0].from;
39
60
  export const minorOf = (version) => version.split('.').slice(0, 2).join('.');
@@ -1 +1 @@
1
- {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/migrate/steps.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAc3C,sGAAsG;AACtG,MAAM,CAAC,MAAM,KAAK,GAAW;IAC3B;QACE,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,MAAM;QACV,OAAO,EAAE,qFAAqF;QAC9F,OAAO,EAAE,aAAa;QACtB,SAAS,EAAE,YAAY;KACxB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,MAAM;QACV,OAAO,EAAE,2EAA2E;QACpF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACnE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;QACrB,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,MAAM;QACV,OAAO,EACL,gHAAgH;QAClH,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACnE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;YAChB,MAAM,QAAQ,GAAI,EAA6D,CAAC,QAAQ,IAAI,EAAE,CAAA;YAC9F,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAAE,CAAC,CAAC,OAAO,KAAK,EAAE,CAAA;YACzD,MAAM,GAAG,GAAI,EAA+C,CAAC,GAAG,CAAA;YAChE,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,KAAK,KAAK,EAAE,CAAA;gBAChB,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAA;YACrB,CAAC;YACD,OAAO,EAAE,CAAA;QACX,CAAC;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAA;AAEpC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE5F,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAqB,CAAA;AAEhF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IAC3D,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACxB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA;AAC3B,CAAC,CAAA;AAED,gFAAgF;AAChF,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,EAAU;IAC5C,MAAM,GAAG,GAAW,EAAE,CAAA;IACtB,IAAI,EAAE,GAAG,IAAI,CAAA;IACb,OAAO,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QACtB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACd,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;IACd,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/migrate/steps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAA;AAEnE,eAAO,MAAM,IAAI,UAAW,OAAO,KAAG,MACiC,CAAA;AAEvE,eAAO,MAAM,UAAU,gBAAiB,UAAU,EAAE,OAAO,MAAM,KAAG,UAAU,EAW3E,CAAA;AAwFH,wBAAgB,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAa3C"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1E,eAAO,MAAM,IAAI,UAAW,OAAO,KAAG,MACiC,CAAA;AAEvE,eAAO,MAAM,UAAU,gBAAiB,UAAU,EAAE,OAAO,MAAM,KAAG,UAAU,EAW3E,CAAA;AAaH,wBAAgB,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAa3C"}
package/dist/output.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { relative } from 'node:path';
2
- import { canonicalStringify } from '@hozu/core/ir';
2
+ import { canonicalStringify, codes } from '@hozu/core/ir';
3
3
  export const json = (value) => `${JSON.stringify(JSON.parse(canonicalStringify(value)), null, 2)}\n`;
4
4
  export const relativize = (diagnostics, cwd) => diagnostics.map((d) => d.location.source
5
5
  ? {
@@ -10,80 +10,6 @@ export const relativize = (diagnostics, cwd) => diagnostics.map((d) => d.locatio
10
10
  },
11
11
  }
12
12
  : d);
13
- const TOPICS = {
14
- HZ001: 'machine',
15
- HZ002: 'machine',
16
- HZ004: 'machine',
17
- HZ005: 'machine',
18
- HZ009: 'machine',
19
- HZ010: 'machine',
20
- HZ003: 'data',
21
- HZ021: 'data',
22
- HZ022: 'data',
23
- HZ023: 'data',
24
- HZ014: 'views',
25
- HZ026: 'views',
26
- HZ027: 'views',
27
- HZ028: 'content',
28
- HZ030: 'views',
29
- HZ031: 'views',
30
- HZ032: 'views',
31
- HZ033: 'forms',
32
- HZ036: 'forms',
33
- HZ015: 'contracts',
34
- HZ016: 'contracts',
35
- HZ017: 'contracts',
36
- HZ018: 'contracts',
37
- HZ024: 'pages',
38
- HZ025: 'pages',
39
- HZ035: 'pages',
40
- HZ029: 'components',
41
- HZ037: 'http',
42
- HZ038: 'http',
43
- HZ039: 'http',
44
- HZ040: 'i18n',
45
- HZ041: 'i18n',
46
- HZ042: 'i18n',
47
- HZ043: 'content',
48
- HZ044: 'deploy',
49
- HZ045: 'deploy',
50
- HZ046: 'endpoints',
51
- HZ047: 'data',
52
- HZ048: 'machine',
53
- HZ049: 'data',
54
- HZ050: 'data',
55
- HZ051: 'pages',
56
- HZ052: 'pages',
57
- HZ053: 'endpoints',
58
- HZ054: 'forms',
59
- HZ055: 'forms',
60
- HZ056: 'forms',
61
- HZ057: 'contracts',
62
- HZ058: 'contracts',
63
- HZ059: 'views',
64
- HZ060: 'i18n',
65
- HZ061: 'forms',
66
- HZ062: 'endpoints',
67
- HZ063: 'forms',
68
- HZ064: 'contracts',
69
- HZ070: 'components',
70
- HZ071: 'components',
71
- HZ072: 'components',
72
- HZ073: 'components',
73
- HZ074: 'components',
74
- HZ075: 'components',
75
- HZ076: 'components',
76
- HZ077: 'components',
77
- HZ078: 'components',
78
- HZ079: 'components',
79
- HZ080: 'components',
80
- HZ081: 'fetch',
81
- HZ082: 'fetch',
82
- HZ083: 'fetch',
83
- HZ084: 'env',
84
- HZ085: 'env',
85
- HZ086: 'env',
86
- };
87
13
  const CAUSE_LINES = 10;
88
14
  const cap = (cause) => {
89
15
  const lines = cause.split('\n');
@@ -107,7 +33,7 @@ export function human(d) {
107
33
  lines.push(` fix: ${d.fix.summary}${d.fix.patch ? ' (patch available with --json)' : ''}`);
108
34
  if (d.fix?.snippet)
109
35
  lines.push(d.fix.snippet.replace(/^/gm, ' '));
110
- lines.push(` see: hozu docs ${TOPICS[d.code] ?? 'diagnostics'}`);
36
+ lines.push(` see: hozu docs ${codes[d.code]?.topic ?? 'diagnostics'}`);
111
37
  return lines.join('\n');
112
38
  }
113
39
  //# sourceMappingURL=output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAmB,MAAM,eAAe,CAAA;AAE1E,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAU,EAAE,CAC7C,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;AAEvE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,WAAyB,EAAE,GAAW,EAAgB,EAAE,CACjF,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpB,CAAC,CAAC,QAAQ,CAAC,MAAM;IACf,CAAC,CAAC;QACE,GAAG,CAAC;QACJ,QAAQ,EAAE;YACR,GAAG,CAAC,CAAC,QAAQ;YACb,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;SAC9E;KACF;IACH,CAAC,CAAC,CAAC,CACN,CAAA;AAEH,MAAM,WAAW,GAAG,EAAE,CAAA;AAEtB,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChE,OAAO;QACL,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC;QAClC,KAAK,KAAK,CAAC,MAAM,GAAG,WAAW,GAAG,CAAC,0BAA0B;KAC9D,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,UAAU,KAAK,CAAC,CAAa;IACjC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM;QAC7B,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QACnF,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;IAC3B,MAAM,KAAK,GAAG;QACZ,GAAG,KAAK,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE;QAClD,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC5B,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;KAC3B,CAAA;IACD,IAAI,CAAC,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACtG,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IACpE,KAAK,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,aAAa,EAAE,CAAC,CAAA;IACvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hozu/cli",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "The hozu command: validate, inspect, graph, explain, impact, plan, build and skill (all with --json)",
5
5
  "keywords": [
6
6
  "hozu",
@@ -45,12 +45,12 @@
45
45
  "access": "public"
46
46
  },
47
47
  "dependencies": {
48
- "@hozu/core": "0.13.0",
49
- "@hozu/devtools": "0.13.0",
50
- "@hozu/validator": "0.13.0",
51
- "@hozu/compiler": "0.13.0",
52
- "@hozu/machine": "0.13.0",
53
- "create-hozu": "0.13.0",
54
- "@hozu/transform": "0.13.0"
48
+ "@hozu/core": "0.15.0",
49
+ "@hozu/devtools": "0.15.0",
50
+ "@hozu/validator": "0.15.0",
51
+ "@hozu/machine": "0.15.0",
52
+ "@hozu/compiler": "0.15.0",
53
+ "@hozu/transform": "0.15.0",
54
+ "create-hozu": "0.15.0"
55
55
  }
56
56
  }
@@ -12,9 +12,14 @@
12
12
  "type": "string",
13
13
  "enum": [
14
14
  "query",
15
- "mutation"
15
+ "mutation",
16
+ "endpoint"
16
17
  ]
17
18
  },
19
+ "status": {
20
+ "type": "number",
21
+ "description": "An endpoint's HTTP status (ADR 0056 C)."
22
+ },
18
23
  "runs": {
19
24
  "$ref": "#/definitions/Runs"
20
25
  },
@@ -116,11 +116,15 @@
116
116
  },
117
117
  "warnings": {
118
118
  "type": "number"
119
+ },
120
+ "accepted": {
121
+ "type": "number"
119
122
  }
120
123
  },
121
124
  "required": [
122
125
  "errors",
123
- "warnings"
126
+ "warnings",
127
+ "accepted"
124
128
  ],
125
129
  "additionalProperties": false
126
130
  },
@@ -133,6 +137,13 @@
133
137
  "lock": {
134
138
  "$ref": "#/definitions/LockState"
135
139
  },
140
+ "lockAccepted": {
141
+ "type": "array",
142
+ "items": {
143
+ "type": "string"
144
+ },
145
+ "description": "With --update-lock: every change the update accepted, with its now: (ADR 0056 A7)."
146
+ },
136
147
  "styles": {
137
148
  "type": "string",
138
149
  "enum": [
@@ -145,6 +156,34 @@
145
156
  "items": {
146
157
  "$ref": "#/definitions/Diagnostic"
147
158
  }
159
+ },
160
+ "accepted": {
161
+ "type": "array",
162
+ "items": {
163
+ "type": "object",
164
+ "properties": {
165
+ "code": {
166
+ "type": "string"
167
+ },
168
+ "message": {
169
+ "type": "string"
170
+ },
171
+ "at": {
172
+ "type": "string"
173
+ },
174
+ "reason": {
175
+ "type": "string"
176
+ }
177
+ },
178
+ "required": [
179
+ "code",
180
+ "message",
181
+ "at",
182
+ "reason"
183
+ ],
184
+ "additionalProperties": false
185
+ },
186
+ "description": "Warnings the project keeps on purpose (`project({ accept })`, ADR 0053 C), with their reasons."
148
187
  }
149
188
  },
150
189
  "required": [
@@ -154,7 +193,8 @@
154
193
  "coverage",
155
194
  "lock",
156
195
  "styles",
157
- "diagnostics"
196
+ "diagnostics",
197
+ "accepted"
158
198
  ],
159
199
  "additionalProperties": false
160
200
  },
@@ -310,7 +350,12 @@
310
350
  "HZ083",
311
351
  "HZ084",
312
352
  "HZ085",
313
- "HZ086"
353
+ "HZ086",
354
+ "HZ087",
355
+ "HZ088",
356
+ "HZ089",
357
+ "HZ090",
358
+ "HZ091"
314
359
  ]
315
360
  },
316
361
  "Severity": {
@@ -443,6 +443,10 @@
443
443
  },
444
444
  "runs": {
445
445
  "$ref": "#/definitions/Runs"
446
+ },
447
+ "access": {
448
+ "$ref": "#/definitions/AccessIR",
449
+ "description": "Who may read it (ADR 0056 B); required for a server-run `scope: 'user'` query."
446
450
  }
447
451
  },
448
452
  "required": [
@@ -724,7 +728,8 @@
724
728
  "dom",
725
729
  "locale",
726
730
  "alternate",
727
- "env"
731
+ "env",
732
+ "session"
728
733
  ]
729
734
  },
730
735
  "GuardExpr": {
@@ -835,6 +840,99 @@
835
840
  ],
836
841
  "additionalProperties": false
837
842
  },
843
+ "AccessIR": {
844
+ "anyOf": [
845
+ {
846
+ "type": "object",
847
+ "properties": {
848
+ "kind": {
849
+ "type": "string",
850
+ "const": "anyone"
851
+ }
852
+ },
853
+ "required": [
854
+ "kind"
855
+ ],
856
+ "additionalProperties": false
857
+ },
858
+ {
859
+ "type": "object",
860
+ "properties": {
861
+ "kind": {
862
+ "type": "string",
863
+ "const": "signedIn"
864
+ }
865
+ },
866
+ "required": [
867
+ "kind"
868
+ ],
869
+ "additionalProperties": false
870
+ },
871
+ {
872
+ "type": "object",
873
+ "properties": {
874
+ "kind": {
875
+ "type": "string",
876
+ "const": "allow"
877
+ },
878
+ "test": {
879
+ "$ref": "#/definitions/GuardExpr"
880
+ }
881
+ },
882
+ "required": [
883
+ "kind",
884
+ "test"
885
+ ],
886
+ "additionalProperties": false
887
+ },
888
+ {
889
+ "type": "object",
890
+ "properties": {
891
+ "kind": {
892
+ "type": "string",
893
+ "const": "owner"
894
+ },
895
+ "row": {
896
+ "$ref": "#/definitions/ValueExpr"
897
+ },
898
+ "session": {
899
+ "$ref": "#/definitions/ValueExpr"
900
+ },
901
+ "load": {
902
+ "anyOf": [
903
+ {
904
+ "type": "object",
905
+ "properties": {
906
+ "query": {
907
+ "type": "string"
908
+ },
909
+ "input": {
910
+ "$ref": "#/definitions/ValueExpr"
911
+ }
912
+ },
913
+ "required": [
914
+ "query",
915
+ "input"
916
+ ],
917
+ "additionalProperties": false
918
+ },
919
+ {
920
+ "type": "null"
921
+ }
922
+ ]
923
+ }
924
+ },
925
+ "required": [
926
+ "kind",
927
+ "row",
928
+ "session",
929
+ "load"
930
+ ],
931
+ "additionalProperties": false
932
+ }
933
+ ],
934
+ "description": "Declared access (ADR 0054, ADR 0056 B). The callbacks are lowered like guards: `session` and `input` are refs, and an owner's `row` is the `result` ref (a row of the output, or the row `load` read)."
935
+ },
838
936
  "MutationIR": {
839
937
  "type": "object",
840
938
  "properties": {
@@ -858,6 +956,10 @@
858
956
  },
859
957
  "runs": {
860
958
  "$ref": "#/definitions/Runs"
959
+ },
960
+ "access": {
961
+ "$ref": "#/definitions/AccessIR",
962
+ "description": "Who may run it (ADR 0056 B); required for a server-run mutation."
861
963
  }
862
964
  },
863
965
  "required": [
@@ -169,6 +169,12 @@
169
169
  "type": "string",
170
170
  "description": "Where it runs (ADR 0049): 'server', 'browser' or 'either'."
171
171
  },
172
+ "access": {
173
+ "type": [
174
+ "string",
175
+ "null"
176
+ ]
177
+ },
172
178
  "at": {
173
179
  "type": [
174
180
  "string",
@@ -183,6 +189,7 @@
183
189
  "errors",
184
190
  "tags",
185
191
  "runs",
192
+ "access",
186
193
  "at"
187
194
  ],
188
195
  "additionalProperties": false
@@ -211,6 +218,12 @@
211
218
  "runs": {
212
219
  "type": "string"
213
220
  },
221
+ "access": {
222
+ "type": [
223
+ "string",
224
+ "null"
225
+ ]
226
+ },
214
227
  "at": {
215
228
  "type": [
216
229
  "string",
@@ -223,6 +236,7 @@
223
236
  "errors",
224
237
  "invalidates",
225
238
  "runs",
239
+ "access",
226
240
  "at"
227
241
  ],
228
242
  "additionalProperties": false