@lucaismyname/l1-utils 0.1.7 → 0.1.8
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/dist/date.d.ts +5 -0
- package/dist/date.d.ts.map +1 -0
- package/dist/date.js +46 -0
- package/dist/date.js.map +1 -0
- package/dist/http.d.ts +25 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +37 -2
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/string.d.ts +7 -0
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +30 -0
- package/dist/string.js.map +1 -1
- package/package.json +1 -1
package/dist/date.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type DateInput = Date | number | string;
|
|
2
|
+
export declare function toIsoDate(input: DateInput): string;
|
|
3
|
+
export declare function formatDate(input: DateInput, locale?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions): string;
|
|
4
|
+
export declare function formatRelativeTime(input: DateInput, now?: DateInput, locale?: string | string[] | undefined): string;
|
|
5
|
+
//# sourceMappingURL=date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;AAc9C,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAGlD;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAChB,MAAM,GAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAqB,EACjD,OAAO,GAAE,IAAI,CAAC,qBAA+C,GAC5D,MAAM,CAGR;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,GAAG,GAAE,SAAsB,EAC3B,MAAM,GAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAqB,GAChD,MAAM,CA8BR"}
|
package/dist/date.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
function toDate(input) {
|
|
2
|
+
const d = input instanceof Date ? input : new Date(input);
|
|
3
|
+
if (Number.isNaN(d.getTime())) {
|
|
4
|
+
throw new Error('Invalid date');
|
|
5
|
+
}
|
|
6
|
+
return d;
|
|
7
|
+
}
|
|
8
|
+
function pad2(n) {
|
|
9
|
+
return String(n).padStart(2, '0');
|
|
10
|
+
}
|
|
11
|
+
export function toIsoDate(input) {
|
|
12
|
+
const d = toDate(input);
|
|
13
|
+
return `${d.getUTCFullYear()}-${pad2(d.getUTCMonth() + 1)}-${pad2(d.getUTCDate())}`;
|
|
14
|
+
}
|
|
15
|
+
export function formatDate(input, locale = undefined, options = { dateStyle: 'medium' }) {
|
|
16
|
+
const d = toDate(input);
|
|
17
|
+
return new Intl.DateTimeFormat(locale, options).format(d);
|
|
18
|
+
}
|
|
19
|
+
export function formatRelativeTime(input, now = new Date(), locale = undefined) {
|
|
20
|
+
const date = toDate(input);
|
|
21
|
+
const base = toDate(now);
|
|
22
|
+
const diffMs = date.getTime() - base.getTime();
|
|
23
|
+
const diffSec = diffMs / 1000;
|
|
24
|
+
const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });
|
|
25
|
+
const abs = Math.abs(diffSec);
|
|
26
|
+
if (abs < 60)
|
|
27
|
+
return rtf.format(Math.round(diffSec), 'second');
|
|
28
|
+
const diffMin = diffSec / 60;
|
|
29
|
+
if (Math.abs(diffMin) < 60)
|
|
30
|
+
return rtf.format(Math.round(diffMin), 'minute');
|
|
31
|
+
const diffHour = diffMin / 60;
|
|
32
|
+
if (Math.abs(diffHour) < 24)
|
|
33
|
+
return rtf.format(Math.round(diffHour), 'hour');
|
|
34
|
+
const diffDay = diffHour / 24;
|
|
35
|
+
if (Math.abs(diffDay) < 7)
|
|
36
|
+
return rtf.format(Math.round(diffDay), 'day');
|
|
37
|
+
const diffWeek = diffDay / 7;
|
|
38
|
+
if (Math.abs(diffWeek) < 4)
|
|
39
|
+
return rtf.format(Math.round(diffWeek), 'week');
|
|
40
|
+
const diffMonth = diffDay / 30;
|
|
41
|
+
if (Math.abs(diffMonth) < 12)
|
|
42
|
+
return rtf.format(Math.round(diffMonth), 'month');
|
|
43
|
+
const diffYear = diffDay / 365;
|
|
44
|
+
return rtf.format(Math.round(diffYear), 'year');
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=date.js.map
|
package/dist/date.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AAEA,SAAS,MAAM,CAAC,KAAgB;IAC9B,MAAM,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IACzD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAgB;IACxC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,OAAO,GAAG,CAAC,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAgB,EAChB,SAAwC,SAAS,EACjD,UAAsC,EAAE,SAAS,EAAE,QAAQ,EAAE;IAE7D,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAgB,EAChB,MAAiB,IAAI,IAAI,EAAE,EAC3B,SAAwC,SAAS;IAEjD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IAExB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;IAC9C,MAAM,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAE7B,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;IAEpE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAE7B,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAA;IAE9D,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,CAAA;IAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAA;IAE5E,MAAM,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAA;IAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAA;IAE5E,MAAM,OAAO,GAAG,QAAQ,GAAG,EAAE,CAAA;IAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAA;IAExE,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAA;IAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAA;IAE3E,MAAM,SAAS,GAAG,OAAO,GAAG,EAAE,CAAA;IAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAA;IAE/E,MAAM,QAAQ,GAAG,OAAO,GAAG,GAAG,CAAA;IAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAA;AACjD,CAAC"}
|
package/dist/http.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { L1Error } from './errors';
|
|
1
2
|
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
2
3
|
export type HttpClientOptions = {
|
|
3
4
|
baseUrl: string;
|
|
@@ -9,6 +10,19 @@ export type RequestOptions = {
|
|
|
9
10
|
headers?: Record<string, string>;
|
|
10
11
|
body?: unknown;
|
|
11
12
|
};
|
|
13
|
+
export declare class HttpError extends L1Error {
|
|
14
|
+
readonly status: number;
|
|
15
|
+
readonly statusText: string;
|
|
16
|
+
readonly url: string;
|
|
17
|
+
readonly payload?: unknown;
|
|
18
|
+
constructor(opts: {
|
|
19
|
+
status: number;
|
|
20
|
+
statusText: string;
|
|
21
|
+
url: string;
|
|
22
|
+
payload?: unknown;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export declare function isHttpError(err: unknown): err is HttpError;
|
|
12
26
|
export declare function createHttpClient(opts: HttpClientOptions): {
|
|
13
27
|
request: <T>(method: HttpMethod, path: string, init?: RequestOptions) => Promise<T>;
|
|
14
28
|
get: <T>(path: string, init?: Omit<RequestOptions, "body">) => Promise<T>;
|
|
@@ -17,4 +31,15 @@ export declare function createHttpClient(opts: HttpClientOptions): {
|
|
|
17
31
|
patch: <T>(path: string, init?: RequestOptions) => Promise<T>;
|
|
18
32
|
del: <T>(path: string, init?: Omit<RequestOptions, "body">) => Promise<T>;
|
|
19
33
|
};
|
|
34
|
+
export type ApiClientOptions = HttpClientOptions;
|
|
35
|
+
export declare function createApiClient(opts: ApiClientOptions): {
|
|
36
|
+
request: <T>(method: HttpMethod, path: string, init?: RequestOptions) => Promise<T>;
|
|
37
|
+
get: <T>(path: string, init?: Omit<RequestOptions, "body">) => Promise<T>;
|
|
38
|
+
post: <T>(path: string, init?: RequestOptions) => Promise<T>;
|
|
39
|
+
put: <T>(path: string, init?: RequestOptions) => Promise<T>;
|
|
40
|
+
patch: <T>(path: string, init?: RequestOptions) => Promise<T>;
|
|
41
|
+
del: <T>(path: string, init?: Omit<RequestOptions, "body">) => Promise<T>;
|
|
42
|
+
getJson: <T>(path: string, init?: Omit<RequestOptions, "body">) => Promise<T>;
|
|
43
|
+
postJson: <T>(path: string, body?: unknown, init?: Omit<RequestOptions, "body">) => Promise<T>;
|
|
44
|
+
};
|
|
20
45
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEpE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,qBAAa,SAAU,SAAQ,OAAO;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;gBAEd,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;CAWzF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,SAAS,CAE1D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB;cAG/B,CAAC,UACd,UAAU,QACZ,MAAM,SACL,cAAc,KACpB,OAAO,CAAC,CAAC,CAAC;UAqCL,CAAC,QAAQ,MAAM,SAAS,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;WACnD,CAAC,QAAQ,MAAM,SAAS,cAAc;UACvC,CAAC,QAAQ,MAAM,SAAS,cAAc;YACpC,CAAC,QAAQ,MAAM,SAAS,cAAc;UACxC,CAAC,QAAQ,MAAM,SAAS,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;EAE7D;AAED,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAAA;AAEhD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB;cAnD7B,CAAC,UACd,UAAU,QACZ,MAAM,SACL,cAAc,KACpB,OAAO,CAAC,CAAC,CAAC;UAqCL,CAAC,QAAQ,MAAM,SAAS,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;WACnD,CAAC,QAAQ,MAAM,SAAS,cAAc;UACvC,CAAC,QAAQ,MAAM,SAAS,cAAc;YACpC,CAAC,QAAQ,MAAM,SAAS,cAAc;UACxC,CAAC,QAAQ,MAAM,SAAS,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;cAehD,CAAC,QAAQ,MAAM,SAAS,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;eACnD,CAAC,QAAQ,MAAM,SAAS,OAAO,SAAS,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;EAGlF"}
|
package/dist/http.js
CHANGED
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
import { L1Error } from './errors';
|
|
2
|
+
export class HttpError extends L1Error {
|
|
3
|
+
status;
|
|
4
|
+
statusText;
|
|
5
|
+
url;
|
|
6
|
+
payload;
|
|
7
|
+
constructor(opts) {
|
|
8
|
+
super(`HTTP ${opts.status} ${opts.statusText}`, {
|
|
9
|
+
status: opts.status,
|
|
10
|
+
cause: opts.payload,
|
|
11
|
+
});
|
|
12
|
+
this.name = 'HttpError';
|
|
13
|
+
this.status = opts.status;
|
|
14
|
+
this.statusText = opts.statusText;
|
|
15
|
+
this.url = opts.url;
|
|
16
|
+
this.payload = opts.payload;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function isHttpError(err) {
|
|
20
|
+
return err instanceof HttpError;
|
|
21
|
+
}
|
|
2
22
|
export function createHttpClient(opts) {
|
|
3
23
|
const fetchFn = opts.fetchImpl ?? fetch;
|
|
4
24
|
async function request(method, path, init) {
|
|
@@ -23,9 +43,11 @@ export function createHttpClient(opts) {
|
|
|
23
43
|
const isJson = contentType.includes('application/json');
|
|
24
44
|
const payload = isJson ? await res.json().catch(() => undefined) : await res.text().catch(() => undefined);
|
|
25
45
|
if (!res.ok) {
|
|
26
|
-
throw new
|
|
46
|
+
throw new HttpError({
|
|
27
47
|
status: res.status,
|
|
28
|
-
|
|
48
|
+
statusText: res.statusText,
|
|
49
|
+
url: url.toString(),
|
|
50
|
+
payload,
|
|
29
51
|
});
|
|
30
52
|
}
|
|
31
53
|
return payload;
|
|
@@ -39,4 +61,17 @@ export function createHttpClient(opts) {
|
|
|
39
61
|
del: (path, init) => request('DELETE', path, init),
|
|
40
62
|
};
|
|
41
63
|
}
|
|
64
|
+
export function createApiClient(opts) {
|
|
65
|
+
const http = createHttpClient(opts);
|
|
66
|
+
return {
|
|
67
|
+
request: http.request,
|
|
68
|
+
get: http.get,
|
|
69
|
+
post: http.post,
|
|
70
|
+
put: http.put,
|
|
71
|
+
patch: http.patch,
|
|
72
|
+
del: http.del,
|
|
73
|
+
getJson: (path, init) => http.get(path, init),
|
|
74
|
+
postJson: (path, body, init) => http.post(path, { ...init, body }),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
42
77
|
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAgBlC,MAAM,UAAU,gBAAgB,CAAC,IAAuB;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAA;IAEvC,KAAK,UAAU,OAAO,CACpB,MAAkB,EAClB,IAAY,EACZ,IAAqB;QAErB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,KAAK,SAAS;oBAAE,SAAQ;gBAC7B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACxC,MAAM;YACN,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,IAAI,CAAC,OAAO;gBACf,GAAG,IAAI,EAAE,OAAO;aACjB;YACD,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACzD,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QACzD,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QACvD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAE1G,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAgBlC,MAAM,OAAO,SAAU,SAAQ,OAAO;IAC3B,MAAM,CAAQ;IACd,UAAU,CAAQ;IAClB,GAAG,CAAQ;IACX,OAAO,CAAU;IAE1B,YAAY,IAA4E;QACtF,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YAC9C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,OAAO;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,GAAG,WAAW,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,GAAG,YAAY,SAAS,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAuB;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAA;IAEvC,KAAK,UAAU,OAAO,CACpB,MAAkB,EAClB,IAAY,EACZ,IAAqB;QAErB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,KAAK,SAAS;oBAAE,SAAQ;gBAC7B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACxC,MAAM;YACN,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,IAAI,CAAC,OAAO;gBACf,GAAG,IAAI,EAAE,OAAO;aACjB;YACD,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACzD,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QACzD,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QACvD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAE1G,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,SAAS,CAAC;gBAClB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACnB,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,OAAY,CAAA;IACrB,CAAC;IAED,OAAO;QACL,OAAO;QACP,GAAG,EAAE,CAAI,IAAY,EAAE,IAAmC,EAAE,EAAE,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;QAC5F,IAAI,EAAE,CAAI,IAAY,EAAE,IAAqB,EAAE,EAAE,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QAChF,GAAG,EAAE,CAAI,IAAY,EAAE,IAAqB,EAAE,EAAE,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;QAC9E,KAAK,EAAE,CAAI,IAAY,EAAE,IAAqB,EAAE,EAAE,CAAC,OAAO,CAAI,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;QAClF,GAAG,EAAE,CAAI,IAAY,EAAE,IAAmC,EAAE,EAAE,CAAC,OAAO,CAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;KAChG,CAAA;AACH,CAAC;AAID,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACnC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,CAAI,IAAY,EAAE,IAAmC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAI,IAAI,EAAE,IAAI,CAAC;QAC1F,QAAQ,EAAE,CAAI,IAAY,EAAE,IAAc,EAAE,IAAmC,EAAE,EAAE,CACjF,IAAI,CAAC,IAAI,CAAI,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;KACxC,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAE5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAE1B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAE5B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAE1B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAE5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAE1B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAE5B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAE1B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA"}
|
package/dist/string.d.ts
CHANGED
|
@@ -3,4 +3,11 @@ export declare function toSnakeCase(input: string): string;
|
|
|
3
3
|
export declare function toCamelCase(input: string): string;
|
|
4
4
|
export declare function toPascalCase(input: string): string;
|
|
5
5
|
export declare function truncate(input: string, maxLength: number, suffix?: string): string;
|
|
6
|
+
export declare function toTitleCase(input: string): string;
|
|
7
|
+
export declare function slugify(input: string): string;
|
|
8
|
+
export declare function maskSecret(input: string, opts?: {
|
|
9
|
+
revealStart?: number;
|
|
10
|
+
revealEnd?: number;
|
|
11
|
+
maskChar?: string;
|
|
12
|
+
}): string;
|
|
6
13
|
//# sourceMappingURL=string.d.ts.map
|
package/dist/string.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAmBA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAExC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAExC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAIxC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAEzC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAM,UAKtE"}
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAmBA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAExC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAExC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAIxC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAEzC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAM,UAKtE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAGxC;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,UAUpC;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,UAmBvE"}
|
package/dist/string.js
CHANGED
|
@@ -39,4 +39,34 @@ export function truncate(input, maxLength, suffix = '…') {
|
|
|
39
39
|
return input.slice(0, maxLength);
|
|
40
40
|
return input.slice(0, maxLength - suffix.length) + suffix;
|
|
41
41
|
}
|
|
42
|
+
export function toTitleCase(input) {
|
|
43
|
+
const words = wordsFromString(input);
|
|
44
|
+
return words.map(capitalize).join(' ');
|
|
45
|
+
}
|
|
46
|
+
export function slugify(input) {
|
|
47
|
+
const normalized = input
|
|
48
|
+
.normalize('NFKD')
|
|
49
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
50
|
+
.toLowerCase();
|
|
51
|
+
return normalized
|
|
52
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
53
|
+
.replace(/-+/g, '-')
|
|
54
|
+
.replace(/^-|-$/g, '');
|
|
55
|
+
}
|
|
56
|
+
export function maskSecret(input, opts) {
|
|
57
|
+
const str = input ?? '';
|
|
58
|
+
const revealStart = opts?.revealStart ?? 2;
|
|
59
|
+
const revealEnd = opts?.revealEnd ?? 2;
|
|
60
|
+
const maskChar = opts?.maskChar ?? '*';
|
|
61
|
+
if (!str)
|
|
62
|
+
return '';
|
|
63
|
+
if (revealStart < 0 || revealEnd < 0)
|
|
64
|
+
return str;
|
|
65
|
+
const keepStart = Math.min(revealStart, str.length);
|
|
66
|
+
const keepEnd = Math.min(revealEnd, str.length - keepStart);
|
|
67
|
+
const maskedLen = Math.max(0, str.length - keepStart - keepEnd);
|
|
68
|
+
return (str.slice(0, keepStart) +
|
|
69
|
+
maskChar.repeat(maskedLen) +
|
|
70
|
+
(keepEnd > 0 ? str.slice(str.length - keepEnd) : ''));
|
|
71
|
+
}
|
|
42
72
|
//# sourceMappingURL=string.js.map
|
package/dist/string.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,OAAO,GAAG,KAAK;SAClB,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,IAAI,EAAE,CAAA;IAET,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IAEvB,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,SAAiB,EAAE,MAAM,GAAG,GAAG;IACrE,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAChE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;AAC3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"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"}
|