@saykit/config 0.0.0-beta-20260719181352 → 0.0.0-beta-20260720032009

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.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  require("../index.cjs");
3
- const require_storage = require("../storage-3BTY8yws.cjs");
3
+ const require_storage = require("../storage-CGt6RCnp.cjs");
4
4
  const require_loader = require("../loader-B25O-vF6.cjs");
5
5
  let _commander_js_extra_typings = require("@commander-js/extra-typings");
6
6
  let node_fs_promises = require("node:fs/promises");
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { a as reconcileLocaleMessages, i as mergeExtractedMessages, n as writeCatalogueMessages, r as expandBucketOutputPath, t as readCatalogueMessages } from "../storage-C9nzxPtZ.mjs";
2
+ import { a as mergeExtractedMessages, i as expandBucketOutputPath, n as writeCatalogueMessages, o as reconcileLocaleMessages, t as readCatalogueMessages } from "../storage-_WyCYi6d.mjs";
3
3
  import { t as resolveConfig } from "../loader-C2eolE_1.mjs";
4
4
  import { Command, program } from "@commander-js/extra-typings";
5
5
  import { access, glob, readFile, watch } from "node:fs/promises";
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../index.cjs");
3
3
  const require_hash = require("../../hash-8It7TJpB.cjs");
4
- const require_storage = require("../../storage-3BTY8yws.cjs");
4
+ const require_storage = require("../../storage-CGt6RCnp.cjs");
5
5
  let node_path = require("node:path");
6
6
  //#region src/features/catalogue/record.ts
7
7
  /**
@@ -44,13 +44,18 @@ function assembleCatalogueRecord(bucket, contents) {
44
44
  if (!content) continue;
45
45
  for (const message of bucket.formatter.parse(content)) {
46
46
  const key = message.id || require_hash.generateHash(message.message, message.context);
47
- record[key] = message.translation || message.message;
47
+ if (message.translation) {
48
+ record[key] = message.translation;
49
+ continue;
50
+ }
51
+ if (!record[key] && message.message) record[key] = message.message;
48
52
  }
49
53
  }
50
54
  return record;
51
55
  }
52
56
  //#endregion
53
57
  exports.assembleCatalogueRecord = assembleCatalogueRecord;
58
+ exports.declarationPathFor = require_storage.declarationPathFor;
54
59
  exports.expandBucketOutputPath = require_storage.expandBucketOutputPath;
55
60
  exports.mergeExtractedMessages = require_storage.mergeExtractedMessages;
56
61
  exports.readCatalogueMessages = require_storage.readCatalogueMessages;
@@ -20,6 +20,15 @@ declare function reconcileLocaleMessages(existingMessages: Message[], nextMessag
20
20
  //#endregion
21
21
  //#region src/features/catalogue/path.d.ts
22
22
  declare function expandBucketOutputPath(bucket: Bucket, locale: string, extension?: `.${string}`): string;
23
+ /**
24
+ * The declaration file that types a catalogue, e.g. `en.json` -> `en.d.json.ts`.
25
+ *
26
+ * TypeScript resolves `./en.json` by stripping the extension and looking for
27
+ * `en.d.json.ts`; the `en.json.d.ts` form is only consulted for extensions the
28
+ * resolver does not recognise. Non-JS extensions additionally require
29
+ * `allowArbitraryExtensions` in the consumer's tsconfig.
30
+ */
31
+ declare function declarationPathFor(cataloguePath: string): string;
23
32
  //#endregion
24
33
  //#region src/features/catalogue/record.d.ts
