@hozu/validator 0.6.0 → 0.8.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 (93) hide show
  1. package/dist/contracts/lock.d.ts +14 -17
  2. package/dist/contracts/lock.d.ts.map +1 -1
  3. package/dist/contracts/lock.js +52 -50
  4. package/dist/contracts/lock.js.map +1 -1
  5. package/dist/contracts/mechanical.d.ts +8 -2
  6. package/dist/contracts/mechanical.d.ts.map +1 -1
  7. package/dist/contracts/mechanical.js +98 -32
  8. package/dist/contracts/mechanical.js.map +1 -1
  9. package/dist/contracts/record.d.ts +45 -0
  10. package/dist/contracts/record.d.ts.map +1 -0
  11. package/dist/contracts/record.js +79 -0
  12. package/dist/contracts/record.js.map +1 -0
  13. package/dist/contracts/run.d.ts +2 -1
  14. package/dist/contracts/run.d.ts.map +1 -1
  15. package/dist/contracts/run.js +32 -4
  16. package/dist/contracts/run.js.map +1 -1
  17. package/dist/contracts/verify.d.ts +2 -2
  18. package/dist/contracts/verify.d.ts.map +1 -1
  19. package/dist/contracts/verify.js +186 -29
  20. package/dist/contracts/verify.js.map +1 -1
  21. package/dist/env.d.ts.map +1 -1
  22. package/dist/env.js +2 -0
  23. package/dist/env.js.map +1 -1
  24. package/dist/index.d.ts +8 -5
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +15 -5
  27. package/dist/index.js.map +1 -1
  28. package/dist/resolve.d.ts +2 -2
  29. package/dist/resolve.d.ts.map +1 -1
  30. package/dist/resolve.js +1 -0
  31. package/dist/resolve.js.map +1 -1
  32. package/dist/rules/data.d.ts +2 -0
  33. package/dist/rules/data.d.ts.map +1 -1
  34. package/dist/rules/data.js +39 -4
  35. package/dist/rules/data.js.map +1 -1
  36. package/dist/rules/endpoints.d.ts +1 -0
  37. package/dist/rules/endpoints.d.ts.map +1 -1
  38. package/dist/rules/endpoints.js +140 -4
  39. package/dist/rules/endpoints.js.map +1 -1
  40. package/dist/rules/form-model.d.ts +31 -0
  41. package/dist/rules/form-model.d.ts.map +1 -0
  42. package/dist/rules/form-model.js +114 -0
  43. package/dist/rules/form-model.js.map +1 -0
  44. package/dist/rules/forms.d.ts +5 -0
  45. package/dist/rules/forms.d.ts.map +1 -1
  46. package/dist/rules/forms.js +141 -4
  47. package/dist/rules/forms.js.map +1 -1
  48. package/dist/rules/http.d.ts.map +1 -1
  49. package/dist/rules/http.js +14 -4
  50. package/dist/rules/http.js.map +1 -1
  51. package/dist/rules/i18n.d.ts.map +1 -1
  52. package/dist/rules/i18n.js +15 -0
  53. package/dist/rules/i18n.js.map +1 -1
  54. package/dist/rules/links.d.ts.map +1 -1
  55. package/dist/rules/links.js +61 -6
  56. package/dist/rules/links.js.map +1 -1
  57. package/dist/rules/literals.d.ts.map +1 -1
  58. package/dist/rules/literals.js +2 -0
  59. package/dist/rules/literals.js.map +1 -1
  60. package/dist/rules/pages.d.ts +4 -0
  61. package/dist/rules/pages.d.ts.map +1 -0
  62. package/dist/rules/pages.js +97 -0
  63. package/dist/rules/pages.js.map +1 -0
  64. package/dist/rules/paths.d.ts.map +1 -1
  65. package/dist/rules/paths.js +25 -0
  66. package/dist/rules/paths.js.map +1 -1
  67. package/dist/rules/routes.d.ts +2 -0
  68. package/dist/rules/routes.d.ts.map +1 -1
  69. package/dist/rules/routes.js +5 -3
  70. package/dist/rules/routes.js.map +1 -1
  71. package/dist/rules/seed.d.ts +3 -0
  72. package/dist/rules/seed.d.ts.map +1 -0
  73. package/dist/rules/seed.js +29 -0
  74. package/dist/rules/seed.js.map +1 -0
  75. package/dist/rules/text.d.ts.map +1 -1
  76. package/dist/rules/text.js +100 -42
  77. package/dist/rules/text.js.map +1 -1
  78. package/dist/schema.d.ts.map +1 -1
  79. package/dist/schema.js +3 -1
  80. package/dist/schema.js.map +1 -1
  81. package/dist/sites.d.ts +4 -2
  82. package/dist/sites.d.ts.map +1 -1
  83. package/dist/sites.js +7 -2
  84. package/dist/sites.js.map +1 -1
  85. package/package.json +3 -3
  86. package/dist/truthiness-rule.d.ts +0 -3
  87. package/dist/truthiness-rule.d.ts.map +0 -1
  88. package/dist/truthiness-rule.js +0 -21
  89. package/dist/truthiness-rule.js.map +0 -1
  90. package/dist/truthiness.d.ts +0 -8
  91. package/dist/truthiness.d.ts.map +0 -1
  92. package/dist/truthiness.js +0 -268
  93. package/dist/truthiness.js.map +0 -1
