@dreamkit/app 0.0.18 → 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.18",
3
+ "version": "0.0.20",
4
4
  "description": "Set of utils to create applications.",
5
5
  "homepage": "https://dreamkit.dev",
6
6
  "repository": {
@@ -26,11 +26,11 @@
26
26
  "lib"
27
27
  ],
28
28
  "dependencies": {
29
- "debug": "^4.4.1",
30
- "@dreamkit/func": "0.0.10",
29
+ "debug": "^4.4.3",
30
+ "@dreamkit/func": "0.0.11",
31
31
  "@dreamkit/ioc": "0.3.1",
32
32
  "@dreamkit/kind": "0.0.4",
33
- "@dreamkit/schema": "0.0.7",
33
+ "@dreamkit/schema": "0.0.8",
34
34
  "@dreamkit/utils": "0.0.7"
35
35
  },
36
36
  "devDependencies": {