@platformos/platformos-check-common 0.0.16 → 0.0.18

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 (54) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/checks/index.d.ts +1 -1
  3. package/dist/checks/index.js +6 -2
  4. package/dist/checks/index.js.map +1 -1
  5. package/dist/checks/json-literal-quote-style/index.d.ts +2 -0
  6. package/dist/checks/json-literal-quote-style/index.js +42 -0
  7. package/dist/checks/json-literal-quote-style/index.js.map +1 -0
  8. package/dist/checks/liquid-html-syntax-error/checks/InvalidAssignSyntax.d.ts +21 -0
  9. package/dist/checks/liquid-html-syntax-error/checks/InvalidAssignSyntax.js +60 -0
  10. package/dist/checks/liquid-html-syntax-error/checks/InvalidAssignSyntax.js.map +1 -0
  11. package/dist/checks/liquid-html-syntax-error/checks/InvalidOutputPush.d.ts +17 -0
  12. package/dist/checks/liquid-html-syntax-error/checks/InvalidOutputPush.js +37 -0
  13. package/dist/checks/liquid-html-syntax-error/checks/InvalidOutputPush.js.map +1 -0
  14. package/dist/checks/liquid-html-syntax-error/checks/InvalidTagSyntax.js +1 -1
  15. package/dist/checks/liquid-html-syntax-error/index.js +17 -0
  16. package/dist/checks/liquid-html-syntax-error/index.js.map +1 -1
  17. package/dist/checks/partial-call-arguments/extract-undefined-variables.d.ts +14 -0
  18. package/dist/checks/partial-call-arguments/extract-undefined-variables.js +234 -0
  19. package/dist/checks/partial-call-arguments/extract-undefined-variables.js.map +1 -0
  20. package/dist/checks/partial-call-arguments/index.d.ts +2 -0
  21. package/dist/checks/partial-call-arguments/index.js +117 -0
  22. package/dist/checks/partial-call-arguments/index.js.map +1 -0
  23. package/dist/checks/unknown-property/index.js +22 -2
  24. package/dist/checks/unknown-property/index.js.map +1 -1
  25. package/dist/checks/valid-frontmatter/index.d.ts +2 -0
  26. package/dist/checks/valid-frontmatter/index.js +279 -0
  27. package/dist/checks/valid-frontmatter/index.js.map +1 -0
  28. package/dist/frontmatter/index.d.ts +1 -59
  29. package/dist/frontmatter/index.js +6 -298
  30. package/dist/frontmatter/index.js.map +1 -1
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +2 -2
  33. package/src/checks/index.ts +6 -2
  34. package/src/checks/json-literal-quote-style/index.spec.ts +129 -0
  35. package/src/checks/json-literal-quote-style/index.ts +45 -0
  36. package/src/checks/liquid-html-syntax-error/checks/InvalidAssignSyntax.spec.ts +422 -0
  37. package/src/checks/liquid-html-syntax-error/checks/InvalidAssignSyntax.ts +63 -0
  38. package/src/checks/liquid-html-syntax-error/checks/InvalidOutputPush.spec.ts +104 -0
  39. package/src/checks/liquid-html-syntax-error/checks/InvalidOutputPush.ts +39 -0
  40. package/src/checks/liquid-html-syntax-error/checks/InvalidTagSyntax.spec.ts +86 -2
  41. package/src/checks/liquid-html-syntax-error/checks/InvalidTagSyntax.ts +1 -1
  42. package/src/checks/liquid-html-syntax-error/index.ts +19 -0
  43. package/src/checks/partial-call-arguments/extract-undefined-variables.spec.ts +218 -0
  44. package/src/checks/{metadata-params → partial-call-arguments}/extract-undefined-variables.ts +31 -6
  45. package/src/checks/partial-call-arguments/index.spec.ts +436 -0
  46. package/src/checks/{metadata-params → partial-call-arguments}/index.ts +18 -11
  47. package/src/checks/undefined-object/index.spec.ts +101 -0
  48. package/src/checks/unknown-property/index.spec.ts +42 -0
  49. package/src/checks/unknown-property/index.ts +24 -2
  50. package/src/checks/valid-frontmatter/index.spec.ts +666 -0
  51. package/src/checks/valid-frontmatter/index.ts +344 -0
  52. package/src/frontmatter/index.ts +9 -344
  53. package/src/checks/metadata-params/extract-undefined-variables.spec.ts +0 -115
  54. package/src/checks/metadata-params/index.spec.ts +0 -257
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PartialCallArguments = void 0;
4
+ const types_1 = require("../../types");
5
+ const platformos_common_1 = require("@platformos/platformos-common");
6
+ const vscode_uri_1 = require("vscode-uri");
7
+ const path_1 = require("../../path");
8
+ const extract_undefined_variables_1 = require("./extract-undefined-variables");
9
+ exports.PartialCallArguments = {
10
+ meta: {
11
+ code: 'PartialCallArguments',
12
+ aliases: ['MetadataParamsCheck'],
13
+ name: 'Partial Call Arguments',
14
+ docs: {
15
+ description: 'Ensures that all required arguments are passed at render/function call sites, and that no unknown arguments are passed. Required vs optional is determined from the {% doc %} block when present, or inferred from undefined variables in the partial source otherwise. Variables used with | default are treated as optional.',
16
+ recommended: true,
17
+ url: 'https://documentation.platformos.com/developer-guide/platformos-check/checks/partial-call-arguments',
18
+ },
19
+ type: types_1.SourceCodeType.LiquidHtml,
20
+ severity: types_1.Severity.ERROR,
21
+ schema: {},
22
+ targets: [],
23
+ },
24
+ create(context) {
25
+ const locator = new platformos_common_1.DocumentsLocator(context.fs);
26
+ const validate = async (nodeType, targetFile, args, position) => {
27
+ const locatedFile = await locator.locate(vscode_uri_1.URI.parse(context.config.rootUri), nodeType, targetFile);
28
+ if (!locatedFile) {
29
+ return;
30
+ }
31
+ const source = await context.fs.readFile(locatedFile);
32
+ const relativePath = (0, path_1.relative)(locatedFile, context.config.rootUri);
33
+ let requiredParams;
34
+ let allowedParams;
35
+ // Check for @doc tag first — if present, it's the complete param list
36
+ const docDef = context.getDocDefinition
37
+ ? await context.getDocDefinition(relativePath)
38
+ : undefined;
39
+ if (docDef?.liquidDoc?.parameters) {
40
+ const globalObjectNames = [];
41
+ if (context.platformosDocset) {
42
+ const objects = await context.platformosDocset.objects();
43
+ for (const obj of objects) {
44
+ if (!obj.access || obj.access.global === true || obj.access.template.length > 0) {
45
+ globalObjectNames.push(obj.name);
46
+ }
47
+ }
48
+ }
49
+ const { required: undefinedRequiredVars, optional: undefinedOptionalVars } = (0, extract_undefined_variables_1.extractUndefinedVariables)(source, globalObjectNames);
50
+ const undefinedVars = [...undefinedRequiredVars, ...undefinedOptionalVars];
51
+ const docRequiredNames = docDef.liquidDoc.parameters
52
+ .filter((p) => p.required)
53
+ .map((p) => p.name);
54
+ requiredParams = docRequiredNames.filter((name) => undefinedVars.includes(name));
55
+ allowedParams = docDef.liquidDoc.parameters.map((p) => p.name);
56
+ }
57
+ else {
58
+ // No @doc — infer required vs optional from undefined variables in the source.
59
+ // Variables used with `| default` are treated as optional.
60
+ const globalObjectNames = [];
61
+ if (context.platformosDocset) {
62
+ const objects = await context.platformosDocset.objects();
63
+ for (const obj of objects) {
64
+ if (!obj.access || obj.access.global === true || obj.access.template.length > 0) {
65
+ globalObjectNames.push(obj.name);
66
+ }
67
+ }
68
+ }
69
+ if (relativePath.includes('views/partials/') || relativePath.includes('/lib/')) {
70
+ if (!globalObjectNames.includes('app')) {
71
+ globalObjectNames.push('app');
72
+ }
73
+ }
74
+ const { required: requiredVars, optional: optionalVars } = (0, extract_undefined_variables_1.extractUndefinedVariables)(source, globalObjectNames);
75
+ if (requiredVars.length === 0 && optionalVars.length === 0)
76
+ return;
77
+ requiredParams = requiredVars;
78
+ allowedParams = [...requiredVars, ...optionalVars];
79
+ }
80
+ args
81
+ .filter((arg) => !allowedParams.includes(arg.name))
82
+ .forEach((arg) => {
83
+ context.report({
84
+ message: `Unknown parameter ${arg.name} passed to ${nodeType} call`,
85
+ startIndex: arg.position.start,
86
+ endIndex: arg.position.end,
87
+ });
88
+ });
89
+ requiredParams
90
+ .filter((param) => !args.find((arg) => arg.name === param))
91
+ .forEach((param) => {
92
+ context.report({
93
+ message: `Required parameter ${param} must be passed to ${nodeType} call`,
94
+ startIndex: position.start,
95
+ endIndex: position.end,
96
+ });
97
+ });
98
+ };
99
+ return {
100
+ async RenderMarkup(node) {
101
+ const targetFile = 'value' in node.partial ? node.partial.value : node.partial.name;
102
+ if (!targetFile) {
103
+ return;
104
+ }
105
+ await validate('render', targetFile, node.args, node.position);
106
+ },
107
+ async FunctionMarkup(node) {
108
+ const targetFile = 'value' in node.partial ? node.partial.value : node.partial.name;
109
+ if (!targetFile) {
110
+ return;
111
+ }
112
+ await validate('function', targetFile, node.args, node.position);
113
+ },
114
+ };
115
+ },
116
+ };
117
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checks/partial-call-arguments/index.ts"],"names":[],"mappings":"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"}
@@ -207,6 +207,16 @@ exports.UnknownProperty = {
207
207
  }
