@flyingrobots/bijou-i18n-tools-node 4.4.1 → 7.0.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.
package/README.md CHANGED
@@ -5,12 +5,57 @@ Node filesystem helpers for Bijou localization exchange workflows.
5
5
  `@flyingrobots/bijou-i18n-tools-node` builds on `@flyingrobots/bijou-i18n-tools` and provides:
6
6
 
7
7
  - reading and writing CSV/TSV exchange sheet files
8
+ - reading and writing source string-table CSV/TSV files
9
+ - generating per-locale runtime catalog JSON files
10
+ - loading one selected locale directory of runtime catalog JSON files
8
11
  - reading and writing JSON catalog bundle files
9
12
  - reading and writing workbook directories with a versioned manifest
10
13
  - extension-based format inference for `.csv`, `.tsv`, and `.json`
14
+ - a Node catalog-bundle loader adapter for `@flyingrobots/bijou-i18n`
11
15
 
12
16
  This package intentionally keeps Node/file concerns out of the pure `@flyingrobots/bijou-i18n-tools` package.
13
17
 
18
+ ## Runtime Loader
19
+
20
+ `createCatalogBundleFileLoader()` turns locale-keyed bundle files into a
21
+ runtime loader for `createI18nRuntimeAsync()`:
22
+
23
+ ```ts
24
+ import { createI18nRuntimeAsync } from '@flyingrobots/bijou-i18n';
25
+ import { createCatalogBundleFileLoader } from '@flyingrobots/bijou-i18n-tools-node';
26
+
27
+ const runtime = await createI18nRuntimeAsync({
28
+ locale: 'fr',
29
+ direction: 'ltr',
30
+ loader: createCatalogBundleFileLoader({
31
+ resolvePath: (locale) => `./i18n/${locale}.json`,
32
+ }),
33
+ });
34
+ ```
35
+
36
+ That gives Bijou a built-in Node file-loader path without coupling the
37
+ core runtime to filesystem APIs directly.
38
+
39
+ For generated per-locale runtime catalogs, use the directory loader:
40
+
41
+ ```ts
42
+ import { createI18nRuntimeAsync } from '@flyingrobots/bijou-i18n';
43
+ import { createRuntimeCatalogDirectoryLoader } from '@flyingrobots/bijou-i18n-tools-node';
44
+
45
+ const runtime = await createI18nRuntimeAsync({
46
+ locale: 'fr',
47
+ direction: 'ltr',
48
+ loader: createRuntimeCatalogDirectoryLoader({
49
+ rootDir: './i18n/catalogs',
50
+ }),
51
+ });
52
+ ```
53
+
54
+ The loader reads only `./i18n/catalogs/fr/*.json` for the selected locale.
55
+ For production fallback behavior, load `./i18n/catalogs/en/*.json` as explicit
56
+ fallback catalogs through `createI18nRuntime({ fallbackCatalogs })` and keep the
57
+ directory loader responsible only for the active selected locale.
58
+
14
59
  ## Documentation
15
60
 
