@dreamkit/app 0.0.19 → 0.0.21

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.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":"AAIA,OAAO,EAEL,qBAAqB,EACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAEnD,OAAO,EACL,UAAU,EAEV,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAc,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,yBAAyB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,eAAe,EACf,0BAA0B,EAC3B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAI3C,qBAAa,GAAG;IAId,MAAM,CAAC,WAAW,SAAY;IAC9B,QAAQ,CAAC,OAAO,SAAS;IACzB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,mBAA0B;IAC1C,QAAQ,CAAC,MAAM,aAAoB;IACnC,QAAQ,CAAC,QAAQ,kBAAyB;IAC1C,QAAQ,CAAC,WAAW,6BAAoC;IACxD,QAAQ,CAAC,QAAQ,iTAAkC;IACnD,QAAQ,CAAC,GAAG,oBAA2B;IACvC,SAAS,CAAC,MAAM,sBAA6B;IACtC,eAAe,EAAE,0BAA0B,GAAG,SAAS,CAAC;IACxD,cAAc,EAAE,yBAAyB,GAAG,SAAS,CAAC;IAC7D,SAAS,CAAC,SAAS;wBACG;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,KAAK,GAAG;2BACnC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,KAAK,GAAG;2BAEpD;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAA;SAAE,KAAK,GAAG;MAEzE;;IAOF,MAAM,CAAC,QAAQ,IAAI,GAAG;IAKtB,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG;IAGjC,MAAM,CAAC,oBAAoB,IAAI,GAAG;IAKlC,EAAE,CACA,KAAK,EAAE,KAAK,GAAG,QAAQ,EACvB,EAAE,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,GAAG,GAChD,IAAI;IACP,EAAE,CACA,KAAK,EAAE,QAAQ,EACf,EAAE,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAA;KAAE,KAAK,GAAG,GAC1E,IAAI;IAKP,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI;IAItD,WAAW,CAAC,KAAK,EAAE,OAAO;IAMpB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCpC,SAAS;IAIf,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU;cAU7C,YAAY,CAAC,IAAI,EAAE,UAAU;cAU7B,WAAW,CAAC,IAAI,EAAE,UAAU;IAO5C,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAyBvC,SAAS,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAIpD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE;;;IA0BnD,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE5D,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc;IA6BhD,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;cAgBvD,iBAAiB,CAAC,WAAW,EAAE,mBAAmB;;;cAkBlD,mBAAmB;cAanB,gBAAgB,CAAC,WAAW,EAAE,mBAAmB;IAUjE,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,mBAAmB;IAKzD,SAAS,CAAC,sBAAsB,IAAI,eAAe,GAAG,SAAS;cAM/C,OAAO;;;IAKjB,KAAK;IAQL,IAAI;IAkBV,KAAK;CAWN"}
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,8 +13,8 @@ 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";
15
- import { merge } from "@dreamkit/utils/object.js";
16
+ import { getKinds, kindOf } from "@dreamkit/kind";
17
+ import { isPlainObject, merge } from "@dreamkit/utils/object.js";
16
18
  export class App {
17
19
  static {
18
20
  kindApp(this);
@@ -35,9 +37,9 @@ export class App {
35
37
  change: new Set(),
36
38
  };
37
39
  constructor() {
38
- this.context = new AppContext().register(App, {
39
- value: this,
40
- });
40
+ this.context = new AppContext()
41
+ .register(App, { value: this })
42
+ .register(EJSON, { value: new EJSON([]) });
41
43
  this.context.register(AppContext, { value: this.context });
42
44
  }
43
45
  static instance() {
@@ -102,6 +104,9 @@ export class App {
102
104
  if (path)
103
105
  this.api.delete(path);
104
106
  }
107
+ else if (kindOf(value, Serializer)) {
108
+ this.context.resolve(EJSON).remove(value.config.key);
109
+ }
105
110
  for (const cb of this.listeners.remove)
106
111
  await cb({ id, value });
107
112
  for (const cb of this.listeners.change)
@@ -171,7 +176,6 @@ export class App {
171
176
  return result;
172
177
  }, {})
173
178
  : { ...input };
174
- const isPlainObject = (input) => !!input && typeof input === "object";
175
179
  const entries = Object.entries(objects).flatMap(([id, value]) => {
176
180
  if (isPlainObject(value) || Array.isArray(value)) {
177
181
  return Object.entries(this.resolveEntry(value)).map(([childId, childValue]) => [
@@ -224,6 +228,9 @@ export class App {
224
228
  this.api.set(path, value);
225
229
  this.apiRef.set(id, path);
226
230
  }
231
+ else if (kindOf(value, Serializer)) {
232
+ this.context.resolve(EJSON).add(value);
233
+ }
227
234
  else {
228
235
  this.onUnknownObject(id, value);
229
236
  }
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
+ 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,IAAI,WAAW,IAAI,SAAS,UAAU,EAAE,CAMvC;gBACW,WAAW,EAAE,UAAU,EAAE;IAGrC,GAAG,CAAC,UAAU,EAAE,UAAU;IAK1B,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,78 @@
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.remove(serializer.config.key);
18
+ this.#serializers.push(serializer);
19
+ this.#serializersValue = undefined;
20
+ }
21
+ remove(name) {
22
+ this.#serializers = this.serializers.filter((s) => s.config.key !== name);
23
+ this.#serializersValue = undefined;
24
+ }
25
+ encode(input) {
26
+ if (isPlainObject(input)) {
27
+ const object = {};
28
+ for (const key in input) {
29
+ object[key] = this.encode(input[key]);
30
+ }
31
+ return object;
32
+ }
33
+ else if (Array.isArray(input)) {
34
+ return input.map((item) => this.encode(item));
35
+ }
36
+ else if (typeof input === "object" && input !== null) {
37
+ for (const serializer of this.serializers) {
38
+ if (serializer.config.is(input)) {
39
+ return {
40
+ $ejson: serializer.config.key,
41
+ $value: serializer.config.to(input),
42
+ };
43
+ }
44
+ }
45
+ return input;
46
+ }
47
+ }
48
+ decode(input) {
49
+ if (isPlainObject(input)) {
50
+ if (isEJSONObject(input)) {
51
+ const serializer = this.serializers.find((s) => s.config.key === input.$ejson);
52
+ if (!serializer)
53
+ throw new Error(`Unknown EJSON type: ${input.$ejson}`);
54
+ return serializer.config.from(input.$value);
55
+ }
56
+ else {
57
+ const object = {};
58
+ for (const key in input)
59
+ object[key] = this.decode(input[key]);
60
+ return object;
61
+ }
62
+ }
63
+ else if (Array.isArray(input)) {
64
+ return input.map((item) => this.decode(item));
65
+ }
66
+ else {
67
+ return input;
68
+ }
69
+ }
70
+ parse(input) {
71
+ const json = JSON.parse(input);
72
+ return this.decode(json);
73
+ }
74
+ stringify(value) {
75
+ const ejson = this.encode(value);
76
+ return JSON.stringify(ejson);
77
+ }
78
+ }
@@ -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.21",
4
4
  "description": "Set of utils to create applications.",
5
5
  "homepage": "https://dreamkit.dev",
6
6
  "repository": {
@@ -27,11 +27,11 @@
27
27
  ],
28
28
  "dependencies": {
29
29
  "debug": "^4.4.3",
30
- "@dreamkit/func": "0.0.11",
30
+ "@dreamkit/func": "0.0.12",
31
31
  "@dreamkit/ioc": "0.3.1",
32
32
  "@dreamkit/kind": "0.0.4",
33
- "@dreamkit/schema": "0.0.8",
34
- "@dreamkit/utils": "0.0.7"
33
+ "@dreamkit/schema": "0.0.9",
34
+ "@dreamkit/utils": "0.0.8"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/debug": "^4.1.12",