ugly-app 0.1.328 → 0.1.330

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.328";
1
+ export declare const CLI_VERSION = "0.1.330";
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.328";
2
+ export const CLI_VERSION = "0.1.330";
3
3
  //# sourceMappingURL=version.js.map
@@ -31,6 +31,14 @@ 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
42
  export interface StringsDefInput<TLang extends string, TCriticalKeys extends readonly string[] = readonly []> {
35
43
  /** Default / fallback language code (e.g. 'en') */
36
44
  defaultLang: TLang;
@@ -43,7 +51,7 @@ export interface StringsDefInput<TLang extends string, TCriticalKeys extends rea
43
51
  * Resolved definition returned by defineStrings().
44
52
  * Phantom type fields preserve the full generic types for downstream extraction.
45
53
  */
46
- export interface StringsDef<TTable extends Record<string, string>, TLang extends string, TCriticalKeys extends readonly string[] = readonly []> {
54
+ export interface StringsDef<TTable extends StringTableLike, TLang extends string, TCriticalKeys extends readonly string[] = readonly []> {
47
55
  defaultLang: TLang;
48
56
  langs: readonly TLang[];
49
57
  criticalKeys: TCriticalKeys;
@@ -65,17 +73,17 @@ export interface StringsDef<TTable extends Record<string, string>, TLang extends
65
73
  * });
66
74
  * ```
67
75
  */
68
- export declare function defineStrings<TTable extends Record<string, string>, TLang extends string, TCriticalKeys extends readonly string[] = readonly []>(input: StringsDefInput<TLang, TCriticalKeys>): StringsDef<TTable, TLang, TCriticalKeys>;
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
77
  /** Project table merged with built-in strings */
70
78
  export type MergedStringTable<D extends StringsDef<any, any, any>> = D extends StringsDef<infer T, string, readonly string[]> ? T & BuiltinStringTable : never;
71
79
  /** Language union from a StringsDef */
72
- export type StringLang<D extends StringsDef<any, any, any>> = D extends StringsDef<Record<string, string>, infer L, readonly string[]> ? L : never;
80
+ export type StringLang<D extends StringsDef<any, any, any>> = D extends StringsDef<StringTableLike, infer L, readonly string[]> ? L : never;
73
81
  /** All valid string keys (project + built-in) */
74
82
  export type StringKey<D extends StringsDef<any, any, any>> = keyof MergedStringTable<D> & string;
75
83
  /**
76
84
  * Extract only the critical-key subset from a full string table.
77
85
  */
78
- export declare function extractCriticalStrings<T extends Record<string, string>>(table: T, criticalKeys: readonly string[]): Partial<T>;
86
+ export declare function extractCriticalStrings<T extends StringTableLike>(table: T, criticalKeys: readonly string[]): Partial<T>;
79
87
  /**
80
88
  * Resolve language from multiple sources with priority:
81
89
  * 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,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;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.328",
3
+ "version": "0.1.330",
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.328";
2
+ export const CLI_VERSION = "0.1.330";
@@ -35,6 +35,16 @@ export interface BuiltinStringTable {
35
35
  ok: string;
36
36
  }
37
37
 
38
+ // ─── String table constraint ──────────────────────────────────────────────────
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 };
47
+
38
48
  // ─── defineStrings() ──────────────────────────────────────────────────────────
39
49
 
40
50
  export interface StringsDefInput<
@@ -54,7 +64,7 @@ export interface StringsDefInput<
54
64
  * Phantom type fields preserve the full generic types for downstream extraction.
55
65
  */
56
66
  export interface StringsDef<
57
- TTable extends Record<string, string>,
67
+ TTable extends StringTableLike,
58
68
  TLang extends string,
59
69
  TCriticalKeys extends readonly string[] = readonly [],
60
70
  > {
@@ -81,7 +91,7 @@ export interface StringsDef<
81
91
  * ```
82
92
  */
83
93
  export function defineStrings<
84
- TTable extends Record<string, string>,
94
+ TTable extends StringTableLike,
85
95
  TLang extends string,
86
96
  TCriticalKeys extends readonly string[] = readonly [],
87
97
  >(
@@ -106,7 +116,7 @@ export type MergedStringTable<D extends StringsDef<any, any, any>> =
106
116
  /** Language union from a StringsDef */
107
117
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
108
118
  export type StringLang<D extends StringsDef<any, any, any>> =
109
- D extends StringsDef<Record<string, string>, infer L, readonly string[]>
119
+ D extends StringsDef<StringTableLike, infer L, readonly string[]>
110
120
  ? L
111
121
  : never;
112
122
 
@@ -120,7 +130,7 @@ export type StringKey<D extends StringsDef<any, any, any>> =
120
130
  /**
121
131
  * Extract only the critical-key subset from a full string table.
122
132
  */
123
- export function extractCriticalStrings<T extends Record<string, string>>(
133
+ export function extractCriticalStrings<T extends StringTableLike>(
124
134
  table: T,
125
135
  criticalKeys: readonly string[],
126
136
  ): Partial<T> {