25
34
  /**
@@ -56,4 +65,4 @@ declare function readCatalogueMessages(bucket: Bucket, locale: string, path?: st
56
65
  }[]>;
57
66
  declare function writeCatalogueMessages(bucket: Bucket, locale: string, messages: Message[], path?: string): Promise<void>;
58
67
  //#endregion
59
- export { assembleCatalogueRecord, expandBucketOutputPath, mergeExtractedMessages, readCatalogueMessages, reconcileLocaleMessages, resolveCatalogueSources, resolveFallbackChain, writeCatalogueMessages };
68
+ export { assembleCatalogueRecord, declarationPathFor, expandBucketOutputPath, mergeExtractedMessages, readCatalogueMessages, reconcileLocaleMessages, resolveCatalogueSources, resolveFallbackChain, writeCatalogueMessages };
@@ -20,6 +20,15 @@ declare function reconcileLocaleMessages(existingMessages: Message[], nextMessag
20
20
  //#endregion
21
21
  //#region src/features/catalogue/path.d.ts
22
22
  declare function expandBucketOutputPath(bucket: Bucket, locale: string, extension?: `.${string}`): string;
23
+ /**
24
+ * The declaration file that types a catalogue, e.g. `en.json` -> `en.d.json.ts`.
25
+ *
26
+ * TypeScript resolves `./en.json` by stripping the extension and looking for
27
+ * `en.d.json.ts`; the `en.json.d.ts` form is only consulted for extensions the
28
+ * resolver does not recognise. Non-JS extensions additionally require
29
+ * `allowArbitraryExtensions` in the consumer's tsconfig.
30
+ */
31
+ declare function declarationPathFor(cataloguePath: string): string;
23
32
  //#endregion
24
33
  //#region src/features/catalogue/record.d.ts
25
34
  /**
@@ -56,4 +65,4 @@ declare function readCatalogueMessages(bucket: Bucket, locale: string, path?: st
56
65
  }[]>;
57
66
  declare function writeCatalogueMessages(bucket: Bucket, locale: string, messages: Message[], path?: string): Promise<void>;
58
67
  //#endregion
59
- export { assembleCatalogueRecord, expandBucketOutputPath, mergeExtractedMessages, readCatalogueMessages, reconcileLocaleMessages, resolveCatalogueSources, resolveFallbackChain, writeCatalogueMessages };
68
+ export { assembleCatalogueRecord, declarationPathFor, expandBucketOutputPath, mergeExtractedMessages, readCatalogueMessages, reconcileLocaleMessages, resolveCatalogueSources, resolveFallbackChain, writeCatalogueMessages };
@@ -1,5 +1,5 @@
1
1
  import { t as generateHash } from "../../hash-DyC8GzMa.mjs";
2
- import { a as reconcileLocaleMessages, i as mergeExtractedMessages, n as writeCatalogueMessages, r as expandBucketOutputPath, t as readCatalogueMessages } from "../../storage-C9nzxPtZ.mjs";
2
+ import { a as mergeExtractedMessages, i as expandBucketOutputPath, n as writeCatalogueMessages, o as reconcileLocaleMessages, r as declarationPathFor, t as readCatalogueMessages } from "../../storage-_WyCYi6d.mjs";
3
3
  import { resolve } from "node:path";
4
4
  //#region src/features/catalogue/record.ts
5
5
  /**
@@ -42,10 +42,14 @@ function assembleCatalogueRecord(bucket, contents) {
42
42
  if (!content) continue;
43
43
  for (const message of bucket.formatter.parse(content)) {
44
44
  const key = message.id || generateHash(message.message, message.context);
45
- record[key] = message.translation || message.message;
45
+ if (message.translation) {
46
+ record[key] = message.translation;
47
+ continue;
48
+ }
49
+ if (!record[key] && message.message) record[key] = message.message;
46
50
  }
47
51
  }
48
52
  return record;
49
53
  }
50
54
  //#endregion
51
- export { assembleCatalogueRecord, expandBucketOutputPath, mergeExtractedMessages, readCatalogueMessages, reconcileLocaleMessages, resolveCatalogueSources, resolveFallbackChain, writeCatalogueMessages };
55
+ export { assembleCatalogueRecord, declarationPathFor, expandBucketOutputPath, mergeExtractedMessages, readCatalogueMessages, reconcileLocaleMessages, resolveCatalogueSources, resolveFallbackChain, writeCatalogueMessages };
@@ -43,6 +43,18 @@ function reconcileLocaleMessages(existingMessages, nextMessages) {
43
43
  function expandBucketOutputPath(bucket, locale, extension = bucket.formatter.extension) {
44
44
  return (0, node_path.resolve)(bucket.output.replaceAll("{locale}", locale).replaceAll("{extension}", extension.slice(1)));
45
45
  }
46
+ /**
47
+ * The declaration file that types a catalogue, e.g. `en.json` -> `en.d.json.ts`.
48
+ *
49
+ * TypeScript resolves `./en.json` by stripping the extension and looking for
50
+ * `en.d.json.ts`; the `en.json.d.ts` form is only consulted for extensions the
51
+ * resolver does not recognise. Non-JS extensions additionally require
52
+ * `allowArbitraryExtensions` in the consumer's tsconfig.
53
+ */
54
+ function declarationPathFor(cataloguePath) {
55
+ const { dir, name, ext } = (0, node_path.parse)(cataloguePath);
56
+ return (0, node_path.resolve)(dir, `${name}.d${ext}.ts`);
57
+ }
46
58
  //#endregion
