@flyingrobots/bijou-i18n-tools 7.2.0 → 8.0.0-rc.1

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 (65) hide show
  1. package/dist/adapters.d.ts +2 -16
  2. package/dist/adapters.d.ts.map +1 -1
  3. package/dist/adapters.js +2 -134
  4. package/dist/adapters.js.map +1 -1
  5. package/dist/catalog-adapters.d.ts +7 -0
  6. package/dist/catalog-adapters.d.ts.map +1 -0
  7. package/dist/catalog-adapters.js +36 -0
  8. package/dist/catalog-adapters.js.map +1 -0
  9. package/dist/delimited-adapters.d.ts +12 -0
  10. package/dist/delimited-adapters.d.ts.map +1 -0
  11. package/dist/delimited-adapters.js +99 -0
  12. package/dist/delimited-adapters.js.map +1 -0
  13. package/dist/exchange.d.ts +4 -47
  14. package/dist/exchange.d.ts.map +1 -1
  15. package/dist/exchange.js +3 -270
  16. package/dist/exchange.js.map +1 -1
  17. package/dist/exchange.part01.d.ts +50 -0
  18. package/dist/exchange.part01.d.ts.map +1 -0
  19. package/dist/exchange.part01.js +74 -0
  20. package/dist/exchange.part01.js.map +1 -0
  21. package/dist/exchange.part02.d.ts +7 -0
  22. package/dist/exchange.part02.d.ts.map +1 -0
  23. package/dist/exchange.part02.js +116 -0
  24. package/dist/exchange.part02.js.map +1 -0
  25. package/dist/exchange.part03.d.ts +6 -0
  26. package/dist/exchange.part03.d.ts.map +1 -0
  27. package/dist/exchange.part03.js +88 -0
  28. package/dist/exchange.part03.js.map +1 -0
  29. package/dist/string-table.d.ts +3 -27
  30. package/dist/string-table.d.ts.map +1 -1
  31. package/dist/string-table.js +2 -213
  32. package/dist/string-table.js.map +1 -1
  33. package/dist/string-table.part01.d.ts +27 -0
  34. package/dist/string-table.part01.d.ts.map +1 -0
  35. package/dist/string-table.part01.js +77 -0
  36. package/dist/string-table.part01.js.map +1 -0
  37. package/dist/string-table.part02.d.ts +9 -0
  38. package/dist/string-table.part02.d.ts.map +1 -0
  39. package/dist/string-table.part02.js +65 -0
  40. package/dist/string-table.part02.js.map +1 -0
  41. package/dist/string-table.part03.d.ts +8 -0
  42. package/dist/string-table.part03.d.ts.map +1 -0
  43. package/dist/string-table.part03.js +89 -0
  44. package/dist/string-table.part03.js.map +1 -0
  45. package/dist/tools.d.ts +5 -37
  46. package/dist/tools.d.ts.map +1 -1
  47. package/dist/tools.js +4 -245
  48. package/dist/tools.js.map +1 -1
  49. package/dist/tools.part01.d.ts +38 -0
  50. package/dist/tools.part01.d.ts.map +1 -0
  51. package/dist/tools.part01.js +56 -0
  52. package/dist/tools.part01.js.map +1 -0
  53. package/dist/tools.part02.d.ts +5 -0
  54. package/dist/tools.part02.d.ts.map +1 -0
  55. package/dist/tools.part02.js +90 -0
  56. package/dist/tools.part02.js.map +1 -0
  57. package/dist/tools.part03.d.ts +5 -0
  58. package/dist/tools.part03.d.ts.map +1 -0
  59. package/dist/tools.part03.js +87 -0
  60. package/dist/tools.part03.js.map +1 -0
  61. package/dist/tools.part04.d.ts +2 -0
  62. package/dist/tools.part04.d.ts.map +1 -0
  63. package/dist/tools.part04.js +24 -0
  64. package/dist/tools.part04.js.map +1 -0
  65. package/package.json +2 -2
