@rudderjs/support 0.0.3
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.
- package/LICENSE +21 -0
- package/README.md +336 -0
- package/dist/collection.d.ts +86 -0
- package/dist/collection.d.ts.map +1 -0
- package/dist/collection.js +228 -0
- package/dist/collection.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +241 -0
- package/dist/index.js.map +1 -0
- package/dist/num.d.ts +53 -0
- package/dist/num.d.ts.map +1 -0
- package/dist/num.js +146 -0
- package/dist/num.js.map +1 -0
- package/dist/str.d.ts +99 -0
- package/dist/str.d.ts.map +1 -0
- package/dist/str.js +300 -0
- package/dist/str.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export { Collection } from './collection.js';
|
|
2
|
+
export declare const Env: {
|
|
3
|
+
get(key: string, fallback?: string): string;
|
|
4
|
+
getNumber(key: string, fallback?: number): number;
|
|
5
|
+
getBool(key: string, fallback?: boolean): boolean;
|
|
6
|
+
has(key: string): boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function env(key: string, fallback?: string): string;
|
|
9
|
+
export declare function dump(...args: unknown[]): void;
|
|
10
|
+
export declare function dd(...args: unknown[]): never;
|
|
11
|
+
export declare const sleep: (ms: number) => Promise<void>;
|
|
12
|
+
export declare const ucfirst: (str: string) => string;
|
|
13
|
+
export declare const toSnakeCase: (str: string) => string;
|
|
14
|
+
export declare const toCamelCase: (str: string) => string;
|
|
15
|
+
export declare const isObject: (val: unknown) => val is Record<string, unknown>;
|
|
16
|
+
export declare const deepClone: <T>(val: T) => T;
|
|
17
|
+
export declare const pick: <T extends object, K extends keyof T>(obj: T, keys: K[]) => Pick<T, K>;
|
|
18
|
+
export declare const omit: <T extends object, K extends keyof T>(obj: T, keys: K[]) => Omit<T, K>;
|
|
19
|
+
export declare const tap: <T>(val: T, fn: (v: T) => void) => T;
|
|
20
|
+
/**
|
|
21
|
+
* Simple i18n template interpolation.
|
|
22
|
+
* Replaces `:key` placeholders with values from the vars object.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* t('Hello :name, you have :n items', { name: 'Alice', n: 5 })
|
|
26
|
+
* // → 'Hello Alice, you have 5 items'
|
|
27
|
+
*/
|
|
28
|
+
export declare function t(template: string, vars: Record<string, string | number>): string;
|
|
29
|
+
export declare class ConfigRepository {
|
|
30
|
+
private readonly data;
|
|
31
|
+
constructor(data: Record<string, unknown>);
|
|
32
|
+
get<T = unknown>(key: string, fallback?: T): T;
|
|
33
|
+
set(key: string, value: unknown): void;
|
|
34
|
+
has(key: string): boolean;
|
|
35
|
+
all(): Record<string, unknown>;
|
|
36
|
+
}
|
|
37
|
+
/** @internal — called by @rudderjs/core Application */
|
|
38
|
+
export declare function setConfigRepository(repo: ConfigRepository): void;
|
|
39
|
+
export declare function config<T = unknown>(key: string, fallback?: T): T;
|
|
40
|
+
/**
|
|
41
|
+
* Dynamically import an optional peer package installed in the user's app
|
|
42
|
+
* (process.cwd()), not inside node_modules/@rudderjs/*.
|
|
43
|
+
*
|
|
44
|
+
* Uses createRequire anchored to the app root so optional peers installed
|
|
45
|
+
* in the user's project are resolvable regardless of where @rudderjs/* lives.
|
|
46
|
+
*
|
|
47
|
+
* All optional peer packages must include `"default": "./dist/index.js"`
|
|
48
|
+
* in their exports field so the CJS resolver can find them.
|
|
49
|
+
*
|
|
50
|
+
* `node:module` is imported lazily to stay out of browser bundles.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveOptionalPeer<T = Record<string, unknown>>(specifier: string): Promise<T>;
|
|
53
|
+
/**
|
|
54
|
+
* Dev-mode validation: walk a data tree and warn about values that will fail
|
|
55
|
+
* SSR serialization (functions, Dates, Maps, class instances, etc.).
|
|
56
|
+
* Zero cost in production.
|
|
57
|
+
*
|
|
58
|
+
* @param data - The object tree to validate
|
|
59
|
+
* @param label - A label for the error message (e.g. 'resolveSchema')
|
|
60
|
+
* @param tag - Optional prefix tag for the log (defaults to 'rudderjs')
|
|
61
|
+
*/
|
|
62
|
+
export declare function validateSerializable(data: unknown, label: string, tag?: string): void;
|
|
63
|
+
import { z } from 'zod';
|
|
64
|
+
export { Str } from './str.js';
|
|
65
|
+
export { Num } from './num.js';
|
|
66
|
+
export declare function defineEnv<T extends z.ZodRawShape>(schema: z.ZodObject<T>): z.infer<z.ZodObject<T>>;
|
|
67
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI5C,eAAO,MAAM,GAAG;aACL,MAAM,aAAa,MAAM,GAAG,MAAM;mBAS5B,MAAM,aAAa,MAAM,GAAG,MAAM;iBAWpC,MAAM,aAAa,OAAO,GAAG,OAAO;aASxC,MAAM,GAAG,OAAO;CAG1B,CAAA;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAID,wBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI7C;AAED,wBAAgB,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAG5C;AAID,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CACE,CAAA;AAEjD,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,MACM,CAAA;AAE5C,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MAC2B,CAAA;AAErE,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MACW,CAAA;AAErD,eAAO,MAAM,QAAQ,GAAI,KAAK,OAAO,KAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAIpE,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,KAAK,CAAC,KAAG,CACL,CAAA;AAEjC,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EACtD,KAAK,CAAC,EACN,MAAM,CAAC,EAAE,KACR,IAAI,CAAC,CAAC,EAAE,CAAC,CAC0D,CAAA;AAEtE,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EACtD,KAAK,CAAC,EACN,MAAM,CAAC,EAAE,KACR,IAAI,CAAC,CAAC,EAAE,CAAC,CAIX,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,KAAG,CAGnD,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAEjF;AAID,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE1D,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;IAY9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAetC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/B;AAID,uDAAuD;AACvD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAGhE;AAED,wBAAgB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAIhE;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAKpG;AAMD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,IAAI,CAmDzF;AAID,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,wBAAgB,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAC/C,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CASzB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
export { Collection } from './collection.js';
|
|
2
|
+
// ─── Env ───────────────────────────────────────────────────
|
|
3
|
+
export const Env = {
|
|
4
|
+
get(key, fallback) {
|
|
5
|
+
const val = process.env[key];
|
|
6
|
+
if (val === undefined) {
|
|
7
|
+
if (fallback !== undefined)
|
|
8
|
+
return fallback;
|
|
9
|
+
throw new Error(`Missing environment variable: ${key}`);
|
|
10
|
+
}
|
|
11
|
+
return val;
|
|
12
|
+
},
|
|
13
|
+
getNumber(key, fallback) {
|
|
14
|
+
const val = process.env[key];
|
|
15
|
+
if (val === undefined) {
|
|
16
|
+
if (fallback !== undefined)
|
|
17
|
+
return fallback;
|
|
18
|
+
throw new Error(`Missing environment variable: ${key}`);
|
|
19
|
+
}
|
|
20
|
+
const num = Number(val);
|
|
21
|
+
if (isNaN(num))
|
|
22
|
+
throw new Error(`Env var ${key} is not a number`);
|
|
23
|
+
return num;
|
|
24
|
+
},
|
|
25
|
+
getBool(key, fallback) {
|
|
26
|
+
const val = process.env[key];
|
|
27
|
+
if (val === undefined) {
|
|
28
|
+
if (fallback !== undefined)
|
|
29
|
+
return fallback;
|
|
30
|
+
throw new Error(`Missing environment variable: ${key}`);
|
|
31
|
+
}
|
|
32
|
+
return val.toLowerCase() === 'true' || val === '1';
|
|
33
|
+
},
|
|
34
|
+
has(key) {
|
|
35
|
+
return process.env[key] !== undefined;
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
export function env(key, fallback) {
|
|
39
|
+
return Env.get(key, fallback);
|
|
40
|
+
}
|
|
41
|
+
// ─── Debug Helpers ─────────────────────────────────────────
|
|
42
|
+
export function dump(...args) {
|
|
43
|
+
for (const arg of args) {
|
|
44
|
+
console.log(JSON.stringify(arg, null, 2));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function dd(...args) {
|
|
48
|
+
dump(...args);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
// ─── Helpers ───────────────────────────────────────────────
|
|
52
|
+
export const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
53
|
+
export const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
54
|
+
export const toSnakeCase = (str) => str.replace(/[A-Z]/g, l => `_${l.toLowerCase()}`).replace(/^_/, '');
|
|
55
|
+
export const toCamelCase = (str) => str.replace(/_([a-z])/g, (_, l) => l.toUpperCase());
|
|
56
|
+
export const isObject = (val) => {
|
|
57
|
+
if (typeof val !== 'object' || val === null)
|
|
58
|
+
return false;
|
|
59
|
+
const proto = Object.getPrototypeOf(val);
|
|
60
|
+
return proto === Object.prototype || proto === null;
|
|
61
|
+
};
|
|
62
|
+
export const deepClone = (val) => JSON.parse(JSON.stringify(val));
|
|
63
|
+
export const pick = (obj, keys) => keys.reduce((acc, k) => ({ ...acc, [k]: obj[k] }), {});
|
|
64
|
+
export const omit = (obj, keys) => {
|
|
65
|
+
const result = { ...obj };
|
|
66
|
+
keys.forEach(k => delete result[k]);
|
|
67
|
+
return result;
|
|
68
|
+
};
|
|
69
|
+
export const tap = (val, fn) => {
|
|
70
|
+
fn(val);
|
|
71
|
+
return val;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Simple i18n template interpolation.
|
|
75
|
+
* Replaces `:key` placeholders with values from the vars object.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* t('Hello :name, you have :n items', { name: 'Alice', n: 5 })
|
|
79
|
+
* // → 'Hello Alice, you have 5 items'
|
|
80
|
+
*/
|
|
81
|
+
export function t(template, vars) {
|
|
82
|
+
return template.replace(/:([a-z]+)/g, (_, k) => String(vars[k] ?? `:${k}`));
|
|
83
|
+
}
|
|
84
|
+
// ─── ConfigRepository ──────────────────────────────────────
|
|
85
|
+
export class ConfigRepository {
|
|
86
|
+
data;
|
|
87
|
+
constructor(data) {
|
|
88
|
+
this.data = data;
|
|
89
|
+
}
|
|
90
|
+
get(key, fallback) {
|
|
91
|
+
const parts = key.split('.');
|
|
92
|
+
let current = this.data;
|
|
93
|
+
for (const part of parts) {
|
|
94
|
+
if (current === null || typeof current !== 'object' || !(part in current)) {
|
|
95
|
+
return fallback;
|
|
96
|
+
}
|
|
97
|
+
current = current[part];
|
|
98
|
+
}
|
|
99
|
+
return (current !== undefined ? current : fallback);
|
|
100
|
+
}
|
|
101
|
+
set(key, value) {
|
|
102
|
+
const parts = key.split('.');
|
|
103
|
+
const dangerous = new Set(['__proto__', 'constructor', 'prototype']);
|
|
104
|
+
if (parts.some(p => dangerous.has(p)))
|
|
105
|
+
return;
|
|
106
|
+
let current = this.data;
|
|
107
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
108
|
+
const part = parts[i] ?? '';
|
|
109
|
+
if (typeof current[part] !== 'object' || current[part] === null) {
|
|
110
|
+
current[part] = {};
|
|
111
|
+
}
|
|
112
|
+
current = current[part];
|
|
113
|
+
}
|
|
114
|
+
current[parts[parts.length - 1] ?? ''] = value;
|
|
115
|
+
}
|
|
116
|
+
has(key) {
|
|
117
|
+
return this.get(key) !== undefined;
|
|
118
|
+
}
|
|
119
|
+
all() {
|
|
120
|
+
return this.data;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
let _repo = null;
|
|
124
|
+
/** @internal — called by @rudderjs/core Application */
|
|
125
|
+
export function setConfigRepository(repo) {
|
|
126
|
+
_repo = repo;
|
|
127
|
+
globalThis['__rudderjs_config__'] = repo;
|
|
128
|
+
}
|
|
129
|
+
export function config(key, fallback) {
|
|
130
|
+
const repo = _repo
|
|
131
|
+
?? globalThis['__rudderjs_config__'];
|
|
132
|
+
return (repo?.get(key, fallback) ?? fallback);
|
|
133
|
+
}
|
|
134
|
+
// ─── resolveOptionalPeer ───────────────────────────────────
|
|
135
|
+
/**
|
|
136
|
+
* Dynamically import an optional peer package installed in the user's app
|
|
137
|
+
* (process.cwd()), not inside node_modules/@rudderjs/*.
|
|
138
|
+
*
|
|
139
|
+
* Uses createRequire anchored to the app root so optional peers installed
|
|
140
|
+
* in the user's project are resolvable regardless of where @rudderjs/* lives.
|
|
141
|
+
*
|
|
142
|
+
* All optional peer packages must include `"default": "./dist/index.js"`
|
|
143
|
+
* in their exports field so the CJS resolver can find them.
|
|
144
|
+
*
|
|
145
|
+
* `node:module` is imported lazily to stay out of browser bundles.
|
|
146
|
+
*/
|
|
147
|
+
export async function resolveOptionalPeer(specifier) {
|
|
148
|
+
const { createRequire } = await import('node:module');
|
|
149
|
+
const appRequire = createRequire(process.cwd() + '/package.json');
|
|
150
|
+
const resolved = appRequire.resolve(specifier);
|
|
151
|
+
return import(/* @vite-ignore */ resolved);
|
|
152
|
+
}
|
|
153
|
+
// ─── validateSerializable ──────────────────────────────────
|
|
154
|
+
const isDev = typeof process !== 'undefined' && process.env?.['NODE_ENV'] !== 'production';
|
|
155
|
+
/**
|
|
156
|
+
* Dev-mode validation: walk a data tree and warn about values that will fail
|
|
157
|
+
* SSR serialization (functions, Dates, Maps, class instances, etc.).
|
|
158
|
+
* Zero cost in production.
|
|
159
|
+
*
|
|
160
|
+
* @param data - The object tree to validate
|
|
161
|
+
* @param label - A label for the error message (e.g. 'resolveSchema')
|
|
162
|
+
* @param tag - Optional prefix tag for the log (defaults to 'rudderjs')
|
|
163
|
+
*/
|
|
164
|
+
export function validateSerializable(data, label, tag = 'rudderjs') {
|
|
165
|
+
if (!isDev)
|
|
166
|
+
return;
|
|
167
|
+
const problems = [];
|
|
168
|
+
const seen = new WeakSet();
|
|
169
|
+
function walk(value, path) {
|
|
170
|
+
if (value === null || value === undefined)
|
|
171
|
+
return;
|
|
172
|
+
const t = typeof value;
|
|
173
|
+
if (t === 'string' || t === 'number' || t === 'boolean')
|
|
174
|
+
return;
|
|
175
|
+
if (t === 'function') {
|
|
176
|
+
problems.push(`${path} — function`);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (t === 'symbol') {
|
|
180
|
+
problems.push(`${path} — Symbol`);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (t === 'bigint') {
|
|
184
|
+
problems.push(`${path} — BigInt`);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (typeof value === 'object') {
|
|
188
|
+
if (seen.has(value)) {
|
|
189
|
+
problems.push(`${path} — circular reference`);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
seen.add(value);
|
|
193
|
+
if (value instanceof Date)
|
|
194
|
+
return; // Date is serializable by devalue
|
|
195
|
+
if (value instanceof RegExp)
|
|
196
|
+
return; // RegExp is serializable by devalue
|
|
197
|
+
if (value instanceof Map) {
|
|
198
|
+
problems.push(`${path} — Map`);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (value instanceof Set) {
|
|
202
|
+
problems.push(`${path} — Set`);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if (Array.isArray(value)) {
|
|
206
|
+
for (let i = 0; i < value.length; i++)
|
|
207
|
+
walk(value[i], `${path}[${i}]`);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const proto = Object.getPrototypeOf(value);
|
|
211
|
+
if (proto !== null && proto !== Object.prototype) {
|
|
212
|
+
const name = proto.constructor?.name ?? 'unknown';
|
|
213
|
+
problems.push(`${path} — class instance (${name}), expected plain object`);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
for (const [k, v] of Object.entries(value)) {
|
|
217
|
+
walk(v, `${path}.${k}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
walk(data, label);
|
|
222
|
+
if (problems.length > 0) {
|
|
223
|
+
console.error(`\n[${tag}] Non-serializable values detected in ${label}:\n` +
|
|
224
|
+
problems.map(p => ` • ${p}`).join('\n') +
|
|
225
|
+
'\n\nThese will cause hydration errors on the client.\n' +
|
|
226
|
+
'Fix the code that produces these values.\n');
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
export { Str } from './str.js';
|
|
230
|
+
export { Num } from './num.js';
|
|
231
|
+
export function defineEnv(schema) {
|
|
232
|
+
const parsed = schema.safeParse(process.env);
|
|
233
|
+
if (!parsed.success) {
|
|
234
|
+
const lines = parsed.error.issues
|
|
235
|
+
.map(i => ` ${i.path.join('.')}: ${i.message}`)
|
|
236
|
+
.join('\n');
|
|
237
|
+
throw new Error(`[RudderJS] Invalid environment configuration:\n${lines}`);
|
|
238
|
+
}
|
|
239
|
+
return parsed.data;
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/num.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export declare class Num {
|
|
2
|
+
/**
|
|
3
|
+
* Format a number with locale-aware separators.
|
|
4
|
+
* @example Num.format(1234567.89, 2) → '1,234,567.89'
|
|
5
|
+
*/
|
|
6
|
+
static format(value: number, decimals?: number, locale?: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Format as currency.
|
|
9
|
+
* @example Num.currency(9.99) → '$9.99'
|
|
10
|
+
* @example Num.currency(9.99, 'EUR', 'de-DE') → '9,99 €'
|
|
11
|
+
*/
|
|
12
|
+
static currency(value: number, currency?: string, locale?: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Format as a percentage. `value` is the raw number (50 = 50%, not 0.5).
|
|
15
|
+
* @example Num.percentage(73.5, 1) → '73.5%'
|
|
16
|
+
*/
|
|
17
|
+
static percentage(value: number, decimals?: number, locale?: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Human-readable file size.
|
|
20
|
+
* @example Num.fileSize(1536) → '1.50 KB'
|
|
21
|
+
*/
|
|
22
|
+
static fileSize(bytes: number, precision?: number): string;
|
|
23
|
+
/**
|
|
24
|
+
* Abbreviate large numbers.
|
|
25
|
+
* @example Num.abbreviate(1_500_000) → '1.5M'
|
|
26
|
+
*/
|
|
27
|
+
static abbreviate(value: number, precision?: number): string;
|
|
28
|
+
/**
|
|
29
|
+
* Ordinal suffix.
|
|
30
|
+
* @example Num.ordinal(1) → '1st'
|
|
31
|
+
* @example Num.ordinal(22) → '22nd'
|
|
32
|
+
*/
|
|
33
|
+
static ordinal(value: number): string;
|
|
34
|
+
/**
|
|
35
|
+
* Clamp a number within a range.
|
|
36
|
+
* @example Num.clamp(150, 0, 100) → 100
|
|
37
|
+
*/
|
|
38
|
+
static clamp(value: number, min: number, max: number): number;
|
|
39
|
+
/**
|
|
40
|
+
* Remove trailing zeros after the decimal point.
|
|
41
|
+
* @example Num.trim(1.5000) → '1.5'
|
|
42
|
+
* @example Num.trim(1.0) → '1'
|
|
43
|
+
*/
|
|
44
|
+
static trim(value: number, decimals?: number): string;
|
|
45
|
+
/**
|
|
46
|
+
* Spell out an integer in English words.
|
|
47
|
+
* Supports integers from -(10^15 - 1) to (10^15 - 1).
|
|
48
|
+
* @example Num.spell(42) → 'forty-two'
|
|
49
|
+
* @example Num.spell(1001) → 'one thousand one'
|
|
50
|
+
*/
|
|
51
|
+
static spell(value: number): string;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=num.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"num.d.ts","sourceRoot":"","sources":["../src/num.ts"],"names":[],"mappings":"AAqBA,qBAAa,GAAG;IAEd;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,SAAU,GAAG,MAAM;IAQzE;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAQ,EAAE,MAAM,SAAU,GAAG,MAAM;IAI1E;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,MAAM,SAAU,GAAG,MAAM;IAQxE;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,MAAM;IAQrD;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,MAAM;IAUvD;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAWrC;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7D;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAOrD;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAoBpC"}
|
package/dist/num.js
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
// ─── Num ───────────────────────────────────────────────────
|
|
2
|
+
const ONES = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine',
|
|
3
|
+
'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen',
|
|
4
|
+
'seventeen', 'eighteen', 'nineteen'];
|
|
5
|
+
const TENS = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
|
|
6
|
+
function spellBelow1000(n) {
|
|
7
|
+
if (n === 0)
|
|
8
|
+
return '';
|
|
9
|
+
if (n < 20)
|
|
10
|
+
return ONES[n];
|
|
11
|
+
if (n < 100) {
|
|
12
|
+
const t = TENS[Math.floor(n / 10)];
|
|
13
|
+
const o = n % 10;
|
|
14
|
+
return o === 0 ? t : `${t}-${ONES[o]}`;
|
|
15
|
+
}
|
|
16
|
+
const h = Math.floor(n / 100);
|
|
17
|
+
const rem = n % 100;
|
|
18
|
+
const tail = rem === 0 ? '' : ` ${spellBelow1000(rem)}`;
|
|
19
|
+
return `${ONES[h]} hundred${tail}`;
|
|
20
|
+
}
|
|
21
|
+
export class Num {
|
|
22
|
+
/**
|
|
23
|
+
* Format a number with locale-aware separators.
|
|
24
|
+
* @example Num.format(1234567.89, 2) → '1,234,567.89'
|
|
25
|
+
*/
|
|
26
|
+
static format(value, decimals, locale = 'en-US') {
|
|
27
|
+
return new Intl.NumberFormat(locale, {
|
|
28
|
+
...(decimals !== undefined
|
|
29
|
+
? { minimumFractionDigits: decimals, maximumFractionDigits: decimals }
|
|
30
|
+
: {}),
|
|
31
|
+
}).format(value);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Format as currency.
|
|
35
|
+
* @example Num.currency(9.99) → '$9.99'
|
|
36
|
+
* @example Num.currency(9.99, 'EUR', 'de-DE') → '9,99 €'
|
|
37
|
+
*/
|
|
38
|
+
static currency(value, currency = 'USD', locale = 'en-US') {
|
|
39
|
+
return new Intl.NumberFormat(locale, { style: 'currency', currency }).format(value);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Format as a percentage. `value` is the raw number (50 = 50%, not 0.5).
|
|
43
|
+
* @example Num.percentage(73.5, 1) → '73.5%'
|
|
44
|
+
*/
|
|
45
|
+
static percentage(value, decimals = 0, locale = 'en-US') {
|
|
46
|
+
return new Intl.NumberFormat(locale, {
|
|
47
|
+
style: 'percent',
|
|
48
|
+
minimumFractionDigits: decimals,
|
|
49
|
+
maximumFractionDigits: decimals,
|
|
50
|
+
}).format(value / 100);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Human-readable file size.
|
|
54
|
+
* @example Num.fileSize(1536) → '1.50 KB'
|
|
55
|
+
*/
|
|
56
|
+
static fileSize(bytes, precision = 2) {
|
|
57
|
+
const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];
|
|
58
|
+
if (bytes === 0)
|
|
59
|
+
return '0 B';
|
|
60
|
+
const i = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
|
|
61
|
+
const val = bytes / Math.pow(1024, i);
|
|
62
|
+
return `${val.toFixed(i === 0 ? 0 : precision)} ${units[i]}`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Abbreviate large numbers.
|
|
66
|
+
* @example Num.abbreviate(1_500_000) → '1.5M'
|
|
67
|
+
*/
|
|
68
|
+
static abbreviate(value, precision = 1) {
|
|
69
|
+
const abs = Math.abs(value);
|
|
70
|
+
const sign = value < 0 ? '-' : '';
|
|
71
|
+
if (abs >= 1e12)
|
|
72
|
+
return `${sign}${(abs / 1e12).toFixed(precision)}T`;
|
|
73
|
+
if (abs >= 1e9)
|
|
74
|
+
return `${sign}${(abs / 1e9).toFixed(precision)}B`;
|
|
75
|
+
if (abs >= 1e6)
|
|
76
|
+
return `${sign}${(abs / 1e6).toFixed(precision)}M`;
|
|
77
|
+
if (abs >= 1e3)
|
|
78
|
+
return `${sign}${(abs / 1e3).toFixed(precision)}K`;
|
|
79
|
+
return String(value);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Ordinal suffix.
|
|
83
|
+
* @example Num.ordinal(1) → '1st'
|
|
84
|
+
* @example Num.ordinal(22) → '22nd'
|
|
85
|
+
*/
|
|
86
|
+
static ordinal(value) {
|
|
87
|
+
const abs = Math.abs(Math.trunc(value));
|
|
88
|
+
const mod10 = abs % 10;
|
|
89
|
+
const mod100 = abs % 100;
|
|
90
|
+
if (mod100 >= 11 && mod100 <= 13)
|
|
91
|
+
return `${value}th`;
|
|
92
|
+
if (mod10 === 1)
|
|
93
|
+
return `${value}st`;
|
|
94
|
+
if (mod10 === 2)
|
|
95
|
+
return `${value}nd`;
|
|
96
|
+
if (mod10 === 3)
|
|
97
|
+
return `${value}rd`;
|
|
98
|
+
return `${value}th`;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Clamp a number within a range.
|
|
102
|
+
* @example Num.clamp(150, 0, 100) → 100
|
|
103
|
+
*/
|
|
104
|
+
static clamp(value, min, max) {
|
|
105
|
+
return Math.min(Math.max(value, min), max);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Remove trailing zeros after the decimal point.
|
|
109
|
+
* @example Num.trim(1.5000) → '1.5'
|
|
110
|
+
* @example Num.trim(1.0) → '1'
|
|
111
|
+
*/
|
|
112
|
+
static trim(value, decimals) {
|
|
113
|
+
if (decimals !== undefined) {
|
|
114
|
+
return parseFloat(value.toFixed(decimals)).toString();
|
|
115
|
+
}
|
|
116
|
+
return parseFloat(value.toFixed(10)).toString();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Spell out an integer in English words.
|
|
120
|
+
* Supports integers from -(10^15 - 1) to (10^15 - 1).
|
|
121
|
+
* @example Num.spell(42) → 'forty-two'
|
|
122
|
+
* @example Num.spell(1001) → 'one thousand one'
|
|
123
|
+
*/
|
|
124
|
+
static spell(value) {
|
|
125
|
+
const n = Math.trunc(value);
|
|
126
|
+
if (n === 0)
|
|
127
|
+
return 'zero';
|
|
128
|
+
const sign = n < 0 ? 'negative ' : '';
|
|
129
|
+
const abs = Math.abs(n);
|
|
130
|
+
const billions = Math.floor(abs / 1_000_000_000);
|
|
131
|
+
const millions = Math.floor((abs % 1_000_000_000) / 1_000_000);
|
|
132
|
+
const thousands = Math.floor((abs % 1_000_000) / 1_000);
|
|
133
|
+
const remainder = abs % 1_000;
|
|
134
|
+
const parts = [];
|
|
135
|
+
if (billions)
|
|
136
|
+
parts.push(`${spellBelow1000(billions)} billion`);
|
|
137
|
+
if (millions)
|
|
138
|
+
parts.push(`${spellBelow1000(millions)} million`);
|
|
139
|
+
if (thousands)
|
|
140
|
+
parts.push(`${spellBelow1000(thousands)} thousand`);
|
|
141
|
+
if (remainder)
|
|
142
|
+
parts.push(spellBelow1000(remainder));
|
|
143
|
+
return sign + parts.join(' ');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=num.js.map
|
package/dist/num.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"num.js","sourceRoot":"","sources":["../src/num.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;IACzE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS;IACvE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AACnD,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAEnG,SAAS,cAAc,CAAC,CAAS;IAC/B,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACtB,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC,CAAC,CAAE,CAAA;IAC3B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAE,CAAA;QACnC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;QAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IACxC,CAAC;IACD,MAAM,CAAC,GAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAC9B,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;IACnB,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAA;IACvD,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAA;AACpC,CAAC;AAED,MAAM,OAAO,GAAG;IAEd;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,KAAa,EAAE,QAAiB,EAAE,MAAM,GAAG,OAAO;QAC9D,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACnC,GAAG,CAAC,QAAQ,KAAK,SAAS;gBACxB,CAAC,CAAC,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE;gBACtE,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAClB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAM,GAAG,OAAO;QAC/D,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrF,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,KAAa,EAAE,QAAQ,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;QAC7D,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACnC,KAAK,EAAmB,SAAS;YACjC,qBAAqB,EAAG,QAAQ;YAChC,qBAAqB,EAAG,QAAQ;SACjC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAA;IACxB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAa,EAAE,SAAS,GAAG,CAAC;QAC1C,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAC7B,MAAM,CAAC,GAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACpF,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACrC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,KAAa,EAAE,SAAS,GAAG,CAAC;QAC5C,MAAM,GAAG,GAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACjC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA;QACpE,IAAI,GAAG,IAAI,GAAG;YAAG,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA;QACnE,IAAI,GAAG,IAAI,GAAG;YAAG,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA;QACnE,IAAI,GAAG,IAAI,GAAG;YAAG,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA;QACnE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,MAAM,GAAG,GAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,MAAM,KAAK,GAAI,GAAG,GAAG,EAAE,CAAA;QACvB,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAA;QACxB,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,GAAG,KAAK,IAAI,CAAA;QACrD,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,IAAI,CAAA;QACpC,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,IAAI,CAAA;QACpC,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,IAAI,CAAA;QACpC,OAAO,GAAG,KAAK,IAAI,CAAA;IACrB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;IAC5C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,KAAa,EAAE,QAAiB;QAC1C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QACvD,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACjD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,KAAa;QACxB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAA;QAE1B,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;QACrC,MAAM,GAAG,GAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAExB,MAAM,QAAQ,GAAM,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,aAAa,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,SAAS,CAAC,CAAA;QACjE,MAAM,SAAS,GAAK,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,CAAA;QACzD,MAAM,SAAS,GAAK,GAAG,GAAG,KAAK,CAAA;QAE/B,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,QAAQ;YAAG,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAChE,IAAI,QAAQ;YAAG,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAChE,IAAI,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAClE,IAAI,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;QAEpD,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/B,CAAC;CACF"}
|