@plumbus/core 0.6.5 → 0.6.7

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 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/translations/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/translations/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { TranslationDefinition } from '../types/translation.js';
2
+ export interface LocaleStatus {
3
+ total: number;
4
+ filled: number;
5
+ percentage: number;
6
+ }
7
+ export interface NamespaceStatus {
8
+ name: string;
9
+ locales: Record<string, LocaleStatus>;
10
+ }
11
+ export interface TranslationStatus {
12
+ namespaces: NamespaceStatus[];
13
+ incomplete: number;
14
+ }
15
+ /**
16
+ * Compute per-namespace / per-locale translation coverage.
17
+ *
18
+ * For each namespace, the default locale's key count is the `total`. A locale is
19
+ * incomplete when fewer than `total` message values are non-empty strings.
20
+ */
21
+ export declare function computeStatus(definitions: TranslationDefinition[]): TranslationStatus;
22
+ /** Format a human-readable coverage summary (same lines as `plumbus translation status`). */
23
+ export declare function formatTranslationStatus(status: TranslationStatus): string[];
24
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/translations/status.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,qBAAqB,EAAE,GAAG,iBAAiB,CAkBrF;AAED,6FAA6F;AAC7F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAO3E"}
@@ -0,0 +1,35 @@
1
+ // ── Translation Status ──
2
+ // Coverage reporting: filled (non-empty) values vs default-locale key totals.
3
+ /**
4
+ * Compute per-namespace / per-locale translation coverage.
5
+ *
6
+ * For each namespace, the default locale's key count is the `total`. A locale is
7
+ * incomplete when fewer than `total` message values are non-empty strings.
8
+ */
9
+ export function computeStatus(definitions) {
10
+ let incomplete = 0;
11
+ const namespaces = definitions.map((def) => {
12
+ const locales = {};
13
+ const totalKeys = Object.keys(def.messages[def.defaultLocale] ?? {}).length;
14
+ for (const locale of def.locales) {
15
+ const messages = def.messages[locale] ?? {};
16
+ const filled = Object.values(messages).filter((v) => v.length > 0).length;
17
+ const percentage = totalKeys > 0 ? Math.round((filled / totalKeys) * 100) : 100;
18
+ locales[locale] = { total: totalKeys, filled, percentage };
19
+ if (filled < totalKeys)
20
+ incomplete++;
21
+ }
22
+ return { name: def.name, locales };
23
+ });
24
+ return { namespaces, incomplete };
25
+ }
26
+ /** Format a human-readable coverage summary (same lines as `plumbus translation status`). */
27
+ export function formatTranslationStatus(status) {
28
+ return status.namespaces.map((ns) => {
29
+ const parts = Object.entries(ns.locales)
30
+ .map(([locale, s]) => `${locale} ${s.filled}/${s.total} (${s.percentage}%)`)
31
+ .join(' | ');
32
+ return ` ${ns.name}: ${parts}`;
33
+ });
34
+ }
35
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/translations/status.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,8EAA8E;AAoB9E;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,WAAoC;IAChE,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,UAAU,GAAsB,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAiC,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAE5E,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1E,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAChF,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YAC3D,IAAI,MAAM,GAAG,SAAS;gBAAE,UAAU,EAAE,CAAC;QACvC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACpC,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,uBAAuB,CAAC,MAAyB;IAC/D,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC;aAC3E,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,KAAK,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -75,11 +75,11 @@ The locale is resolved from the request context.
75
75
  | `plumbus translation new <name> --locale-folders` | Scaffold `en/`, `he/` message files + thin assembler |
76
76
  | `plumbus translation export` | Export to JSON or XLIFF 2.0 for professional translation |
77
77
  | `plumbus translation import` | Import translated JSON/XLIFF files back into source |
78
- | `plumbus translation status` | Report per-locale completion percentage |
78
+ | `plumbus translation status` | Report per-locale completion percentage (exits non-zero when incomplete) |
79
79
 
80
80
  ## Frontend
81
81
 
82
- When translations exist, `plumbus ui generate` produces `{frontend}/i18n/` with next-intl integration.
82
+ When translations exist, `plumbus ui generate` produces `{frontend}/i18n/` with next-intl integration (messages, config, typed keys, AppConfig, provider, request). Generate fails closed on incomplete locale coverage unless you pass `--skip-locale-parity`.
83
83
 
84
84
  Optional: emit per-locale bundles (same runtime API, smaller generated files):
85
85
 
@@ -90,7 +90,7 @@ plumbus ui generate --out-dir frontend --split-locale-bundles
90
90
  Without the flag, output is unchanged — a single `i18n/messages.ts`.
91
91
 
92
92
  ```tsx
93
- import { useTranslations } from "next-intl";
93
+ import { useTranslations } from "../i18n";
94
94
 
95
95
  function Nav() {
96
96
  const t = useTranslations("common");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumbus/core",
3
- "version": "0.6.5",
3
+ "version": "0.6.7",
4
4
  "description": "Plumbus framework core — types, SDK, runtime, CLI, test utilities",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -96,8 +96,8 @@
96
96
  "esbuild": "^0.25.12",
97
97
  "typescript": "^5.7.0",
98
98
  "@plumbus/api": "0.1.2",
99
- "@plumbus/voice": "0.3.0",
100
- "@plumbus/mcp": "0.5.1"
99
+ "@plumbus/mcp": "0.5.1",
100
+ "@plumbus/voice": "0.3.0"
101
101
  },
102
102
  "scripts": {
103
103
  "build": "tsc -b",