@shware/http 2.11.4 → 2.12.0
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/_virtual/_rolldown/runtime.cjs +13 -0
- package/dist/_virtual/_rolldown/runtime.mjs +13 -0
- package/dist/cache/index.cjs +5 -30
- package/dist/cache/index.cjs.map +1 -1
- package/dist/cache/index.d.cts +7 -5
- package/dist/cache/index.d.cts.map +1 -0
- package/dist/cache/index.d.mts +11 -0
- package/dist/cache/index.d.mts.map +1 -0
- package/dist/cache/index.mjs +5 -6
- package/dist/cache/index.mjs.map +1 -1
- package/dist/error/detail.cjs +100 -90
- package/dist/error/detail.cjs.map +1 -1
- package/dist/error/detail.d.cts +77 -78
- package/dist/error/detail.d.cts.map +1 -0
- package/dist/error/detail.d.mts +108 -0
- package/dist/error/detail.d.mts.map +1 -0
- package/dist/error/detail.mjs +99 -65
- package/dist/error/detail.mjs.map +1 -1
- package/dist/error/i18n/en-us.cjs +5 -29
- package/dist/error/i18n/en-us.cjs.map +1 -1
- package/dist/error/i18n/en-us.d.cts +3 -1
- package/dist/error/i18n/en-us.d.cts.map +1 -0
- package/dist/error/i18n/en-us.d.mts +5 -0
- package/dist/error/i18n/en-us.d.mts.map +1 -0
- package/dist/error/i18n/en-us.mjs +5 -5
- package/dist/error/i18n/en-us.mjs.map +1 -1
- package/dist/error/index.cjs +29 -56
- package/dist/error/index.cjs.map +1 -1
- package/dist/error/index.d.cts +12 -10
- package/dist/error/index.d.cts.map +1 -0
- package/dist/error/index.d.mts +21 -0
- package/dist/error/index.d.mts.map +1 -0
- package/dist/error/index.mjs +25 -28
- package/dist/error/index.mjs.map +1 -1
- package/dist/error/parse.cjs +63 -61
- package/dist/error/parse.cjs.map +1 -1
- package/dist/error/parse.d.cts +8 -7
- package/dist/error/parse.d.cts.map +1 -0
- package/dist/error/{parse.d.ts → parse.d.mts} +8 -7
- package/dist/error/parse.d.mts.map +1 -0
- package/dist/error/parse.mjs +59 -33
- package/dist/error/parse.mjs.map +1 -1
- package/dist/error/reason.cjs +0 -19
- package/dist/error/reason.d.cts +5 -4
- package/dist/error/reason.d.cts.map +1 -0
- package/dist/error/reason.d.mts +6 -0
- package/dist/error/reason.d.mts.map +1 -0
- package/dist/error/reason.mjs +1 -1
- package/dist/error/status.cjs +103 -256
- package/dist/error/status.cjs.map +1 -1
- package/dist/error/status.d.cts +58 -58
- package/dist/error/status.d.cts.map +1 -0
- package/dist/error/status.d.mts +69 -0
- package/dist/error/status.d.mts.map +1 -0
- package/dist/error/status.mjs +98 -227
- package/dist/error/status.mjs.map +1 -1
- package/dist/google-one-tap/index.cjs +135 -138
- package/dist/google-one-tap/index.cjs.map +1 -1
- package/dist/google-one-tap/index.d.cts +49 -48
- package/dist/google-one-tap/index.d.cts.map +1 -0
- package/dist/google-one-tap/index.d.mts +82 -0
- package/dist/google-one-tap/index.d.mts.map +1 -0
- package/dist/google-one-tap/index.mjs +133 -112
- package/dist/google-one-tap/index.mjs.map +1 -1
- package/dist/google-one-tap/types.cjs +0 -19
- package/dist/google-one-tap/types.d.cts +124 -122
- package/dist/google-one-tap/types.d.cts.map +1 -0
- package/dist/google-one-tap/types.d.mts +157 -0
- package/dist/google-one-tap/types.d.mts.map +1 -0
- package/dist/google-one-tap/types.mjs +1 -1
- package/dist/hono/authorizer.cjs +28 -65
- package/dist/hono/authorizer.cjs.map +1 -1
- package/dist/hono/authorizer.d.cts +12 -11
- package/dist/hono/authorizer.d.cts.map +1 -0
- package/dist/hono/authorizer.d.mts +19 -0
- package/dist/hono/authorizer.d.mts.map +1 -0
- package/dist/hono/authorizer.mjs +23 -36
- package/dist/hono/authorizer.mjs.map +1 -1
- package/dist/hono/csrf.cjs +81 -92
- package/dist/hono/csrf.cjs.map +1 -1
- package/dist/hono/csrf.d.cts +46 -45
- package/dist/hono/csrf.d.cts.map +1 -0
- package/dist/hono/csrf.d.mts +76 -0
- package/dist/hono/csrf.d.mts.map +1 -0
- package/dist/hono/csrf.mjs +76 -63
- package/dist/hono/csrf.mjs.map +1 -1
- package/dist/hono/geolocation.cjs +10 -34
- package/dist/hono/geolocation.cjs.map +1 -1
- package/dist/hono/geolocation.d.cts +5 -4
- package/dist/hono/geolocation.d.cts.map +1 -0
- package/dist/hono/geolocation.d.mts +7 -0
- package/dist/hono/geolocation.d.mts.map +1 -0
- package/dist/hono/geolocation.mjs +8 -12
- package/dist/hono/geolocation.mjs.map +1 -1
- package/dist/hono/handler.cjs +37 -61
- package/dist/hono/handler.cjs.map +1 -1
- package/dist/hono/handler.d.cts +26 -25
- package/dist/hono/handler.d.cts.map +1 -0
- package/dist/hono/handler.d.mts +32 -0
- package/dist/hono/handler.d.mts.map +1 -0
- package/dist/hono/handler.mjs +34 -34
- package/dist/hono/handler.mjs.map +1 -1
- package/dist/hono/index.cjs +14 -48
- package/dist/hono/index.d.cts +7 -15
- package/dist/hono/index.d.mts +7 -0
- package/dist/hono/index.mjs +4 -14
- package/dist/hono/rate-limit.cjs +65 -110
- package/dist/hono/rate-limit.cjs.map +1 -1
- package/dist/hono/rate-limit.d.cts +27 -26
- package/dist/hono/rate-limit.d.cts.map +1 -0
- package/dist/hono/rate-limit.d.mts +36 -0
- package/dist/hono/rate-limit.d.mts.map +1 -0
- package/dist/hono/rate-limit.mjs +60 -81
- package/dist/hono/rate-limit.mjs.map +1 -1
- package/dist/hono/validator.cjs +47 -66
- package/dist/hono/validator.cjs.map +1 -1
- package/dist/hono/validator.d.cts +25 -30
- package/dist/hono/validator.d.cts.map +1 -0
- package/dist/hono/validator.d.mts +26 -0
- package/dist/hono/validator.d.mts.map +1 -0
- package/dist/hono/validator.mjs +43 -43
- package/dist/hono/validator.mjs.map +1 -1
- package/dist/index.cjs +39 -95
- package/dist/index.d.cts +12 -14
- package/dist/index.d.mts +12 -0
- package/dist/index.mjs +5 -48
- package/dist/iso/iso_3601_1.cjs +1512 -290
- package/dist/iso/iso_3601_1.cjs.map +1 -1
- package/dist/iso/iso_3601_1.d.cts +8 -6
- package/dist/iso/iso_3601_1.d.cts.map +1 -0
- package/dist/iso/iso_3601_1.d.mts +11 -0
- package/dist/iso/iso_3601_1.d.mts.map +1 -0
- package/dist/iso/iso_3601_1.mjs +1511 -265
- package/dist/iso/iso_3601_1.mjs.map +1 -1
- package/dist/max-length/index.cjs +158 -91
- package/dist/max-length/index.cjs.map +1 -1
- package/dist/max-length/index.d.cts +110 -1
- package/dist/max-length/index.d.cts.map +1 -0
- package/dist/{index-BhgdyigB.d.ts → max-length/index.d.mts} +9 -28
- package/dist/max-length/index.d.mts.map +1 -0
- package/dist/max-length/index.mjs +133 -47
- package/dist/max-length/index.mjs.map +1 -1
- package/dist/message.cjs +5 -30
- package/dist/message.cjs.map +1 -1
- package/dist/message.d.cts +3 -1
- package/dist/message.d.cts.map +1 -0
- package/dist/{message.d.ts → message.d.mts} +3 -1
- package/dist/message.d.mts.map +1 -0
- package/dist/message.mjs +5 -6
- package/dist/message.mjs.map +1 -1
- package/dist/polyfills/index.cjs +4 -4
- package/dist/polyfills/index.cjs.map +1 -1
- package/dist/polyfills/index.d.cts +1 -2
- package/dist/polyfills/index.d.mts +1 -0
- package/dist/polyfills/index.mjs +5 -2
- package/dist/polyfills/index.mjs.map +1 -1
- package/dist/response.cjs +191 -208
- package/dist/response.cjs.map +1 -1
- package/dist/response.d.cts +53 -54
- package/dist/response.d.cts.map +1 -0
- package/dist/response.d.mts +82 -0
- package/dist/response.d.mts.map +1 -0
- package/dist/response.mjs +182 -175
- package/dist/response.mjs.map +1 -1
- package/dist/snowflake.cjs +48 -70
- package/dist/snowflake.cjs.map +1 -1
- package/dist/snowflake.d.cts +16 -14
- package/dist/snowflake.d.cts.map +1 -0
- package/dist/snowflake.d.mts +31 -0
- package/dist/snowflake.d.mts.map +1 -0
- package/dist/snowflake.mjs +46 -44
- package/dist/snowflake.mjs.map +1 -1
- package/dist/utils/geolocation.cjs +51 -75
- package/dist/utils/geolocation.cjs.map +1 -1
- package/dist/utils/geolocation.d.cts +14 -12
- package/dist/utils/geolocation.d.cts.map +1 -0
- package/dist/utils/{geolocation.d.ts → geolocation.d.mts} +14 -12
- package/dist/utils/geolocation.d.mts.map +1 -0
- package/dist/utils/geolocation.mjs +47 -47
- package/dist/utils/geolocation.mjs.map +1 -1
- package/dist/utils/google-tag-gateway.cjs +35 -56
- package/dist/utils/google-tag-gateway.cjs.map +1 -1
- package/dist/utils/google-tag-gateway.d.cts +3 -1
- package/dist/utils/google-tag-gateway.d.cts.map +1 -0
- package/dist/utils/{google-tag-gateway.d.ts → google-tag-gateway.d.mts} +3 -1
- package/dist/utils/google-tag-gateway.d.mts.map +1 -0
- package/dist/utils/google-tag-gateway.mjs +33 -30
- package/dist/utils/google-tag-gateway.mjs.map +1 -1
- package/dist/utils/timing.cjs +50 -71
- package/dist/utils/timing.cjs.map +1 -1
- package/dist/utils/timing.d.cts +11 -9
- package/dist/utils/timing.d.cts.map +1 -0
- package/dist/utils/timing.d.mts +15 -0
- package/dist/utils/timing.d.mts.map +1 -0
- package/dist/utils/timing.mjs +49 -46
- package/dist/utils/timing.mjs.map +1 -1
- package/dist/webhook/index.cjs +43 -72
- package/dist/webhook/index.cjs.map +1 -1
- package/dist/webhook/index.d.cts +3 -1
- package/dist/webhook/index.d.cts.map +1 -0
- package/dist/webhook/{index.d.ts → index.d.mts} +3 -1
- package/dist/webhook/index.d.mts.map +1 -0
- package/dist/webhook/index.mjs +41 -46
- package/dist/webhook/index.mjs.map +1 -1
- package/package.json +49 -24
- package/dist/cache/index.d.ts +0 -9
- package/dist/error/detail.d.ts +0 -109
- package/dist/error/i18n/en-us.d.ts +0 -3
- package/dist/error/index.d.ts +0 -19
- package/dist/error/reason.cjs.map +0 -1
- package/dist/error/reason.d.ts +0 -5
- package/dist/error/reason.mjs.map +0 -1
- package/dist/error/status.d.ts +0 -69
- package/dist/google-one-tap/index.d.ts +0 -81
- package/dist/google-one-tap/types.cjs.map +0 -1
- package/dist/google-one-tap/types.d.ts +0 -155
- package/dist/google-one-tap/types.mjs.map +0 -1
- package/dist/hono/authorizer.d.ts +0 -18
- package/dist/hono/csrf.d.ts +0 -75
- package/dist/hono/geolocation.d.ts +0 -6
- package/dist/hono/handler.d.ts +0 -31
- package/dist/hono/index.cjs.map +0 -1
- package/dist/hono/index.d.ts +0 -15
- package/dist/hono/index.mjs.map +0 -1
- package/dist/hono/rate-limit.d.ts +0 -35
- package/dist/hono/validator.d.ts +0 -31
- package/dist/index-BhgdyigB.d.cts +0 -129
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts +0 -14
- package/dist/index.mjs.map +0 -1
- package/dist/iso/iso_3601_1.d.ts +0 -9
- package/dist/max-length/index.d.ts +0 -1
- package/dist/polyfills/index.d.ts +0 -2
- package/dist/response.d.ts +0 -83
- package/dist/snowflake.d.ts +0 -29
- package/dist/utils/timing.d.ts +0 -13
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
//#region src/response.d.ts
|
|
2
|
+
type Empty = {};
|
|
3
|
+
type EntityId = string | number;
|
|
4
|
+
type Entity = {
|
|
5
|
+
id: EntityId;
|
|
6
|
+
};
|
|
7
|
+
type Response<T = never> = {
|
|
8
|
+
data: T;
|
|
9
|
+
};
|
|
10
|
+
type InitParams = {
|
|
11
|
+
limit: number;
|
|
12
|
+
parent?: string;
|
|
13
|
+
};
|
|
14
|
+
type NextParams = {
|
|
15
|
+
limit: number;
|
|
16
|
+
parent?: string;
|
|
17
|
+
next: string;
|
|
18
|
+
};
|
|
19
|
+
type PrevParams = {
|
|
20
|
+
limit: number;
|
|
21
|
+
parent?: string;
|
|
22
|
+
prev: string;
|
|
23
|
+
};
|
|
24
|
+
type PageParams = {
|
|
25
|
+
limit: number;
|
|
26
|
+
prev?: string;
|
|
27
|
+
next?: string;
|
|
28
|
+
};
|
|
29
|
+
type ParentPageParams = {
|
|
30
|
+
limit: number;
|
|
31
|
+
parent: string;
|
|
32
|
+
prev?: string;
|
|
33
|
+
next?: string;
|
|
34
|
+
};
|
|
35
|
+
type Page<T = never> = {
|
|
36
|
+
data: T[];
|
|
37
|
+
paging: {
|
|
38
|
+
next?: string;
|
|
39
|
+
prev?: string;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
declare function pageParamsSchema(max?: number, defaultLimit?: number): import("zod/mini").ZodMiniObject<{
|
|
43
|
+
limit: import("zod/mini").ZodMiniDefault<import("zod/mini").ZodMiniNumber<unknown>>;
|
|
44
|
+
prev: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
45
|
+
next: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
46
|
+
}, import("zod/v4/core").$strip>;
|
|
47
|
+
declare const Cursor: {
|
|
48
|
+
of(prev: bigint | number | string | undefined, next: bigint | number | string | undefined): Page['paging'];
|
|
49
|
+
empty(): Page['paging'];
|
|
50
|
+
encode(id: bigint | number | string | undefined): string | undefined;
|
|
51
|
+
decode<T extends 'bigint' | 'number' | 'string' = 'bigint'>(token: string, type?: T): T extends 'bigint' ? bigint : T extends 'number' ? number : string;
|
|
52
|
+
};
|
|
53
|
+
declare const initialPageParam: Page['paging'];
|
|
54
|
+
declare function getPreviousPageParam<T = never>(first: Page<T>): Page['paging'] | null;
|
|
55
|
+
declare function getNextPageParam<T = never>(last: Page<T>): Page['paging'] | null;
|
|
56
|
+
type InfinitePageData<T> = {
|
|
57
|
+
pages: Array<Page<T>>;
|
|
58
|
+
pageParams: Array<Page['paging']>;
|
|
59
|
+
};
|
|
60
|
+
declare const Pages: {
|
|
61
|
+
flatten<T>(data: InfinitePageData<T>): T[];
|
|
62
|
+
dedupe<T extends Entity>(data: InfinitePageData<T>): T[];
|
|
63
|
+
prepend<T>(item: T): (data: InfinitePageData<T> | undefined) => InfinitePageData<T> | undefined;
|
|
64
|
+
append<T>(item: T): (data: InfinitePageData<T> | undefined) => InfinitePageData<T> | undefined;
|
|
65
|
+
update<T>(updater: T, predicate: (item: T) => boolean): (data: InfinitePageData<T> | undefined) => InfinitePageData<T> | undefined;
|
|
66
|
+
updateById<T extends Entity>(updated: T): (data: InfinitePageData<T> | undefined) => InfinitePageData<T> | undefined;
|
|
67
|
+
remove<T>(predicate: (item: T) => boolean): (data: InfinitePageData<T> | undefined) => InfinitePageData<T> | undefined;
|
|
68
|
+
removeById<T extends Entity>(id: EntityId): (data: InfinitePageData<T> | undefined) => InfinitePageData<T> | undefined;
|
|
69
|
+
};
|
|
70
|
+
declare const Items: {
|
|
71
|
+
push<T>(newItems: T[]): (data: T[] | undefined) => T[] | undefined;
|
|
72
|
+
unshift<T>(newItems: T[]): (data: T[] | undefined) => T[] | undefined;
|
|
73
|
+
pushAndDedupe<T extends Entity>(newItems: T[]): (data: T[] | undefined) => T[] | undefined;
|
|
74
|
+
unshiftAndDedupe<T extends Entity>(newItems: T[]): (data: T[] | undefined) => T[] | undefined;
|
|
75
|
+
update<T>(updater: T, predicate: (item: T) => boolean): (data: T[] | undefined) => T[] | undefined;
|
|
76
|
+
updateById<T extends Entity>(updated: T): (data: T[] | undefined) => T[] | undefined;
|
|
77
|
+
remove<T>(predicate: (item: T) => boolean): (data: T[] | undefined) => T[] | undefined;
|
|
78
|
+
removeById<T extends Entity>(id: EntityId): (data: T[] | undefined) => T[] | undefined;
|
|
79
|
+
};
|
|
80
|
+
//#endregion
|
|
81
|
+
export { Cursor, Empty, Entity, EntityId, InfinitePageData, InitParams, Items, NextParams, Page, PageParams, Pages, ParentPageParams, PrevParams, Response, getNextPageParam, getPreviousPageParam, initialPageParam, pageParamsSchema };
|
|
82
|
+
//# sourceMappingURL=response.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.d.mts","names":[],"sources":["../src/response.ts"],"mappings":";KAIY;KACA;KACA;EAAW,IAAI;;KAEf,SAAS;EAAe,MAAM;;KAE9B;EAAe;EAAe;;KAC9B;EAAe;EAAe;EAAiB;;KAC/C;EAAe;EAAe;EAAiB;;KAC/C;EAAe;EAAe;EAAe;;KAC7C;EAAqB;EAAe;EAAgB;EAAe;;KACnE,KAAK;EAAe,MAAM;EAAK;IAAU;IAAe;;;iBAEpD,iBAAiB,cAAW,2CAAiB;;;;;cAQhD;EACX,GAAE,4CAC0C,6CAEzC;EAMH,SAAS;EAGT,OAAM;EAIN,OAAO,qDAAmD,eAC3C,OACP,IACL,8BAA8B;;cAUtB,kBAAkB;iBAEf,qBAAqB,WAAW,OAAO,KAAK,KAAK;iBAIjD,iBAAiB,WAAW,MAAM,KAAK,KAAK;KAIhD,iBAAiB;EAC3B,OAAO,MAAM,KAAK;EAClB,YAAY,MAAM;;cAGP;EACX,QAAQ,GAAC,MAAQ,iBAAiB,KAAK;EAGvC,OAAO,UAAU,QAAM,MAAQ,iBAAiB,KAAK;EAarD,QAAQ,GAAC,MAAQ,KAAC,MACF,iBAAiB,mBAAiB,iBAAiB;EAOnE,OAAO,GAAC,MAAQ,KAAC,MACD,iBAAiB,mBAAiB,iBAAiB;EAQnE,OAAO,GAAC,SAAW,GAAC,YAAc,MAAM,iBAAa,MACrC,iBAAiB,mBAAiB,iBAAiB;EAWnE,WAAW,UAAU,QAAM,SAAW,KAAC,MAAA,iBAAA,mBAAA,iBAAA;EAGvC,OAAO,GAAC,YAAc,MAAM,iBAAa,MACzB,iBAAiB,mBAAiB,iBAAiB;EAWnE,WAAW,UAAU,QAAM,IAAM,YAAQ,MAAA,iBAAA,mBAAA,iBAAA;;cAK9B;EACX,KAAK,GAAC,UAAY,OAAG,MACL,oBAAkB;EAKlC,QAAQ,GAAC,UAAY,OAAG,MACR,oBAAkB;EAKlC,cAAc,UAAU,QAAM,UAAY,OAAG,MAC7B,oBAAkB;EAmBlC,iBAAiB,UAAU,QAAM,UAAY,OAAG,MAChC,oBAAkB;EAmBlC,OAAO,GAAC,SAAW,GAAC,YAAc,MAAM,iBAAa,MACrC,oBAAkB;EAKlC,WAAW,UAAU,QAAM,SAAW,KAAC,MAAA,oBAAA;EAGvC,OAAO,GAAC,YAAc,MAAM,iBAAa,MACzB,oBAAkB;EAKlC,WAAW,UAAU,QAAM,IAAM,YAAQ,MAAA,oBAAA"}
|
package/dist/response.mjs
CHANGED
|
@@ -1,187 +1,194 @@
|
|
|
1
|
-
// src/response.ts
|
|
2
1
|
import { hasText } from "@shware/utils";
|
|
3
2
|
import { _default, coerce, int, maximum, minimum, object, optional, string } from "zod/mini";
|
|
3
|
+
//#region src/response.ts
|
|
4
4
|
function pageParamsSchema(max = 100, defaultLimit = 20) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
return object({
|
|
6
|
+
limit: _default(coerce.number().check(int(), minimum(1), maximum(max)), defaultLimit),
|
|
7
|
+
prev: optional(string()),
|
|
8
|
+
next: optional(string())
|
|
9
|
+
});
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
11
|
+
const Cursor = {
|
|
12
|
+
of(prev, next) {
|
|
13
|
+
return {
|
|
14
|
+
prev: prev ? this.encode(prev) : void 0,
|
|
15
|
+
next: next ? this.encode(next) : void 0
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
empty() {
|
|
19
|
+
return {
|
|
20
|
+
prev: void 0,
|
|
21
|
+
next: void 0
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
encode(id) {
|
|
25
|
+
if (!id) return void 0;
|
|
26
|
+
return Buffer.from(id.toString(), "utf-8").toString("base64");
|
|
27
|
+
},
|
|
28
|
+
decode(token, type = "bigint") {
|
|
29
|
+
const value = Buffer.from(token, "base64").toString("utf-8");
|
|
30
|
+
if (type === "bigint") return BigInt(value);
|
|
31
|
+
if (type === "number") return Number(value);
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
33
34
|
};
|
|
34
|
-
|
|
35
|
+
const initialPageParam = {};
|
|
35
36
|
function getPreviousPageParam(first) {
|
|
36
|
-
|
|
37
|
+
return hasText(first.paging.prev) ? { prev: first.paging.prev } : null;
|
|
37
38
|
}
|
|
38
39
|
function getNextPageParam(last) {
|
|
39
|
-
|
|
40
|
+
return hasText(last.paging.next) ? { next: last.paging.next } : null;
|
|
40
41
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
42
|
+
const Pages = {
|
|
43
|
+
flatten(data) {
|
|
44
|
+
return data.pages.flatMap((page) => page.data);
|
|
45
|
+
},
|
|
46
|
+
dedupe(data) {
|
|
47
|
+
const seen = /* @__PURE__ */ new Set();
|
|
48
|
+
const result = [];
|
|
49
|
+
for (const page of data.pages) for (const item of page.data) if (!seen.has(item.id)) {
|
|
50
|
+
seen.add(item.id);
|
|
51
|
+
result.push(item);
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
},
|
|
55
|
+
prepend(item) {
|
|
56
|
+
return (data) => {
|
|
57
|
+
if (!data) return data;
|
|
58
|
+
const [first, ...rest] = data.pages;
|
|
59
|
+
if (!first) return {
|
|
60
|
+
...data,
|
|
61
|
+
pages: [{
|
|
62
|
+
data: [item],
|
|
63
|
+
paging: {}
|
|
64
|
+
}]
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
...data,
|
|
68
|
+
pages: [{
|
|
69
|
+
...first,
|
|
70
|
+
data: [item, ...first.data]
|
|
71
|
+
}, ...rest]
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
},
|
|
75
|
+
append(item) {
|
|
76
|
+
return (data) => {
|
|
77
|
+
if (!data) return data;
|
|
78
|
+
const pages = data.pages;
|
|
79
|
+
const last = pages[pages.length - 1];
|
|
80
|
+
if (!last) return {
|
|
81
|
+
...data,
|
|
82
|
+
pages: [{
|
|
83
|
+
data: [item],
|
|
84
|
+
paging: {}
|
|
85
|
+
}]
|
|
86
|
+
};
|
|
87
|
+
return {
|
|
88
|
+
...data,
|
|
89
|
+
pages: [...pages.slice(0, -1), {
|
|
90
|
+
...last,
|
|
91
|
+
data: [...last.data, item]
|
|
92
|
+
}]
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
},
|
|
96
|
+
update(updater, predicate) {
|
|
97
|
+
return (data) => {
|
|
98
|
+
if (!data) return data;
|
|
99
|
+
return {
|
|
100
|
+
...data,
|
|
101
|
+
pages: data.pages.map((page) => ({
|
|
102
|
+
...page,
|
|
103
|
+
data: page.data.map((item) => predicate(item) ? updater : item)
|
|
104
|
+
}))
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
},
|
|
108
|
+
updateById(updated) {
|
|
109
|
+
return this.update(updated, (item) => item.id === updated.id);
|
|
110
|
+
},
|
|
111
|
+
remove(predicate) {
|
|
112
|
+
return (data) => {
|
|
113
|
+
if (!data) return data;
|
|
114
|
+
return {
|
|
115
|
+
...data,
|
|
116
|
+
pages: data.pages.map((page) => ({
|
|
117
|
+
...page,
|
|
118
|
+
data: page.data.filter((item) => !predicate(item))
|
|
119
|
+
}))
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
},
|
|
123
|
+
removeById(id) {
|
|
124
|
+
return this.remove((item) => item.id === id);
|
|
125
|
+
}
|
|
105
126
|
};
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
return (data) => {
|
|
170
|
-
if (!data) return data;
|
|
171
|
-
return data.filter((item) => !predicate(item));
|
|
172
|
-
};
|
|
173
|
-
},
|
|
174
|
-
removeById(id) {
|
|
175
|
-
return this.remove((item) => item.id === id);
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
export {
|
|
179
|
-
Cursor,
|
|
180
|
-
Items,
|
|
181
|
-
Pages,
|
|
182
|
-
getNextPageParam,
|
|
183
|
-
getPreviousPageParam,
|
|
184
|
-
initialPageParam,
|
|
185
|
-
pageParamsSchema
|
|
127
|
+
const Items = {
|
|
128
|
+
push(newItems) {
|
|
129
|
+
return (data) => {
|
|
130
|
+
if (!data) return newItems;
|
|
131
|
+
return [...data, ...newItems];
|
|
132
|
+
};
|
|
133
|
+
},
|
|
134
|
+
unshift(newItems) {
|
|
135
|
+
return (data) => {
|
|
136
|
+
if (!data) return newItems;
|
|
137
|
+
return [...newItems, ...data];
|
|
138
|
+
};
|
|
139
|
+
},
|
|
140
|
+
pushAndDedupe(newItems) {
|
|
141
|
+
return (data) => {
|
|
142
|
+
if (!data) return newItems;
|
|
143
|
+
const seen = /* @__PURE__ */ new Set();
|
|
144
|
+
const result = [];
|
|
145
|
+
for (const item of data) if (!seen.has(item.id)) {
|
|
146
|
+
seen.add(item.id);
|
|
147
|
+
result.push(item);
|
|
148
|
+
}
|
|
149
|
+
for (const item of newItems) if (!seen.has(item.id)) {
|
|
150
|
+
seen.add(item.id);
|
|
151
|
+
result.push(item);
|
|
152
|
+
}
|
|
153
|
+
return result;
|
|
154
|
+
};
|
|
155
|
+
},
|
|
156
|
+
unshiftAndDedupe(newItems) {
|
|
157
|
+
return (data) => {
|
|
158
|
+
if (!data) return newItems;
|
|
159
|
+
const seen = /* @__PURE__ */ new Set();
|
|
160
|
+
const result = [];
|
|
161
|
+
for (const item of newItems) if (!seen.has(item.id)) {
|
|
162
|
+
seen.add(item.id);
|
|
163
|
+
result.push(item);
|
|
164
|
+
}
|
|
165
|
+
for (const item of data) if (!seen.has(item.id)) {
|
|
166
|
+
seen.add(item.id);
|
|
167
|
+
result.push(item);
|
|
168
|
+
}
|
|
169
|
+
return result;
|
|
170
|
+
};
|
|
171
|
+
},
|
|
172
|
+
update(updater, predicate) {
|
|
173
|
+
return (data) => {
|
|
174
|
+
if (!data) return data;
|
|
175
|
+
return data.map((item) => predicate(item) ? updater : item);
|
|
176
|
+
};
|
|
177
|
+
},
|
|
178
|
+
updateById(updated) {
|
|
179
|
+
return this.update(updated, (item) => item.id === updated.id);
|
|
180
|
+
},
|
|
181
|
+
remove(predicate) {
|
|
182
|
+
return (data) => {
|
|
183
|
+
if (!data) return data;
|
|
184
|
+
return data.filter((item) => !predicate(item));
|
|
185
|
+
};
|
|
186
|
+
},
|
|
187
|
+
removeById(id) {
|
|
188
|
+
return this.remove((item) => item.id === id);
|
|
189
|
+
}
|
|
186
190
|
};
|
|
191
|
+
//#endregion
|
|
192
|
+
export { Cursor, Items, Pages, getNextPageParam, getPreviousPageParam, initialPageParam, pageParamsSchema };
|
|
193
|
+
|
|
187
194
|
//# sourceMappingURL=response.mjs.map
|
package/dist/response.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { hasText } from '@shware/utils';\nimport { _default, coerce, int, maximum, minimum, object, optional, string } from 'zod/mini';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type Empty = {};\nexport type EntityId = string | number;\nexport type Entity = { id: EntityId };\n\nexport type Response<T = never> = { data: T };\n\nexport type InitParams = { limit: number; parent?: string };\nexport type NextParams = { limit: number; parent?: string; next: string };\nexport type PrevParams = { limit: number; parent?: string; prev: string };\nexport type PageParams = { limit: number; prev?: string; next?: string };\nexport type ParentPageParams = { limit: number; parent: string; prev?: string; next?: string };\nexport type Page<T = never> = { data: T[]; paging: { next?: string; prev?: string } };\n\nexport function pageParamsSchema(max = 100, defaultLimit = 20) {\n return object({\n limit: _default(coerce.number().check(int(), minimum(1), maximum(max)), defaultLimit),\n prev: optional(string()),\n next: optional(string()),\n });\n}\n\nexport const Cursor = {\n of(\n prev: bigint | number | string | undefined,\n next: bigint | number | string | undefined\n ): Page['paging'] {\n return {\n prev: prev ? this.encode(prev) : undefined,\n next: next ? this.encode(next) : undefined,\n };\n },\n empty(): Page['paging'] {\n return { prev: undefined, next: undefined };\n },\n encode(id: bigint | number | string | undefined): string | undefined {\n if (!id) return undefined;\n return Buffer.from(id.toString(), 'utf-8').toString('base64');\n },\n decode<T extends 'bigint' | 'number' | 'string' = 'bigint'>(\n token: string,\n type: T = 'bigint' as T\n ): T extends 'bigint' ? bigint : T extends 'number' ? number : string {\n const value = Buffer.from(token, 'base64').toString('utf-8');\n if (type === 'bigint')\n return BigInt(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n if (type === 'number')\n return Number(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n return value as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n },\n};\n\nexport const initialPageParam: Page['paging'] = {};\n\nexport function getPreviousPageParam<T = never>(first: Page<T>): Page['paging'] | null {\n return hasText(first.paging.prev) ? { prev: first.paging.prev } : null;\n}\n\nexport function getNextPageParam<T = never>(last: Page<T>): Page['paging'] | null {\n return hasText(last.paging.next) ? { next: last.paging.next } : null;\n}\n\nexport type InfinitePageData<T> = {\n pages: Array<Page<T>>;\n pageParams: Array<Page['paging']>;\n};\n\nexport const Pages = {\n flatten<T>(data: InfinitePageData<T>): T[] {\n return data.pages.flatMap((page) => page.data);\n },\n dedupe<T extends Entity>(data: InfinitePageData<T>): T[] {\n const seen = new Set<EntityId>();\n const result: T[] = [];\n for (const page of data.pages) {\n for (const item of page.data) {\n if (!seen.has(item.id)) {\n seen.add(item.id);\n result.push(item);\n }\n }\n }\n return result;\n },\n prepend<T>(item: T) {\n return (data: InfinitePageData<T> | undefined): InfinitePageData<T> | undefined => {\n if (!data) return data;\n const [first, ...rest] = data.pages;\n if (!first) return { ...data, pages: [{ data: [item], paging: {} }] };\n return { ...data, pages: [{ ...first, data: [item, ...first.data] }, ...rest] };\n };\n },\n append<T>(item: T) {\n return (data: InfinitePageData<T> | undefined): InfinitePageData<T> | undefined => {\n if (!data) return data;\n const pages = data.pages;\n const last = pages[pages.length - 1];\n if (!last) return { ...data, pages: [{ data: [item], paging: {} }] };\n return { ...data, pages: [...pages.slice(0, -1), { ...last, data: [...last.data, item] }] };\n };\n },\n update<T>(updater: T, predicate: (item: T) => boolean) {\n return (data: InfinitePageData<T> | undefined): InfinitePageData<T> | undefined => {\n if (!data) return data;\n return {\n ...data,\n pages: data.pages.map((page) => ({\n ...page,\n data: page.data.map((item) => (predicate(item) ? updater : item)),\n })),\n };\n };\n },\n updateById<T extends Entity>(updated: T) {\n return this.update<T>(updated, (item) => item.id === updated.id);\n },\n remove<T>(predicate: (item: T) => boolean) {\n return (data: InfinitePageData<T> | undefined): InfinitePageData<T> | undefined => {\n if (!data) return data;\n return {\n ...data,\n pages: data.pages.map((page) => ({\n ...page,\n data: page.data.filter((item) => !predicate(item)),\n })),\n };\n };\n },\n removeById<T extends Entity>(id: EntityId) {\n return this.remove<T>((item) => item.id === id);\n },\n};\n\nexport const Items = {\n push<T>(newItems: T[]) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return newItems;\n return [...data, ...newItems];\n };\n },\n unshift<T>(newItems: T[]) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return newItems;\n return [...newItems, ...data];\n };\n },\n pushAndDedupe<T extends Entity>(newItems: T[]) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return newItems;\n const seen = new Set<EntityId>();\n const result: T[] = [];\n for (const item of data) {\n if (!seen.has(item.id)) {\n seen.add(item.id);\n result.push(item);\n }\n }\n for (const item of newItems) {\n if (!seen.has(item.id)) {\n seen.add(item.id);\n result.push(item);\n }\n }\n return result;\n };\n },\n unshiftAndDedupe<T extends Entity>(newItems: T[]) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return newItems;\n const seen = new Set<EntityId>();\n const result: T[] = [];\n for (const item of newItems) {\n if (!seen.has(item.id)) {\n seen.add(item.id);\n result.push(item);\n }\n }\n for (const item of data) {\n if (!seen.has(item.id)) {\n seen.add(item.id);\n result.push(item);\n }\n }\n return result;\n };\n },\n update<T>(updater: T, predicate: (item: T) => boolean) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return data;\n return data.map((item) => (predicate(item) ? updater : item));\n };\n },\n updateById<T extends Entity>(updated: T) {\n return this.update<T>(updated, (item) => item.id === updated.id);\n },\n remove<T>(predicate: (item: T) => boolean) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return data;\n return data.filter((item) => !predicate(item));\n };\n },\n removeById<T extends Entity>(id: EntityId) {\n return this.remove<T>((item) => item.id === id);\n },\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"file":"response.mjs","names":[],"sources":["../src/response.ts"],"sourcesContent":["import { hasText } from '@shware/utils';\nimport { _default, coerce, int, maximum, minimum, object, optional, string } from 'zod/mini';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type Empty = {};\nexport type EntityId = string | number;\nexport type Entity = { id: EntityId };\n\nexport type Response<T = never> = { data: T };\n\nexport type InitParams = { limit: number; parent?: string };\nexport type NextParams = { limit: number; parent?: string; next: string };\nexport type PrevParams = { limit: number; parent?: string; prev: string };\nexport type PageParams = { limit: number; prev?: string; next?: string };\nexport type ParentPageParams = { limit: number; parent: string; prev?: string; next?: string };\nexport type Page<T = never> = { data: T[]; paging: { next?: string; prev?: string } };\n\nexport function pageParamsSchema(max = 100, defaultLimit = 20) {\n return object({\n limit: _default(coerce.number().check(int(), minimum(1), maximum(max)), defaultLimit),\n prev: optional(string()),\n next: optional(string()),\n });\n}\n\nexport const Cursor = {\n of(\n prev: bigint | number | string | undefined,\n next: bigint | number | string | undefined\n ): Page['paging'] {\n return {\n prev: prev ? this.encode(prev) : undefined,\n next: next ? this.encode(next) : undefined,\n };\n },\n empty(): Page['paging'] {\n return { prev: undefined, next: undefined };\n },\n encode(id: bigint | number | string | undefined): string | undefined {\n if (!id) return undefined;\n return Buffer.from(id.toString(), 'utf-8').toString('base64');\n },\n decode<T extends 'bigint' | 'number' | 'string' = 'bigint'>(\n token: string,\n type: T = 'bigint' as T\n ): T extends 'bigint' ? bigint : T extends 'number' ? number : string {\n const value = Buffer.from(token, 'base64').toString('utf-8');\n if (type === 'bigint')\n return BigInt(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n if (type === 'number')\n return Number(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n return value as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n },\n};\n\nexport const initialPageParam: Page['paging'] = {};\n\nexport function getPreviousPageParam<T = never>(first: Page<T>): Page['paging'] | null {\n return hasText(first.paging.prev) ? { prev: first.paging.prev } : null;\n}\n\nexport function getNextPageParam<T = never>(last: Page<T>): Page['paging'] | null {\n return hasText(last.paging.next) ? { next: last.paging.next } : null;\n}\n\nexport type InfinitePageData<T> = {\n pages: Array<Page<T>>;\n pageParams: Array<Page['paging']>;\n};\n\nexport const Pages = {\n flatten<T>(data: InfinitePageData<T>): T[] {\n return data.pages.flatMap((page) => page.data);\n },\n dedupe<T extends Entity>(data: InfinitePageData<T>): T[] {\n const seen = new Set<EntityId>();\n const result: T[] = [];\n for (const page of data.pages) {\n for (const item of page.data) {\n if (!seen.has(item.id)) {\n seen.add(item.id);\n result.push(item);\n }\n }\n }\n return result;\n },\n prepend<T>(item: T) {\n return (data: InfinitePageData<T> | undefined): InfinitePageData<T> | undefined => {\n if (!data) return data;\n const [first, ...rest] = data.pages;\n if (!first) return { ...data, pages: [{ data: [item], paging: {} }] };\n return { ...data, pages: [{ ...first, data: [item, ...first.data] }, ...rest] };\n };\n },\n append<T>(item: T) {\n return (data: InfinitePageData<T> | undefined): InfinitePageData<T> | undefined => {\n if (!data) return data;\n const pages = data.pages;\n const last = pages[pages.length - 1];\n if (!last) return { ...data, pages: [{ data: [item], paging: {} }] };\n return { ...data, pages: [...pages.slice(0, -1), { ...last, data: [...last.data, item] }] };\n };\n },\n update<T>(updater: T, predicate: (item: T) => boolean) {\n return (data: InfinitePageData<T> | undefined): InfinitePageData<T> | undefined => {\n if (!data) return data;\n return {\n ...data,\n pages: data.pages.map((page) => ({\n ...page,\n data: page.data.map((item) => (predicate(item) ? updater : item)),\n })),\n };\n };\n },\n updateById<T extends Entity>(updated: T) {\n return this.update<T>(updated, (item) => item.id === updated.id);\n },\n remove<T>(predicate: (item: T) => boolean) {\n return (data: InfinitePageData<T> | undefined): InfinitePageData<T> | undefined => {\n if (!data) return data;\n return {\n ...data,\n pages: data.pages.map((page) => ({\n ...page,\n data: page.data.filter((item) => !predicate(item)),\n })),\n };\n };\n },\n removeById<T extends Entity>(id: EntityId) {\n return this.remove<T>((item) => item.id === id);\n },\n};\n\nexport const Items = {\n push<T>(newItems: T[]) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return newItems;\n return [...data, ...newItems];\n };\n },\n unshift<T>(newItems: T[]) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return newItems;\n return [...newItems, ...data];\n };\n },\n pushAndDedupe<T extends Entity>(newItems: T[]) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return newItems;\n const seen = new Set<EntityId>();\n const result: T[] = [];\n for (const item of data) {\n if (!seen.has(item.id)) {\n seen.add(item.id);\n result.push(item);\n }\n }\n for (const item of newItems) {\n if (!seen.has(item.id)) {\n seen.add(item.id);\n result.push(item);\n }\n }\n return result;\n };\n },\n unshiftAndDedupe<T extends Entity>(newItems: T[]) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return newItems;\n const seen = new Set<EntityId>();\n const result: T[] = [];\n for (const item of newItems) {\n if (!seen.has(item.id)) {\n seen.add(item.id);\n result.push(item);\n }\n }\n for (const item of data) {\n if (!seen.has(item.id)) {\n seen.add(item.id);\n result.push(item);\n }\n }\n return result;\n };\n },\n update<T>(updater: T, predicate: (item: T) => boolean) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return data;\n return data.map((item) => (predicate(item) ? updater : item));\n };\n },\n updateById<T extends Entity>(updated: T) {\n return this.update<T>(updated, (item) => item.id === updated.id);\n },\n remove<T>(predicate: (item: T) => boolean) {\n return (data: T[] | undefined): T[] | undefined => {\n if (!data) return data;\n return data.filter((item) => !predicate(item));\n };\n },\n removeById<T extends Entity>(id: EntityId) {\n return this.remove<T>((item) => item.id === id);\n },\n};\n"],"mappings":"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"}
|
package/dist/snowflake.cjs
CHANGED
|
@@ -1,75 +1,53 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/snowflake.ts
|
|
21
|
-
var snowflake_exports = {};
|
|
22
|
-
__export(snowflake_exports, {
|
|
23
|
-
UidGenerator: () => UidGenerator,
|
|
24
|
-
uid: () => uid
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(snowflake_exports);
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/snowflake.ts
|
|
3
|
+
/**
|
|
4
|
+
* A distributed unique ID generator inspired by Twitter's Snowflake.
|
|
5
|
+
*
|
|
6
|
+
* ID data bits:
|
|
7
|
+
* +----------------------+----------------+-----------+
|
|
8
|
+
* | delta millisecond | machine id | sequence |
|
|
9
|
+
* +----------------------+----------------+-----------+
|
|
10
|
+
* | 41bits | 10bits | 12bits |
|
|
11
|
+
* +----------------------+----------------+-----------+
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
27
14
|
function getNextMillisecond(timestamp) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
return now;
|
|
15
|
+
let now = BigInt(Date.now());
|
|
16
|
+
while (now < timestamp) now = BigInt(Date.now());
|
|
17
|
+
return now;
|
|
33
18
|
}
|
|
34
19
|
var UidGenerator = class {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
this.sequence = BigInt(0);
|
|
63
|
-
}
|
|
64
|
-
this.lastTimestamp = timestamp;
|
|
65
|
-
return timestamp - this.epochMillisecond << this.timeStampShift | this.machineId << this.machineIdShift | this.sequence;
|
|
66
|
-
};
|
|
20
|
+
MAX = (1n << 63n) - 1n;
|
|
21
|
+
machineBits = BigInt(10);
|
|
22
|
+
sequenceBits = BigInt(12);
|
|
23
|
+
epochMillisecond = BigInt(1577808e6);
|
|
24
|
+
sequenceMask = ~(BigInt(-1) << this.sequenceBits);
|
|
25
|
+
maxMachineId = ~(BigInt(-1) << this.machineBits);
|
|
26
|
+
machineIdShift = this.sequenceBits;
|
|
27
|
+
timeStampShift = this.machineBits + this.sequenceBits;
|
|
28
|
+
machineId;
|
|
29
|
+
sequence = BigInt(0);
|
|
30
|
+
lastTimestamp = BigInt(-1);
|
|
31
|
+
constructor(mackineId) {
|
|
32
|
+
this.machineId = BigInt(mackineId) % this.maxMachineId;
|
|
33
|
+
}
|
|
34
|
+
next = () => {
|
|
35
|
+
let timestamp = BigInt(Date.now());
|
|
36
|
+
if (timestamp < this.lastTimestamp) {
|
|
37
|
+
console.error(`Clock moved backwards. time gap = ${this.lastTimestamp - timestamp}`);
|
|
38
|
+
timestamp = getNextMillisecond(this.lastTimestamp);
|
|
39
|
+
}
|
|
40
|
+
if (timestamp === this.lastTimestamp) {
|
|
41
|
+
this.sequence = this.sequence + BigInt(1) & this.sequenceMask;
|
|
42
|
+
if (this.sequence === BigInt(0)) timestamp = getNextMillisecond(timestamp);
|
|
43
|
+
} else this.sequence = BigInt(0);
|
|
44
|
+
this.lastTimestamp = timestamp;
|
|
45
|
+
return timestamp - this.epochMillisecond << this.timeStampShift | this.machineId << this.machineIdShift | this.sequence;
|
|
46
|
+
};
|
|
67
47
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
uid
|
|
74
|
-
});
|
|
48
|
+
const uid = new UidGenerator(Math.floor(Math.random() * 1024));
|
|
49
|
+
//#endregion
|
|
50
|
+
exports.UidGenerator = UidGenerator;
|
|
51
|
+
exports.uid = uid;
|
|
52
|
+
|
|
75
53
|
//# sourceMappingURL=snowflake.cjs.map
|