@@ -1,5 +1,13 @@
1
- import { at, formRunnable } from '@hozu/core/ir';
1
+ import { at, formRunnable, join, resolveAt, } from '@hozu/core/ir';
2
+ import { eventSchema } from '../env.js';
3
+ import { resolveRef } from '../resolve.js';
4
+ import { resolvePath } from '../schema.js';
5
+ import { closest, didYouMean } from '../suggest.js';
2
6
  import { walkView } from '../walk.js';
7
+ import { formReads, formsOf, multiValued } from './form-model.js';
8
+ const fieldsOf = (payload) => ('object' in payload ? Object.keys(payload.object) : ['title'])
9
+ .map((k) => `${k}: ui.dom.form('${k}')`)
10
+ .join(', ');
3
11
  export function progressiveForms(ctx) {
4
12
  const { ir } = ctx;
5
13
  for (const f of Object.values(ir.features))
@@ -9,11 +17,140 @@ export function progressiveForms(ctx) {
9
17
  return;
10
18
  if (formRunnable(node.on.submit.payload))
11
19
  return;
12
- ctx.report('HZ036', f.id, at(pointer, 'on', 'submit', 'payload'), `This form only works with JavaScript: its ${node.on.submit.event} payload reads values the server cannot see`, 'Without JavaScript the browser posts the named form fields; the server can use those, context, params and search, but not other DOM fields or each/query bindings.', {
13
- summary: "Read the fields with ui.dom.form('name') so the form also works before hydration and without JavaScript",
14
- snippet: null,
20
+ ctx.report('HZ036', f.id, at(pointer, 'on', 'submit', 'payload'), `This form only works with JavaScript: its ${node.on.submit.event} payload reads values the server cannot see`, 'Without JavaScript the browser posts the named form fields and the pressed submit button; the server can use those, context, params and search, but not other DOM fields or each/query bindings.', {
21
+ summary: "Read the fields with ui.dom.form('name') or ui.dom.formAll('name') so the form also works before hydration and without JavaScript",
22
+ snippet: `on: { submit: ui.send(${node.on.submit.event.split('.').pop()}, { ${fieldsOf(node.on.submit.payload)} }) }`,
15
23
  patch: null,
16
24
  });
17
25
  });
18
26
  }
27
+ const obj = (v) => v && typeof v === 'object' && !Array.isArray(v) ? v : null;
28
+ export const isList = (s) => {
29
+ if (!s)
30
+ return false;
31
+ const t = s.type;
32
+ if (t === 'array' || (Array.isArray(t) && t.includes('array')) || obj(s.items))
33
+ return true;
34
+ return ['anyOf', 'oneOf'].some((k) => Array.isArray(s[k]) && s[k].some((v) => isList(obj(v))));
35
+ };
36
+ const limits = [
37
+ 'minLength',
38
+ 'maxLength',
39
+ 'pattern',
40
+ 'format',
41
+ 'minimum',
42
+ 'maximum',
43
+ 'exclusiveMinimum',
44
+ 'exclusiveMaximum',
45
+ 'multipleOf',
46
+ 'minItems',
47
+ 'maxItems',
48
+ ];
49
+ function constraints(s, found = []) {
50
+ for (const k of limits)
51
+ if (k in s)
52
+ found.push([s, k]);
53
+ for (const k of ['anyOf', 'oneOf'])
54
+ if (Array.isArray(s[k]))
55
+ for (const v of s[k])
56
+ if (obj(v))
57
+ constraints(obj(v), found);
58
+ const items = obj(s.items);
59
+ if (items)
60
+ constraints(items, found);
61
+ return found;
62
+ }
63
+ function pathTo(node, target, tokens = []) {
64
+ if (node === target)
65
+ return tokens;
66
+ if (!node || typeof node !== 'object')
67
+ return null;
68
+ for (const [k, v] of Object.entries(node)) {
69
+ const hit = pathTo(v, target, [...tokens, k]);
70
+ if (hit)
71
+ return hit;
72
+ }
73
+ return null;
74
+ }
75
+ const sharedSchema = (f, hash, event) => Object.values(f.queries).some((q) => q.input === hash) ||
76
+ Object.values(f.mutations).some((m) => m.input === hash) ||
77
+ Object.values(f.endpoints).some((e) => e.input === hash) ||
78
+ Object.entries(f.events).some(([sym, e]) => `${f.id}.${sym}` !== event && e.payload === hash);
79
+ /** The IR pointer of a schema inside an event payload, when no effect shares that payload schema. */
80
+ export function schemaPointer(ir, event, target) {
81
+ const owner = resolveRef(ir, event, 'event');
82
+ const hash = owner?.feature.events[owner.symbol]?.payload;
83
+ if (!owner || !hash || sharedSchema(owner.feature, hash, event))
84
+ return null;
85
+ const tokens = pathTo(owner.feature.schemas[hash], target);
86
+ return tokens ? join('', 'features', owner.feature.id, 'schemas', hash, ...tokens) : null;
87
+ }
88
+ function submitButtons(ctx, f, form) {
89
+ for (const c of form.controls) {
90
+ if (!c.submit || !c.node.on.click)
91
+ continue;
92
+ ctx.report('HZ056', f.id, at(c.pointer, 'on', 'click'), `A submit button sends ${c.node.on.click.event} on click, and its form submits as well`, 'The click runs first and the form submit follows (with JavaScript, and as a native post without it), so both events reach the machine.', {
93
+ summary: "Give the button name and value and read ui.dom.form('action') in the form's submit, or make it type: 'button'",
94
+ snippet: "ui.button({ type: 'submit', name: 'action', value: 'archive' }, ['Archive'])",
95
+ patch: [{ op: 'add', path: resolveAt(at(c.pointer, 'attrs', 'type')), value: { literal: 'button' } }],
96
+ });
97
+ }
98
+ }
99
+ export function formFields(ctx) {
100
+ const { ir } = ctx;
101
+ for (const f of Object.values(ir.features))
102
+ for (const form of formsOf(f)) {
103
+ submitButtons(ctx, f, form);
104
+ const submit = form.node.on.submit;
105
+ if (!submit)
106
+ continue;
107
+ const root = eventSchema(ir, submit.event);
108
+ const names = [...new Set(form.controls.map((c) => c.name).filter((n) => n !== null))];
109
+ for (const read of formReads(submit.payload, at(form.pointer, 'on', 'submit', 'payload'))) {
110
+ const source = `ui.dom.${read.kind}('${read.name}')`;
111
+ if (!names.includes(read.name)) {
112
+ const guess = closest(read.name, names);
113
+ ctx.report(form.opaque ? 'HZ063' : 'HZ055', f.id, at(read.pointer, 'path', 1), `${source}: no control named "${read.name}" belongs to this form.${didYouMean(guess)}`, form.opaque
114
+ ? `The form holds ${form.opaque}, whose fields cannot be seen statically. Known fields: ${names.join(', ') || 'none'}.`
115
+ : `A form posts the named controls inside it, the controls whose form attribute holds its formRef, and the pressed submit button. Fields: ${names.join(', ') || 'none'}.`, {
116
+ summary: guess ? `Read ${guess}` : `Add a control with name: '${read.name}' to the form`,
117
+ snippet: guess ? null : `ui.input({ name: '${read.name}' })`,
118
+ patch: guess
119
+ ? [{ op: 'replace', path: resolveAt(at(read.pointer, 'path', 1)), value: guess }]
120
+ : null,
121
+ });
122
+ continue;
123
+ }
124
+ const r = read.field && root ? resolvePath(root, read.field) : null;
125
+ const schema = r?.ok ? r.schema : null;
126
+ const field = `${submit.event}.${read.field?.join('.') || 'payload'}`;
127
+ if (read.kind === 'form' && (isList(schema) || multiValued(form, read.name)))
128
+ ctx.report('HZ054', f.id, at(read.pointer, 'path', 0), isList(schema)
129
+ ? `${source} reads one value, but ${field} is a list`
130
+ : `${source} reads one value, but several controls named "${read.name}" submit in this form`, 'ui.dom.form(name) is the first value of the name; a checkbox group, a select with multiple, repeated controls and controls inside ui.each post one value each.', {
131
+ summary: `Read every value with ui.dom.formAll('${read.name}') into a list field`,
132
+ snippet: null,
133
+ patch: [{ op: 'replace', path: resolveAt(at(read.pointer, 'path', 0)), value: 'formAll' }],
134
+ });
135
+ if (schema)
136
+ constrainedPayload(ctx, f, submit.event, schema, source, field, read.pointer);
137
+ }
138
+ }
139
+ }
140
+ function constrainedPayload(ctx, f, event, schema, source, field, pointer) {
141
+ const found = constraints(schema);
142
+ if (!found.length)
143
+ return;
144
+ const patch = [];
145
+ for (const [s, k] of found) {
146
+ const base = schemaPointer(ctx.ir, event, s);
147
+ if (base)
148
+ patch.push({ op: 'remove', path: join(base, k) });
149
+ }
150
+ ctx.report('HZ061', f.id, pointer, `${source} feeds ${field}, whose schema declares ${[...new Set(found.map(([, k]) => k))].join(', ')}`, 'A native post checks the event payload and answers 400, while with JavaScript the payload is not checked and the mutation answers Invalid with field errors: the same input behaves differently in the two modes.', {
151
+ summary: "Move the limits to the mutation's input schema, where both modes get the same Invalid",
152
+ snippet: `event({ payload: z.object({ ${field.split('.').pop()}: z.string() }) })`,
153
+ patch: patch.length ? patch : null,
154
+ });
155
+ }
19
156
  //# sourceMappingURL=forms.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/rules/forms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,UAAU,gBAAgB,CAAC,GAAQ;IACvC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;IAClB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/C,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;oBAAE,OAAM;gBACxE,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;oBAAE,OAAM;gBAChD,GAAG,CAAC,MAAM,CACR,OAAO,EACP,CAAC,CAAC,EAAE,EACJ,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,EACtC,6CAA6C,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,6CAA6C,EAC9G,oKAAoK,EACpK;oBACE,OAAO,EACL,yGAAyG;oBAC3G,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,IAAI;iBACZ,CACF,CAAA;YACH,CAAC,CAAC,CAAA;AACR,CAAC"}
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/rules/forms.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/rules/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAoBxC,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,QAoFjC"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/rules/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAoBxC,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,QA8FjC"}
@@ -1,4 +1,4 @@
1
- import { join, routePattern } from '@hozu/core/ir';
1
+ import { join, localePath, routePattern } from '@hozu/core/ir';
2
2
  const RESERVED = new Set([
3
3
  'content-type',
4
4
  'content-length',
@@ -29,7 +29,10 @@ export function httpRules(ctx) {
29
29
  },
30
30
  ],
31
31
  });
