@platformos/platformos-common 0.0.15 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/documents-locator/DocumentsLocator.d.ts +2 -2
- package/dist/documents-locator/DocumentsLocator.js +9 -14
- package/dist/documents-locator/DocumentsLocator.js.map +1 -1
- package/dist/frontmatter.d.ts +75 -0
- package/dist/frontmatter.js +487 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/path-utils.d.ts +34 -0
- package/dist/path-utils.js +40 -0
- package/dist/path-utils.js.map +1 -1
- package/dist/route-table/RouteTable.d.ts +26 -0
- package/dist/route-table/RouteTable.js +18 -1
- package/dist/route-table/RouteTable.js.map +1 -1
- package/dist/route-table/index.d.ts +1 -1
- package/dist/route-table/index.js +2 -1
- package/dist/route-table/index.js.map +1 -1
- package/dist/translation-provider/TranslationProvider.d.ts +10 -1
- package/dist/translation-provider/TranslationProvider.js +32 -8
- package/dist/translation-provider/TranslationProvider.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/documents-locator/DocumentsLocator.ts +10 -21
- package/src/frontmatter.ts +533 -0
- package/src/index.ts +1 -0
- package/src/path-utils.ts +55 -0
- package/src/route-table/RouteTable.ts +19 -2
- package/src/route-table/index.ts +1 -1
- package/src/translation-provider/TranslationProvider.ts +37 -15
package/CHANGELOG.md
CHANGED
|
@@ -13,7 +13,6 @@ export declare class DocumentsLocator {
|
|
|
13
13
|
private readonly fs;
|
|
14
14
|
constructor(fs: AbstractFileSystem);
|
|
15
15
|
private isFile;
|
|
16
|
-
private parseModulePath;
|
|
17
16
|
private getSearchPaths;
|
|
18
17
|
private locateFile;
|
|
19
18
|
private listFiles;
|
|
@@ -26,7 +25,8 @@ export declare class DocumentsLocator {
|
|
|
26
25
|
* concrete directory prefixes by enumerating subdirectories at each dynamic
|
|
27
26
|
* segment. Static segments pass through unchanged.
|
|
28
27
|
*
|
|
29
|
-
* Results are cached per (rootUri, searchPath) and capped at
|
|
28
|
+
* Results are cached per (rootUri, searchPath) and capped at
|
|
29
|
+
* MAX_DYNAMIC_PATH_EXPANSIONS entries per dynamic segment.
|
|
30
30
|
*/
|
|
31
31
|
private expandDynamicPath;
|
|
32
32
|
/**
|
|
@@ -29,6 +29,8 @@ async function loadSearchPaths(fs, rootUri) {
|
|
|
29
29
|
return null;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
+
/** Maximum number of concrete paths generated by a single dynamic search-path expansion. */
|
|
33
|
+
const MAX_DYNAMIC_PATH_EXPANSIONS = 100;
|
|
32
34
|
class DocumentsLocator {
|
|
33
35
|
constructor(fs) {
|
|
34
36
|
this.fs = fs;
|
|
@@ -42,14 +44,6 @@ class DocumentsLocator {
|
|
|
42
44
|
return false;
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
|
-
parseModulePath(fileName) {
|
|
46
|
-
if (!fileName.startsWith('modules/')) {
|
|
47
|
-
return { isModule: false, key: fileName };
|
|
48
|
-
}
|
|
49
|
-
const [, moduleName, ...rest] = fileName.split('/');
|
|
50
|
-
const key = rest.join('/');
|
|
51
|
-
return moduleName ? { isModule: true, moduleName, key } : { isModule: false, key: fileName };
|
|
52
|
-
}
|
|
53
47
|
getSearchPaths(type, moduleName) {
|
|
54
48
|
const fileType = {
|
|
55
49
|
partial: path_utils_1.PlatformOSFileType.Partial,
|
|
@@ -59,7 +53,7 @@ class DocumentsLocator {
|
|
|
59
53
|
return moduleName ? (0, path_utils_1.getModulePaths)(fileType, moduleName) : (0, path_utils_1.getAppPaths)(fileType);
|
|
60
54
|
}
|
|
61
55
|
async locateFile(rootUri, fileName, type) {
|
|
62
|
-
const parsed =
|
|
56
|
+
const parsed = (0, path_utils_1.parseModulePrefix)(fileName);
|
|
63
57
|
const searchPaths = this.getSearchPaths(type, parsed.isModule ? parsed.moduleName : undefined);
|
|
64
58
|
let targetFile = parsed.key;
|
|
65
59
|
if (type === 'partial') {
|
|
@@ -77,7 +71,7 @@ class DocumentsLocator {
|
|
|
77
71
|
return undefined;
|
|
78
72
|
}
|
|
79
73
|
async listFiles(rootUri, filePrefix, type) {
|
|
80
|
-
const parsed =
|
|
74
|
+
const parsed = (0, path_utils_1.parseModulePrefix)(filePrefix);
|
|
81
75
|
const searchPaths = this.getSearchPaths(type, parsed.isModule ? parsed.moduleName : undefined);
|
|
82
76
|
const results = new Set();
|
|
83
77
|
const matchesType = (name) => {
|
|
@@ -149,7 +143,8 @@ class DocumentsLocator {
|
|
|
149
143
|
* concrete directory prefixes by enumerating subdirectories at each dynamic
|
|
150
144
|
* segment. Static segments pass through unchanged.
|
|
151
145
|
*
|
|
152
|
-
* Results are cached per (rootUri, searchPath) and capped at
|
|
146
|
+
* Results are cached per (rootUri, searchPath) and capped at
|
|
147
|
+
* MAX_DYNAMIC_PATH_EXPANSIONS entries per dynamic segment.
|
|
153
148
|
*/
|
|
154
149
|
async expandDynamicPath(rootUri, searchPath) {
|
|
155
150
|
const segments = searchPath.split('/');
|
|
@@ -173,10 +168,10 @@ class DocumentsLocator {
|
|
|
173
168
|
}
|
|
174
169
|
for (const sub of subdirs) {
|
|
175
170
|
nextPrefixes.push(prefix ? `${prefix}/${sub}` : sub);
|
|
176
|
-
if (nextPrefixes.length >=
|
|
171
|
+
if (nextPrefixes.length >= MAX_DYNAMIC_PATH_EXPANSIONS)
|
|
177
172
|
break;
|
|
178
173
|
}
|
|
179
|
-
if (nextPrefixes.length >=
|
|
174
|
+
if (nextPrefixes.length >= MAX_DYNAMIC_PATH_EXPANSIONS)
|
|
180
175
|
break;
|
|
181
176
|
}
|
|
182
177
|
prefixes = nextPrefixes;
|
|
@@ -225,7 +220,7 @@ class DocumentsLocator {
|
|
|
225
220
|
* Returns undefined for theme_render_rc (ambiguous search path) and asset.
|
|
226
221
|
*/
|
|
227
222
|
locateDefault(rootUri, nodeName, fileName) {
|
|
228
|
-
const parsed =
|
|
223
|
+
const parsed = (0, path_utils_1.parseModulePrefix)(fileName);
|
|
229
224
|
let basePath;
|
|
230
225
|
let ext;
|
|
231
226
|
switch (nodeName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentsLocator.js","sourceRoot":"","sources":["../../src/documents-locator/DocumentsLocator.ts"],"names":[],"mappings":";;;;;;AAkBA,0CAgBC;AAlCD,sDAA2B;AAC3B,8DAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"DocumentsLocator.js","sourceRoot":"","sources":["../../src/documents-locator/DocumentsLocator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
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 './path-utils';
|
|
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
|
+
* Allowed values for this field. When set, a validator should warn if the
|
|
30
|
+
* field value is not one of these entries.
|
|
31
|
+
*/
|
|
32
|
+
enumValues?: (string | number)[];
|
|
33
|
+
}
|
|
34
|
+
export interface FrontmatterSchema {
|
|
35
|
+
/** Human-readable name of the file type, used in diagnostics. */
|
|
36
|
+
name: string;
|
|
37
|
+
/**
|
|
38
|
+
* Known frontmatter fields.
|
|
39
|
+
* Checks can use this to surface unknown keys or missing required keys.
|
|
40
|
+
* Any key not listed here will produce an "unknown field" warning.
|
|
41
|
+
*/
|
|
42
|
+
fields: Record<string, FrontmatterFieldSchema>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Per-type frontmatter schemas.
|
|
46
|
+
*
|
|
47
|
+
* Only Liquid file types are present here — GraphQL, YAML, and Asset types
|
|
48
|
+
* do not use frontmatter.
|
|
49
|
+
*
|
|
50
|
+
* Field lists are derived from the server-side converter files in
|
|
51
|
+
* app/services/app_builder/converters/. Enum constraints mirror server validations.
|
|
52
|
+
* Unknown keys always produce a warning; file types with arbitrary frontmatter
|
|
53
|
+
* (e.g. Migration) are omitted so no validation runs for them.
|
|
54
|
+
*/
|
|
55
|
+
export declare const FRONTMATTER_SCHEMAS: Partial<Record<PlatformOSFileType, FrontmatterSchema>>;
|
|
56
|
+
/**
|
|
57
|
+
* Returns the frontmatter schema for a given file type, or undefined if no
|
|
58
|
+
* schema is defined for that type (e.g. GraphQL, YAML, Asset types).
|
|
59
|
+
*/
|
|
60
|
+
export declare function getFrontmatterSchema(fileType: PlatformOSFileType | undefined): FrontmatterSchema | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Maps frontmatter list-field names to their canonical app-relative directory.
|
|
63
|
+
*
|
|
64
|
+
* Derived from FILE_TYPE_DIRS[type][0] so it always stays in sync with the
|
|
65
|
+
* single source of truth in path-utils.ts.
|
|
66
|
+
*
|
|
67
|
+
* Used by both the ValidFrontmatter check (file-existence validation) and the
|
|
68
|
+
* FrontmatterDefinitionProvider (go-to-definition) to resolve association paths.
|
|
69
|
+
*/
|
|
70
|
+
export declare const FRONTMATTER_ASSOCIATION_DIRS: Readonly<Record<string, string>>;
|
|
71
|
+
/**
|
|
72
|
+
* Returns true if the value contains a Liquid output tag (`{{`) or tag (`{%`).
|
|
73
|
+
* Used to skip static validation of dynamic frontmatter values.
|
|
74
|
+
*/
|
|
75
|
+
export declare function containsLiquid(value: string): boolean;
|