@@ -1,17 +1,3 @@
1
- import type { CatalogBundle, ExchangeSheet } from './exchange.js';
2
- export type DelimitedFormat = 'csv' | 'tsv';
3
- export interface DelimitedSheet {
4
- readonly columns: readonly string[];
5
- readonly rows: readonly Readonly<Record<string, string>>[];
6
- }
7
- export interface DelimitedSheetInput {
8
- readonly columns: readonly string[];
9
- readonly rows: readonly object[];
10
- }
11
- export declare function serializeDelimitedSheet(sheet: DelimitedSheetInput, format: DelimitedFormat): string;
12
- export declare function parseDelimitedSheet(input: string, format: DelimitedFormat): DelimitedSheet;
13
- export declare function serializeExchangeSheet(sheet: ExchangeSheet, format: DelimitedFormat): string;
14
- export declare function parseExchangeSheet(name: string, input: string, format: DelimitedFormat): ExchangeSheet;
15
- export declare function serializeCatalogBundleJson(bundle: CatalogBundle): string;
16
- export declare function parseCatalogBundleJson(input: string): CatalogBundle;
1
+ export { parseCatalogBundleJson, parseExchangeSheet, serializeCatalogBundleJson, serializeExchangeSheet, } from './catalog-adapters.js';
2
+ export { parseDelimitedSheet, serializeDelimitedSheet, type DelimitedFormat, type DelimitedSheet, type DelimitedSheetInput, } from './delimited-adapters.js';
17
3
  //# sourceMappingURL=adapters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAIlE,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;CAC5D;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAmFD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAUnG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CAwB1F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAE5F;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,GACtB,aAAa,CAYf;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAExE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAenE"}
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC"}
package/dist/adapters.js CHANGED
@@ -1,135 +1,3 @@
1
- import { exportCatalogBundle, importCatalogBundle } from './exchange.js';
2
- import { assertCatalogBundle, assertWorkbookRow, delimitedRowFromCells, serializedCell } from './adapter-guards.js';
3
- function delimiterFor(format) {
4
- return format === 'csv' ? ',' : '\t';
5
- }
6
- function escapeCell(value, delimiter) {
7
- if (!value.includes(delimiter) && !value.includes('"') && !value.includes('\n') && !value.includes('\r')) {
8
- return value;
9
- }
10
- return `"${value.replaceAll('"', '""')}"`;
11
- }
12
- function serializeDelimitedRow(values, delimiter) {
13
- return values.map((value) => escapeCell(value, delimiter)).join(delimiter);
14
- }
15
- function parseDelimited(input, delimiter) {
16
- const rows = [];
17
- let row = [];
18
- let cell = '';
19
- let inQuotes = false;
20
- for (let index = 0; index < input.length; index += 1) {
21
- const char = input.charAt(index);
22
- const next = input.charAt(index + 1);
23
- if (inQuotes) {
24
- if (char === '"') {
25
- if (next === '"') {
26
- cell += '"';
27
- index += 1;
28
- continue;
29
- }
30
- inQuotes = false;
31
- continue;
32
- }
33
- cell += char;
34
- continue;
35
- }
36
- if (char === '"') {
37
- if (cell.length !== 0) {
38
- cell += char;
39
- continue;
40
- }
41
- inQuotes = true;
42
- continue;
43
- }
44
- if (char === delimiter) {
45
- row.push(cell);
46
- cell = '';
47
- continue;
48
- }
49
- if (char === '\r') {
50
- continue;
51
- }
52
- if (char === '\n') {
53
- row.push(cell);
54
- rows.push(row);
55
- row = [];
56
- cell = '';
57
- continue;
58
- }
59
- cell += char;
60
- }
61
- if (inQuotes) {
62
- throw new Error('Invalid delimited sheet: unterminated quoted cell');
63
- }
64
- if (cell.length > 0 || row.length > 0) {
65
- row.push(cell);
66
- rows.push(row);
67
- }
68
- return rows;
69
- }
70
- export function serializeDelimitedSheet(sheet, format) {
71
- const delimiter = delimiterFor(format);
72
- const lines = [
73
- serializeDelimitedRow(sheet.columns, delimiter),
74
- ...sheet.rows.map((row) => serializeDelimitedRow(sheet.columns.map((column) => serializedCell(row, column)), delimiter)),
75
- ];
76
- return lines.join('\n');
77
- }
78
- export function parseDelimitedSheet(input, format) {
79
- const delimiter = delimiterFor(format);
80
- const rows = parseDelimited(input, delimiter);
81
- if (rows.length === 0) {
82
- throw new Error('Invalid delimited sheet: empty input');
83
- }
84
- const [header, ...body] = rows;
85
- if (header === undefined) {
86
- throw new Error('Invalid delimited sheet: missing header');
87
- }
88
- const columns = [...header];
89
- const parsedRows = body.map((cells, rowIndex) => {
90
- if (cells.length !== columns.length) {
91
- throw new Error(`Invalid delimited sheet: ragged row ${String(rowIndex + 2)}`);
92
- }
93
- return delimitedRowFromCells(columns, cells);
94
- });
95
- return Object.freeze({
96
- columns: Object.freeze(columns),
97
- rows: Object.freeze(parsedRows),
98
- });
99
- }
100
- export function serializeExchangeSheet(sheet, format) {
101
- return serializeDelimitedSheet(sheet, format);
102
- }
103
- export function parseExchangeSheet(name, input, format) {
104
- const sheet = parseDelimitedSheet(input, format);
105
- const parsedRows = sheet.rows.map((row, rowIndex) => {
106
- const record = { ...row };
107
- return assertWorkbookRow(record, `${name}:${String(rowIndex + 2)}`);
108
- });
109
- return {
110
- name,
111
- columns: sheet.columns,
112
- rows: parsedRows,
113
- };
114
- }
115
- export function serializeCatalogBundleJson(bundle) {
116
- return JSON.stringify(bundle, null, 2);
117
- }
118
- export function parseCatalogBundleJson(input) {
119
- let parsed;
120
- try {
121
- parsed = JSON.parse(input);
122
- }
123
- catch {
124
- throw new Error('Invalid catalog bundle json: malformed json');
125
- }
126
- try {
127
- assertCatalogBundle(parsed);
128
- return exportCatalogBundle(importCatalogBundle(parsed));
129
- }
130
- catch (error) {
131
- const message = error instanceof Error ? error.message : 'unknown error';
132
- throw new Error(`Invalid catalog bundle json: ${message}`, { cause: error });
133
- }
134
- }
1
+ export { parseCatalogBundleJson, parseExchangeSheet, serializeCatalogBundleJson, serializeExchangeSheet, } from './catalog-adapters.js';
2
+ export { parseDelimitedSheet, serializeDelimitedSheet, } from './delimited-adapters.js';
135
3
  //# sourceMappingURL=adapters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAIxB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type DelimitedFormat } from './delimited-adapters.js';