32
- const pages = Object.keys(ctx.ir.pages).flatMap((id) => ctx.ir.routes[id] ? [[id, ctx.ir.routes[id].path]] : []);
32
+ const locales = ctx.ir.site?.locales ?? [null];
33
+ const pages = Object.keys(ctx.ir.pages).flatMap((id) => ctx.ir.routes[id]
34
+ ? [...new Set(locales.map((l) => localePath(ctx.ir, ctx.ir.routes[id].path, l)))].map((p) => [id, p])
35
+ : []);
33
36
  http.redirects.forEach((r, i) => {
34
37
  const at = join('', 'http', 'redirects', i);
35
38
  const remove = {
@@ -48,8 +51,15 @@ export function httpRules(ctx) {
48
51
  return invalid(`Redirect "${r.from}" overlaps redirect "${other.from}"`, 'Two redirects for one URL make the target depend on order.');
49
52
  if ('link' in r.to && !ctx.ir.routes[r.to.link])
50
53
  return invalid(`Redirect "${r.from}" targets an unknown route`, 'Point `to` at a registered route with ui.link.');
51
- if ('literal' in r.to && typeof r.to.literal === 'string' && r.to.literal.startsWith('/'))
52
- ctx.report('HZ032', null, join(at, 'to'), `Redirect "${r.from}" targets the internal path "${r.to.literal}" as a string`, 'Internal URLs are built from route declarations so they stay typed and canonical.', { summary: 'Use to: (params) => ui.link(route, params)', snippet: null, patch: null });
54
+ if ('literal' in r.to && typeof r.to.literal === 'string' && r.to.literal.startsWith('/')) {
55
+ const path = r.to.literal;
56
+ const route = Object.keys(ctx.ir.routes).find((id) => ctx.ir.routes[id].path === path);
57
+ ctx.report('HZ032', null, join(at, 'to'), `Redirect "${r.from}" targets the internal path "${path}" as a string`, 'Internal URLs are built from route declarations so they stay typed and canonical.', {
58
+ summary: 'Use to: (params) => ui.link(route, params)',
59
+ snippet: route ? `to: () => ui.link(${route}, null),` : 'to: (params) => ui.link(route, params),',
60
+ patch: null,
61
+ });
62
+ }
53
63
  });
54
64
  http.headers.forEach((rule, i) => {
55
65
  for (const [name, value] of Object.entries(rule.set)) {
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/rules/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/rules/http.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/rules/i18n.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AA+ExC,wBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,QA4K5B"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/rules/i18n.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AA+ExC,wBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,QAiM5B"}
@@ -111,6 +111,21 @@ export function i18n(ctx) {
111
111
  ],
112
112
  });
113
113
  });