16
61
  See the [Bijou repo](https://github.com/flyingrobots/bijou) for the full documentation map, architecture guide, and design system.
@@ -1,4 +1,5 @@
1
- import { type CatalogBundle, type DelimitedFormat, type ExchangeSheet, type ExchangeWorkbook } from '@flyingrobots/bijou-i18n-tools';
1
+ import type { I18nCatalog } from '@flyingrobots/bijou-i18n';
2
+ import { type CatalogBundle, type DelimitedFormat, type ExchangeSheet, type ExchangeWorkbook, type StringTable } from '@flyingrobots/bijou-i18n-tools';
2
3
  export interface WorkbookDirectorySheet {
3
4
  readonly name: string;
4
5
  readonly fileName: string;
@@ -9,9 +10,16 @@ export interface WorkbookDirectoryManifest {
9
10
  readonly sheets: readonly WorkbookDirectorySheet[];
10
11
  }
11
12
  export declare function writeExchangeSheetFile(path: string, sheet: ExchangeSheet, format?: DelimitedFormat): Promise<void>;
13
+ export declare function writeStringTableFile(path: string, table: StringTable, format?: DelimitedFormat): Promise<void>;
14
+ export declare function readStringTableFile(path: string, format?: DelimitedFormat): Promise<StringTable>;
15
+ export declare function readStringTableFileSync(path: string, format?: DelimitedFormat): StringTable;
12
16
  export declare function readExchangeSheetFile(path: string, format?: DelimitedFormat): Promise<ExchangeSheet>;
13
17
  export declare function writeCatalogBundleFile(path: string, bundle: CatalogBundle): Promise<void>;
14
18
  export declare function readCatalogBundleFile(path: string): Promise<CatalogBundle>;
19
+ export declare function writeRuntimeCatalogFiles(dir: string, table: StringTable): Promise<void>;
20
+ export declare function writeRuntimeCatalogFilesSync(dir: string, table: StringTable): void;
21
+ export declare function readRuntimeCatalogFilesForLocale(dir: string, locale: string): Promise<readonly I18nCatalog[]>;
22
+ export declare function readRuntimeCatalogFilesForLocaleSync(dir: string, locale: string): readonly I18nCatalog[];
15
23
  export declare function writeExchangeWorkbookDirectory(dir: string, workbook: ExchangeWorkbook, format: DelimitedFormat): Promise<void>;
16
24
  export declare function readExchangeWorkbookDirectory(dir: string): Promise<ExchangeWorkbook>;
17
25
  //# sourceMappingURL=filesystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpD;AAuCD,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,aAAa,CAAC,CAIxB;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/F;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAIhF;AAED,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAsB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyB1F"}
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAQL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpD;AAuCD,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,WAAW,CAAC,CAItB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,eAAe,GACvB,WAAW,CAIb;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,aAAa,CAAC,CAIxB;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/F;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAIhF;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,GACjB,IAAI,CAcN;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAUjC;AAED,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,SAAS,WAAW,EAAE,CASxB;AAED,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAsB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyB1F"}
@@ -1,6 +1,7 @@
1
- import { mkdir, readFile, writeFile } from 'node:fs/promises';
1
+ import { mkdir, readFile, readdir, writeFile } from 'node:fs/promises';
2
+ import { mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
2
3
  import { basename, extname, join } from 'node:path';
3
- import { parseCatalogBundleJson, parseExchangeSheet, serializeCatalogBundleJson, serializeExchangeSheet, } from '@flyingrobots/bijou-i18n-tools';
4
+ import { parseStringTable, parseCatalogBundleJson, parseExchangeSheet, runtimeCatalogsByLocaleFromStringTable, serializeCatalogBundleJson, serializeExchangeSheet, serializeStringTable, } from '@flyingrobots/bijou-i18n-tools';
4
5
  function inferDelimitedFormat(path) {
5
6
  const extension = extname(path).toLowerCase();
6
7
  if (extension === '.csv') {
@@ -39,6 +40,21 @@ export async function writeExchangeSheetFile(path, sheet, format) {
39
40
  await mkdir(dirnameSafe(path), { recursive: true });
40
41
  await writeFile(path, content, 'utf8');
41
42
  }
43
+ export async function writeStringTableFile(path, table, format) {
44
+ const resolvedFormat = format ?? inferDelimitedFormat(path);
45
+ await mkdir(dirnameSafe(path), { recursive: true });
46
+ await writeFile(path, serializeStringTable(table, resolvedFormat), 'utf8');
47
+ }
48
+ export async function readStringTableFile(path, format) {
49
+ const resolvedFormat = format ?? inferDelimitedFormat(path);
50
+ const content = await readFile(path, 'utf8');
51
+ return parseStringTable(content, resolvedFormat);
52
+ }
53
+ export function readStringTableFileSync(path, format) {
54
+ const resolvedFormat = format ?? inferDelimitedFormat(path);
55
+ const content = readFileSync(path, 'utf8');
56
+ return parseStringTable(content, resolvedFormat);
57
+ }
42
58
  export async function readExchangeSheetFile(path, format) {
43
59
  const resolvedFormat = format ?? inferDelimitedFormat(path);
44
60
  const content = await readFile(path, 'utf8');
@@ -54,6 +70,43 @@ export async function readCatalogBundleFile(path) {
54
70
  const content = await readFile(path, 'utf8');
55
71
  return parseCatalogBundleJson(content);
56
72
  }
73
+ export async function writeRuntimeCatalogFiles(dir, table) {
74
+ const byLocale = runtimeCatalogsByLocaleFromStringTable(table);
75
+ await mkdir(dir, { recursive: true });
76
+ for (const [locale, catalogs] of Object.entries(byLocale)) {
77
+ const localeDir = join(dir, locale);
78
+ await mkdir(localeDir, { recursive: true });
79
+ for (const catalog of catalogs) {
80
+ await writeFile(join(localeDir, runtimeCatalogFileName(catalog.namespace)), `${JSON.stringify(catalog, null, 2)}\n`, 'utf8');
81
+ }
82
+ }
83
+ }
84
+ export function writeRuntimeCatalogFilesSync(dir, table) {
85
+ const byLocale = runtimeCatalogsByLocaleFromStringTable(table);
86
+ mkdirSync(dir, { recursive: true });
87
+ for (const [locale, catalogs] of Object.entries(byLocale)) {
88
+ const localeDir = join(dir, locale);
89
+ mkdirSync(localeDir, { recursive: true });
90
+ for (const catalog of catalogs) {
91
+ writeFileSync(join(localeDir, runtimeCatalogFileName(catalog.namespace)), `${JSON.stringify(catalog, null, 2)}\n`, 'utf8');
92
+ }
93
+ }
94
+ }
95
+ export async function readRuntimeCatalogFilesForLocale(dir, locale) {
96
+ const localeDir = join(dir, locale);
97
+ const files = (await readdir(localeDir))
98
+ .filter((file) => file.endsWith('.json'))
99
+ .sort((left, right) => left.localeCompare(right));
100
+ const catalogs = await Promise.all(files.map(async (file) => parseRuntimeCatalog(await readFile(join(localeDir, file), 'utf8'), `${localeDir}/${file}`)));
101
+ return Object.freeze(catalogs);
102
+ }
103
+ export function readRuntimeCatalogFilesForLocaleSync(dir, locale) {
104
+ const localeDir = join(dir, locale);
105
+ const files = readdirSync(localeDir)
106
+ .filter((file) => file.endsWith('.json'))
107
+ .sort((left, right) => left.localeCompare(right));
108
+ return Object.freeze(files.map((file) => parseRuntimeCatalog(readFileSync(join(localeDir, file), 'utf8'), `${localeDir}/${file}`)));
109
+ }
57
110
  export async function writeExchangeWorkbookDirectory(dir, workbook, format) {
58
111
  await mkdir(dir, { recursive: true });
59
112
  const manifest = {
@@ -143,4 +196,25 @@ function dirnameSafe(path) {
143
196
  const slash = path.lastIndexOf('/');
144
197
  return slash <= 0 ? '.' : path.slice(0, slash);
145
198
  }
199
+ function runtimeCatalogFileName(namespace) {
200
+ return `${encodeURIComponent(namespace)}.json`;
201
+ }
202
+ function parseRuntimeCatalog(input, context) {
203
+ let parsed;
204
+ try {
205
+ parsed = JSON.parse(input);
206
+ }
207
+ catch {
208
+ throw new Error(`Invalid runtime catalog json: malformed json in ${context}`);
209
+ }
210
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
211
+ throw new Error(`Invalid runtime catalog json: expected object in ${context}`);
212
+ }
213
+ const namespace = parsed.namespace;
214
+ const entries = parsed.entries;
215
+ if (typeof namespace !== 'string' || !Array.isArray(entries)) {
216
+ throw new Error(`Invalid runtime catalog json: missing namespace or entries in ${context}`);
217
+ }
218
+ return parsed;
219
+ }
146
220
  //# sourceMappingURL=filesystem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export { readCatalogBundleFile, readExchangeSheetFile, readExchangeWorkbookDirectory, writeCatalogBundleFile, writeExchangeSheetFile, writeExchangeWorkbookDirectory, type WorkbookDirectoryManifest, type WorkbookDirectorySheet, } from './filesystem.js';
1
+ export { readCatalogBundleFile, readExchangeSheetFile, readExchangeWorkbookDirectory, readRuntimeCatalogFilesForLocale, readRuntimeCatalogFilesForLocaleSync, readStringTableFile, readStringTableFileSync, writeRuntimeCatalogFiles, writeRuntimeCatalogFilesSync, writeCatalogBundleFile, writeExchangeSheetFile, writeExchangeWorkbookDirectory, writeStringTableFile, type WorkbookDirectoryManifest, type WorkbookDirectorySheet, } from './filesystem.js';
2
+ export { createCatalogBundleFileLoader, createRuntimeCatalogDirectoryLoader, type CatalogBundleFileLoaderOptions, type RuntimeCatalogDirectoryLoaderOptions, } from './runtime-loader.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,gCAAgC,EAChC,oCAAoC,EACpC,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,6BAA6B,EAC7B,mCAAmC,EACnC,KAAK,8BAA8B,EACnC,KAAK,oCAAoC,GAC1C,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
- export { readCatalogBundleFile, readExchangeSheetFile, readExchangeWorkbookDirectory, writeCatalogBundleFile, writeExchangeSheetFile, writeExchangeWorkbookDirectory, } from './filesystem.js';
1
+ export { readCatalogBundleFile, readExchangeSheetFile, readExchangeWorkbookDirectory, readRuntimeCatalogFilesForLocale, readRuntimeCatalogFilesForLocaleSync, readStringTableFile, readStringTableFileSync, writeRuntimeCatalogFiles, writeRuntimeCatalogFilesSync, writeCatalogBundleFile, writeExchangeSheetFile, writeExchangeWorkbookDirectory, writeStringTableFile, } from './filesystem.js';
2
+ export { createCatalogBundleFileLoader, createRuntimeCatalogDirectoryLoader, } from './runtime-loader.js';
2
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,GAG/B,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,gCAAgC,EAChC,oCAAoC,EACpC,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,oBAAoB,GAGrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,6BAA6B,EAC7B,mCAAmC,GAGpC,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { I18nCatalog } from '@flyingrobots/bijou-i18n';
2
+ export interface CatalogBundleFileLoaderOptions {
3
+ readonly resolvePath: (locale: string) => string;
4
+ }
5
+ export interface RuntimeCatalogDirectoryLoaderOptions {
6
+ readonly rootDir: string;
7
+ }
8
+ /**
9
+ * Create a runtime loader that reads per-locale catalog bundle files and
10
+ * compiles them into runtime catalogs.
11
+ */
12
+ export declare function createCatalogBundleFileLoader(options: CatalogBundleFileLoaderOptions): (locale: string) => Promise<readonly I18nCatalog[]>;
13
+ /**
14
+ * Create a runtime loader that reads only the selected locale directory of
15
+ * generated per-catalog JSON files.
16
+ */
17
+ export declare function createRuntimeCatalogDirectoryLoader(options: RuntimeCatalogDirectoryLoaderOptions): (locale: string) => Promise<readonly I18nCatalog[]>;
18
+ //# sourceMappingURL=runtime-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-loader.d.ts","sourceRoot":"","sources":["../src/runtime-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAO5D,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,8BAA8B,GACtC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAKrD;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,oCAAoC,GAC5C,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAErD"}
@@ -0,0 +1,20 @@
1
+ import { compileCatalogs, importCatalogBundle } from '@flyingrobots/bijou-i18n-tools';
2
+ import { readCatalogBundleFile, readRuntimeCatalogFilesForLocale, } from './filesystem.js';
3
+ /**
4
+ * Create a runtime loader that reads per-locale catalog bundle files and
5
+ * compiles them into runtime catalogs.
6
+ */
7
+ export function createCatalogBundleFileLoader(options) {
8
+ return async (locale) => {
9
+ const bundle = await readCatalogBundleFile(options.resolvePath(locale));
10
+ return compileCatalogs(importCatalogBundle(bundle));
11
+ };
12
+ }
13
+ /**
14
+ * Create a runtime loader that reads only the selected locale directory of
15
+ * generated per-catalog JSON files.
16
+ */
17
+ export function createRuntimeCatalogDirectoryLoader(options) {
18
+ return async (locale) => readRuntimeCatalogFilesForLocale(options.rootDir, locale);
19
+ }
20
+ //# sourceMappingURL=runtime-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-loader.js","sourceRoot":"","sources":["../src/runtime-loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EACL,qBAAqB,EACrB,gCAAgC,GACjC,MAAM,iBAAiB,CAAC;AAUzB;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAAuC;IAEvC,OAAO,KAAK,EAAE,MAAc,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,OAAO,eAAe,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CACjD,OAA6C;IAE7C,OAAO,KAAK,EAAE,MAAc,EAAE,EAAE,CAAC,gCAAgC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7F,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flyingrobots/bijou-i18n-tools-node",
3
- "version": "4.4.1",
3
+ "version": "7.0.0",
4
4
  "description": "Node filesystem helpers for Bijou localization exchange workflows.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -24,12 +24,13 @@
24
24
  "lint": "tsc --noEmit"
25
25
  },
26
26
  "dependencies": {
27
- "@flyingrobots/bijou-i18n-tools": "4.4.1"
27
+ "@flyingrobots/bijou-i18n": "7.0.0",
28
+ "@flyingrobots/bijou-i18n-tools": "7.0.0"
28
29
  },
29
30
  "devDependencies": {
30
31
  "@types/node": "^22.0.0",
31
32
  "typescript": "^5.9.3",
32
- "vitest": "^4.0.18"
33
+ "vitest": "^4.1.8"
33
34
  },
34
35
  "keywords": [
35
36
  "i18n",