208
208
  }
209
209
  }
210
+ // {% function object = 'partial_name', arg: value %}
211
+ // The function tag reassigns the variable to the return value of the partial,
212
+ // which has an unknown shape. Close any tracked shape so we don't false-positive.
213
+ if (isLiquidTagFunction(node)) {
214
+ const markup = node.markup;
215
+ const variableName = markup.name.name;
216
+ if (variableName) {
217
+ closeShapeRange(variableName, node.position.start);
218
+ }
219
+ }
210
220
  // {% hash_assign x["key"] = value %} or {% hash_assign x["a"]["b"] = value %}
211
221
  if (isLiquidTagHashAssign(node)) {
212
222
  const markup = node.markup;
@@ -419,6 +429,9 @@ function isLiquidTagParseJson(node) {
419
429
  function isLiquidTagGraphQL(node) {
420
430
  return node.name === liquid_html_parser_1.NamedTags.graphql && typeof node.markup !== 'string';
421
431
  }
432
+ function isLiquidTagFunction(node) {
433
+ return node.name === liquid_html_parser_1.NamedTags.function && typeof node.markup !== 'string';
434
+ }
422
435
  function isLiquidTagHashAssign(node) {
423
436
  return node.name === liquid_html_parser_1.NamedTags.hash_assign && typeof node.markup !== 'string';
424
437
  }
@@ -454,10 +467,17 @@ function inferShapeFromLiteralNode(node) {
454
467
  if (node.type === liquid_html_parser_1.NodeTypes.JsonHashLiteral) {
455
468
  const properties = new Map();
456
469
  for (const entry of node.entries) {
457
- // Keys are VariableLookup nodes where the name is the key string
470
+ // Keys can be VariableLookup nodes (bare keys) or String nodes (quoted keys)
471
+ let keyName;
458
472
  if (entry.key.type === liquid_html_parser_1.NodeTypes.VariableLookup && entry.key.name) {
473
+ keyName = entry.key.name;
474
+ }
475
+ else if (entry.key.type === liquid_html_parser_1.NodeTypes.String) {
476
+ keyName = entry.key.value;
477
+ }
478
+ if (keyName) {
459
479
  const valueShape = inferShapeFromExpressionNode(entry.value);
460
- properties.set(entry.key.name, valueShape ?? { kind: 'primitive' });
480
+ properties.set(keyName, valueShape ?? { kind: 'primitive' });
461
481
  }
462
482
  }
463
483
  return { kind: 'object', properties };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checks/unknown-property/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checks/unknown-property/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { LiquidCheckDefinition } from '../../types';
2
+ export declare const ValidFrontmatter: LiquidCheckDefinition;
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidFrontmatter = void 0;
4
+ const yaml_1 = require("yaml");
5
+ const types_1 = require("../../types");
6
+ const platformos_common_1 = require("@platformos/platformos-common");
7
+ const file_utils_1 = require("../../utils/file-utils");
8
+ exports.ValidFrontmatter = {
9
+ meta: {
10
+ code: 'ValidFrontmatter',
11
+ name: 'Valid Frontmatter',
12
+ docs: {
13
+ description: 'Validates YAML frontmatter properties (required fields, allowed values, deprecated keys) for known platformOS file types.',
14
+ recommended: true,
15
+ url: undefined,
16
+ },
17
+ type: types_1.SourceCodeType.LiquidHtml,
18
+ severity: types_1.Severity.WARNING,
19
+ schema: {},
20
+ targets: [],
21
+ },
22
+ create(context) {
23
+ return {
24
+ async onCodePathStart(file) {
25
+ const source = file.source;
26
+ if (/(?:^|\/)home\.html\.liquid$/.test(file.uri)) {
27
+ context.report({
28
+ message: "'home.html.liquid' is deprecated. Rename to 'index.html.liquid' to serve as the root page.",
29
+ startIndex: 0,
30
+ endIndex: 0,
31
+ });
32
+ }
33
+ // Locate the frontmatter block — may be preceded by whitespace
34
+ const trimmed = source.trimStart();
35
+ if (!trimmed.startsWith('---'))
36
+ return;
37
+ const leadingLen = source.length - trimmed.length;
38
+ const firstNewline = trimmed.indexOf('\n');
39
+ if (firstNewline === -1)
40
+ return;
41
+ const afterOpening = trimmed.slice(firstNewline + 1);
42
+ // The closing `---` may be the very first line of afterOpening (empty frontmatter)
43
+ // or may follow a newline (normal frontmatter with content).
44
+ let yamlBody;
45
+ if (afterOpening.startsWith('---')) {
46
+ yamlBody = '';
47
+ }
48
+ else {
49
+ const closeIdx = afterOpening.indexOf('\n---');
50
+ if (closeIdx === -1)
51
+ return;
52
+ yamlBody = afterOpening.slice(0, closeIdx);
53
+ }
54
+ // Absolute offset of the first character of yamlBody in source
55
+ const bodyOffset = leadingLen + firstNewline + 1;
56
+ const fileType = (0, platformos_common_1.getFileType)(file.uri);
57
+ const schema = (0, platformos_common_1.getFrontmatterSchema)(fileType);
58
+ if (!schema)
59
+ return;
60
+ // Parse YAML with position tracking (yaml v2 provides range arrays).
61
+ // Continue even when the document has parse errors — parseDocument is
62
+ // lenient and still builds a partial map for the valid pairs it finds.
63
+ // Normalize CRLF → LF so YAML values don't contain stray \r characters.
64
+ const doc = (0, yaml_1.parseDocument)(yamlBody.replace(/\r\n/g, '\n').replace(/\r/g, '\n'));
65
+ const entries = new Map();
66
+ // Only populate entries when the document parsed to a map (non-empty frontmatter).
67
+ // When frontmatter is empty (`---\n---\n`) doc.contents is null — entries stays empty
68
+ // and required-field validation below will still fire correctly.
69
+ if ((0, yaml_1.isMap)(doc.contents)) {
70
+ for (const pair of doc.contents.items) {
71
+ const keyNode = pair.key;
72
+ if (!(0, yaml_1.isScalar)(keyNode) || typeof keyNode.value !== 'string')
73
+ continue;
74
+ const [ks = 0, ke = 0] = keyNode.range ?? [];
75
+ const valNode = (0, yaml_1.isScalar)(pair.value) ? pair.value : undefined;
76
+ const jsValue = valNode?.value;
77
+ const [vs = 0, ve = 0] = valNode?.range ?? [];
78
+ entries.set(keyNode.value, {
79
+ jsValue,
80
+ absStart: bodyOffset + ks,
81
+ absEnd: bodyOffset + ke,
82
+ valueAbsStart: bodyOffset + vs,
83
+ valueAbsEnd: bodyOffset + ve,
84
+ });
85
+ }
86
+ }
87
+ const frontmatterStart = leadingLen; // position of opening `---`
88
+ // 1. Required field validation
89
+ for (const [fieldName, fieldSchema] of Object.entries(schema.fields)) {
90
+ if (fieldSchema.required && !entries.has(fieldName)) {
91
+ context.report({
92
+ message: `Missing required frontmatter field '${fieldName}' in ${schema.name} file`,
93
+ startIndex: frontmatterStart,
94
+ endIndex: frontmatterStart + 3,
95
+ });
96
+ }
97
+ }
98
+ // 2. Unrecognized key warnings
99
+ for (const [key, entry] of entries) {
100
+ if (!(key in schema.fields)) {
101
+ context.report({
102
+ message: `Unknown frontmatter field '${key}' in ${schema.name} file`,
103
+ startIndex: entry.absStart,
104
+ endIndex: entry.absEnd,
105
+ });
106
+ }
107
+ }
108
+ // 3. Deprecated field warnings
109
+ for (const [key, entry] of entries) {
110
+ const fieldSchema = schema.fields[key];
111
+ if (fieldSchema?.deprecated) {
112
+ context.report({
113
+ message: fieldSchema.deprecatedMessage ?? `'${key}' is deprecated`,
114
+ startIndex: entry.absStart,
115
+ endIndex: entry.absEnd,
116
+ });
117
+ }
118
+ }
119
+ // 4. Enum validation — allowed values are defined in the schema.
120
+ // Comparison is case-insensitive for string values: both the field value and
121
+ // each enum entry are lowercased before comparing, so `GET` matches `get` etc.
122
+ for (const [key, entry] of entries) {
123
+ const fieldSchema = schema.fields[key];
124
+ if (!fieldSchema?.enumValues)
125
+ continue;
126
+ const { jsValue, absStart, absEnd } = entry;
127
+ // Skip enum validation for Liquid expressions — they're dynamic and can't be statically checked.
128
+ if (typeof jsValue === 'string' && (0, platformos_common_1.containsLiquid)(jsValue))
129
+ continue;
130
+ const normalizedValue = typeof jsValue === 'string' ? jsValue.toLowerCase() : jsValue;
131
+ const matches = fieldSchema.enumValues.some((allowed) => typeof allowed === 'string'
132
+ ? allowed.toLowerCase() === normalizedValue
133
+ : allowed === normalizedValue);
134
+ if (!matches) {
135
+ context.report({
136
+ message: `Invalid value '${jsValue}' for '${key}'. Must be one of: ${fieldSchema.enumValues.join(', ')}`,
137
+ startIndex: absStart,
138
+ endIndex: absEnd,
139
+ });
140
+ }
141
+ }
142
+ // 5. Layout association validation (Page and Email).
143
+ // Both types share the primary `layout` key; deprecated aliases differ per type.
144
+ if (fileType === platformos_common_1.PlatformOSFileType.Page || fileType === platformos_common_1.PlatformOSFileType.Email) {
145
+ const deprecatedAlias = fileType === platformos_common_1.PlatformOSFileType.Page ? 'layout_name' : 'layout_path';
146
+ const layoutEntry = entries.get('layout') ?? entries.get(deprecatedAlias);
147
+ if (layoutEntry) {
148
+ if (layoutEntry.jsValue === false) {
149
+ // `layout: false` (YAML boolean) does NOT disable the layout — it falls back to the
150
+ // instance default. Use `layout: ''` to explicitly disable layout rendering.
151
+ context.report({
152
+ message: "`layout: false` falls back to the default layout. Use `layout: ''` to disable layout rendering.",
153
+ startIndex: layoutEntry.valueAbsStart,
154
+ endIndex: layoutEntry.valueAbsEnd,
155
+ suggest: [
156
+ {
157
+ message: "Replace with `layout: ''`",
158
+ fix: (corrector) => {
159
+ corrector.replace(layoutEntry.valueAbsStart, layoutEntry.valueAbsEnd, "''");
160
+ },
161
+ },
162
+ ],
163
+ });
164
+ }
165
+ else if (typeof layoutEntry.jsValue === 'string' &&
166
+ layoutEntry.jsValue !== '' &&
167
+ !(0, platformos_common_1.containsLiquid)(layoutEntry.jsValue)) {
168
+ await checkLayoutExists(layoutEntry.jsValue, layoutEntry, context);
169
+ }
170
+ }
171
+ }
172
+ // 6. Authorization policy association validation (Page)
173
+ if (fileType === platformos_common_1.PlatformOSFileType.Page) {
174
+ await checkNotificationArray(doc, bodyOffset, 'authorization_policies', `app/${platformos_common_1.FRONTMATTER_ASSOCIATION_DIRS['authorization_policies']}`, 'Authorization policy', context);
175
+ }
176
+ // 7. Notification association validation (FormConfiguration)
177
+ if (fileType === platformos_common_1.PlatformOSFileType.FormConfiguration) {
178
+ for (const [field, dir] of Object.entries(platformos_common_1.FRONTMATTER_ASSOCIATION_DIRS)) {
179
+ if (field === 'authorization_policies')
180
+ continue; // only on Page, handled above
181
+ await checkNotificationArray(doc, bodyOffset, field, `app/${dir}`, fieldLabel(field), context);
182
+ }
183
+ }
184
+ },
185
+ };
186
+ },
187
+ };
188
+ /**
189
+ * Checks each string item of a YAML sequence field against the filesystem.
190
+ *
191
+ * App-level items (e.g. `require_login`) are looked up at `{dir}/{name}.liquid`.
192
+ * Module-prefixed items (e.g. `modules/community/require_login`) are looked up
193
+ * at modules/{mod}/{public|private}/{moduleDir}/{name}.liquid where moduleDir
194
+ * is derived from dir by stripping the leading `app/` segment.
195
+ */
196
+ async function checkNotificationArray(doc, bodyOffset, fieldName, dir, label, context) {
197
+ if (!(0, yaml_1.isMap)(doc.contents))
198
+ return;
199
+ const pair = doc.contents.items.find((p) => (0, yaml_1.isScalar)(p.key) && p.key.value === fieldName);
200
+ if (!pair || !(0, yaml_1.isSeq)(pair.value))
201
+ return;
202
+ // Module-relative dir: strip leading 'app/' (e.g. 'app/authorization_policies' → 'authorization_policies')
203
+ const moduleDir = dir.slice('app/'.length);
204
+ for (const item of pair.value.items) {
205
+ if (!(0, yaml_1.isScalar)(item) || typeof item.value !== 'string')
206
+ continue;
207
+ const name = item.value;
208
+ if ((0, platformos_common_1.containsLiquid)(name))
209
+ continue;
210
+ const [is = 0, ie = 0] = item.range ?? [];
211
+ let exists;
212
+ if (name.startsWith('modules/')) {
213
+ const match = name.match(/^modules\/([^/]+)\/(.+)$/);
214
+ if (!match) {
215
+ exists = false;
216
+ }
217
+ else {
218
+ const [, mod, rest] = match;
219
+ exists =
220
+ (await (0, file_utils_1.doesFileExist)(context, `modules/${mod}/public/${moduleDir}/${rest}.liquid`)) ||
221
+ (await (0, file_utils_1.doesFileExist)(context, `modules/${mod}/private/${moduleDir}/${rest}.liquid`));
222
+ }
223
+ }
224
+ else {
225
+ exists = await (0, file_utils_1.doesFileExist)(context, `${dir}/${name}.liquid`);
226
+ }
227
+ if (!exists) {
228
+ context.report({
229
+ message: `${label} '${name}' does not exist`,
230
+ startIndex: bodyOffset + is,
231
+ endIndex: bodyOffset + ie,
232
+ });
233
+ }
234
+ }
235
+ }
236
+ /**
237
+ * Tries both `{base}.liquid` and `{base}.html.liquid` since layout files may
238
+ * carry a format extension (e.g. `application.html.liquid`).
239
+ */
240
+ async function layoutFileExists(context, base) {
241
+ return ((await (0, file_utils_1.doesFileExist)(context, `${base}.liquid`)) ||
242
+ (await (0, file_utils_1.doesFileExist)(context, `${base}.html.liquid`)));
243
+ }
244
+ async function checkLayoutExists(layoutName, entry, context) {
245
+ let exists;
246
+ if (layoutName.startsWith('modules/')) {
247
+ // modules/{mod}/rest → modules/{mod}/{public,private}/views/layouts/{rest}.{html.}liquid
248
+ const match = layoutName.match(/^modules\/([^/]+)\/(.+)$/);
249
+ if (!match)
250
+ return;
251
+ const [, mod, rest] = match;
252
+ exists =
253
+ (await layoutFileExists(context, `modules/${mod}/public/views/layouts/${rest}`)) ||
254
+ (await layoutFileExists(context, `modules/${mod}/private/views/layouts/${rest}`));
255
+ }
256
+ else {
257
+ exists = await layoutFileExists(context, `app/views/layouts/${layoutName}`);
258
+ }
259
+ if (!exists) {
260
+ context.report({
261
+ message: `Layout '${layoutName}' does not exist`,
262
+ startIndex: entry.absStart,
263
+ endIndex: entry.absEnd,
264
+ });
265
+ }
266
+ }
267
+ function fieldLabel(field) {
268
+ switch (field) {
269
+ case 'email_notifications':
270
+ return 'Email notification';
271
+ case 'sms_notifications':
272
+ return 'SMS notification';
273
+ case 'api_call_notifications':
274
+ return 'API call notification';
275
+ default:
276
+ return field;
277
+ }
278
+ }
279
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checks/valid-frontmatter/index.ts"],"names":[],"mappings":"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"}
@@ -1,59 +1 @@
1
- /**
2
- * Frontmatter schema definitions for platformOS Liquid file types.
3
- *
4
- * Each Liquid file type in platformOS has a YAML frontmatter section at the
5
- * top of the file that configures server-side behaviour. The schema for each
6
- * type is different — Pages have slug/layout, Emails have to/from/subject, etc.
7
- *
8
- * This module provides:
9
- * - FrontmatterFieldSchema — type definition for a single field
10
- * - FrontmatterSchema — type definition for a complete schema
11
- * - FRONTMATTER_SCHEMAS — per-type schemas keyed by PlatformOSFileType
12
- * - getFrontmatterSchema() — convenience lookup that returns undefined for
13
- * types without a frontmatter schema
14
- */
15
- import { PlatformOSFileType } from '@platformos/platformos-common';
16
- export type FrontmatterFieldType = 'string' | 'boolean' | 'integer' | 'number' | 'array' | 'object';
17
- export interface FrontmatterFieldSchema {
18
- /** The expected YAML type(s) for this field's value. */
19
- type: FrontmatterFieldType | FrontmatterFieldType[];
20
- /** Whether this field must be present. */
21
- required?: boolean;
22
- /** Human-readable description of this field. */
23
- description?: string;
24
- /** Whether this field name is deprecated in favour of a newer one. */
25
- deprecated?: boolean;
26
- /** Message shown when this deprecated field is used. */
27
- deprecatedMessage?: string;
28
- }
29
- export interface FrontmatterSchema {
30
- /** Human-readable name of the file type, used in diagnostics. */
31
- name: string;
32
- /**
33
- * Known frontmatter fields.
34
- * Checks can use this to surface unknown keys or missing required keys.
35
- */
36
- fields: Record<string, FrontmatterFieldSchema>;
37
- /**
38
- * Whether fields not listed in `fields` are allowed without a warning.
39
- * Defaults to true — schemas are additive and may not be exhaustive.
40
- */
41
- allowAdditionalFields?: boolean;
42
- }
43
- /**
44
- * Per-type frontmatter schemas.
45
- *
46
- * Only Liquid file types are present here — GraphQL, YAML, and Asset types
47
- * do not use frontmatter.
48
- *
49
- * Field lists are based on real-world usage in platformOS apps. Set
50
- * `allowAdditionalFields: true` (the default) everywhere so that apps using
51
- * custom/undocumented keys don't get false-positive warnings until the schemas
52
- * are finalised.
53
- */
54
- export declare const FRONTMATTER_SCHEMAS: Partial<Record<PlatformOSFileType, FrontmatterSchema>>;
55
- /**
56
- * Returns the frontmatter schema for a given file type, or undefined if no
57
- * schema is defined for that type (e.g. GraphQL, YAML, Asset types).
58
- */
59
- export declare function getFrontmatterSchema(fileType: PlatformOSFileType | undefined): FrontmatterSchema | undefined;
1
+ export { type FrontmatterFieldType, type FrontmatterFieldSchema, type FrontmatterSchema, FRONTMATTER_SCHEMAS, getFrontmatterSchema, } from '@platformos/platformos-common';