114
+ const taken = new Set(Object.values(ir.routes).map((r) => r.path));
115
+ for (const id of Object.keys(ir.pages)) {
116
+ const path = ir.routes[id]?.path;
117
+ const segment = path?.split('/')[1] ?? '';
118
+ if (!path || !locales.includes(segment))
119
+ continue;
120
+ const rest = path.slice(segment.length + 1) || '/';
121
+ const renamed = taken.has(rest) ? `/${segment}-page${rest === '/' ? '' : rest}` : rest;
122
+ const pointer = join('', 'routes', id, 'path');
123
+ ctx.report('HZ060', null, pointer, `Route "${id}" (${path}) starts with the locale segment "${segment}"`, `Under site.locales the first segment of a URL names its locale, so this route would own URLs the locale prefix also means.`, {
124
+ summary: `Rename the route path to "${renamed}"`,
125
+ snippet: null,
126
+ patch: [{ op: 'replace', path: pointer, value: renamed }],
127
+ });
128
+ }
114
129
  }
115
130
  for (const f of Object.values(ir.features)) {
116
131
  const m = f.messages;
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/rules/i18n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/rules/i18n.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/rules/links.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAyDxC,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,QAYrC"}
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/rules/links.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAwHxC,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,QAmBrC"}
@@ -1,4 +1,4 @@
1
- import { at, resolveAt, routeParams, routePattern } from '@hozu/core/ir';
1
+ import { at, resolveAt, routeParams, routePattern, } from '@hozu/core/ir';
2
2
  import { closest, didYouMean } from '../suggest.js';
3
3
  import { walkView } from '../walk.js';
4
4
  function matchRoute(ir, pathname) {
@@ -42,19 +42,74 @@ function report(ctx, feature, pointer, href) {
42
42
  : null,
43
43
  });
44
44
  }
