ugly-app 0.1.330 → 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.330";
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.330";
2
+ export const CLI_VERSION = "0.1.331";
3
3
  //# sourceMappingURL=version.js.map
@@ -31,14 +31,7 @@ export interface BuiltinStringTable {
31
31
  search: string;
32
32
  ok: string;
33
33
  }
34
- /**
35
- * Accepts any object type where all values are strings.
36
- * Unlike Record<string, string>, this works with TypeScript interfaces
37
- * that don't have explicit index signatures.
38
- */
39
- export type StringTableLike = {
40
- [K in any]: string;
41
- };
34
+ /** Constraint-free marker — we rely on phantom types, not runtime checks. */
42
35
  export interface StringsDefInput<TLang extends string, TCriticalKeys extends readonly string[] = readonly []> {
43
36
  /** Default / fallback language code (e.g. 'en') */
44
37
  defaultLang: TLang;
@@ -51,7 +44,7 @@ export interface StringsDefInput<TLang extends string, TCriticalKeys extends rea
51
44
  * Resolved definition returned by defineStrings().
52
45
  * Phantom type fields preserve the full generic types for downstream extraction.
53
46
  */
54
- export interface StringsDef<TTable extends StringTableLike, TLang extends string, TCriticalKeys extends readonly string[] = readonly []> {
47
+ export interface StringsDef<TTable extends object, TLang extends string, TCriticalKeys extends readonly string[] = readonly []> {
55
48
  defaultLang: TLang;
56
49
  langs: readonly TLang[];
57
50
  criticalKeys: TCriticalKeys;
@@ -73,17 +66,17 @@ export interface StringsDef<TTable extends StringTableLike, TLang extends string
73
66
  * });
74
67
  * ```
75
68
  */
76
- export declare function defineStrings<TTable extends StringTableLike, 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>;
77
70
  /** Project table merged with built-in strings */
78
71
  export type MergedStringTable<D extends StringsDef<any, any, any>> = D extends StringsDef<infer T, string, readonly string[]> ? T & BuiltinStringTable : never;
79
72
  /** Language union from a StringsDef */
80
- export type StringLang<D extends StringsDef<any, any, any>> = D extends StringsDef<StringTableLike, 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;
81
74
  /** All valid string keys (project + built-in) */
82
75
  export type StringKey<D extends StringsDef<any, any, any>> = keyof MergedStringTable<D> & string;
83
76
  /**
84
77
  * Extract only the critical-key subset from a full string table.
85
78
  */
86
- export declare function extractCriticalStrings<T extends StringTableLike>(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;AAyEH;;;;;;;;;;;;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,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,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.330",
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.330";
2
+ export const CLI_VERSION = "0.1.331";
@@ -37,13 +37,7 @@ export interface BuiltinStringTable {
37
37
 
38
38
  // ─── String table constraint ──────────────────────────────────────────────────
39
39
 
40
- /**
41
- * Accepts any object type where all values are strings.
42
- * Unlike Record<string, string>, this works with TypeScript interfaces
43
- * that don't have explicit index signatures.
44
- */
45
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
- export type StringTableLike = { [K in any]: string };
40
+ /** Constraint-free marker — we rely on phantom types, not runtime checks. */
47
41
 
48
42
  // ─── defineStrings() ──────────────────────────────────────────────────────────
49
43
 
@@ -64,7 +58,7 @@ export interface StringsDefInput<
64
58
  * Phantom type fields preserve the full generic types for downstream extraction.
65
59
  */
66
60
  export interface StringsDef<
67
- TTable extends StringTableLike,
61
+ TTable extends object,
68
62
  TLang extends string,
69
63
  TCriticalKeys extends readonly string[] = readonly [],
70
64
  > {
@@ -91,7 +85,7 @@ export interface StringsDef<
91
85
  * ```
92
86
  */
93
87
  export function defineStrings<
94
- TTable extends StringTableLike,
88
+ TTable extends object,
95
89
  TLang extends string,
96
90
  TCriticalKeys extends readonly string[] = readonly [],
97
91
  >(
@@ -116,7 +110,7 @@ export type MergedStringTable<D extends StringsDef<any, any, any>> =
116
110
  /** Language union from a StringsDef */
117
111
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
112
  export type StringLang<D extends StringsDef<any, any, any>> =
119
- D extends StringsDef<StringTableLike, infer L, readonly string[]>
113
+ D extends StringsDef<object, infer L, readonly string[]>
120
114
  ? L
121
115
  : never;
122
116
 
@@ -130,17 +124,17 @@ export type StringKey<D extends StringsDef<any, any, any>> =
130
124
  /**
131
125
  * Extract only the critical-key subset from a full string table.
132
126
  */
133
- export function extractCriticalStrings<T extends StringTableLike>(
134
- table: T,
127
+ export function extractCriticalStrings(
128
+ table: Record<string, string>,
135
129
  criticalKeys: readonly string[],
136
- ): Partial<T> {
130
+ ): Record<string, string> {
137
131
  const result: Record<string, string> = {};
138
132
  for (const key of criticalKeys) {
139
133
  if (key in table) {
140
134
  result[key] = table[key];
141
135
  }
142
136
  }
143
- return result as Partial<T>;
137
+ return result;
144
138
  }
145
139
 
146
140
  /**