2
+ import type { CatalogBundle, ExchangeSheet } from './exchange.js';
3
+ export declare function serializeExchangeSheet(sheet: ExchangeSheet, format: DelimitedFormat): string;
4
+ export declare function parseExchangeSheet(name: string, input: string, format: DelimitedFormat): ExchangeSheet;
5
+ export declare function serializeCatalogBundleJson(bundle: CatalogBundle): string;
6
+ export declare function parseCatalogBundleJson(input: string): CatalogBundle;
7
+ //# sourceMappingURL=catalog-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-adapters.d.ts","sourceRoot":"","sources":["../src/catalog-adapters.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMlE,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,eAAe,GACtB,MAAM,CAER;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,GACtB,aAAa,CAUf;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAExE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAenE"}
@@ -0,0 +1,36 @@
1
+ import { assertCatalogBundle, assertWorkbookRow, } from './adapter-guards.js';
2
+ import { parseDelimitedSheet, serializeDelimitedSheet, } from './delimited-adapters.js';
3
+ import { exportCatalogBundle, importCatalogBundle, } from './exchange.js';
4
+ export function serializeExchangeSheet(sheet, format) {
5
+ return serializeDelimitedSheet(sheet, format);
6
+ }
7
+ export function parseExchangeSheet(name, input, format) {
8
+ const sheet = parseDelimitedSheet(input, format);
9
+ const parsedRows = sheet.rows.map((row, rowIndex) => assertWorkbookRow({ ...row }, `${name}:${String(rowIndex + 2)}`));
10
+ return {
11
+ name,
12
+ columns: sheet.columns,
13
+ rows: parsedRows,
14
+ };
15
+ }
16
+ export function serializeCatalogBundleJson(bundle) {
17
+ return JSON.stringify(bundle, null, 2);
18
+ }
19
+ export function parseCatalogBundleJson(input) {
20
+ let parsed;
21
+ try {
22
+ parsed = JSON.parse(input);
23
+ }
24
+ catch {
25
+ throw new Error('Invalid catalog bundle json: malformed json');
26
+ }
27
+ try {
28
+ assertCatalogBundle(parsed);
29
+ return exportCatalogBundle(importCatalogBundle(parsed));
30
+ }
31
+ catch (error) {
32
+ const message = error instanceof Error ? error.message : 'unknown error';
33
+ throw new Error(`Invalid catalog bundle json: ${message}`, { cause: error });
34
+ }
35
+ }
36
+ //# sourceMappingURL=catalog-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-adapters.js","sourceRoot":"","sources":["../src/catalog-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,sBAAsB,CACpC,KAAoB,EACpB,MAAuB;IAEvB,OAAO,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,KAAa,EACb,MAAuB;IAEvB,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAClD,iBAAiB,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CACjE,CAAC;IACF,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,UAAU;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAqB;IAC9D,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC;QACH,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type DelimitedFormat = 'csv' | 'tsv';
2
+ export interface DelimitedSheet {
3
+ readonly columns: readonly string[];
4
+ readonly rows: readonly Readonly<Record<string, string>>[];
5
+ }
6
+ export interface DelimitedSheetInput {
7
+ readonly columns: readonly string[];
8
+ readonly rows: readonly object[];
9
+ }
10
+ export declare function serializeDelimitedSheet(sheet: DelimitedSheetInput, format: DelimitedFormat): string;
11
+ export declare function parseDelimitedSheet(input: string, format: DelimitedFormat): DelimitedSheet;
12
+ //# sourceMappingURL=delimited-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delimited-adapters.d.ts","sourceRoot":"","sources":["../src/delimited-adapters.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;CAC5D;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAmFD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAUnG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CAwB1F"}
@@ -0,0 +1,99 @@
1
+ import { delimitedRowFromCells, serializedCell, } from './adapter-guards.js';
2
+ function delimiterFor(format) {
3
+ return format === 'csv' ? ',' : '\t';
4
+ }
5
+ function escapeCell(value, delimiter) {
6
+ if (!value.includes(delimiter) && !value.includes('"') && !value.includes('\n') && !value.includes('\r')) {
7
+ return value;
8
+ }
9
+ return `"${value.replaceAll('"', '""')}"`;
10
+ }
11
+ function serializeDelimitedRow(values, delimiter) {
12
+ return values.map((value) => escapeCell(value, delimiter)).join(delimiter);
13
+ }
14
+ function parseDelimited(input, delimiter) {
15
+ const rows = [];
16
+ let row = [];
17
+ let cell = '';
18
+ let inQuotes = false;
19
+ for (let index = 0; index < input.length; index += 1) {
20
+ const char = input.charAt(index);
21
+ const next = input.charAt(index + 1);
22
+ if (inQuotes) {
23
+ if (char === '"') {
24
+ if (next === '"') {
25
+ cell += '"';
26
+ index += 1;
27
+ continue;
28
+ }
29
+ inQuotes = false;
30
+ continue;
31
+ }
32
+ cell += char;
33
+ continue;
34
+ }
35
+ if (char === '"') {
36
+ if (cell.length !== 0) {
37
+ cell += char;
38
+ continue;
39
+ }
40
+ inQuotes = true;
41
+ continue;
42
+ }
43
+ if (char === delimiter) {
44
+ row.push(cell);
45
+ cell = '';
46
+ continue;
47
+ }
48
+ if (char === '\r') {
49
+ continue;
50
+ }
51
+ if (char === '\n') {
52
+ row.push(cell);
53
+ rows.push(row);
54
+ row = [];
55
+ cell = '';
56
+ continue;
57
+ }
58
+ cell += char;
59
+ }
60
+ if (inQuotes) {
61
+ throw new Error('Invalid delimited sheet: unterminated quoted cell');
62
+ }
63
+ if (cell.length > 0 || row.length > 0) {
64
+ row.push(cell);
65
+ rows.push(row);
66
+ }
67
+ return rows;
68
+ }
69
+ export function serializeDelimitedSheet(sheet, format) {
70
+ const delimiter = delimiterFor(format);
71
+ const lines = [
72
+ serializeDelimitedRow(sheet.columns, delimiter),
73
+ ...sheet.rows.map((row) => serializeDelimitedRow(sheet.columns.map((column) => serializedCell(row, column)), delimiter)),
74
+ ];
75
+ return lines.join('\n');
76
+ }
77
+ export function parseDelimitedSheet(input, format) {
78
+ const delimiter = delimiterFor(format);
79
+ const rows = parseDelimited(input, delimiter);
80
+ if (rows.length === 0) {
81
+ throw new Error('Invalid delimited sheet: empty input');
82
+ }
83
+ const [header, ...body] = rows;
84
+ if (header === undefined) {
85
+ throw new Error('Invalid delimited sheet: missing header');
86
+ }
87
+ const columns = [...header];
88
+ const parsedRows = body.map((cells, rowIndex) => {
89
+ if (cells.length !== columns.length) {
90
+ throw new Error(`Invalid delimited sheet: ragged row ${String(rowIndex + 2)}`);
91
+ }
92
+ return delimitedRowFromCells(columns, cells);
93
+ });
94
+ return Object.freeze({
95
+ columns: Object.freeze(columns),
96
+ rows: Object.freeze(parsedRows),
97
+ });
98
+ }
99
+ //# sourceMappingURL=delimited-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delimited-adapters.js","sourceRoot":"","sources":["../src/delimited-adapters.ts"],"names":[],"mappings":"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"}
@@ -1,48 +1,5 @@
1
- import type { I18nCatalogKey } from '@flyingrobots/bijou-i18n';
2
- import type { AuthoringCatalog, TranslationRow } from './tools.js';
3
- export type ExchangeValueKind = 'string' | 'number' | 'boolean' | 'null' | 'object' | 'array' | 'reference';
4
- declare const COLUMNS: readonly ["namespace", "id", "kind", "sourceLocale", "targetLocale", "status", "sourceHash", "description", "sourceValueKind", "sourceValue", "translatedValueKind", "translatedValue"];
5
- export interface EncodedExchangeValue {
6
- readonly kind: ExchangeValueKind;
7
- readonly payload: string;
8
- }
9
- export type TranslationWorkbookRow = Readonly<Record<(typeof COLUMNS)[number], string>>;
10
- export interface ExchangeSheet {
11
- readonly name: string;
12
- readonly columns: readonly string[];
13
- readonly rows: readonly TranslationWorkbookRow[];
14
- }
15
- export interface ExchangeWorkbook {
16
- readonly version: number;
17
- readonly sheets: readonly ExchangeSheet[];
18
- }
19
- export interface SerializedAuthoringTranslation {
20
- readonly value: EncodedExchangeValue;
21
- readonly sourceHash: string;
22
- readonly status: string;
23
- }
24
- export interface SerializedAuthoringCatalogEntry {
25
- readonly key: I18nCatalogKey;
26
- readonly kind: string;
27
- readonly sourceLocale: string;
28
- readonly sourceValue: EncodedExchangeValue;
29
- readonly translations: Readonly<Record<string, SerializedAuthoringTranslation>>;
30
- readonly description?: string;
31
- }
32
- export interface SerializedAuthoringCatalog {
33
- readonly namespace: string;
34
- readonly entries: readonly SerializedAuthoringCatalogEntry[];
35
- }
36
- export interface CatalogBundle {
37
- readonly version: number;
38
- readonly catalogs: readonly SerializedAuthoringCatalog[];
39
- }
40
- export declare function isExchangeValueKind(value: string): value is ExchangeValueKind;
41
- export declare function encodeExchangeValue(value: unknown): EncodedExchangeValue;
42
- export declare function decodeExchangeValue(encoded: EncodedExchangeValue): unknown;
43
- export declare function exportTranslationWorkbook(catalogs: readonly AuthoringCatalog[], locale: string): ExchangeWorkbook;
44
- export declare function importTranslationWorkbook(workbook: ExchangeWorkbook): readonly TranslationRow[];
45
- export declare function exportCatalogBundle(catalogs: readonly AuthoringCatalog[]): CatalogBundle;
46
- export declare function importCatalogBundle(bundle: CatalogBundle): readonly AuthoringCatalog[];
47
- export {};
1
+ export type { CatalogBundle, EncodedExchangeValue, ExchangeSheet, ExchangeValueKind, ExchangeWorkbook, SerializedAuthoringCatalog, SerializedAuthoringCatalogEntry, SerializedAuthoringTranslation, TranslationWorkbookRow } from './exchange.part01.js';
2
+ export { encodeExchangeValue, isExchangeValueKind } from './exchange.part01.js';
3
+ export { decodeExchangeValue, exportTranslationWorkbook } from './exchange.part02.js';
4
+ export { exportCatalogBundle, importCatalogBundle, importTranslationWorkbook } from './exchange.part03.js';
48
5
  //# sourceMappingURL=exchange.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../src/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,gBAAgB,EAIhB,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAE5G,QAAA,MAAM,OAAO,yLAaH,CAAC;AAMX,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAExF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,+BAA+B,EAAE,CAAC;CAC9D;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC1D;AAoBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAAmC;AAgBjH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CA0BxE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAgD1E;AA2DD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,MAAM,EAAE,MAAM,GACb,gBAAgB,CAWlB;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,cAAc,EAAE,CAsB/F;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,aAAa,CAwBxF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,gBAAgB,EAAE,CA0CtF"}
1
+ {"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../src/exchange.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACzP,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}