45
+ const URL_ATTRS = {
46
+ a: 'href',
47
+ area: 'href',
48
+ form: 'action',
49
+ button: 'formaction',
50
+ input: 'formaction',
51
+ };
52
+ function postEndpoint(ir, path) {
53
+ for (const f of Object.values(ir.features))
54
+ for (const [sym, e] of Object.entries(f.endpoints))
55
+ if (e.method === 'POST' && e.path === path)
56
+ return `${f.id}.${sym}`;
57
+ return null;
58
+ }
59
+ function reportEndpoint(ctx, feature, pointer, path, ref) {
60
+ const call = `ui.link(${ref.slice(ref.indexOf('.') + 1)})`;
61
+ ctx.report('HZ032', feature, pointer, `Form action "${path}" is a string; use ${call}`, 'An endpoint is a declaration identity, so a moved or removed endpoint is caught.', {
62
+ summary: `Use ${call}`,
63
+ snippet: call,
64
+ patch: [{ op: 'replace', path: resolveAt(pointer), value: { endpoint: ref, input: null } }],
65
+ });
66
+ }
67
+ const internal = (v) => v.startsWith('/') && !v.startsWith('//') && !v.startsWith('/_hozu/');
68
+ function concatHref(value) {
69
+ if (!('fn' in value) || value.fn !== '%concat' || !('object' in value.arg))
70
+ return null;
71
+ const parts = Object.values(value.arg.object);
72
+ const first = parts[0];
73
+ if (!first || !('literal' in first) || typeof first.literal !== 'string' || !internal(first.literal))
74
+ return null;
75
+ return parts.map((p) => ('literal' in p ? String(p.literal) : '…')).join('');
76
+ }
77
+ function reportConcat(ctx, feature, pointer, href) {
78
+ const match = matchRoute(ctx.ir, href.replaceAll('…', 'x').split(/[?#]/)[0]);
79
+ const call = match
80
+ ? `ui.link(${match.id}, ${match.params
81
+ ? `{ ${Object.keys(match.params)
82
+ .map((k) => `${k}: …`)
83
+ .join(', ')} }`
84
+ : 'null'})`
85
+ : 'ui.link(route, params)';
86
+ ctx.report('HZ032', feature, pointer, `Internal link \`${href}\` is built from a template string; use ${call}`, 'Internal paths are typed references to a route, so a renamed route or a wrong parameter is caught; a template string is not checked.', { summary: `Use ${call}`, snippet: call, patch: null });
87
+ }
45
88
  export function internalLinks(ctx) {
46
89
  const { ir } = ctx;
47
90
  for (const f of Object.values(ir.features))
48
91
  for (const [vid, view] of Object.entries(f.views))
49
92
  walkView(ir, f, vid, view, ({ node, pointer }) => {
50
- if (node.kind !== 'el' || (node.tag !== 'a' && node.tag !== 'area'))
93
+ if (node.kind !== 'el')
51
94
  return;
52
- const href = node.attrs.href;
53
- if (!href || !('literal' in href) || typeof href.literal !== 'string')
95
+ const attr = URL_ATTRS[node.tag];
96
+ const href = attr ? node.attrs[attr] : undefined;
97
+ if (!attr || !href)
98
+ return;
99
+ const p = at(pointer, 'attrs', attr);
100
+ const built = concatHref(href);
101
+ if (built)
102
+ reportConcat(ctx, f.id, p, built);
103
+ if (!('literal' in href) || typeof href.literal !== 'string')
54
104
  return;
55
105
  const v = href.literal;
56
- if (v.startsWith('/') && !v.startsWith('//') && !v.startsWith('/_hozu/'))
57
- report(ctx, f.id, at(pointer, 'attrs', 'href'), v);
106
+ if (!internal(v))
107
+ return;
108
+ const endpoint = attr === 'href' ? null : postEndpoint(ir, v);
109
+ if (endpoint)
110
+ reportEndpoint(ctx, f.id, p, v, endpoint);
111
+ else
112
+ report(ctx, f.id, p, v);
58
113
  });
59
114
  }
60
115
  //# sourceMappingURL=links.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/rules/links.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/rules/links.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../src/rules/literals.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAuIxC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,QA6FhC"}
1
+ {"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../src/rules/literals.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAuIxC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,QA8FhC"}
@@ -99,6 +99,8 @@ export function literals(ctx) {
99
99
  ? itemsOf(schema)
100
100
  : a.op === 'removeWhere'
101
101
  ? (() => {
102
+ if (a.key === null)
103
+ return null;
102
104
  const r = resolvePath(itemsOf(schema), [a.key]);
103
105
  return r.ok ? r.schema : null;
104
106
  })()
@@ -1 +1 @@
1
- {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../src/rules/literals.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,EAAE,EACF,UAAU,EAIV,SAAS,GAEV,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,UAAU,EAEV,aAAa,EACb,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,GACZ,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEpE,SAAS,cAAc,CACrB,GAAQ,EACR,OAAe,EACf,OAAW,EACX,KAAW,EACX,MAAyB,EACzB,IAAY;IAEZ,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACjC,IAAI,CAAC,CAAC;QAAE,OAAM;IACd,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACnF,KAAK,CACN,CAAA;IACD,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5E,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAClE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;IAChD,GAAG,CAAC,MAAM,CACR,OAAO,EACP,OAAO,EACP,MAAM,EACN,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,6BAA6B,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,EAClF,YAAY,CAAC,CAAC,QAAQ,GAAG,EACzB;QACE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,QAAQ,EAAE;QAC1F,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;KACjF,CACF,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CACjB,GAAQ,EACR,OAAe,EACf,KAAgB,EAChB,MAAyB,EACzB,OAAW,EACX,IAAY;IAEZ,IAAI,SAAS,IAAI,KAAK;QAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;SACrF,IAAI,QAAQ,IAAI,KAAK;QACxB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YAC/C,UAAU,CACR,GAAG,EACH,OAAO,EACP,CAAC,EACD,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,CAAC,CAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAmC,CAAC,MAAM;gBACpE,CAAC,CAAC,IAAI,EACR,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EACxB,GAAG,IAAI,IAAI,CAAC,EAAE,CACf,CAAA;AACP,CAAC;AAED,SAAS,UAAU,CAAC,GAAQ,EAAE,GAAQ,EAAE,KAAgB,EAAE,OAAW;IACnE,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnC,UAAU,CACR,GAAG,EACH,GAAG,CAAC,OAAO,CAAC,EAAE,EACd,KAAK,CAAC,MAAM,EACZ,CAAC,EAAE,MAAM,IAAI,IAAI,EACjB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EACrB,aAAa,KAAK,CAAC,IAAI,EAAE,CAC1B,CAAA;QACD,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;YAC/D,UAAU,CACR,GAAG,EACH,GAAG,CAAC,OAAO,CAAC,EAAE,EACd,KAAK,CAAC,MAAM,EACZ,CAAC,EAAE,MAAM,IAAI,IAAI,EACjB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EACrB,aAAa,KAAK,CAAC,IAAI,EAAE,CAC1B,CAAA;IACL,CAAC;SAAM,IAAI,QAAQ,IAAI,KAAK;QAC1B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;SACjG,IAAI,IAAI,IAAI,KAAK;QAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,GAAQ,EAAE,GAAQ,EAAE,KAAgB,EAAE,OAAW;IACnE,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;QACjB,KAAK,KAAK,CAAC;QACX,KAAK,IAAI;YACP,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAC7E,OAAM;QACR,KAAK,KAAK;YACR,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;YACnD,OAAM;QACR,KAAK,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC5E,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;YAC/E,OAAM;QACR,CAAC;QACD;YACE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAC1B,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;gBACrB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;aACb,EAAE,CAAC;gBACX,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;gBACrB,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI;oBAC/D,UAAU,CACR,GAAG,EACH,GAAG,CAAC,OAAO,CAAC,EAAE,EACd,CAAC,EACD,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,EAC/B,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EACjB,oBAAoB,CACrB,CAAA;YACL,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAQ,EAAE,OAAe,EAAE,GAAW,EAAE,IAAY,EAAE,KAAgB,EAAE,OAAW;IACpG,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAClE,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAM;IAClF,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAM;IAChE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,CAAA;AACrG,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAC/B,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;IAClB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAA;YAC5C,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;gBACvD,IAAI,CAAC,CAAC,MAAM;oBACV,UAAU,CACR,GAAG,EACH,CAAC,CAAC,EAAE,EACJ,CAAC,CAAC,MAAM,CAAC,KAAK,EACd,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,IAAI,EACjD,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EACnE,YAAY,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAC9B,CAAA;YACL,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;gBACpC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAA;gBACzB,IAAI,CAAC,CAAC,KAAK;oBAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;gBAC5D,IAAI,CAAC,CAAC,QAAQ;oBAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;gBACrE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxB,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC;wBAAE,OAAM;oBAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;oBAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;oBAC/C,MAAM,QAAQ,GACZ,CAAC,CAAC,EAAE,KAAK,QAAQ;wBACf,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;wBACjB,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa;4BACtB,CAAC,CAAC,CAAC,GAAG,EAAE;gCACJ,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gCAC/C,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;4BAC/B,CAAC,CAAC,EAAE;4BACN,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK;gCACd,CAAC,CAAC,MAAM;gCACR,CAAC,CAAC,IAAI,CAAA;oBACd,UAAU,CACR,GAAG,EACH,CAAC,CAAC,EAAE,EACJ,CAAC,CAAC,KAAK,EACP,QAAQ,EACR,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAC7B,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC9B,CAAA;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/C,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;gBACpD,MAAM,KAAK,GAAG,CAAC,EAAyD,EAAE,EAAE;oBAC1E,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC1C,UAAU,CACR,GAAG,EACH,CAAC,CAAC,EAAE,EACJ,IAAI,CAAC,OAAO,EACZ,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAC3B,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EACjC,IAAI,CAAC,KAAK,CACX,CAAA;gBACL,CAAC,CAAA;gBACD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClB,KAAK,IAAI;wBACP,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;4BACnD,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;4BACnE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;4BACnD,IAAI,MAAM,IAAI,CAAC;gCAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;wBACnF,CAAC;wBACD,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;4BACjD,IAAI,MAAM,IAAI,CAAC;gCAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;wBACpF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wBACd,OAAM;oBACR,KAAK,QAAQ,CAAC;oBACd,KAAK,QAAQ;wBACX,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wBACd,OAAM;oBACR,KAAK,IAAI;wBACP,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;wBACpD,OAAM;oBACR,KAAK,OAAO;wBACV,UAAU,CACR,GAAG,EACH,CAAC,CAAC,EAAE,EACJ,IAAI,CAAC,KAAK,EACV,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI,EAC5C,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EACpB,YAAY,IAAI,CAAC,KAAK,EAAE,CACzB,CAAA;wBACD,OAAM;oBACR;wBACE,OAAM;gBACV,CAAC;YACH,CAAC,CAAC,CAAA;IACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../src/rules/literals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Ctx } from '../context.ts';
2
+ export declare function headFailures(ctx: Ctx): void;
3
+ export declare function unservedRoutes(ctx: Ctx): void;
4
+ //# sourceMappingURL=pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/rules/pages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAaxC,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,QAuCpC;AAYD,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,QA2DtC"}
@@ -0,0 +1,97 @@
1
+ import { join } from '@hozu/core/ir';
2
+ const choice = (error, signIn) => /^(Unauthori[sz]ed|Unauthenticated|SignedOut|NotSignedIn)$/.test(error)
3
+ ? (signIn ?? '<a sign-in route without params>')
4
+ : /^Forbidden/.test(error)
5
+ ? '403'
6
+ : /^(NotFound|Missing|Unknown)/.test(error)
7
+ ? '404'
8
+ : /^(Gone|Deleted|Removed)/.test(error)
9
+ ? '410'
10
+ : '<route> | 403 | 404 | 410';
11
+ export function headFailures(ctx) {
12
+ const { ir } = ctx;
13
+ const signIn = Object.keys(ir.routes).find((id) => /login|signin|sign-in/i.test(ir.routes[id].path)) ?? null;
14
+ for (const [id, page] of Object.entries(ir.pages)) {
15
+ const ref = page.head.query?.ref ?? null;
16
+ const dot = ref?.indexOf('.') ?? -1;
17
+ const query = ref ? ir.features[ref.slice(0, dot)]?.queries[ref.slice(dot + 1)] : undefined;
18
+ const declared = Object.keys(query?.errors ?? {});
19
+ const mapped = Object.keys(page.head.failed);
20
+ const at = join('', 'pages', id, 'head', 'failed');
21
+ const missing = declared.filter((e) => !(e in page.head.failed));
22
+ if (missing.length)
23
+ ctx.report('HZ051', null, at, `head.failed of page "${id}" does not map ${missing.map((e) => `"${e}"`).join(', ')} of ${ref}`, 'Every declared error of the head query decides the page: a redirect (303) to a route without params, or 403, 404 or 410. Which one is an intent decision, so there is no default.', {
24
+ summary: `Map ${missing.join(', ')} in head.failed`,
25
+ snippet: `failed: { ${declared.map((e) => `${e}: ${mapped.includes(e) ? '…' : choice(e, signIn)}`).join(', ')} }`,
26
+ patch: null,
27
+ });
28
+ for (const e of mapped.filter((m) => !declared.includes(m)))
29
+ ctx.report('HZ051', null, join(at, e), e === 'Unexpected'
30
+ ? `head.failed of page "${id}" maps Unexpected`
31
+ : `head.failed of page "${id}" maps "${e}", which ${ref ?? 'the page (no head query)'} does not declare`, e === 'Unexpected'
32
+ ? 'Unexpected always answers 500; only declared errors are mapped.'
33
+ : 'head.failed maps the declared errors of the head query, and nothing else.', { summary: `Remove "${e}" from head.failed`, snippet: null, patch: null });
34
+ }
35
+ }
36
+ function linkSites(node, pointer, id, out) {
37
+ if (Array.isArray(node))
38
+ node.forEach((x, i) => linkSites(x, join(pointer, i), id, out));
39
+ else if (node && typeof node === 'object') {
40
+ if (node.link === id && 'params' in node)
41
+ out.push({ pointer, value: node });
42
+ for (const [k, v] of Object.entries(node))
43
+ linkSites(v, join(pointer, k), id, out);
44
+ }
45
+ }
46
+ export function unservedRoutes(ctx) {
47
+ const { ir } = ctx;
48
+ const endpoints = Object.values(ir.features).flatMap((f) => Object.entries(f.endpoints).map(([sym, e]) => ({ ref: `${f.id}.${sym}`, ...e })));
49
+ for (const [id, r] of Object.entries(ir.routes)) {
50
+ if (ir.pages[id])
51
+ continue;
52
+ const sites = [];
53
+ linkSites(ir.features, join('', 'features'), id, sites);
54
+ linkSites(ir.http.redirects, join('', 'http', 'redirects'), id, sites);
55
+ const endpoint = endpoints.find((e) => e.method === 'GET' && e.path === r.path);
56
+ const movable = endpoint && endpoint.mode !== 'response';
57
+ const at = join('', 'routes', id);
58
+ ctx.report('HZ052', null, at, `Route "${id}" (${r.path}) is rendered by no page`, endpoint
59
+ ? `Its path is the endpoint ${endpoint.ref}; links to an endpoint are ui.link(endpoint, input), not a route.`
60
+ : 'A route names a page; a link to it would answer 404.', movable
61
+ ? {
62
+ summary: `Link to the endpoint with ui.link(${endpoint.ref.split('.')[1]}, input) and remove the route`,
63
+ snippet: null,
64
+ patch: [
65
+ ...sites.map((s) => ({
66
+ op: 'replace',
67
+ path: s.pointer,
68
+ value: {
69
+ endpoint: endpoint.ref,
70
+ input: 'literal' in s.value.search && s.value.search.literal === null
71
+ ? { literal: {} }
72
+ : s.value.search,
73
+ },
74
+ })),
75
+ { op: 'remove', path: at },
76
+ ],
77
+ }
78
+ : endpoint
79
+ ? {
80
+ summary: `Make ${r.path} a ui.page with head.failed for the statuses it answers, instead of an endpoint that returns a page`,
81
+ snippet: `ui.page(${id}, { views: [...], head: { query, input, render, failed: { Forbidden: 403 } } })`,
82
+ patch: null,
83
+ }
84
+ : sites.length
85
+ ? {
86
+ summary: `Add ui.page(${id}, { views, head }) to project({ pages }), or link elsewhere`,
87
+ snippet: `ui.page(${id}, { views: [...], head: { render: () => ({ title: '…' }) } })`,
88
+ patch: null,
89
+ }
90
+ : {
91
+ summary: `Remove the unused route "${id}"`,
92
+ snippet: null,
93
+ patch: [{ op: 'remove', path: at }],
94
+ });
95
+ }
96
+ }
97
+ //# sourceMappingURL=pages.js.map