@platformos/platformos-common 0.0.8 → 0.0.9

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @platformos/platformos-common
2
2
 
3
+ ## 0.0.9
4
+
5
+ ### Patch Changes
6
+
7
+ - Beta release
8
+
3
9
  ## 0.0.8
4
10
 
5
11
  ### Patch Changes
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DocumentsLocator = void 0;
4
4
  const AbstractFileSystem_1 = require("../AbstractFileSystem");
5
+ const path_utils_1 = require("../path-utils");
5
6
  const vscode_uri_1 = require("vscode-uri");
6
7
  class DocumentsLocator {
7
8
  constructor(fs) {
@@ -24,43 +25,12 @@ class DocumentsLocator {
24
25
  return moduleName ? { isModule: true, moduleName, key } : { isModule: false, key: fileName };
25
26
  }
26
27
  getSearchPaths(type, moduleName) {
27
- if (!moduleName) {
28
- switch (type) {
29
- case 'partial':
30
- return ['app/views/partials', 'app/lib'];
31
- case 'graphql':
32
- return ['app/graphql'];
33
- case 'asset':
34
- return ['app/assets'];
35
- }
36
- }
37
- switch (type) {
38
- case 'partial':
39
- return [
40
- `app/modules/${moduleName}/public/views/partials`,
41
- `app/modules/${moduleName}/private/views/partials`,
42
- `app/modules/${moduleName}/public/lib`,
43
- `app/modules/${moduleName}/private/lib`,
44
- `modules/${moduleName}/public/views/partials`,
45
- `modules/${moduleName}/private/views/partials`,
46
- `modules/${moduleName}/public/lib`,
47
- `modules/${moduleName}/private/lib`,
48
- ];
49
- case 'graphql':
50
- return [
51
- `app/modules/${moduleName}/public/graphql`,
52
- `app/modules/${moduleName}/private/graphql`,
53
- `modules/${moduleName}/public/graphql`,
54
- `modules/${moduleName}/private/graphql`,
55
- ];
56
- case 'asset':
57
- return [
58
- `app/modules/${moduleName}/public/assets`,
59
- `app/modules/${moduleName}/private/assets`,
60
- `modules/${moduleName}/public/assets`,
61
- `modules/${moduleName}/private/assets`,
62
- ];
63
- }
28
+ const fileType = {
29
+ partial: path_utils_1.PlatformOSFileType.Partial,
30
+ graphql: path_utils_1.PlatformOSFileType.GraphQL,
31
+ asset: path_utils_1.PlatformOSFileType.Asset,
32
+ }[type];
33
+ return moduleName ? (0, path_utils_1.getModulePaths)(fileType, moduleName) : (0, path_utils_1.getAppPaths)(fileType);
64
34
  }
65
35
  async locateFile(rootUri, fileName, type) {
66
36
  const parsed = this.parseModulePath(fileName);
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentsLocator.js","sourceRoot":"","sources":["../../src/documents-locator/DocumentsLocator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DocumentsLocator.js","sourceRoot":"","sources":["../../src/documents-locator/DocumentsLocator.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,97 @@
1
1
  /**
2
- * Utility functions for identifying platformOS file types based on their paths
2
+ * Utility functions for identifying platformOS file types based on their paths.
3
+ *
4
+ * Architecture:
5
+ * - FILE_TYPE_DIRS is the single source of truth for all platformOS directory names
6
+ * - getAppPaths() and getModulePaths() generate concrete search paths from FILE_TYPE_DIRS
7
+ * - TYPE_MATCHERS pre-compiles regexes for fast URI classification
8
+ * - getFileType() classifies any URI to a PlatformOSFileType
9
+ * - isPage(), isLayout(), isPartial() etc. are convenience wrappers around getFileType()
10
+ *
11
+ * Pattern precision: each type uses exact path segment patterns (/app/{dir}/ or
12
+ * /(public|private)/{dir}/) so that nested paths don't produce false positives.
13
+ * For example, app/lib/smses/file.liquid is correctly identified as Partial
14
+ * (matches /app/lib/), not Sms (does not match /app/smses/).
3
15
  */
4
16
  import { UriString } from './AbstractFileSystem';
5
17
  /**
6
- * Checks if a URI points to a partial file.
7
- * Partials can be located in:
8
- * - app/lib
9
- * - app/views/partials
10
- * - app/modules/{moduleName}/public/lib
11
- * - app/modules/{moduleName}/private/lib
12
- * - app/modules/{moduleName}/public/views/partials
13
- * - app/modules/{moduleName}/private/views/partials
14
- * - modules/{moduleName}/public/lib
15
- * - modules/{moduleName}/private/lib
16
- * - modules/{moduleName}/public/views/partials
17
- * - modules/{moduleName}/private/views/partials
18
+ * File types that exist in a platformOS app, each mapping to one or more
19
+ * canonical directory names relative to the app root or module access level.
18
20
  */
19
- export declare function isPartial(uri: UriString): boolean;
21
+ export declare enum PlatformOSFileType {
22
+ Page = "Page",
23
+ Layout = "Layout",
24
+ Partial = "Partial",
25
+ Authorization = "Authorization",
26
+ Email = "Email",
27
+ ApiCall = "ApiCall",
28
+ Sms = "Sms",
29
+ Migration = "Migration",
30
+ GraphQL = "GraphQL",
31
+ Asset = "Asset"
32
+ }
20
33
  /**
21
- * Checks if a URI points to a page file.
22
- * Pages are located in app/views/pages
34
+ * The single source of truth for the platformOS directory structure.
35
+ *
36
+ * Maps each file type to its canonical directory name(s) relative to:
37
+ * - the app root: app/{dir}/
38
+ * - a module access level: modules/{name}/(public|private)/{dir}/
39
+ * - a nested module access level: app/modules/{name}/(public|private)/{dir}/
40
+ *
41
+ * Types with multiple dirs (e.g. Partial) will match any of their dirs.
42
+ * The first matching type wins, so order of evaluation matters for overlapping
43
+ * paths — but exact segment matching means dirs don't overlap in practice.
23
44
  */
24
- export declare function isPage(uri: UriString): boolean;
45
+ export declare const FILE_TYPE_DIRS: Readonly<Record<PlatformOSFileType, readonly string[]>>;
25
46
  /**
26
- * Checks if a URI points to a layout file.
27
- * Layouts are located in app/views/layouts
47
+ * Returns the PlatformOSFileType for the given URI, or undefined if the URI
48
+ * does not belong to any recognized platformOS directory.
49
+ *
50
+ * @example
51
+ * getFileType('file:///root/app/lib/smses/notify.liquid') // → PlatformOSFileType.Partial
52
+ * getFileType('file:///root/app/smses/notify.liquid') // → PlatformOSFileType.Sms
53
+ * getFileType('file:///root/modules/core/generators/templates/lib/create.liquid') // → undefined
28
54
  */
29
- export declare function isLayout(uri: UriString): boolean;
55
+ export declare function getFileType(uri: UriString): PlatformOSFileType | undefined;
56
+ /**
57
+ * Returns app-level search paths for a file type (relative to project root).
58
+ *
59
+ * @example
60
+ * getAppPaths(PlatformOSFileType.Partial) // → ['app/views/partials', 'app/lib']
61
+ * getAppPaths(PlatformOSFileType.GraphQL) // → ['app/graphql']
62
+ */
63
+ export declare function getAppPaths(type: PlatformOSFileType): string[];
30
64
  /**
31
- * Legacy Shopify terminology - use isPartial instead
32
- * @deprecated Use isPartial instead
65
+ * Returns all module search paths for a file type and module name, covering
66
+ * both app/modules/{name}/... and modules/{name}/... roots, and both
67
+ * public and private access levels (relative to project root).
68
+ *
69
+ * @example
70
+ * getModulePaths(PlatformOSFileType.Partial, 'core') // → [
71
+ * 'app/modules/core/public/views/partials',
72
+ * 'app/modules/core/private/views/partials',
73
+ * 'modules/core/public/views/partials',
74
+ * 'modules/core/private/views/partials',
75
+ * 'app/modules/core/public/lib',
76
+ * 'app/modules/core/private/lib',
77
+ * 'modules/core/public/lib',
78
+ * 'modules/core/private/lib',
79
+ * ]
33
80
  */
81
+ export declare function getModulePaths(type: PlatformOSFileType, moduleName: string): string[];
82
+ /**
83
+ * Returns true if the URI belongs to a recognized platformOS Liquid directory
84
+ * and should be linted. Files outside known directories (e.g. generator
85
+ * templates, build artifacts) return false and are excluded from linting.
86
+ */
87
+ export declare function isKnownLiquidFile(uri: UriString): boolean;
88
+ export declare function isPartial(uri: UriString): boolean;
89
+ export declare function isPage(uri: UriString): boolean;
90
+ export declare function isLayout(uri: UriString): boolean;
91
+ export declare function isAuthorization(uri: UriString): boolean;
92
+ export declare function isEmail(uri: UriString): boolean;
93
+ export declare function isApiCall(uri: UriString): boolean;
94
+ export declare function isSms(uri: UriString): boolean;
95
+ export declare function isMigration(uri: UriString): boolean;
96
+ /** @deprecated Use isPartial instead */
34
97
  export declare const isSnippet: typeof isPartial;
@@ -1,46 +1,189 @@
1
1
  "use strict";
2
2
  /**
3
- * Utility functions for identifying platformOS file types based on their paths
3
+ * Utility functions for identifying platformOS file types based on their paths.
4
+ *
5
+ * Architecture:
6
+ * - FILE_TYPE_DIRS is the single source of truth for all platformOS directory names
7
+ * - getAppPaths() and getModulePaths() generate concrete search paths from FILE_TYPE_DIRS
8
+ * - TYPE_MATCHERS pre-compiles regexes for fast URI classification
9
+ * - getFileType() classifies any URI to a PlatformOSFileType
10
+ * - isPage(), isLayout(), isPartial() etc. are convenience wrappers around getFileType()
11
+ *
12
+ * Pattern precision: each type uses exact path segment patterns (/app/{dir}/ or
13
+ * /(public|private)/{dir}/) so that nested paths don't produce false positives.
14
+ * For example, app/lib/smses/file.liquid is correctly identified as Partial
15
+ * (matches /app/lib/), not Sms (does not match /app/smses/).
4
16
  */
5
17
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isSnippet = void 0;
18
+ exports.isSnippet = exports.FILE_TYPE_DIRS = exports.PlatformOSFileType = void 0;
19
+ exports.getFileType = getFileType;
20
+ exports.getAppPaths = getAppPaths;
21
+ exports.getModulePaths = getModulePaths;
22
+ exports.isKnownLiquidFile = isKnownLiquidFile;
7
23
  exports.isPartial = isPartial;
8
24
  exports.isPage = isPage;
9
25
  exports.isLayout = isLayout;
26
+ exports.isAuthorization = isAuthorization;
27
+ exports.isEmail = isEmail;
28
+ exports.isApiCall = isApiCall;
29
+ exports.isSms = isSms;
30
+ exports.isMigration = isMigration;
10
31
  /**
11
- * Checks if a URI points to a partial file.
12
- * Partials can be located in:
13
- * - app/lib
14
- * - app/views/partials
15
- * - app/modules/{moduleName}/public/lib
16
- * - app/modules/{moduleName}/private/lib
17
- * - app/modules/{moduleName}/public/views/partials
18
- * - app/modules/{moduleName}/private/views/partials
19
- * - modules/{moduleName}/public/lib
20
- * - modules/{moduleName}/private/lib
21
- * - modules/{moduleName}/public/views/partials
22
- * - modules/{moduleName}/private/views/partials
32
+ * File types that exist in a platformOS app, each mapping to one or more
33
+ * canonical directory names relative to the app root or module access level.
23
34
  */
24
- function isPartial(uri) {
25
- return uri.includes('/lib/') || uri.includes('/views/partials');
35
+ var PlatformOSFileType;
36
+ (function (PlatformOSFileType) {
37
+ PlatformOSFileType["Page"] = "Page";
38
+ PlatformOSFileType["Layout"] = "Layout";
39
+ PlatformOSFileType["Partial"] = "Partial";
40
+ PlatformOSFileType["Authorization"] = "Authorization";
41
+ PlatformOSFileType["Email"] = "Email";
42
+ PlatformOSFileType["ApiCall"] = "ApiCall";
43
+ PlatformOSFileType["Sms"] = "Sms";
44
+ PlatformOSFileType["Migration"] = "Migration";
45
+ PlatformOSFileType["GraphQL"] = "GraphQL";
46
+ PlatformOSFileType["Asset"] = "Asset";
47
+ })(PlatformOSFileType || (exports.PlatformOSFileType = PlatformOSFileType = {}));
48
+ /**
49
+ * The single source of truth for the platformOS directory structure.
50
+ *
51
+ * Maps each file type to its canonical directory name(s) relative to:
52
+ * - the app root: app/{dir}/
53
+ * - a module access level: modules/{name}/(public|private)/{dir}/
54
+ * - a nested module access level: app/modules/{name}/(public|private)/{dir}/
55
+ *
56
+ * Types with multiple dirs (e.g. Partial) will match any of their dirs.
57
+ * The first matching type wins, so order of evaluation matters for overlapping
58
+ * paths — but exact segment matching means dirs don't overlap in practice.
59
+ */
60
+ exports.FILE_TYPE_DIRS = {
61
+ [PlatformOSFileType.Page]: ['views/pages'],
62
+ [PlatformOSFileType.Layout]: ['views/layouts'],
63
+ [PlatformOSFileType.Partial]: ['views/partials', 'lib'],
64
+ [PlatformOSFileType.Authorization]: ['authorization_policies'],
65
+ [PlatformOSFileType.Email]: ['emails'],
66
+ [PlatformOSFileType.ApiCall]: ['api_calls'],
67
+ [PlatformOSFileType.Sms]: ['smses'],
68
+ [PlatformOSFileType.Migration]: ['migrations'],
69
+ [PlatformOSFileType.GraphQL]: ['graphql'],
70
+ [PlatformOSFileType.Asset]: ['assets'],
71
+ };
72
+ /**
73
+ * Liquid-containing file types. GraphQL and Asset are excluded because they
74
+ * don't contain Liquid code and should not be passed to the Liquid linter.
75
+ */
76
+ const LIQUID_FILE_TYPES = new Set([
77
+ PlatformOSFileType.Page,
78
+ PlatformOSFileType.Layout,
79
+ PlatformOSFileType.Partial,
80
+ PlatformOSFileType.Authorization,
81
+ PlatformOSFileType.Email,
82
+ PlatformOSFileType.ApiCall,
83
+ PlatformOSFileType.Sms,
84
+ PlatformOSFileType.Migration,
85
+ ]);
86
+ /**
87
+ * Pre-compiled regex per file type, derived entirely from FILE_TYPE_DIRS.
88
+ *
89
+ * For each canonical dir, two pattern alternatives are generated:
90
+ * /app/{dir}/ — direct app-level path (e.g. /app/lib/)
91
+ * /(public|private)/{dir}/ — module path, covers both:
92
+ * modules/{name}/(public|private)/{dir}/
93
+ * app/modules/{name}/(public|private)/{dir}/
94
+ *
95
+ * Exact path segment matching prevents false positives:
96
+ * /app/lib/smses/file.liquid → matches /app/lib/ → Partial (NOT Sms)
97
+ * /app/smses/file.liquid → matches /app/smses/ → Sms (NOT Partial)
98
+ */
99
+ const TYPE_MATCHERS = new Map(Object.entries(exports.FILE_TYPE_DIRS).map(([type, dirs]) => {
100
+ const alternatives = dirs.flatMap((dir) => [`/app/${dir}/`, `/(public|private)/${dir}/`]);
101
+ return [type, new RegExp(alternatives.join('|'))];
102
+ }));
103
+ /**
104
+ * Returns the PlatformOSFileType for the given URI, or undefined if the URI
105
+ * does not belong to any recognized platformOS directory.
106
+ *
107
+ * @example
108
+ * getFileType('file:///root/app/lib/smses/notify.liquid') // → PlatformOSFileType.Partial
109
+ * getFileType('file:///root/app/smses/notify.liquid') // → PlatformOSFileType.Sms
110
+ * getFileType('file:///root/modules/core/generators/templates/lib/create.liquid') // → undefined
111
+ */
112
+ function getFileType(uri) {
113
+ for (const [type, re] of TYPE_MATCHERS) {
114
+ if (re.test(uri))
115
+ return type;
116
+ }
117
+ return undefined;
26
118
  }
27
119
  /**
28
- * Checks if a URI points to a page file.
29
- * Pages are located in app/views/pages
120
+ * Returns app-level search paths for a file type (relative to project root).
121
+ *
122
+ * @example
123
+ * getAppPaths(PlatformOSFileType.Partial) // → ['app/views/partials', 'app/lib']
124
+ * getAppPaths(PlatformOSFileType.GraphQL) // → ['app/graphql']
30
125
  */
31
- function isPage(uri) {
32
- return uri.includes('/views/pages');
126
+ function getAppPaths(type) {
127
+ return exports.FILE_TYPE_DIRS[type].map((dir) => `app/${dir}`);
33
128
  }
34
129
  /**
35
- * Checks if a URI points to a layout file.
36
- * Layouts are located in app/views/layouts
130
+ * Returns all module search paths for a file type and module name, covering
131
+ * both app/modules/{name}/... and modules/{name}/... roots, and both
132
+ * public and private access levels (relative to project root).
133
+ *
134
+ * @example
135
+ * getModulePaths(PlatformOSFileType.Partial, 'core') // → [
136
+ * 'app/modules/core/public/views/partials',
137
+ * 'app/modules/core/private/views/partials',
138
+ * 'modules/core/public/views/partials',
139
+ * 'modules/core/private/views/partials',
140
+ * 'app/modules/core/public/lib',
141
+ * 'app/modules/core/private/lib',
142
+ * 'modules/core/public/lib',
143
+ * 'modules/core/private/lib',
144
+ * ]
37
145
  */
38
- function isLayout(uri) {
39
- return uri.includes('/views/layouts');
146
+ function getModulePaths(type, moduleName) {
147
+ return exports.FILE_TYPE_DIRS[type].flatMap((dir) => [
148
+ `app/modules/${moduleName}/public/${dir}`,
149
+ `app/modules/${moduleName}/private/${dir}`,
150
+ `modules/${moduleName}/public/${dir}`,
151
+ `modules/${moduleName}/private/${dir}`,
152
+ ]);
40
153
  }
41
154
  /**
42
- * Legacy Shopify terminology - use isPartial instead
43
- * @deprecated Use isPartial instead
155
+ * Returns true if the URI belongs to a recognized platformOS Liquid directory
156
+ * and should be linted. Files outside known directories (e.g. generator
157
+ * templates, build artifacts) return false and are excluded from linting.
44
158
  */
159
+ function isKnownLiquidFile(uri) {
160
+ const type = getFileType(uri);
161
+ return type !== undefined && LIQUID_FILE_TYPES.has(type);
162
+ }
163
+ function isPartial(uri) {
164
+ return getFileType(uri) === PlatformOSFileType.Partial;
165
+ }
166
+ function isPage(uri) {
167
+ return getFileType(uri) === PlatformOSFileType.Page;
168
+ }
169
+ function isLayout(uri) {
170
+ return getFileType(uri) === PlatformOSFileType.Layout;
171
+ }
172
+ function isAuthorization(uri) {
173
+ return getFileType(uri) === PlatformOSFileType.Authorization;
174
+ }
175
+ function isEmail(uri) {
176
+ return getFileType(uri) === PlatformOSFileType.Email;
177
+ }
178
+ function isApiCall(uri) {
179
+ return getFileType(uri) === PlatformOSFileType.ApiCall;
180
+ }
181
+ function isSms(uri) {
182
+ return getFileType(uri) === PlatformOSFileType.Sms;
183
+ }
184
+ function isMigration(uri) {
185
+ return getFileType(uri) === PlatformOSFileType.Migration;
186
+ }
187
+ /** @deprecated Use isPartial instead */
45
188
  exports.isSnippet = isPartial;
46
189
  //# sourceMappingURL=path-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../src/path-utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAkBH,8BAEC;AAMD,wBAEC;AAMD,4BAEC;AAhCD;;;;;;;;;;;;;GAaG;AACH,SAAgB,SAAS,CAAC,GAAc;IACtC,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,GAAc;IACnC,OAAO,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,GAAc;IACrC,OAAO,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACU,QAAA,SAAS,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../src/path-utils.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,29 @@ export declare class TranslationProvider {
10
10
  private parseModuleKey;
11
11
  private getSearchPaths;
12
12
  findTranslationFile(rootUri: URI, translationKey: string, defaultLocale: string): Promise<[string | undefined, string | undefined]>;
13
+ /**
14
+ * Aggregates ALL translation files for `locale` within `translationBaseUri`.
15
+ *
16
+ * Covers two layouts:
17
+ * - Single file: `{base}/{locale}.yml`
18
+ * - Split files: `{base}/{locale}/*.yml`
19
+ *
20
+ * Only files whose first YAML key matches `locale` are included, so a file
21
+ * placed in the wrong directory (or accidentally containing a different
22
+ * locale) is silently ignored.
23
+ *
24
+ * @param contentOverride Optional function called before the filesystem is
25
+ * consulted. Return the file's source string to use it instead of the
26
+ * on-disk content, or `undefined` to fall through to the filesystem.
27
+ * Used by editor integrations to honour unsaved buffer changes.
28
+ */
29
+ loadAllTranslationsForBase(translationBaseUri: URI, locale: string, contentOverride?: (uri: string) => string | undefined): Promise<Record<string, any>>;
30
+ /**
31
+ * Parses a YAML translation file and returns its contents under the locale
32
+ * key. Returns `undefined` if the file cannot be parsed or if its first
33
+ * key does not match `expectedLocale` (guards against mis-placed files).
34
+ */
35
+ private parseTranslationFile;
36
+ private deepMerge;
13
37
  translate(rootUri: URI, translationKey: string, defaultLocale?: string): Promise<string | undefined>;
14
38
  }
@@ -92,6 +92,82 @@ class TranslationProvider {
92
92
  }
93
93
  return [undefined, undefined];
94
94
  }
95
+ /**
96
+ * Aggregates ALL translation files for `locale` within `translationBaseUri`.
97
+ *
98
+ * Covers two layouts:
99
+ * - Single file: `{base}/{locale}.yml`
100
+ * - Split files: `{base}/{locale}/*.yml`
101
+ *
102
+ * Only files whose first YAML key matches `locale` are included, so a file
103
+ * placed in the wrong directory (or accidentally containing a different
104
+ * locale) is silently ignored.
105
+ *
106
+ * @param contentOverride Optional function called before the filesystem is
107
+ * consulted. Return the file's source string to use it instead of the
108
+ * on-disk content, or `undefined` to fall through to the filesystem.
109
+ * Used by editor integrations to honour unsaved buffer changes.
110
+ */
111
+ async loadAllTranslationsForBase(translationBaseUri, locale, contentOverride) {
112
+ const merged = {};
113
+ const read = async (uri) => {
114
+ if (contentOverride) {
115
+ const buffered = contentOverride(uri);
116
+ if (buffered !== undefined)
117
+ return buffered;
118
+ }
119
+ return this.readFileIfExists(uri);
120
+ };
121
+ // Strategy A: single locale file ({base}/{locale}.yml)
122
+ const singleFileUri = vscode_uri_1.Utils.joinPath(translationBaseUri, `${locale}.yml`).toString();
123
+ const singleContent = await read(singleFileUri);
124
+ if (singleContent) {
125
+ const parsed = this.parseTranslationFile(singleContent, locale);
126
+ if (parsed)
127
+ this.deepMerge(merged, parsed);
128
+ }
129
+ // Strategy B: locale directory ({base}/{locale}/*.yml)
130
+ const localeDirUri = vscode_uri_1.Utils.joinPath(translationBaseUri, locale).toString();
131
+ const ymlFiles = await this.listYmlFiles(localeDirUri);
132
+ for (const fileUri of ymlFiles) {
133
+ const content = await read(fileUri);
134
+ if (content) {
135
+ const parsed = this.parseTranslationFile(content, locale);
136
+ if (parsed)
137
+ this.deepMerge(merged, parsed);
138
+ }
139
+ }
140
+ return merged;
141
+ }
142
+ /**
143
+ * Parses a YAML translation file and returns its contents under the locale
144
+ * key. Returns `undefined` if the file cannot be parsed or if its first
145
+ * key does not match `expectedLocale` (guards against mis-placed files).
146
+ */
147
+ parseTranslationFile(content, expectedLocale) {
148
+ try {
149
+ const data = js_yaml_1.default.load(content);
150
+ if (!data || typeof data !== 'object')
151
+ return undefined;
152
+ const firstKey = Object.keys(data)[0];
153
+ if (firstKey !== expectedLocale)
154
+ return undefined;
155
+ return data[firstKey] ?? undefined;
156
+ }
157
+ catch {
158
+ return undefined;
159
+ }
160
+ }
161
+ deepMerge(target, source) {
162
+ for (const [key, value] of Object.entries(source)) {
163
+ if (typeof value === 'object' && value !== null && typeof target[key] === 'object') {
164
+ this.deepMerge(target[key], value);
165
+ }
166
+ else {
167
+ target[key] = value;
168
+ }
169
+ }
170
+ }
95
171
  async translate(rootUri, translationKey, defaultLocale = 'en') {
96
172
  const [file, key] = await this.findTranslationFile(rootUri, translationKey, defaultLocale);
97
173
  if (!file || !key) {
@@ -1 +1 @@
1
- {"version":3,"file":"TranslationProvider.js","sourceRoot":"","sources":["../../src/translation-provider/TranslationProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TranslationProvider.js","sourceRoot":"","sources":["../../src/translation-provider/TranslationProvider.ts"],"names":[],"mappings":"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"}