ugly-app 0.1.329 → 0.1.331

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,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.329";
1
+ export declare const CLI_VERSION = "0.1.331";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.329";
2
+ export const CLI_VERSION = "0.1.331";
3
3
  //# sourceMappingURL=version.js.map
@@ -31,6 +31,7 @@ export interface BuiltinStringTable {
31
31
  search: string;
32
32
  ok: string;
33
33
  }
34
+ /** Constraint-free marker — we rely on phantom types, not runtime checks. */
34
35
  export interface StringsDefInput<TLang extends string, TCriticalKeys extends readonly string[] = readonly []> {
35
36
  /** Default / fallback language code (e.g. 'en') */
36
37
  defaultLang: TLang;
@@ -43,9 +44,7 @@ export interface StringsDefInput<TLang extends string, TCriticalKeys extends rea
43
44
  * Resolved definition returned by defineStrings().
44
45
  * Phantom type fields preserve the full generic types for downstream extraction.
45
46
  */
46
- export interface StringsDef<TTable extends {
47
- [key: string]: string;
48
- }, TLang extends string, TCriticalKeys extends readonly string[] = readonly []> {
47
+ export interface StringsDef<TTable extends object, TLang extends string, TCriticalKeys extends readonly string[] = readonly []> {
49
48
  defaultLang: TLang;
50
49
  langs: readonly TLang[];
51
50
  criticalKeys: TCriticalKeys;
@@ -67,23 +66,17 @@ export interface StringsDef<TTable extends {
67
66
  * });
68
67
  * ```
69
68
  */
70
- export declare function defineStrings<TTable extends {
71
- [key: string]: string;
72
- }, TLang extends string, TCriticalKeys extends readonly string[] = readonly []>(input: StringsDefInput<TLang, TCriticalKeys>): StringsDef<TTable, TLang, TCriticalKeys>;
69
+ export declare function defineStrings<TTable extends object, TLang extends string, TCriticalKeys extends readonly string[] = readonly []>(input: StringsDefInput<TLang, TCriticalKeys>): StringsDef<TTable, TLang, TCriticalKeys>;
73
70
  /** Project table merged with built-in strings */
74
71
  export type MergedStringTable<D extends StringsDef<any, any, any>> = D extends StringsDef<infer T, string, readonly string[]> ? T & BuiltinStringTable : never;
75
72
  /** Language union from a StringsDef */
76
- export type StringLang<D extends StringsDef<any, any, any>> = D extends StringsDef<{
77
- [key: string]: string;
78
- }, infer L, readonly string[]> ? L : never;
73
+ export type StringLang<D extends StringsDef<any, any, any>> = D extends StringsDef<object, infer L, readonly string[]> ? L : never;
79
74
  /** All valid string keys (project + built-in) */
80
75
  export type StringKey<D extends StringsDef<any, any, any>> = keyof MergedStringTable<D> & string;
81
76
  /**
82
77
  * Extract only the critical-key subset from a full string table.
83
78
  */
84
- export declare function extractCriticalStrings<T extends {
85
- [key: string]: string;
86
- }>(table: T, criticalKeys: readonly string[]): Partial<T>;
79
+ export declare function extractCriticalStrings(table: Record<string, string>, criticalKeys: readonly string[]): Record<string, string>;
87
80
  /**
88
81
  * Resolve language from multiple sources with priority:
89
82
  * 1. User setting (from database)
@@ -1 +1 @@
1
- {"version":3,"file":"Strings.d.ts","sourceRoot":"","sources":["../../src/shared/Strings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Strings.d.ts","sourceRoot":"","sources":["../../src/shared/Strings.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Strings.js","sourceRoot":"","sources":["../../src/shared/Strings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+DH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAK3B,KAA4C;IAE5C,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,YAAY,EAAE,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAA6B;KACzB,CAAC;AAChD,CAAC;AAuBD,iFAAiF;AAEjF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAQ,EACR,YAA+B;IAE/B,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,MAAoB,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAmC,EACnC,UAAqC,EACrC,cAAyC,EACzC,cAAgC,EAChC,WAAkB;IAElB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;IAElD,kBAAkB;IAClB,IAAI,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,OAAO,QAAiB,CAAC;IAC3B,CAAC;IAED,uBAAuB;IACvB,IAAI,UAAU,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,OAAO,UAAmB,CAAC;IAC7B,CAAC;IAED,4BAA4B;IAC5B,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,cAAc;aAC1B,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,QAAQ,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;QAChD,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7B,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,OAAO,SAAkB,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;IACb,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"Strings.js","sourceRoot":"","sources":["../../src/shared/Strings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAK3B,KAA4C;IAE5C,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,YAAY,EAAE,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAA6B;KACzB,CAAC;AAChD,CAAC;AAuBD,iFAAiF;AAEjF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAA6B,EAC7B,YAA+B;IAE/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAmC,EACnC,UAAqC,EACrC,cAAyC,EACzC,cAAgC,EAChC,WAAkB;IAElB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;IAElD,kBAAkB;IAClB,IAAI,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,OAAO,QAAiB,CAAC;IAC3B,CAAC;IAED,uBAAuB;IACvB,IAAI,UAAU,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,OAAO,UAAmB,CAAC;IAC7B,CAAC;IAED,4BAA4B;IAC5B,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,cAAc;aAC1B,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,QAAQ,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;QAChD,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7B,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,OAAO,SAAkB,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;IACb,OAAO,WAAW,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.329",
3
+ "version": "0.1.331",
4
4
  "type": "module",
5
5
  "main": "./dist/server/index.js",
6
6
  "exports": {
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.329";
2
+ export const CLI_VERSION = "0.1.331";
@@ -35,6 +35,10 @@ export interface BuiltinStringTable {
35
35
  ok: string;
36
36
  }
37
37
 
38
+ // ─── String table constraint ──────────────────────────────────────────────────
39
+
40
+ /** Constraint-free marker — we rely on phantom types, not runtime checks. */
41
+
38
42
  // ─── defineStrings() ──────────────────────────────────────────────────────────
39
43
 
40
44
  export interface StringsDefInput<
@@ -54,7 +58,7 @@ export interface StringsDefInput<
54
58
  * Phantom type fields preserve the full generic types for downstream extraction.
55
59
  */
56
60
  export interface StringsDef<
57
- TTable extends { [key: string]: string },
61
+ TTable extends object,
58
62
  TLang extends string,
59
63
  TCriticalKeys extends readonly string[] = readonly [],
60
64
  > {
@@ -81,7 +85,7 @@ export interface StringsDef<
81
85
  * ```
82
86
  */
83
87
  export function defineStrings<
84
- TTable extends { [key: string]: string },
88
+ TTable extends object,
85
89
  TLang extends string,
86
90
  TCriticalKeys extends readonly string[] = readonly [],
87
91
  >(
@@ -106,7 +110,7 @@ export type MergedStringTable<D extends StringsDef<any, any, any>> =
106
110
  /** Language union from a StringsDef */
107
111
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
108
112
  export type StringLang<D extends StringsDef<any, any, any>> =
109
- D extends StringsDef<{ [key: string]: string }, infer L, readonly string[]>
113
+ D extends StringsDef<object, infer L, readonly string[]>
110
114
  ? L
111
115
  : never;
112
116
 
@@ -120,17 +124,17 @@ export type StringKey<D extends StringsDef<any, any, any>> =
120
124
  /**
121
125
  * Extract only the critical-key subset from a full string table.
122
126
  */
123
- export function extractCriticalStrings<T extends { [key: string]: string }>(
124
- table: T,
127
+ export function extractCriticalStrings(
128
+ table: Record<string, string>,
125
129
  criticalKeys: readonly string[],
126
- ): Partial<T> {
127
- const result: { [key: string]: string } = {};
130
+ ): Record<string, string> {
131
+ const result: Record<string, string> = {};
128
132
  for (const key of criticalKeys) {
129
133
  if (key in table) {
130
134
  result[key] = table[key];
131
135
  }
132
136
  }
133
- return result as Partial<T>;
137
+ return result;
134
138
  }
135
139
 
136
140
  /**