47
59
  //#region src/features/catalogue/storage.ts
48
60
  const DECLARATION_CONTENT = `
@@ -60,11 +72,17 @@ async function writeCatalogueMessages(bucket, locale, messages, path = expandBuc
60
72
  locale,
61
73
  existingContent
62
74
  });
63
- const declarationPath = `${path}.d.ts`;
75
+ const declarationPath = declarationPathFor(path);
64
76
  await (0, node_fs_promises.mkdir)((0, node_path.dirname)(path), { recursive: true });
65
77
  await Promise.all([(0, node_fs_promises.writeFile)(path, catalogueContent), (0, node_fs_promises.writeFile)(declarationPath, DECLARATION_CONTENT)]);
66
78
  }
67
79
  //#endregion
80
+ Object.defineProperty(exports, "declarationPathFor", {
81
+ enumerable: true,
82
+ get: function() {
83
+ return declarationPathFor;
84
+ }
85
+ });
68
86
  Object.defineProperty(exports, "expandBucketOutputPath", {
69
87
  enumerable: true,
70
88
  get: function() {
@@ -1,6 +1,6 @@
1
1
  import { t as generateHash } from "./hash-DyC8GzMa.mjs";
2
2
  import { mkdir, readFile, writeFile } from "node:fs/promises";
3
- import { dirname, resolve } from "node:path";
3
+ import { dirname, parse, resolve } from "node:path";
4
4
  //#region src/features/catalogue/merge.ts
5
5
  function mergeUnique(...items) {
6
6
  return Array.from(new Set(items.flat()));
@@ -42,6 +42,18 @@ function reconcileLocaleMessages(existingMessages, nextMessages) {
42
42
  function expandBucketOutputPath(bucket, locale, extension = bucket.formatter.extension) {
43
43
  return resolve(bucket.output.replaceAll("{locale}", locale).replaceAll("{extension}", extension.slice(1)));
44
44
  }
45
+ /**
46
+ * The declaration file that types a catalogue, e.g. `en.json` -> `en.d.json.ts`.
47
+ *
48
+ * TypeScript resolves `./en.json` by stripping the extension and looking for
49
+ * `en.d.json.ts`; the `en.json.d.ts` form is only consulted for extensions the
50
+ * resolver does not recognise. Non-JS extensions additionally require
51
+ * `allowArbitraryExtensions` in the consumer's tsconfig.
52
+ */
53
+ function declarationPathFor(cataloguePath) {
54
+ const { dir, name, ext } = parse(cataloguePath);
55
+ return resolve(dir, `${name}.d${ext}.ts`);
56
+ }
45
57
  //#endregion
46
58
  //#region src/features/catalogue/storage.ts
47
59
  const DECLARATION_CONTENT = `
@@ -59,9 +71,9 @@ async function writeCatalogueMessages(bucket, locale, messages, path = expandBuc
59
71
  locale,
60
72
  existingContent
61
73
  });
62
- const declarationPath = `${path}.d.ts`;
74
+ const declarationPath = declarationPathFor(path);
63
75
  await mkdir(dirname(path), { recursive: true });
64
76
  await Promise.all([writeFile(path, catalogueContent), writeFile(declarationPath, DECLARATION_CONTENT)]);
65
77
  }
66
78
  //#endregion
67
- export { reconcileLocaleMessages as a, mergeExtractedMessages as i, writeCatalogueMessages as n, expandBucketOutputPath as r, readCatalogueMessages as t };
79
+ export { mergeExtractedMessages as a, expandBucketOutputPath as i, writeCatalogueMessages as n, reconcileLocaleMessages as o, declarationPathFor as r, readCatalogueMessages as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saykit/config",
3
- "version": "0.0.0-beta-20260719181352",
3
+ "version": "0.0.0-beta-20260720032009",
4
4
  "description": "CLI and configuration tooling for saykit",
5
5
  "keywords": [
6
6
  "cli",