@dreamkit/app 0.0.19 → 0.0.20

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/lib/App.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { MiddlewareConstructor } from "./builders/MiddlewareBuilder.js";
2
2
  import { Route } from "./builders/RouteBuilder.js";
3
+ import { Serializer } from "./builders/SerializerBuilder.js";
3
4
  import { AppService, ServiceConstructor } from "./builders/ServiceBuilder.js";
4
5
  import { SettingsConstructor } from "./builders/SettingsBuilder.js";
5
6
  import { AppContext } from "./contexts/AppContext.js";
@@ -17,6 +18,7 @@ export declare class App {
17
18
  readonly middlewares: Set<MiddlewareConstructor>;
18
19
  readonly settings: Set<SettingsConstructor<import("./builders/SettingsBuilder.js").SettingsData<import("./builders/SettingsBuilder.js").SettingsName, import("./builders/SettingsBuilder.js").SettingsParams, import("./builders/SettingsBuilder.js").SettingsDefaults<import("./builders/SettingsBuilder.js").SettingsParams>>>>;
19
20
  readonly api: Map<string, Func>;
21
+ readonly serializers: Set<Serializer<any, any>>;
20
22
  protected apiRef: Map<string, string>;
21
23
  settingsHandler: SettingsHandlerConstructor | undefined;
22
24
  sessionHandler: SessionHandlerConstructor | undefined;
package/lib/App.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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"}
package/lib/App.js CHANGED
@@ -1,7 +1,9 @@
1
+ import { EJSON } from "./EJSON.js";
1
2
  import { RequestUrl } from "./RequestUrl.js";
2
3
  import { ResponseHeaders } from "./ResponseHeaders.js";
3
4
  import { isApi } from "./builders/ApiBuilder.js";
4
5
  import { isMiddleware, } from "./builders/MiddlewareBuilder.js";
6
+ import { Serializer } from "./builders/SerializerBuilder.js";
5
7
  import { isService, } from "./builders/ServiceBuilder.js";
6
8
  import { Session } from "./builders/SessionBuilder.js";
7
9
  import { isSettings } from "./builders/SettingsBuilder.js";
@@ -11,7 +13,7 @@ import { isSessionHandler, SessionHandler, } from "./handlers/SessionHandler.js"
11
13
  import { isSettingsHandler, SettingsHandler, } from "./handlers/SettingsHandler.js";
12
14
  import { isRoute, kindApp } from "./utils/kind.js";
13
15
  import { log } from "./utils/log.js";
14
- import { getKinds } from "@dreamkit/kind";
16
+ import { getKinds, kindOf } from "@dreamkit/kind";
15
17
  import { merge } from "@dreamkit/utils/object.js";
16
18
  export class App {
17
19
  static {
@@ -26,6 +28,7 @@ export class App {
26
28
  middlewares = new Set();
27
29
  settings = new Set();
28
30
  api = new Map();
31
+ serializers = new Set();
29
32
  apiRef = new Map();
30
33
  settingsHandler;
31
34
  sessionHandler;
@@ -102,6 +105,9 @@ export class App {
102
105
  if (path)
103
106
  this.api.delete(path);
104
107
  }
108
+ else if (kindOf(value, Serializer)) {
109
+ this.serializers.delete(value);
110
+ }
105
111
  for (const cb of this.listeners.remove)
106
112
  await cb({ id, value });
107
113
  for (const cb of this.listeners.change)
@@ -224,6 +230,9 @@ export class App {
224
230
  this.api.set(path, value);
225
231
  this.apiRef.set(id, path);
226
232
  }
233
+ else if (kindOf(value, Serializer)) {
234
+ this.serializers.add(value);
235
+ }
227
236
  else {
228
237
  this.onUnknownObject(id, value);
229
238
  }
@@ -262,6 +271,7 @@ export class App {
262
271
  const host = request.headers.get("host") ?? "localhost";
263
272
  const requestContext = context
264
273
  .register(RequestContext, { value: context })
274
+ .register(EJSON, { value: new EJSON([...this.serializers]) })
265
275
  .register(Request, { value: request })
266
276
  .register(Headers, { value: request.headers })
267
277
  .register(ResponseHeaders, { value: new ResponseHeaders() })
package/lib/EJSON.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ import { Serializer } from "./builders/SerializerBuilder.js";
2
+ export type EJSONEncodedObject = {
3
+ $ejson: string;
4
+ $value: any;
5
+ };
6
+ export declare class EJSON {
7
+ #private;
8
+ protected get serializers(): readonly Serializer[];
9
+ constructor(serializers: Serializer[]);
10
+ add(serializer: Serializer): void;
11
+ remove(name: string): void;
12
+ encode(input: any): any;
13
+ decode(input: any): any;
14
+ parse(input: string): any;
15
+ stringify(value: any): string;
16
+ }
17
+ //# sourceMappingURL=EJSON.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EJSON.d.ts","sourceRoot":"","sources":["../src/EJSON.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,MAAM,MAAM,kBAAkB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,CAAC;AAQjE,qBAAa,KAAK;;IAGhB,SAAS,KAAK,WAAW,IAAI,SAAS,UAAU,EAAE,CAMjD;gBACW,WAAW,EAAE,UAAU,EAAE;IAGrC,GAAG,CAAC,UAAU,EAAE,UAAU;IAI1B,MAAM,CAAC,IAAI,EAAE,MAAM;IAInB,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAqBvB,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAmBvB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG;IAIzB,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAI9B"}
package/lib/EJSON.js ADDED
@@ -0,0 +1,77 @@
1
+ import { isPlainObject } from "@dreamkit/utils/object.js";
2
+ function isEJSONObject(input) {
3
+ return "$ejson" in input && "$value" in input;
4
+ }
5
+ export class EJSON {
6
+ #serializers = [];
7
+ #serializersValue;
8
+ get serializers() {
9
+ if (!this.#serializersValue)
10
+ this.#serializersValue = [...this.#serializers].sort((a, b) => (b.config.priority || 0) - (a.config.priority || 0));
11
+ return this.#serializersValue;
12
+ }
13
+ constructor(serializers) {
14
+ this.#serializers = [...serializers];
15
+ }
16
+ add(serializer) {
17
+ this.#serializers.push(serializer);
18
+ this.#serializersValue = undefined;
19
+ }
20
+ remove(name) {
21
+ this.#serializers = this.serializers.filter((s) => s.config.key !== name);
22
+ this.#serializersValue = undefined;
23
+ }
24
+ encode(input) {
25
+ if (isPlainObject(input)) {
26
+ const object = {};
27
+ for (const key in input) {
28
+ object[key] = this.encode(input[key]);
29
+ }
30
+ return object;
31
+ }
32
+ else if (Array.isArray(input)) {
33
+ return input.map((item) => this.encode(item));
34
+ }
35
+ else if (typeof input === "object" && input !== null) {
36
+ for (const serializer of this.serializers) {
37
+ if (serializer.config.is(input)) {
38
+ return {
39
+ $ejson: serializer.config.key,
40
+ $value: serializer.config.to(input),
41
+ };
42
+ }
43
+ }
44
+ return input;
45
+ }
46
+ }
47
+ decode(input) {
48
+ if (isPlainObject(input)) {
49
+ if (isEJSONObject(input)) {
50
+ const serializer = this.serializers.find((s) => s.config.key === input.$ejson);
51
+ if (!serializer)
52
+ throw new Error(`Unknown EJSON type: ${input.$ejson}`);
53
+ return serializer.config.from(input.$value);
54
+ }
55
+ else {
56
+ const object = {};
57
+ for (const key in input)
58
+ object[key] = this.decode(input[key]);
59
+ return object;
60
+ }
61
+ }
62
+ else if (Array.isArray(input)) {
63
+ return input.map((item) => this.decode(item));
64
+ }
65
+ else {
66
+ return input;
67
+ }
68
+ }
69
+ parse(input) {
70
+ const json = JSON.parse(input);
71
+ return this.decode(json);
72
+ }
73
+ stringify(value) {
74
+ const ejson = this.encode(value);
75
+ return JSON.stringify(ejson);
76
+ }
77
+ }
@@ -0,0 +1,16 @@
1
+ export declare const kindSerializer: (input: object, name?: string) => void, isSerializer: (input: unknown) => input is unknown;
2
+ export type SerializerData<I = any, O = any> = {
3
+ key: string;
4
+ is(input: any): input is I;
5
+ to(input: I): O;
6
+ from(output: O): I;
7
+ priority?: number;
8
+ };
9
+ export declare class Serializer<I = any, O = any> {
10
+ readonly config: SerializerData<I, O>;
11
+ constructor(config: SerializerData<I, O>);
12
+ }
13
+ export declare class SerializerBuilder {
14
+ create<I, O>(data: SerializerData<I, O>): Serializer<I, O>;
15
+ }
16
+ //# sourceMappingURL=SerializerBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SerializerBuilder.d.ts","sourceRoot":"","sources":["../../src/builders/SerializerBuilder.ts"],"names":[],"mappings":"AAEA,eAAO,MAAO,cAAc,0CAAE,YAAY,sCAEzC,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC;IAC3B,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;IAI1B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;gBAA5B,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;CAClD;AAED,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;CAG3D"}
@@ -0,0 +1,16 @@
1
+ import { createKind } from "@dreamkit/kind";
2
+ export const [kindSerializer, isSerializer] = createKind("@dreamkit/app/serializer");
3
+ export class Serializer {
4
+ config;
5
+ static {
6
+ kindSerializer(this);
7
+ }
8
+ constructor(config) {
9
+ this.config = config;
10
+ }
11
+ }
12
+ export class SerializerBuilder {
13
+ create(data) {
14
+ return new Serializer(data);
15
+ }
16
+ }
package/lib/index.d.ts CHANGED
@@ -4,11 +4,13 @@ export { isRoute, isApp } from "./utils/kind.js";
4
4
  export { isApi } from "./builders/ApiBuilder.js";
5
5
  export { App } from "./App.js";
6
6
  export { defineRoutePath, routePath } from "./routePath.js";
7
+ export { EJSON, type EJSONEncodedObject } from "./EJSON.js";
7
8
  export { AppContext } from "./contexts/AppContext.js";
8
9
  export { RequestContext } from "./contexts/RequestContext.js";
9
10
  export { $api } from "./objects/$api.js";
10
11
  export { $route } from "./objects/$route.js";
11
12
  export { $middleware } from "./objects/$middleware.js";
13
+ export { $serializer } from "./objects/$serializer.js";
12
14
  export { $service } from "./objects/$service.js";
13
15
  export { $session } from "./objects/$session.js";
14
16
  export { $schema } from "./objects/$schema.js";
@@ -16,10 +18,13 @@ export { RouteBuilder, type RouteOptions, type Route, type RouteData, type Route
16
18
  export { $settings } from "./objects/$settings.js";
17
19
  export { Settings, SettingsBuilder, type SettingsConstructor, type SettingsData, isSettings, } from "./builders/SettingsBuilder.js";
18
20
  export { Middleware, isMiddleware, type MiddlewareConstructor, type MiddlewareOptions, type MiddlewareData, } from "./builders/MiddlewareBuilder.js";
21
+ export { Serializer, type SerializerData, isSerializer, } from "./builders/SerializerBuilder.js";
19
22
  export { Service, type ServiceConstructor, type ServiceOptions, type ServiceData, isService, } from "./builders/ServiceBuilder.js";
20
23
  export { Session, type SessionConstructor, type SessionOptions, type SessionData, isSession, } from "./builders/SessionBuilder.js";
21
24
  export { SettingsHandler, SettingsHandlerClass, type SettingsHandlerConstructor, type SettingsHandlerSaveResult, } from "./handlers/SettingsHandler.js";
22
25
  export { SessionHandler, SessionHandlerClass, type SessionHandlerConstructor, } from "./handlers/SessionHandler.js";
23
26
  export { ClientSessionHandler } from "./presets/ClientSessionHandler.js";
24
27
  export { ClientSessionSettings } from "./presets/ClientSessionSettings.js";
28
+ export { errorSerializer } from "./presets/errorSerializer.js";
29
+ export { dateSerializer } from "./presets/dateSerializer.js";
25
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EACL,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,QAAQ,EACR,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,UAAU,GACX,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,OAAO,EACP,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,SAAS,GACV,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,OAAO,EACP,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,SAAS,GACV,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,yBAAyB,GAC/B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EACL,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,QAAQ,EACR,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,UAAU,GACX,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,YAAY,GACb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,OAAO,EACP,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,SAAS,GACV,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,OAAO,EACP,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,SAAS,GACV,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,yBAAyB,GAC/B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC"}
package/lib/index.js CHANGED
@@ -4,6 +4,7 @@ export { isRoute, isApp } from "./utils/kind.js";
4
4
  export { isApi } from "./builders/ApiBuilder.js";
5
5
  export { App } from "./App.js";
6
6
  export { defineRoutePath, routePath } from "./routePath.js";
7
+ export { EJSON } from "./EJSON.js";
7
8
  // contexts
8
9
  export { AppContext } from "./contexts/AppContext.js";
9
10
  export { RequestContext } from "./contexts/RequestContext.js";
@@ -11,6 +12,7 @@ export { RequestContext } from "./contexts/RequestContext.js";
11
12
  export { $api } from "./objects/$api.js";
12
13
  export { $route } from "./objects/$route.js";
13
14
  export { $middleware } from "./objects/$middleware.js";
15
+ export { $serializer } from "./objects/$serializer.js";
14
16
  export { $service } from "./objects/$service.js";
15
17
  export { $session } from "./objects/$session.js";
16
18
  export { $schema } from "./objects/$schema.js";
@@ -18,6 +20,7 @@ export { RouteBuilder, } from "./builders/RouteBuilder.js";
18
20
  export { $settings } from "./objects/$settings.js";
19
21
  export { Settings, SettingsBuilder, isSettings, } from "./builders/SettingsBuilder.js";
20
22
  export { Middleware, isMiddleware, } from "./builders/MiddlewareBuilder.js";
23
+ export { Serializer, isSerializer, } from "./builders/SerializerBuilder.js";
21
24
  export { Service, isService, } from "./builders/ServiceBuilder.js";
22
25
  export { Session, isSession, } from "./builders/SessionBuilder.js";
23
26
  // handlers
@@ -26,3 +29,5 @@ export { SessionHandler, SessionHandlerClass, } from "./handlers/SessionHandler.
26
29
  // presets
27
30
  export { ClientSessionHandler } from "./presets/ClientSessionHandler.js";
28
31
  export { ClientSessionSettings } from "./presets/ClientSessionSettings.js";
32
+ export { errorSerializer } from "./presets/errorSerializer.js";
33
+ export { dateSerializer } from "./presets/dateSerializer.js";
@@ -0,0 +1,3 @@
1
+ import { SerializerBuilder } from "../builders/SerializerBuilder.js";
2
+ export declare const $serializer: SerializerBuilder;
3
+ //# sourceMappingURL=$serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"$serializer.d.ts","sourceRoot":"","sources":["../../src/objects/$serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,eAAO,MAAM,WAAW,mBAAwC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { SerializerBuilder } from "../builders/SerializerBuilder.js";
2
+ export const $serializer = /*#__PURE__*/ new SerializerBuilder();
@@ -0,0 +1,2 @@
1
+ export declare const dateSerializer: import("../index.js").Serializer<Date, string>;
2
+ //# sourceMappingURL=dateSerializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateSerializer.d.ts","sourceRoot":"","sources":["../../src/presets/dateSerializer.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,gDAMzB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { $serializer } from "../objects/$serializer.js";
2
+ export const dateSerializer = $serializer.create({
3
+ key: "Date",
4
+ priority: -1,
5
+ is: (input) => input instanceof Date,
6
+ to: (input) => input.toISOString(),
7
+ from: (input) => new Date(input),
8
+ });
@@ -0,0 +1,5 @@
1
+ export declare const errorSerializer: import("../index.js").Serializer<Error, {
2
+ name: string;
3
+ message: string;
4
+ }>;
5
+ //# sourceMappingURL=errorSerializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorSerializer.d.ts","sourceRoot":"","sources":["../../src/presets/errorSerializer.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;UAElB,MAAM;aAAW,MAAM;EAW/B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { $serializer } from "../objects/$serializer.js";
2
+ export const errorSerializer = $serializer.create({
3
+ key: "Error",
4
+ priority: -1,
5
+ is: (input) => input instanceof Error,
6
+ to: (input) => ({ name: input.name, message: input.message }),
7
+ from: (input) => {
8
+ const error = new Error(input.message);
9
+ error.name = input.name;
10
+ return error;
11
+ },
12
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreamkit/app",
3
- "version": "0.0.19",
3
+ "version": "0.0.20",
4
4
  "description": "Set of utils to create applications.",
5
5
  "homepage": "https://dreamkit.dev",
6
6
  "repository": {