@dreamkit/app 0.0.7-next.1 → 0.0.7-next.3

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.
Files changed (39) hide show
  1. package/lib/App.d.ts +6 -5
  2. package/lib/App.d.ts.map +1 -1
  3. package/lib/App.js +15 -8
  4. package/lib/builders/ApiBuilder.d.ts +0 -1
  5. package/lib/builders/ApiBuilder.d.ts.map +1 -1
  6. package/lib/builders/ApiBuilder.js +0 -4
  7. package/lib/builders/MiddlewareBuilder.d.ts +24 -0
  8. package/lib/builders/MiddlewareBuilder.d.ts.map +1 -0
  9. package/lib/builders/MiddlewareBuilder.js +35 -0
  10. package/lib/builders/ServiceBuilder.d.ts +33 -0
  11. package/lib/builders/ServiceBuilder.d.ts.map +1 -0
  12. package/lib/builders/ServiceBuilder.js +35 -0
  13. package/lib/contexts/AppContext.d.ts +4 -0
  14. package/lib/contexts/AppContext.d.ts.map +1 -0
  15. package/lib/contexts/AppContext.js +7 -0
  16. package/lib/contexts/RequestContext.d.ts +4 -0
  17. package/lib/contexts/RequestContext.d.ts.map +1 -0
  18. package/lib/contexts/RequestContext.js +7 -0
  19. package/lib/handlers/SettingsHandler.d.ts +4 -3
  20. package/lib/handlers/SettingsHandler.d.ts.map +1 -1
  21. package/lib/handlers/SettingsHandler.js +10 -12
  22. package/lib/index.d.ts +6 -2
  23. package/lib/index.d.ts.map +1 -1
  24. package/lib/index.js +7 -2
  25. package/lib/objects/$api.d.ts.map +1 -1
  26. package/lib/objects/$api.js +7 -2
  27. package/lib/objects/$middleware.d.ts +3 -0
  28. package/lib/objects/$middleware.d.ts.map +1 -0
  29. package/lib/objects/$middleware.js +2 -0
  30. package/lib/objects/$service.d.ts +3 -0
  31. package/lib/objects/$service.d.ts.map +1 -0
  32. package/lib/objects/$service.js +2 -0
  33. package/package.json +4 -4
  34. package/lib/objects/middleware.d.ts +0 -8
  35. package/lib/objects/middleware.d.ts.map +0 -1
  36. package/lib/objects/middleware.js +0 -9
  37. package/lib/objects/service.d.ts +0 -20
  38. package/lib/objects/service.d.ts.map +0 -1
  39. package/lib/objects/service.js +0 -13
package/lib/App.d.ts CHANGED
@@ -1,13 +1,14 @@
1
+ import { MiddlewareConstructor } from "./builders/MiddlewareBuilder.js";
1
2
  import { Route } from "./builders/RouteBuilder.js";
3
+ import { AppService, ServiceConstructor } from "./builders/ServiceBuilder.js";
2
4
  import { SettingsConstructor } from "./builders/SettingsBuilder.js";
5
+ import { AppContext } from "./contexts/AppContext.js";
6
+ import { RequestContext } from "./contexts/RequestContext.js";
3
7
  import { SettingsHandler, SettingsHandlerConstructor } from "./handlers/SettingsHandler.js";
