@dreamkit/app 0.0.6 → 0.0.7-next.1

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,4 +1,6 @@
1
1
  import { Route } from "./builders/RouteBuilder.js";
2
+ import { SettingsConstructor } from "./builders/SettingsBuilder.js";
3
+ import { SettingsHandler, SettingsHandlerConstructor } from "./handlers/SettingsHandler.js";
2
4
  import { MiddlewareConstructor } from "./objects/middleware.js";
3
5
  import { AppService, ServiceConstructor } from "./objects/service.js";
4
6
  import { IocContext } from "@dreamkit/ioc";
@@ -10,6 +12,8 @@ export declare class App {
10
12
  readonly routes: Set<Route>;
11
13
  readonly services: Set<AppService>;
12
14
  readonly middlewares: Set<MiddlewareConstructor>;
15
+ 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>>>>;
16
+ settingsHandler: SettingsHandlerConstructor | undefined;
13
17
  protected listeners: {
14
18
  add: Set<(data: {
15
19
  id: string;
@@ -28,6 +32,7 @@ export declare class App {
28
32
  constructor();
29
33
  static instance(): App;
30
34
  static saveInstance(instance: App): void;
35
+ static createGlobalInstance(): App;
31
36
  on(event: "add" | "remove", cb: (data: {
32
37
  id: string;
33
38
  value: unknown;
@@ -43,9 +48,16 @@ export declare class App {
43
48
  protected addService(service: ServiceConstructor): AppService;
44
49
  protected startService(item: AppService): Promise<void>;
45
50
  protected stopService(item: AppService): Promise<void>;
46
- add(objects: Record<string, any>): Promise<void>;
51
+ add(input: Record<string, any> | any[]): Promise<void>;
47
52
  createRequestContext(request: Request): IocContext;
48
53
  request(request: Request): Promise<Response | undefined>;
54
+ protected initSettingsValue(constructor: SettingsConstructor): Promise<{
55
+ [x: string]: any;
56
+ } | undefined>;
57
+ protected registerAllSettings(): Promise<import("./handlers/SettingsHandler.js").SettingsHandlerSaveResult | undefined>;
58
+ protected registerSettings(constructor: SettingsConstructor): Promise<void>;
59
+ protected removeSettings(constructor: SettingsConstructor): void;
60
+ protected seettingsHandler(): SettingsHandler | undefined;
49
61
  start(): Promise<void>;
50
62
  stop(): Promise<void>;
51
63
  }
package/lib/App.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAgB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACL,UAAU,EAEV,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAW,UAAU,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,GAAG;IACd,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,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;;IAMF,MAAM,CAAC,QAAQ,IAAI,GAAG;IAKtB,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG;IAGjC,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;IAmB1B,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU;cAU7C,YAAY,CAAC,IAAI,EAAE,UAAU;cAU7B,WAAW,CAAC,IAAI,EAAE,UAAU;IAQtC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAsBtC,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAS/B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IASxD,KAAK;IAKL,IAAI;CAiBX"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAc,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAEL,eAAe,EACf,0BAA0B,EAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAgB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACL,UAAU,EAEV,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAGL,UAAU,EAEX,MAAM,eAAe,CAAC;AAIvB,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;IAC5C,eAAe,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAC/D,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;;IAMF,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;IAwB1C,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU;cAiB7C,YAAY,CAAC,IAAI,EAAE,UAAU;cAU7B,WAAW,CAAC,IAAI,EAAE,UAAU;IAQtC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuD5D,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAS/B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;cAU9C,iBAAiB,CAAC,WAAW,EAAE,mBAAmB;;;cAgBlD,mBAAmB;cAanB,gBAAgB,CAAC,WAAW,EAAE,mBAAmB;IAUjE,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,mBAAmB;IAKzD,SAAS,CAAC,gBAAgB,IAAI,eAAe,GAAG,SAAS;IAGnD,KAAK;IAOL,IAAI;CAkBX"}
package/lib/App.js CHANGED
@@ -1,10 +1,18 @@
1
1
  import { RequestUrl } from "./RequestUrl.js";
2
+ import { isApi } from "./builders/ApiBuilder.js";
3
+ import { isSettings } from "./builders/SettingsBuilder.js";
4
+ import { isSettingsHandler, SettingsHandler, } from "./handlers/SettingsHandler.js";
2
5
  import { isMiddleware } from "./objects/middleware.js";
3
6
  import { isService, } from "./objects/service.js";
4
- import { isRoute } from "./utils/kind.js";
7
+ import { isRoute, kindApp } from "./utils/kind.js";
5
8
  import { log } from "./utils/log.js";
6
- import { context } from "@dreamkit/ioc";
9
+ import { context, IocBaseClass, normalizeIocParams, } from "@dreamkit/ioc";
10
+ import { getKinds, is } from "@dreamkit/kind";
11
+ import { merge } from "@dreamkit/utils/object.js";
7
12
  export class App {
13
+ static {
14
+ kindApp(this);
15
+ }
8
16
  static instanceKey = "dk:app";
9
17
  started = false;
10
18
  context;
@@ -12,6 +20,8 @@ export class App {
12
20
  routes = new Set();
13
21
  services = new Set();
14
22
  middlewares = new Set();
23
+ settings = new Set();
24
+ settingsHandler;
15
25
  listeners = {
16
26
  add: new Set(),
17
27
  remove: new Set(),
@@ -31,6 +41,11 @@ export class App {
31
41
  static saveInstance(instance) {
32
42
  globalThis[App.instanceKey] = instance;
33
43
  }
44
+ static createGlobalInstance() {
45
+ const app = new App();
46
+ this.saveInstance(app);
47
+ return app;
48
+ }
34
49
  on(event, cb) {
35
50
  this.listeners[event].add(cb);
36
51
  return this;
@@ -63,6 +78,13 @@ export class App {
63
78
  else if (isMiddleware(value)) {
64
79
  this.middlewares.delete(value);
65
80
  }
81
+ else if (isSettings(value)) {
82
+ this.removeSettings(value);
83
+ }
84
+ else if (isSettingsHandler(value)) {
85
+ this.context.unregister(SettingsHandler);
86
+ this.settingsHandler = undefined;
87
+ }
66
88
  for (const cb of this.listeners.remove)
67
89
  await cb({ id, value });
68
90
  for (const cb of this.listeners.change)
@@ -76,6 +98,14 @@ export class App {
76
98
  service,
77
99
  started: false,
78
100
  };
101
+ if (is(service, IocBaseClass)) {
102
+ const params = normalizeIocParams(service.$ioc.params);
103
+ for (const key in params) {
104
+ const { value } = params[key].options;
105
+ if (isSettings(value))
106
+ this.settings.add(value);
107
+ }
108
+ }
79
109
  this.services.add(item);
80
110
  return item;
81
111
  }
@@ -96,8 +126,16 @@ export class App {
96
126
  item.started = false;
97
127
  log("service stopped", { name });
98
128
  }
99
- async add(objects) {
129
+ async add(input) {
130
+ let loadSettingsHandler = false;
100
131
  const services = [];
132
+ const settings = [];
133
+ const objects = Array.isArray(input)
134
+ ? input.reduce((result, value, index) => {
135
+ result[index] = value;
136
+ return result;
137
+ }, {})
138
+ : input;
101
139
  for (const [id, value] of Object.entries(objects)) {
102
140
  if (isRoute(value)) {
103
141
  this.routes.add(value);
@@ -110,6 +148,29 @@ export class App {
110
148
  else if (isMiddleware(value)) {
111
149
  this.middlewares.add(value);
112
150
  }
151
+ else if (isSettings(value)) {
152
+ this.settings.add(value);
153
+ settings.push(value);
154
+ }
155
+ else if (isSettingsHandler(value)) {
156
+ loadSettingsHandler = true;
157
+ this.settingsHandler = value;
158
+ this.context.register(SettingsHandler, {
159
+ singleton: true,
160
+ useFactory: (context) => {
161
+ const handler = context.resolve(value);
162
+ handler["settings"] = this.settings;
163
+ return handler;
164
+ },
165
+ });
166
+ }
167
+ else if (isApi(value)) {
168
+ // Not implemented (using solid start actions)
169
+ continue;
170
+ }
171
+ else {
172
+ console.warn("Unknown object", { id, value, kinds: getKinds(value) });
173
+ }
113
174
  this.objects.set(id, value);
114
175
  for (const cb of this.listeners.add)
115
176
  await cb({ id, value });
@@ -117,6 +178,10 @@ export class App {
117
178
  await cb({ id, value, action: "add" });
118
179
  }
119
180
  if (this.started) {
181
+ if (loadSettingsHandler)
182
+ await this.context.resolve(SettingsHandler).load();
183
+ for (const setting of settings)
184
+ await this.registerSettings(setting);
120
185
  for (const service of services)
121
186
  await this.startService(service);
122
187
  }
@@ -139,9 +204,58 @@ export class App {
139
204
  return response;
140
205
  }
141
206
  }
207
+ async initSettingsValue(constructor) {
208
+ const handler = this.context.resolve(SettingsHandler, {
209
+ optional: true,
210
+ });
211
+ if (!handler)
212
+ return;
213
+ const options = constructor.options;
214
+ let value = await handler.get(constructor);
215
+ if (options.optional && !options.generate && !value)
216
+ return;
217
+ const generated = options.generate?.(value || {}) || {};
218
+ if (Object.keys(generated).length) {
219
+ value = merge({ ...value }, generated);
220
+ await handler.set(constructor, value);
221
+ }
222
+ return value;
223
+ }
224
+ async registerAllSettings() {
225
+ const settingsHandler = this.seettingsHandler();
226
+ if (settingsHandler) {
227
+ settingsHandler.autoSave = false;
228
+ await settingsHandler.load();
229
+ }
230
+ try {
231
+ for (const st of this.settings)
232
+ await this.registerSettings(st);
233
+ }
234
+ finally {
235
+ return await settingsHandler?.save();
236
+ }
237
+ }
238
+ async registerSettings(constructor) {
239
+ const options = constructor.options;
240
+ const value = await this.initSettingsValue(constructor);
241
+ if (options.optional && !value)
242
+ return;
243
+ log("registering settings", { name: options.name });
244
+ this.context.register(constructor, {
245
+ value: new constructor(value),
246
+ });
247
+ }
248
+ removeSettings(constructor) {
249
+ this.settings.delete(constructor);
250
+ this.context.unregister(constructor);
251
+ }
252
+ seettingsHandler() {
253
+ return this.context.resolve(SettingsHandler, { optional: true });
254
+ }
142
255
  async start() {
143
256
  log("starting app");
144
257
  this.started = true;
258
+ await this.registerAllSettings();
145
259
  for (const item of this.services)
146
260
  await this.startService(item);
147
261
  }
@@ -158,6 +272,8 @@ export class App {
158
272
  errors.push(error);
159
273
  }
160
274
  }
275
+ for (const settings of this.settings)
276
+ this.removeSettings(settings);
161
277
  if (errors.length)
162
278
  throw new AggregateError(errors, "App stop failed");
163
279
  this.started = false;
@@ -8,9 +8,20 @@ export type RouteParams = MinimalObjectType | undefined;
8
8
  export type RouteApi = {
9
9
  [key: string]: (...args: any[]) => any;
10
10
  };
11
- export type RouteData<TParams extends RouteParams = RouteParams, TApi extends RouteApi = RouteApi> = {
11
+ export type ResolveRouteApi<T extends RouteData> = keyof T["api"] extends never ? never : {
12
+ [K in keyof T["api"]]: T["api"][K] extends Func<infer TData, infer TResult> ? Func<{
13
+ [K in keyof TData as K extends "self" ? never : K]: TData[K];
14
+ }, Promise<Awaited<TResult>>> : never;
15
+ };
16
+ export type RoutePreloadData<T extends RouteData> = {
17
+ intent: string;
18
+ params: InferRouteParams<T>;
19
+ api: ResolveRouteApi<T>;
20
+ };
21
+ export type RouteData<TParams extends RouteParams = RouteParams, TApi extends RouteApi = RouteApi, TData extends unknown = unknown> = {
12
22
  params?: TParams;
13
23
  api?: TApi;
24
+ _data?: TData;
14
25
  };
15
26
  export type RouteOptions<T extends RouteData = RouteData> = T & {
16
27
  title?: string;
@@ -20,10 +31,11 @@ export type RouteOptions<T extends RouteData = RouteData> = T & {
20
31
  } | {
21
32
  redirect: string;
22
33
  };
34
+ preload?: (data: RoutePreloadData<T>) => any;
23
35
  component?: (props: any) => any;
24
36
  routeDefinition?: (options: RouteOptions) => any;
37
+ createComponent?: (options: RouteOptions, props: any) => any;
25
38
  filePath?: string;
26
- createComponent?: (options: RouteOptions) => any;
27
39
  };
28
40
  export type InferRouteParams<T extends RouteData> = [undefined] extends [
29
41
  T["params"]
@@ -31,9 +43,8 @@ export type InferRouteParams<T extends RouteData> = [undefined] extends [
31
43
  export type RouteProps<T extends RouteData = RouteData> = {
32
44
  setParams: [undefined] extends [T["params"]] ? never : (params: InferRouteParams<T>) => void;
33
45
  params: InferRouteParams<T>;
34
- api: {
35
- [K in keyof T["api"]]: T["api"][K] extends Func<infer TData, infer TResult> ? Func<Omit<TData, "self">, Promise<Awaited<TResult>>> : never;
36
- };
46
+ api: ResolveRouteApi<T>;
47
+ data: T["_data"];
37
48
  };
38
49
  export type Route<T extends RouteData = RouteData> = ((props: any) => any) & {
39
50
  $options: RouteOptions<T>;
@@ -60,6 +71,9 @@ export declare class RouteBuilder<T extends RouteData = RouteData> {
60
71
  redirect: string;
61
72
  }): this;
62
73
  path(value: string | ((params: RoutePathParams<keyof NonNullable<T["params"]>["props"]>) => string)): this;
74
+ preload<TData>(cb: (data: RoutePreloadData<T>) => TData): RouteBuilder<MergeFuncData<T, {
75
+ _data: TData;
76
+ }>>;
63
77
  protected createRouteDefinition(): any;
64
78
  create(component: (props: RouteProps<T>) => any): Route;
65
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RouteBuilder.d.ts","sourceRoot":"","sources":["../../src/builders/RouteBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RouteBuilder.d.ts","sourceRoot":"","sources":["../../src/builders/RouteBuilder.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,9 @@ export class RouteBuilder {
49
49
  });
50
50
  return this.clone({ path: value(params) });
51
51
  }
52
+ preload(cb) {
53
+ return this.clone({ preload: cb });
54
+ }
52
55
  createRouteDefinition() {
53
56
  if (!this.options.routeDefinition)
54
57
  throw new Error("routeDefinition is not defined");
@@ -59,7 +62,7 @@ export class RouteBuilder {
59
62
  const result = function (props) {
60
63
  if (!self.options.createComponent)
61
64
  throw new Error("createComponent is not defined");
62
- return self.options.createComponent(self.options);
65
+ return self.options.createComponent(self.options, props);
63
66
  };
64
67
  kindRoute(result);
65
68
  Object.assign(result, {
@@ -0,0 +1,61 @@
1
+ import { InferType, MinimalObjectType, ObjectType, ObjectTypeProps } from "@dreamkit/schema";
2
+ import type { Merge, throwError } from "@dreamkit/utils/ts.js";
3
+ export declare const kindSettings: (input: object, name?: string) => void, isSettings: (input: unknown) => input is SettingsConstructor<SettingsData<SettingsName, SettingsParams, SettingsDefaults<SettingsParams>>>;
4
+ export type SettingsName = string | undefined;
5
+ export type SettingsParams = MinimalObjectType | undefined;
6
+ export type InferSettingsParams<T extends {
7
+ params?: SettingsParams;
8
+ }> = InferType<T["params"] & {}>;
9
+ export type SettingsDefaults<TParams extends SettingsParams = SettingsParams> = ((input: InferSettingsParams<{
10
+ params: NoInfer<TParams>;
11
+ }>) => any) | undefined;
12
+ export type SettingsData<TName extends SettingsName = SettingsName, TParams extends SettingsParams = SettingsParams, TDefaults extends SettingsDefaults = SettingsDefaults> = {
13
+ name?: TName;
14
+ params?: TParams;
15
+ defaults?: TDefaults;
16
+ };
17
+ export type SettingsOptions<T extends SettingsData = SettingsData> = T & {
18
+ generate?: (input: Record<string, unknown>) => InferType<T["params"] & {}>;
19
+ optional?: boolean;
20
+ };
21
+ export type MergeSettingsData<D1 extends SettingsData, D2 extends Partial<SettingsData>> = Merge<SettingsData, D1, D2>;
22
+ export declare abstract class Settings<T extends SettingsData = SettingsData> {
23
+ static get options(): SettingsOptions;
24
+ static get params(): void;
25
+ readonly options: SettingsOptions<T>;
26
+ readonly params: [undefined] extends [T["defaults"]] ? InferSettingsParams<T> : ReturnType<T["defaults"] & {}>;
27
+ constructor(params: InferSettingsParams<T>);
28
+ update(params: InferSettingsParams<T>): void;
29
+ }
30
+ export interface SettingsConstructor<T extends SettingsData = SettingsData> {
31
+ options: SettingsOptions<T>;
32
+ params: T["params"];
33
+ new (params: InferSettingsParams<T>): Settings<T>;
34
+ }
35
+ export declare class SettingsBuilder<T extends SettingsData = {
36
+ name: undefined;
37
+ params: undefined;
38
+ }> {
39
+ readonly data: T;
40
+ readonly options: SettingsOptions<T>;
41
+ constructor(options?: SettingsOptions<T>);
42
+ protected clone(next: Partial<SettingsOptions>): this;
43
+ name<TName extends SettingsName>(value: TName): SettingsBuilder<MergeSettingsData<T, {
44
+ name: TName;
45
+ }>>;
46
+ optional(value?: boolean): this;
47
+ defaults<D>(value: (input: InferSettingsParams<T>) => D): SettingsBuilder<MergeSettingsData<T, {
48
+ defaults: () => D;
49
+ }>>;
50
+ generate(value: (input: {
51
+ [K in keyof InferSettingsParams<T>]?: any;
52
+ }) => Partial<InferSettingsParams<T>> | undefined): this;
53
+ params<TParams extends SettingsParams>(type: TParams): SettingsBuilder<MergeSettingsData<T, {
54
+ params: TParams;
55
+ }>>;
56
+ params<TProps extends ObjectTypeProps>(props: TProps): SettingsBuilder<MergeSettingsData<T, {
57
+ params: ObjectType<TProps>;
58
+ }>>;
59
+ create: [undefined] extends [T["name"]] ? throwError<"Name is required"> : [undefined] extends [T["params"]] ? throwError<"Params is required"> : () => SettingsConstructor<T>;
60
+ }
61
+ //# sourceMappingURL=SettingsBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsBuilder.d.ts","sourceRoot":"","sources":["../../src/builders/SettingsBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { createKind, kindOf } from "@dreamkit/kind";
2
+ import { ObjectType, s, } from "@dreamkit/schema";
3
+ export const [kindSettings, isSettings] = createKind("@dreamkit/app/settings");
4
+ export class Settings {
5
+ static get options() {
6
+ throw new Error("Not implemented");
7
+ }
8
+ static get params() {
9
+ throw new Error("Not implemented");
10
+ }
11
+ static {
12
+ kindSettings(this);
13
+ }
14
+ options = this.constructor.options;
15
+ params;
16
+ constructor(params) {
17
+ this.update(params);
18
+ }
19
+ update(params) {
20
+ const options = this.constructor.options;
21
+ const errors = options.params.validate(params);
22
+ if (errors.length) {
23
+ const error = new Error(`Invalid '${options.name}' settings`, {
24
+ cause: errors,
25
+ });
26
+ console.error(error);
27
+ throw error;
28
+ }
29
+ this.params = options.defaults
30
+ ? options.defaults(params)
31
+ : params;
32
+ }
33
+ }
34
+ export class SettingsBuilder {
35
+ data;
36
+ options;
37
+ constructor(options = {}) {
38
+ this.options = options;
39
+ this.data = {
40
+ params: options.params,
41
+ };
42
+ }
43
+ clone(next) {
44
+ const prev = this.options;
45
+ return new SettingsBuilder({
46
+ ...prev,
47
+ ...next,
48
+ params: "params" in next
49
+ ? next.params === undefined || kindOf(next.params, ObjectType)
50
+ ? next.params
51
+ : s.object(next.params)
52
+ : prev.params,
53
+ });
54
+ }
55
+ name(value) {
56
+ return this.clone({ name: value });
57
+ }
58
+ optional(value = true) {
59
+ return this.clone({ optional: value });
60
+ }
61
+ defaults(value) {
62
+ return this.clone({ defaults: value });
63
+ }
64
+ generate(value) {
65
+ return this.clone({ generate: value });
66
+ }
67
+ params(params) {
68
+ return this.clone({ params });
69
+ }
70
+ create = function () {
71
+ if (!this.options.name)
72
+ throw new Error("Name is required");
73
+ if (!this.options.params)
74
+ throw new Error("Params is required");
75
+ const self = this;
76
+ class CustomSettings extends Settings {
77
+ static {
78
+ kindSettings(this, self.options.name);
79
+ }
80
+ static get options() {
81
+ return self.options;
82
+ }
83
+ static get params() {
84
+ return self.options.params;
85
+ }
86
+ constructor(params) {
87
+ super(params);
88
+ }
89
+ }
90
+ return CustomSettings;
91
+ };
92
+ }
@@ -0,0 +1,35 @@
1
+ import { InferSettingsParams, SettingsConstructor, SettingsData } from "../builders/SettingsBuilder.js";
2
+ import { IocClass, IocContext } from "@dreamkit/ioc";
3
+ import { Constructor } from "@dreamkit/utils/ts.js";
4
+ export declare const kindSettingsHandler: (input: object, name?: string) => void, isSettingsHandler: (input: unknown) => input is SettingsHandlerConstructor;
5
+ export type SettingsHandlerConstructor = Constructor<SettingsHandler> & {
6
+ $ioc: any;
7
+ };
8
+ export type SettingsHandlerSaveResult = Record<string, {
9
+ path: string;
10
+ changed: boolean;
11
+ }>;
12
+ declare const SettingsHandler_base: IocClass<{
13
+ IocContext: typeof IocContext;
14
+ }, import("@dreamkit/ioc").IocBaseClass<import("@dreamkit/ioc").IocParamsUserConfig>, never, import("@dreamkit/ioc").IocParams<{
15
+ IocContext: typeof IocContext;
16
+ }>>;
17
+ export declare abstract class SettingsHandler extends SettingsHandler_base {
18
+ autoSave: boolean;
19
+ protected data: Record<string, any>;
20
+ protected settings: Set<SettingsConstructor>;
21
+ protected pending: string[];
22
+ protected abstract onLoad(): Promise<Record<string, any>>;
23
+ protected abstract onSave(): Promise<SettingsHandlerSaveResult>;
24
+ load(): Promise<void>;
25
+ get<T extends SettingsData>(constructor: SettingsConstructor<T>): Promise<InferSettingsParams<T>>;
26
+ set<T extends SettingsData>(constructor: SettingsConstructor<T>, data: InferSettingsParams<T>): Promise<void>;
27
+ save(): Promise<SettingsHandlerSaveResult>;
28
+ protected getData(): Promise<{
29
+ prev: Record<string, any> | undefined;
30
+ next: Record<string, any> | undefined;
31
+ }>;
32
+ }
33
+ export declare const SettingsHandlerClass: <P extends import("@dreamkit/ioc").IocParamsUserConfig = {}>(params: P) => IocClass<P & {}, SettingsHandler, never, import("@dreamkit/ioc").IocParams<P & {}>>;
34
+ export {};
35
+ //# sourceMappingURL=SettingsHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/SettingsHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACb,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAkB,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAO,mBAAmB,0CAAE,iBAAiB,yDACqB,CAAC;AAE1E,MAAM,MAAM,0BAA0B,GAAG,WAAW,CAAC,eAAe,CAAC,GAAG;IACtE,IAAI,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAC5C,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CACnC,CAAC;;;;;;AAEF,8BAAsB,eAAgB,SAAQ,oBAAwB;IAIpE,QAAQ,UAAQ;IAChB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IACzC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAa;IACzD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;IACjC,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzD,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,yBAAyB,CAAC;IACzD,IAAI;IAOJ,GAAG,CAAC,CAAC,SAAS,YAAY,EAC9B,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAG5B,GAAG,CAAC,CAAC,SAAS,YAAY,EAC9B,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,EACnC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC;IAmBV,IAAI,IAAI,OAAO,CAAC,yBAAyB,CAAC;cAMhC,OAAO,IAAI,OAAO,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;QACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;KACvC,CAAC;CAYH;AAED,eAAO,MAAM,oBAAoB,gKAAkC,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { createIocClass, IocClass, IocContext } from "@dreamkit/ioc";
2
+ import { createKind } from "@dreamkit/kind";
3
+ export const [kindSettingsHandler, isSettingsHandler] = createKind("@dreamkit/app/SettingsHandler");
4
+ export class SettingsHandler extends IocClass({ IocContext }) {
5
+ static {
6
+ kindSettingsHandler(this);
7
+ }
8
+ autoSave = true;
9
+ data = {};
10
+ settings = new Set();
11
+ pending = [];
12
+ async load() {
13
+ this.data = await this.onLoad();
14
+ for (const settings of this.settings) {
15
+ const data = this.data[settings.options.name];
16
+ this.iocContext.resolve(settings, { optional: true })?.update(data);
17
+ }
18
+ }
19
+ async get(constructor) {
20
+ return this.data[constructor.options.name];
21
+ }
22
+ async set(constructor, data) {
23
+ const settingsInstance = this.iocContext.resolve(constructor, {
24
+ optional: true,
25
+ });
26
+ if (settingsInstance) {
27
+ settingsInstance.update(data);
28
+ }
29
+ else {
30
+ this.iocContext.register(constructor, {
31
+ value: new constructor(data),
32
+ });
33
+ }
34
+ if (this.autoSave) {
35
+ await this.onSave();
36
+ }
37
+ else {
38
+ const name = constructor.options.name;
39
+ this.data[name] = data;
40
+ this.pending.push(name);
41
+ }
42
+ }
43
+ async save() {
44
+ this.autoSave = true;
45
+ const result = await this.onSave();
46
+ this.pending.splice(0, this.pending.length);
47
+ return result;
48
+ }
49
+ async getData() {
50
+ if (!this.pending.length)
51
+ return { prev: undefined, next: undefined };
52
+ const prev = await this.onLoad();
53
+ const patch = Object.fromEntries(Object.entries(this.data).filter(([name]) => this.pending.includes(name)));
54
+ const next = Object.fromEntries(Object.entries(prev).map(([name, value]) => [name, patch[name] ?? value]));
55
+ for (const name in patch)
56
+ if (!(name in next))
57
+ next[name] = patch[name];
58
+ return { prev, next };
59
+ }
60
+ }
61
+ export const SettingsHandlerClass = createIocClass(SettingsHandler);
package/lib/index.d.ts CHANGED
@@ -2,10 +2,13 @@ export { RequestUrl } from "./RequestUrl.js";
2
2
  export { isRoute, isApp } from "./utils/kind.js";
3
3
  export { isApi } from "./builders/ApiBuilder.js";
4
4
  export { App } from "./App.js";
5
- export { RouteBuilder, type RouteOptions, type Route, type RouteData, type RouteProps, } from "./builders/RouteBuilder.js";
6
5
  export { defineRoutePath, routePath } from "./routePath.js";
7
- export { $route } from "./objects/$route.js";
8
6
  export { $api } from "./objects/$api.js";
7
+ export { $route } from "./objects/$route.js";
8
+ export { RouteBuilder, type RouteOptions, type Route, type RouteData, type RouteProps, } from "./builders/RouteBuilder.js";
9
+ export { $settings } from "./objects/$settings.js";
10
+ export { Settings, SettingsBuilder, type SettingsConstructor, type SettingsData, isSettings, } from "./builders/SettingsBuilder.js";
9
11
  export { Middleware, MiddlewareClass, isMiddleware, } from "./objects/middleware.js";
10
12
  export { Service, ServiceClass, type ServiceStop, isService, } from "./objects/service.js";
13
+ export { SettingsHandler, SettingsHandlerClass, type SettingsHandlerSaveResult, } from "./handlers/SettingsHandler.js";
11
14
  //# 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,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,EACL,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EACL,UAAU,EACV,eAAe,EACf,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,OAAO,EACP,YAAY,EACZ,KAAK,WAAW,EAChB,SAAS,GACV,MAAM,sBAAsB,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,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,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,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,eAAe,EACf,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,OAAO,EACP,YAAY,EACZ,KAAK,WAAW,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,yBAAyB,GAC/B,MAAM,+BAA+B,CAAC"}
package/lib/index.js CHANGED
@@ -2,10 +2,14 @@ export { RequestUrl } from "./RequestUrl.js";
2
2
  export { isRoute, isApp } from "./utils/kind.js";
3
3
  export { isApi } from "./builders/ApiBuilder.js";
4
4
  export { App } from "./App.js";
5
- export { RouteBuilder, } from "./builders/RouteBuilder.js";
6
5
  export { defineRoutePath, routePath } from "./routePath.js";
7
6
  // objects
8
- export { $route } from "./objects/$route.js";
9
7
  export { $api } from "./objects/$api.js";
8
+ export { $route } from "./objects/$route.js";
9
+ export { RouteBuilder, } from "./builders/RouteBuilder.js";
10
+ export { $settings } from "./objects/$settings.js";
11
+ export { Settings, SettingsBuilder, isSettings, } from "./builders/SettingsBuilder.js";
10
12
  export { Middleware, MiddlewareClass, isMiddleware, } from "./objects/middleware.js";
11
13
  export { Service, ServiceClass, isService, } from "./objects/service.js";
14
+ // handlers
15
+ export { SettingsHandler, SettingsHandlerClass, } from "./handlers/SettingsHandler.js";
@@ -0,0 +1,6 @@
1
+ import { SettingsBuilder } from "../builders/SettingsBuilder.js";
2
+ export declare const $settings: SettingsBuilder<{
3
+ name: undefined;
4
+ params: undefined;
5
+ }>;
6
+ //# sourceMappingURL=$settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"$settings.d.ts","sourceRoot":"","sources":["../../src/objects/$settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,eAAO,MAAM,SAAS;;;EAAsC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { SettingsBuilder } from "../builders/SettingsBuilder.js";
2
+ export const $settings = /*#__PURE__*/ new SettingsBuilder();
@@ -4,5 +4,5 @@ export type MiddlewareConstructor = Constructor<Middleware>;
4
4
  export declare abstract class Middleware {
5
5
  abstract onRequest(): any;
6
6
  }
7
- export declare const MiddlewareClass: <P extends import("@dreamkit/ioc").IocParamsUserConfig = {}>(params: P) => import("@dreamkit/ioc").IocClass<P, Middleware, never, import("@dreamkit/ioc").IocParams<P>>;
7
+ export declare const MiddlewareClass: <P extends import("@dreamkit/ioc").IocParamsUserConfig = {}>(params: P) => import("@dreamkit/ioc").IocClass<P & {}, Middleware, never, import("@dreamkit/ioc").IocParams<P & {}>>;
8
8
  //# sourceMappingURL=middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/objects/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAO,cAAc,0CAAE,YAAY,oDAEzC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAC5D,8BAAsB,UAAU;IAI9B,QAAQ,CAAC,SAAS,IAAI,GAAG;CAC1B;AAED,eAAO,MAAM,eAAe,yKAA6B,CAAC"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/objects/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAO,cAAc,0CAAE,YAAY,oDAEzC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAC5D,8BAAsB,UAAU;IAI9B,QAAQ,CAAC,SAAS,IAAI,GAAG;CAC1B;AAED,eAAO,MAAM,eAAe,mLAA6B,CAAC"}
@@ -15,6 +15,6 @@ export declare abstract class Service {
15
15
  abstract onStart(): ServiceStop;
16
16
  onStop(): any;
17
17
  }
18
- export declare const ServiceClass: <P extends import("@dreamkit/ioc").IocParamsUserConfig = {}>(params: P) => import("@dreamkit/ioc").IocClass<P, Service, never, import("@dreamkit/ioc").IocParams<P>>;
18
+ export declare const ServiceClass: <P extends import("@dreamkit/ioc").IocParamsUserConfig = {}>(params: P) => import("@dreamkit/ioc").IocClass<P & {}, Service, never, import("@dreamkit/ioc").IocParams<P & {}>>;
19
19
  export {};
20
20
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/objects/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAO,WAAW,0CAAE,SAAS,iDAEnC,CAAC;AAEF,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACrC,MAAM,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/C,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AACvD,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AACtD,8BAAsB,OAAO;IAI3B,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IACD,QAAQ,CAAC,OAAO,IAAI,WAAW;IAC/B,MAAM,IAAI,GAAG;CACd;AAED,eAAO,MAAM,YAAY,sKAA0B,CAAC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/objects/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAO,WAAW,0CAAE,SAAS,iDAEnC,CAAC;AAEF,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACrC,MAAM,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/C,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AACvD,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AACtD,8BAAsB,OAAO;IAI3B,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IACD,QAAQ,CAAC,OAAO,IAAI,WAAW;IAC/B,MAAM,IAAI,GAAG;CACd;AAED,eAAO,MAAM,YAAY,gLAA0B,CAAC"}
@@ -2,5 +2,5 @@ import type { App } from "../App.js";
2
2
  import type { Route, RouteBuilder } from "../builders/RouteBuilder.js";
3
3
  export declare const kindApp: (input: object, name?: string) => void, isApp: (input: unknown) => input is App;
4
4
  export declare const kindRoute: (input: object, name?: string) => void, isRoute: (input: unknown) => input is Route;
5
- export declare const kindRouteBuilder: (input: object, name?: string) => void, isRouteBuilder: (input: unknown) => input is RouteBuilder<import("../builders/RouteBuilder.js").RouteData<import("../builders/RouteBuilder.js").RouteParams, import("../builders/RouteBuilder.js").RouteApi>>;
5
+ export declare const kindRouteBuilder: (input: object, name?: string) => void, isRouteBuilder: (input: unknown) => input is RouteBuilder<import("../builders/RouteBuilder.js").RouteData<import("../builders/RouteBuilder.js").RouteParams, import("../builders/RouteBuilder.js").RouteApi, unknown>>;
6
6
  //# sourceMappingURL=kind.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kind.d.ts","sourceRoot":"","sources":["../../src/utils/kind.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGvE,eAAO,MAAO,OAAO,0CAAE,KAAK,kCAAoC,CAAC;AACjE,eAAO,MAAO,SAAS,0CAAE,OAAO,oCAA4C,CAAC;AAC7E,eAAO,MAAO,gBAAgB,0CAAE,cAAc,+LAE7C,CAAC"}
1
+ {"version":3,"file":"kind.d.ts","sourceRoot":"","sources":["../../src/utils/kind.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGvE,eAAO,MAAO,OAAO,0CAAE,KAAK,kCAAoC,CAAC;AACjE,eAAO,MAAO,SAAS,0CAAE,OAAO,oCAA4C,CAAC;AAC7E,eAAO,MAAO,gBAAgB,0CAAE,cAAc,wMAE7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreamkit/app",
3
- "version": "0.0.6",
3
+ "version": "0.0.7-next.1",
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.3.7",
30
- "@dreamkit/func": "0.0.2",
31
- "@dreamkit/ioc": "0.0.1",
30
+ "@dreamkit/func": "0.0.3-next.1",
31
+ "@dreamkit/ioc": "0.0.2-next.0",
32
32
  "@dreamkit/kind": "0.0.2",
33
- "@dreamkit/schema": "0.0.4",
34
- "@dreamkit/utils": "0.0.4"
33
+ "@dreamkit/schema": "0.0.5-next.0",
34
+ "@dreamkit/utils": "0.0.5-next.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/debug": "^4.1.12",