4
- import { MiddlewareConstructor } from "./objects/middleware.js";
5
- import { AppService, ServiceConstructor } from "./objects/service.js";
6
- import { IocContext } from "@dreamkit/ioc";
7
8
  export declare class App {
8
9
  static instanceKey: string;
9
10
  readonly started = false;
10
- readonly context: IocContext;
11
+ readonly context: AppContext;
11
12
  readonly objects: Map<string, any>;
12
13
  readonly routes: Set<Route>;
13
14
  readonly services: Set<AppService>;
@@ -49,7 +50,7 @@ export declare class App {
49
50
  protected startService(item: AppService): Promise<void>;
50
51
  protected stopService(item: AppService): Promise<void>;
51
52
  add(input: Record<string, any> | any[]): Promise<void>;
52
- createRequestContext(request: Request): IocContext;
53
+ createRequestContext(request: Request): RequestContext;
53
54
  request(request: Request): Promise<Response | undefined>;
54
55
  protected initSettingsValue(constructor: SettingsConstructor): Promise<{
55
56
  [x: string]: any;
package/lib/App.d.ts.map CHANGED
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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"}
package/lib/App.js CHANGED
@@ -1,12 +1,14 @@
1
1
  import { RequestUrl } from "./RequestUrl.js";
2
2
  import { isApi } from "./builders/ApiBuilder.js";
3
+ import { isMiddleware, } from "./builders/MiddlewareBuilder.js";
4
+ import { isService, } from "./builders/ServiceBuilder.js";
3
5
  import { isSettings } from "./builders/SettingsBuilder.js";
6
+ import { AppContext } from "./contexts/AppContext.js";
7
+ import { RequestContext } from "./contexts/RequestContext.js";
4
8
  import { isSettingsHandler, SettingsHandler, } from "./handlers/SettingsHandler.js";
5
- import { isMiddleware } from "./objects/middleware.js";
6
- import { isService, } from "./objects/service.js";
7
9
  import { isRoute, kindApp } from "./utils/kind.js";
8
10
  import { log } from "./utils/log.js";
9
- import { context, IocBaseClass, normalizeIocParams, } from "@dreamkit/ioc";
11
+ import { IocBaseClass, normalizeIocParams, } from "@dreamkit/ioc";
10
12
  import { getKinds, is } from "@dreamkit/kind";
11
13
  import { merge } from "@dreamkit/utils/object.js";
12
14
  export class App {
@@ -28,9 +30,10 @@ export class App {
28
30
  change: new Set(),
29
31
  };
30
32
  constructor() {
31
- this.context = context.fork().register(App, {
33
+ this.context = new AppContext().register(App, {
32
34
  value: this,
33
35
  });
36
+ this.context.register(AppContext, { value: this.context });
34
37
  }
35
38
  static instance() {
36
39
  const value = globalThis[App.instanceKey];
@@ -187,12 +190,16 @@ export class App {
187
190
  }
188
191
  }
189
192
  createRequestContext(request) {
190
- const url = new RequestUrl(request.url, "http://localhost");
191
- return this.context
192
- .fork()
193
+ const context = new RequestContext({
194
+ parentContainer: this.context,
195
+ });
196
+ return context
197
+ .register(RequestContext, { value: context })
193
198
  .register(Request, { value: request })
194
199
  .register(Headers, { value: request.headers })
195
- .register(RequestUrl, { value: url });
200
+ .register(RequestUrl, {
201
+ value: new RequestUrl(request.url, "http://localhost"),
202
+ });
196
203
  }
197
204
  async request(request) {
198
205
  const context = this.createRequestContext(request);
@@ -1,6 +1,5 @@
1
1
  import { Func, FuncBuilder, FuncData } from "@dreamkit/func";
2
2
  export declare const kindApi: (input: object, name?: string) => void, isApi: (input: unknown) => input is Func;
3
3
  export declare class ApiBuilder<T extends FuncData> extends FuncBuilder<T> {
4
- protected onCreate(func: Func): Func;
5
4
  }
6
5
  //# sourceMappingURL=ApiBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiBuilder.d.ts","sourceRoot":"","sources":["../../src/builders/ApiBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG7D,eAAO,MAAO,OAAO,0CAAE,KAAK,mCAAyC,CAAC;AAEtE,qBAAa,UAAU,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;cAC7C,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CAI9C"}
1
+ {"version":3,"file":"ApiBuilder.d.ts","sourceRoot":"","sources":["../../src/builders/ApiBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG7D,eAAO,MAAO,OAAO,0CAAE,KAAK,mCAAyC,CAAC;AAEtE,qBAAa,UAAU,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;CAAG"}
@@ -2,8 +2,4 @@ import { FuncBuilder } from "@dreamkit/func";
2
2
  import { createKind } from "@dreamkit/kind";
3
3
  export const [kindApi, isApi] = createKind("@dreamkit/app/api");
4
4
  export class ApiBuilder extends FuncBuilder {
5
- onCreate(func) {
6
- kindApi(func);
7
- return func;
8
- }
9
5
  }
@@ -0,0 +1,24 @@
1
+ import { IocClass, IocParamsUserConfig } from "@dreamkit/ioc";
2
+ import type { Constructor, Merge } from "@dreamkit/utils/ts.js";
3
+ export declare const kindMiddleware: (input: object, name?: string) => void, isMiddleware: (input: unknown) => input is MiddlewareConstructor;
4
+ export type MiddlewareSelf = IocParamsUserConfig | undefined;
5
+ export type MiddlewareData<TSelf extends MiddlewareSelf = MiddlewareSelf> = {
6
+ self?: TSelf;
7
+ };
8
+ export type MiddlewareOptions<T extends MiddlewareData = MiddlewareData> = T & {};
9
+ export type MergeMiddlewareData<D1 extends MiddlewareData, D2 extends Partial<MiddlewareData>> = Merge<MiddlewareData, D1, D2>;
10
+ export declare abstract class Middleware {
11
+ abstract onRequest(): any;
12
+ }
13
+ export type MiddlewareConstructor = Constructor<Middleware>;
14
+ export declare class MiddlewareBuilder<T extends MiddlewareData = {}> {
15
+ readonly data: T;
16
+ readonly options: MiddlewareOptions<T>;
17
+ constructor(options?: MiddlewareOptions<T>);
18
+ protected clone(next: Partial<MiddlewareOptions>): this;
19
+ self<TSelf extends MiddlewareSelf>(value: TSelf): MiddlewareBuilder<MergeMiddlewareData<T, {
20
+ self: TSelf;
21
+ }>>;
22
+ create(): IocClass<T["self"] & {}, Middleware>;
23
+ }
24
+ //# sourceMappingURL=MiddlewareBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MiddlewareBuilder.d.ts","sourceRoot":"","sources":["../../src/builders/MiddlewareBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAER,mBAAmB,EACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEhE,eAAO,MAAO,cAAc,0CAAE,YAAY,oDAEzC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAC7D,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,cAAc,GAAG,cAAc,IAAI;IAC1E,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IACrE,CAAC,GAAG,EAAE,CAAC;AAET,MAAM,MAAM,mBAAmB,CAC7B,EAAE,SAAS,cAAc,EACzB,EAAE,SAAS,OAAO,CAAC,cAAc,CAAC,IAChC,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAElC,8BAAsB,UAAU;IAI9B,QAAQ,CAAC,SAAS,IAAI,GAAG;CAC1B;AAED,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAI5D,qBAAa,iBAAiB,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE;IAC1D,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC3B,OAAO,GAAE,iBAAiB,CAAC,CAAC,CAAa;IASrD,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAOvD,IAAI,CAAC,KAAK,SAAS,cAAc,EAC/B,KAAK,EAAE,KAAK,GACX,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IAG7D,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC;CAG/C"}
@@ -0,0 +1,35 @@
1
+ import { createIocClass, } from "@dreamkit/ioc";
2
+ import { createKind } from "@dreamkit/kind";
3
+ export const [kindMiddleware, isMiddleware] = createKind("@dreamkit/app/middleware");
4
+ export class Middleware {
5
+ static {
6
+ kindMiddleware(this);
7
+ }
8
+ }
9
+ const MiddlewareClass = createIocClass(Middleware);
10
+ export class MiddlewareBuilder {
11
+ data;
12
+ options;
13
+ constructor(options = {}) {
14
+ const $this = this;
15
+ this.options = options;
16
+ this.data = {
17
+ get self() {
18
+ return $this.options.self;
19
+ },
20
+ };
21
+ }
22
+ clone(next) {
23
+ const prev = this.options;
24
+ return new MiddlewareBuilder({
25
+ ...prev,
26
+ ...next,
27
+ });
28
+ }
29
+ self(value) {
30
+ return this.clone({ self: value });
31
+ }
32
+ create() {
33
+ return MiddlewareClass(this.options.self || {});
34
+ }
35
+ }
@@ -0,0 +1,33 @@
1
+ import { IocClass, IocParamsUserConfig } from "@dreamkit/ioc";
2
+ import type { Constructor, Merge } from "@dreamkit/utils/ts.js";
3
+ export declare const kindService: (input: object, name?: string) => void, isService: (input: unknown) => input is ServiceConstructor;
4
+ export type ServiceSelf = IocParamsUserConfig | undefined;
5
+ export type ServiceData<TSelf extends ServiceSelf = ServiceSelf> = {
6
+ self?: TSelf;
7
+ };
8
+ export type ServiceOptions<T extends ServiceData = ServiceData> = T & {};
9
+ export type MergeServiceData<D1 extends ServiceData, D2 extends Partial<ServiceData>> = Merge<ServiceData, D1, D2>;
10
+ type SyncOrAsync<T> = T | Promise<T>;
11
+ export type Shutdown = () => SyncOrAsync<void>;
12
+ export type AppService = {
13
+ name: string;
14
+ service: ServiceConstructor;
15
+ started: boolean;
16
+ shutdown?: Shutdown;
17
+ };
18
+ export declare abstract class Service {
19
+ abstract onStart(): any;
20
+ }
21
+ export type ServiceConstructor = Constructor<Service>;
22
+ export declare class ServiceBuilder<T extends ServiceData = {}> {
23
+ readonly data: T;
24
+ readonly options: ServiceOptions<T>;
25
+ constructor(options?: ServiceOptions<T>);
26
+ protected clone(next: Partial<ServiceOptions>): this;
27
+ self<TSelf extends ServiceSelf>(value: TSelf): ServiceBuilder<MergeServiceData<T, {
28
+ self: TSelf;
29
+ }>>;
30
+ create(): IocClass<T["self"] & {}, Service>;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=ServiceBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceBuilder.d.ts","sourceRoot":"","sources":["../../src/builders/ServiceBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEhE,eAAO,MAAO,WAAW,0CAAE,SAAS,iDAEnC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAC1D,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,WAAW,GAAG,WAAW,IAAI;IACjE,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC;AAEzE,MAAM,MAAM,gBAAgB,CAC1B,EAAE,SAAS,WAAW,EACtB,EAAE,SAAS,OAAO,CAAC,WAAW,CAAC,IAC7B,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAE/B,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;AAEF,8BAAsB,OAAO;IAI3B,QAAQ,CAAC,OAAO,IAAI,GAAG;CACxB;AAED,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAItD,qBAAa,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,EAAE;IACpD,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;gBACxB,OAAO,GAAE,cAAc,CAAC,CAAC,CAAa;IASlD,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAOpD,IAAI,CAAC,KAAK,SAAS,WAAW,EAC5B,KAAK,EAAE,KAAK,GACX,cAAc,CAAC,gBAAgB,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IAGvD,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC;CAG5C"}
@@ -0,0 +1,35 @@
1
+ import { createIocClass } from "@dreamkit/ioc";
2
+ import { createKind } from "@dreamkit/kind";
3
+ export const [kindService, isService] = createKind("@dreamkit/app/service");
4
+ export class Service {
5
+ static {
6
+ kindService(this);
7
+ }
8
+ }
9
+ const ServiceClass = createIocClass(Service);
10
+ export class ServiceBuilder {
11
+ data;
12
+ options;
13
+ constructor(options = {}) {
14
+ const $this = this;
15
+ this.options = options;
16
+ this.data = {
17
+ get self() {
18
+ return $this.options.self;
19
+ },
20
+ };
21
+ }
22
+ clone(next) {
23
+ const prev = this.options;
24
+ return new ServiceBuilder({
25
+ ...prev,
26
+ ...next,
27
+ });
28
+ }
29
+ self(value) {
30
+ return this.clone({ self: value });
31
+ }
32
+ create() {
33
+ return ServiceClass(this.options.self || {});
34
+ }
35
+ }
@@ -0,0 +1,4 @@
1
+ import { IocContext } from "@dreamkit/ioc";
2
+ export declare class AppContext extends IocContext {
3
+ }
4
+ //# sourceMappingURL=AppContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppContext.d.ts","sourceRoot":"","sources":["../../src/contexts/AppContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,qBAAa,UAAW,SAAQ,UAAU;CAIzC"}
@@ -0,0 +1,7 @@
1
+ import { IocContext } from "@dreamkit/ioc";
2
+ import { kind } from "@dreamkit/kind";
3
+ export class AppContext extends IocContext {
4
+ static {
5
+ kind(this, "@dreamkit/app/AppContext");
6
+ }
7
+ }
@@ -0,0 +1,4 @@
1
+ import { IocContext } from "@dreamkit/ioc";
2
+ export declare class RequestContext extends IocContext {
3
+ }
4
+ //# sourceMappingURL=RequestContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestContext.d.ts","sourceRoot":"","sources":["../../src/contexts/RequestContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,qBAAa,cAAe,SAAQ,UAAU;CAI7C"}
@@ -0,0 +1,7 @@
1
+ import { IocContext } from "@dreamkit/ioc";
2
+ import { kind } from "@dreamkit/kind";
3
+ export class RequestContext extends IocContext {
4
+ static {
5
+ kind(this, "@dreamkit/app/RequestContext");
6
+ }
7
+ }
@@ -1,5 +1,6 @@
1
1
  import { InferSettingsParams, SettingsConstructor, SettingsData } from "../builders/SettingsBuilder.js";
2
- import { IocClass, IocContext } from "@dreamkit/ioc";
2
+ import { AppContext } from "../contexts/AppContext.js";
3
+ import { IocClass } from "@dreamkit/ioc";
3
4
  import { Constructor } from "@dreamkit/utils/ts.js";
4
5
  export declare const kindSettingsHandler: (input: object, name?: string) => void, isSettingsHandler: (input: unknown) => input is SettingsHandlerConstructor;
5
6
  export type SettingsHandlerConstructor = Constructor<SettingsHandler> & {
@@ -10,9 +11,9 @@ export type SettingsHandlerSaveResult = Record<string, {
10
11
  changed: boolean;
11
12
  }>;
12
13
  declare const SettingsHandler_base: IocClass<{
13
- IocContext: typeof IocContext;
14
+ AppContext: typeof AppContext;
14
15
  }, import("@dreamkit/ioc").IocBaseClass<import("@dreamkit/ioc").IocParamsUserConfig>, never, import("@dreamkit/ioc").IocParams<{
15
- IocContext: typeof IocContext;
16
+ AppContext: typeof AppContext;
16
17
  }>>;
17
18
  export declare abstract class SettingsHandler extends SettingsHandler_base {
18
19
  autoSave: boolean;
@@ -1 +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"}
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,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAkB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzD,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;IAgBV,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"}
@@ -1,7 +1,8 @@
1
- import { createIocClass, IocClass, IocContext } from "@dreamkit/ioc";
1
+ import { AppContext } from "../contexts/AppContext.js";
2
+ import { createIocClass, IocClass } from "@dreamkit/ioc";
2
3
  import { createKind } from "@dreamkit/kind";
3
4
  export const [kindSettingsHandler, isSettingsHandler] = createKind("@dreamkit/app/SettingsHandler");
4
- export class SettingsHandler extends IocClass({ IocContext }) {
5
+ export class SettingsHandler extends IocClass({ AppContext }) {
5
6
  static {
6
7
  kindSettingsHandler(this);
7
8
  }
@@ -13,32 +14,29 @@ export class SettingsHandler extends IocClass({ IocContext }) {
13
14
  this.data = await this.onLoad();
14
15
  for (const settings of this.settings) {
15
16
  const data = this.data[settings.options.name];
16
- this.iocContext.resolve(settings, { optional: true })?.update(data);
17
+ this.appContext.resolve(settings, { optional: true })?.update(data);
17
18
  }
18
19
  }
19
20
  async get(constructor) {
20
21
  return this.data[constructor.options.name];
21
22
  }
22
23
  async set(constructor, data) {
23
- const settingsInstance = this.iocContext.resolve(constructor, {
24
+ const settingsInstance = this.appContext.resolve(constructor, {
24
25
  optional: true,
25
26
  });
26
27
  if (settingsInstance) {
27
28
  settingsInstance.update(data);
28
29
  }
29
30
  else {
30
- this.iocContext.register(constructor, {
31
+ this.appContext.register(constructor, {
31
32
  value: new constructor(data),
32
33
  });
33
34
  }
34
- if (this.autoSave) {
35
+ const name = constructor.options.name;
36
+ this.data[name] = data;
37
+ this.pending.push(name);
38
+ if (this.autoSave)
35
39
  await this.onSave();
36
- }
37
- else {
38
- const name = constructor.options.name;
39
- this.data[name] = data;
40
- this.pending.push(name);
41
- }
42
40
  }
43
41
  async save() {
44
42
  this.autoSave = true;
package/lib/index.d.ts CHANGED
@@ -3,12 +3,16 @@ export { isRoute, isApp } from "./utils/kind.js";
3
3
  export { isApi } from "./builders/ApiBuilder.js";
4
4
  export { App } from "./App.js";
5
5
  export { defineRoutePath, routePath } from "./routePath.js";
6
+ export { AppContext } from "./contexts/AppContext.js";
7
+ export { RequestContext } from "./contexts/RequestContext.js";
6
8
  export { $api } from "./objects/$api.js";
7
9
  export { $route } from "./objects/$route.js";
10
+ export { $middleware } from "./objects/$middleware.js";
11
+ export { $service } from "./objects/$service.js";
8
12
  export { RouteBuilder, type RouteOptions, type Route, type RouteData, type RouteProps, } from "./builders/RouteBuilder.js";
9
13
  export { $settings } from "./objects/$settings.js";
10
14
  export { Settings, SettingsBuilder, type SettingsConstructor, type SettingsData, isSettings, } from "./builders/SettingsBuilder.js";
11
- export { Middleware, MiddlewareClass, isMiddleware, } from "./objects/middleware.js";
12
- export { Service, ServiceClass, type ServiceStop, isService, } from "./objects/service.js";
15
+ export { Middleware, isMiddleware, type MiddlewareConstructor, type MiddlewareOptions, type MiddlewareData, } from "./builders/MiddlewareBuilder.js";
16
+ export { Service, type ServiceConstructor, type ServiceOptions, type ServiceData, isService, } from "./builders/ServiceBuilder.js";
13
17
  export { SettingsHandler, SettingsHandlerClass, type SettingsHandlerSaveResult, } from "./handlers/SettingsHandler.js";
14
18
  //# 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,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"}
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,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,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;AAEtC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,yBAAyB,GAC/B,MAAM,+BAA+B,CAAC"}
package/lib/index.js CHANGED
@@ -3,13 +3,18 @@ export { isRoute, isApp } from "./utils/kind.js";
3
3
  export { isApi } from "./builders/ApiBuilder.js";
4
4
  export { App } from "./App.js";
5
5
  export { defineRoutePath, routePath } from "./routePath.js";
6
+ // contexts
7
+ export { AppContext } from "./contexts/AppContext.js";
8
+ export { RequestContext } from "./contexts/RequestContext.js";
6
9
  // objects
7
10
  export { $api } from "./objects/$api.js";
8
11
  export { $route } from "./objects/$route.js";
12
+ export { $middleware } from "./objects/$middleware.js";
13
+ export { $service } from "./objects/$service.js";
9
14
  export { RouteBuilder, } from "./builders/RouteBuilder.js";
10
15
  export { $settings } from "./objects/$settings.js";
11
16
  export { Settings, SettingsBuilder, isSettings, } from "./builders/SettingsBuilder.js";
12
- export { Middleware, MiddlewareClass, isMiddleware, } from "./objects/middleware.js";
13
- export { Service, ServiceClass, isService, } from "./objects/service.js";
17
+ export { Middleware, isMiddleware, } from "./builders/MiddlewareBuilder.js";
18
+ export { Service, isService, } from "./builders/ServiceBuilder.js";
14
19
  // handlers
15
20
  export { SettingsHandler, SettingsHandlerClass, } from "./handlers/SettingsHandler.js";
@@ -1 +1 @@
1
- {"version":3,"file":"$api.d.ts","sourceRoot":"","sources":["../../src/objects/$api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,eAAO,MAAM,IAAI,gBAAmC,CAAC"}
1
+ {"version":3,"file":"$api.d.ts","sourceRoot":"","sources":["../../src/objects/$api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAEhE,eAAO,MAAM,IAAI,gBAKf,CAAC"}
@@ -1,2 +1,7 @@
1
- import { ApiBuilder } from "../builders/ApiBuilder.js";
2
- export const $api = /*#__PURE__*/ new ApiBuilder({});
1
+ import { ApiBuilder, kindApi } from "../builders/ApiBuilder.js";
2
+ export const $api = /*#__PURE__*/ new ApiBuilder({})["clone"]({
3
+ onCreate: (func) => {
4
+ kindApi(func);
5
+ return func;
6
+ },
7
+ });
@@ -0,0 +1,3 @@
1
+ import { MiddlewareBuilder } from "../builders/MiddlewareBuilder.js";
2
+ export declare const $middleware: MiddlewareBuilder<{}>;
3
+ //# sourceMappingURL=$middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"$middleware.d.ts","sourceRoot":"","sources":["../../src/objects/$middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,eAAO,MAAM,WAAW,uBAA0C,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { MiddlewareBuilder } from "../builders/MiddlewareBuilder.js";
2
+ export const $middleware = /*#__PURE__*/ new MiddlewareBuilder({});
@@ -0,0 +1,3 @@
1
+ import { ServiceBuilder } from "../builders/ServiceBuilder.js";
2
+ export declare const $service: ServiceBuilder<{}>;
3
+ //# sourceMappingURL=$service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"$service.d.ts","sourceRoot":"","sources":["../../src/objects/$service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,eAAO,MAAM,QAAQ,oBAAuC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ServiceBuilder } from "../builders/ServiceBuilder.js";
2
+ export const $service = /*#__PURE__*/ new ServiceBuilder({});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreamkit/app",
3
- "version": "0.0.7-next.1",
3
+ "version": "0.0.7-next.3",
4
4
  "description": "Set of utils to create applications.",
5
5
  "homepage": "https://dreamkit.dev",
6
6
  "repository": {
@@ -27,10 +27,10 @@
27
27
  ],
28
28
  "dependencies": {
29
29
  "debug": "^4.3.7",
30
- "@dreamkit/func": "0.0.3-next.1",
31
- "@dreamkit/ioc": "0.0.2-next.0",
30
+ "@dreamkit/func": "0.0.3-next.3",
31
+ "@dreamkit/ioc": "0.0.2-next.2",
32
32
  "@dreamkit/kind": "0.0.2",
33
- "@dreamkit/schema": "0.0.5-next.0",
33
+ "@dreamkit/schema": "0.0.5-next.1",
34
34
  "@dreamkit/utils": "0.0.5-next.0"
35
35
  },
36
36
  "devDependencies": {
@@ -1,8 +0,0 @@
1
- import { Constructor } from "@dreamkit/utils/ts.js";
2
- export declare const kindMiddleware: (input: object, name?: string) => void, isMiddleware: (input: unknown) => input is MiddlewareConstructor;
3
- export type MiddlewareConstructor = Constructor<Middleware>;
4
- export declare abstract class Middleware {
5
- abstract onRequest(): any;
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 & {}>>;
8
- //# sourceMappingURL=middleware.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,9 +0,0 @@
1
- import { createIocClass } from "@dreamkit/ioc";
2
- import { createKind } from "@dreamkit/kind";
3
- export const [kindMiddleware, isMiddleware] = createKind("@dreamkit/app/middleware");
4
- export class Middleware {
5
- static {
6
- kindMiddleware(this);
7
- }
8
- }
9
- export const MiddlewareClass = createIocClass(Middleware);
@@ -1,20 +0,0 @@
1
- import { Constructor } from "@dreamkit/utils/ts.js";
2
- export declare const kindService: (input: object, name?: string) => void, isService: (input: unknown) => input is ServiceConstructor;
3
- type SyncOrAsync<T> = T | Promise<T>;
4
- export type Shutdown = () => SyncOrAsync<void>;
5
- export type AppService = {
6
- name: string;
7
- service: ServiceConstructor;
8
- started: boolean;
9
- shutdown?: Shutdown;
10
- };
11
- export type ServiceStop = SyncOrAsync<void> | Shutdown;
12
- export type ServiceConstructor = Constructor<Service>;
13
- export declare abstract class Service {
14
- get name(): string | undefined;
15
- abstract onStart(): ServiceStop;
16
- onStop(): any;
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 & {}>>;
19
- export {};
20
- //# sourceMappingURL=service.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,13 +0,0 @@
1
- import { createIocClass } from "@dreamkit/ioc";
2
- import { createKind } from "@dreamkit/kind";
3
- export const [kindService, isService] = createKind("@dreamkit/app/service");
4
- export class Service {
5
- static {
6
- kindService(this);
7
- }
8
- get name() {
9
- return;
10
- }
11
- onStop() { }
12
- }
13
- export const ServiceClass = createIocClass(Service);