@spinajs/orm-http 2.0.265 → 2.0.266

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.
@@ -1,13 +1,15 @@
1
1
  import { Orm, ModelBase } from '@spinajs/orm';
2
2
  import { IRouteParameter, IRouteCall, ParameterType, ArgHydrator, Request as sRequest, RouteArgs } from '@spinajs/http';
3
3
  import { IContainer, Bootstrapper } from '@spinajs/di';
4
- export * from "./interfaces.js";
5
- export * from "./model.js";
6
- export * from "./decorators.js";
4
+ import { FromModelOptions } from './interfaces.js';
5
+ export * from './interfaces.js';
6
+ export * from './model.js';
7
+ export * from './decorators.js';
7
8
  export * from './extension.js';
8
- export * from "./route-arg.js";
9
+ export * from './route-arg.js';
9
10
  export * from './builders.js';
10
11
  export * from './dto.js';
12
+ export * from './response-methods/OrmNotFound.js';
11
13
  export declare class AsDbModel extends RouteArgs {
12
14
  get SupportedType(): string;
13
15
  extract(callData: IRouteCall, param: IRouteParameter, req: sRequest): Promise<{
@@ -24,12 +26,13 @@ export declare class FromDbModel extends RouteArgs {
24
26
  CallData: IRouteCall;
25
27
  Args: any;
26
28
  }>;
29
+ protected fromDbModelDefaultQueryFunction(callData: IRouteCall, param: IRouteParameter<FromModelOptions<ModelBase>>, req: sRequest): Promise<any>;
27
30
  }
28
31
  export declare class DbModelHydrator extends ArgHydrator {
29
32
  hydrate(input: any, parameter: IRouteParameter): Promise<any>;
30
33
  }
31
34
  export declare function AsModel(field?: string, type?: ParameterType): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
32
- export declare function FromModel(field?: string, type?: ParameterType): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
35
+ export declare function FromModel(options?: FromModelOptions<ModelBase<any>>): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
33
36
  export declare class OrmHttpBootstrapper extends Bootstrapper {
34
37
  bootstrap(): Promise<void>;
35
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAoB,aAAa,EAAE,WAAW,EAAE,OAAO,IAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1I,OAAO,EAAE,UAAU,EAAqC,YAAY,EAAM,MAAM,aAAa,CAAC;AAG9F,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AAEzB,qBACa,SAAU,SAAQ,SAAS;IACtC,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ;;;;CAajF;AAED,qBACa,WAAY,SAAQ,SAAS;IAExC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAGhC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ;;;;CA0BjF;AAED,qBAAa,eAAgB,SAAQ,WAAW;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;CAS3E;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,yGAE3D;AAED,wBAAgB,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,yGAE7D;AAED,qBACa,mBAAoB,SAAQ,YAAY;IACtC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAgG,MAAM,cAAc,CAAC;AAC5I,OAAO,EAAE,eAAe,EAAE,UAAU,EAAoB,aAAa,EAAE,WAAW,EAAE,OAAO,IAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1I,OAAO,EAAE,UAAU,EAAqC,YAAY,EAAM,MAAM,aAAa,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,mCAAmC,CAAC;AAElD,qBACa,SAAU,SAAQ,SAAS;IACtC,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ;;;;CAajF;AAED,qBACa,WAAY,SAAQ,SAAS;IAExC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAGhC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ;;;;IAYhF,SAAS,CAAC,+BAA+B,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ;CA8DnI;AAED,qBAAa,eAAgB,SAAQ,WAAW;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;CAS3E;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,yGAE3D;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,yGAEnE;AAED,qBACa,mBAAoB,SAAQ,YAAY;IACtC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBxC"}
package/lib/cjs/index.js CHANGED
@@ -28,6 +28,7 @@ const orm_1 = require("@spinajs/orm");
28
28
  const http_1 = require("@spinajs/http");
29
29
  const di_1 = require("@spinajs/di");
30
30
  const model_js_1 = require("./model.js");
31
+ const exceptions_1 = require("@spinajs/exceptions");
31
32
  __exportStar(require("./interfaces.js"), exports);
32
33
  __exportStar(require("./model.js"), exports);
33
34
  __exportStar(require("./decorators.js"), exports);
@@ -35,6 +36,7 @@ __exportStar(require("./extension.js"), exports);
35
36
  __exportStar(require("./route-arg.js"), exports);
36
37
  __exportStar(require("./builders.js"), exports);
37
38
  __exportStar(require("./dto.js"), exports);
39
+ __exportStar(require("./response-methods/OrmNotFound.js"), exports);
38
40
  let AsDbModel = class AsDbModel extends http_1.RouteArgs {
39
41
  get SupportedType() {
40
42
  return 'AsDbModel';
@@ -59,27 +61,69 @@ let FromDbModel = class FromDbModel extends http_1.RouteArgs {
59
61
  return 'FromDB';
60
62
  }
61
63
  async extract(callData, param, req) {
62
- let p = null;
63
- switch (param.Options.type) {
64
+ let result = null;
65
+ if (param.Options.query) {
66
+ result = await param.Options.query.call(param.RuntimeType.query(), callData.Payload);
67
+ }
68
+ else {
69
+ result = await this.fromDbModelDefaultQueryFunction(callData, param, req);
70
+ }
71
+ return { CallData: callData, Args: result };
72
+ }
73
+ fromDbModelDefaultQueryFunction(callData, param, req) {
74
+ let pkValue = null;
75
+ const field = param.Options.field ?? param.Name;
76
+ switch (param.Options.paramType) {
64
77
  case http_1.ParameterType.FromQuery:
65
- p = req.query[param.Options.field ?? param.Name];
78
+ pkValue = req.query[field];
66
79
  break;
67
80
  case http_1.ParameterType.FromBody:
68
- p = req.body[param.Options.field ?? param.Name];
81
+ pkValue = req.body[field];
69
82
  break;
70
83
  case http_1.ParameterType.FromHeader:
71
- p = req.headers[param.Options.field ?? param.Name.toLowerCase()];
84
+ pkValue = req.headers[field.toLowerCase()];
72
85
  break;
73
86
  case http_1.ParameterType.FromParams:
74
87
  default:
75
- p = req.params[param.Options.field ?? param.Name];
88
+ pkValue = req.params[field];
76
89
  break;
77
90
  }
78
- if (!p) {
79
- throw new orm_1.OrmException(`Cannot load model from db, parameter ${param.Options.field ?? param.Name} is required`);
91
+ const query = param.RuntimeType['query']();
92
+ const descriptor = (0, orm_1.extractModelDescriptor)(param.RuntimeType);
93
+ query.select('*');
94
+ query.where(descriptor.PrimaryKey, pkValue);
95
+ /**
96
+ * Checks BelongsToRelations
97
+ */
98
+ for (const [, v] of descriptor.Relations) {
99
+ // if its one-to-one relations ( belongsTo)
100
+ // check if we have same field in route param list
101
+ // If exists, we assume that we want parent ( owner of this model )
102
+ if (v.Type === orm_1.RelationType.One) {
103
+ const args = callData.Payload?.Param?.Args;
104
+ if (args) {
105
+ const keys = Object.keys(args);
106
+ const key = keys.find((k) => {
107
+ return k.toLowerCase() === v.Name.toLowerCase() || k.toLowerCase() === `_${v.Name.toLowerCase()}`;
108
+ });
109
+ if (key) {
110
+ if (callData.Payload.Param.Args[key]) {
111
+ query.where(v.ForeignKey, callData.Payload.Param.Args[key]);
112
+ }
113
+ else {
114
+ throw new exceptions_1.InvalidArgument(`no key for relation ${v.Name} was provided`);
115
+ }
116
+ }
117
+ }
118
+ }
80
119
  }
81
- const result = await param.RuntimeType['getOrFail'](p);
82
- return { CallData: callData, Args: result };
120
+ /**
121
+ * Checks include field
122
+ */
123
+ if (callData.Payload?.Query?.Args?.include || callData.Payload?.Query?.Args?._include) {
124
+ query.populate(callData.Payload.Query.Args.include ?? callData.Payload.Query.Args._include);
125
+ }
126
+ return query.firstOrThrow(new orm_1.OrmNotFoundException());
83
127
  }
84
128
  };
85
129
  exports.FromDbModel = FromDbModel;
@@ -109,8 +153,8 @@ function AsModel(field, type) {
109
153
  return (0, http_1.Route)((0, http_1.Parameter)('AsDbModel', null, { field, type }));
110
154
  }
111
155
  exports.AsModel = AsModel;
112
- function FromModel(field, type) {
113
- return (0, http_1.Route)((0, http_1.Parameter)('FromDbModel', null, { field, type }));
156
+ function FromModel(options) {
157
+ return (0, http_1.Route)((0, http_1.Parameter)('FromDbModel', null, { options }));
114
158
  }
115
159
  exports.FromModel = FromModel;
116
160
  let OrmHttpBootstrapper = class OrmHttpBootstrapper extends di_1.Bootstrapper {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Class } from '@spinajs/di';
2
- import { ModelBase, SortOrder } from '@spinajs/orm';
2
+ import { ModelBase, SelectQueryBuilder, SortOrder } from '@spinajs/orm';
3
3
  export declare class JsonApiIncomingObject {
4
4
  data: {
5
5
  type: string;
@@ -26,5 +26,31 @@ export interface IFilter {
26
26
  Operator: FilterableOperators;
27
27
  Value: any;
28
28
  }
29
+ export interface FromModelOptions<T extends ModelBase> {
30
+ /**
31
+ * Optiona route/param/body field for primary key
32
+ * If not set , model primary key is used
33
+ */
34
+ field?: string;
35
+ /**
36
+ * From where to get primary key value
37
+ * Eg. body, query, param, header etc.
38
+ *
39
+ * If not set, param is used
40
+ */
41
+ paramType?: string;
42
+ /**
43
+ *
44
+ * Callback on query builder before model is fetched from DB
45
+ *
46
+ * It allows to modify query with data passed to route.
47
+ * If not set it check for include, model owner ( if has @BelongsTo field marked) etc.
48
+ *
49
+ * @param this
50
+ * @param routeParams passed route params to query
51
+ * @returns
52
+ */
53
+ query?: (this: SelectQueryBuilder<T>, routeParams: any) => SelectQueryBuilder;
54
+ }
29
55
  export type FilterableOperators = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'like' | 'in' | 'nin' | 'between' | 'isnull' | 'notnull' | 'notbetween';
30
56
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpD,qBACa,qBAAqB;IACzB,IAAI,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,GAAG,CAAC;QAChB,aAAa,EAAE,GAAG,CAAC;KACpB,CAAQ;gBAEG,IAAI,EAAE,GAAG;CAGtB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGxE,qBACa,qBAAqB;IACzB,IAAI,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,GAAG,CAAC;QAChB,aAAa,EAAE,GAAG,CAAC;KACpB,CAAQ;gBAEG,IAAI,EAAE,GAAG;CAGtB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC;CACZ;AAGD,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,SAAS;IACnD;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK,kBAAkB,CAAC;CAC/E;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { HTTP_STATUS_CODE, IResponseOptions, Response } from '@spinajs/http';
2
+ export declare class OrmNotFound extends Response {
3
+ protected options?: IResponseOptions;
4
+ protected _errorCode: HTTP_STATUS_CODE;
5
+ protected _template: string;
6
+ constructor(error: string | object | Promise<unknown>, options?: IResponseOptions);
7
+ }
8
+ //# sourceMappingURL=OrmNotFound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrmNotFound.d.ts","sourceRoot":"","sources":["../../../src/response-methods/OrmNotFound.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9F,qBAEa,WAAY,SAAQ,QAAQ;IAIgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB;IAH3F,SAAS,CAAC,UAAU,mBAA8B;IAClD,SAAS,CAAC,SAAS,SAAkB;gBAEzB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,EAAY,OAAO,CAAC,EAAE,gBAAgB;CAG5F"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.OrmNotFound = void 0;
13
+ const di_1 = require("@spinajs/di");
14
+ const http_1 = require("@spinajs/http");
15
+ const orm_1 = require("@spinajs/orm");
16
+ let OrmNotFound = class OrmNotFound extends http_1.Response {
17
+ constructor(error, options) {
18
+ super(error, options);
19
+ this.options = options;
20
+ this._errorCode = http_1.HTTP_STATUS_CODE.NOT_FOUND;
21
+ this._template = 'notFound.pug';
22
+ }
23
+ };
24
+ exports.OrmNotFound = OrmNotFound;
25
+ exports.OrmNotFound = OrmNotFound = __decorate([
26
+ (0, http_1.HandleException)([orm_1.OrmNotFoundException]),
27
+ (0, di_1.Injectable)(http_1.Response),
28
+ __metadata("design:paramtypes", [Object, Object])
29
+ ], OrmNotFound);
30
+ //# sourceMappingURL=OrmNotFound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrmNotFound.js","sourceRoot":"","sources":["../../../src/response-methods/OrmNotFound.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAAyC;AACzC,wCAA8F;AAC9F,sCAAoD;AAI7C,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,eAAQ;IAIvC,YAAY,KAAyC,EAAY,OAA0B;QACzF,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QADyC,YAAO,GAAP,OAAO,CAAmB;QAHjF,eAAU,GAAG,uBAAgB,CAAC,SAAS,CAAC;QACxC,cAAS,GAAG,cAAc,CAAC;IAIrC,CAAC;CACF,CAAA;AAPY,kCAAW;sBAAX,WAAW;IAFvB,IAAA,sBAAe,EAAC,CAAC,0BAAoB,CAAC,CAAC;IACvC,IAAA,eAAU,EAAC,eAAQ,CAAC;;GACR,WAAW,CAOvB"}
@@ -1,13 +1,15 @@
1
1
  import { Orm, ModelBase } from '@spinajs/orm';
2
2
  import { IRouteParameter, IRouteCall, ParameterType, ArgHydrator, Request as sRequest, RouteArgs } from '@spinajs/http';
3
3
  import { IContainer, Bootstrapper } from '@spinajs/di';
4
- export * from "./interfaces.js";
5
- export * from "./model.js";
6
- export * from "./decorators.js";
4
+ import { FromModelOptions } from './interfaces.js';
5
+ export * from './interfaces.js';
6
+ export * from './model.js';
7
+ export * from './decorators.js';
7
8
  export * from './extension.js';
8
- export * from "./route-arg.js";
9
+ export * from './route-arg.js';
9
10
  export * from './builders.js';
10
11
  export * from './dto.js';
12
+ export * from './response-methods/OrmNotFound.js';
11
13
  export declare class AsDbModel extends RouteArgs {
12
14
  get SupportedType(): string;
13
15
  extract(callData: IRouteCall, param: IRouteParameter, req: sRequest): Promise<{
@@ -24,12 +26,13 @@ export declare class FromDbModel extends RouteArgs {
24
26
  CallData: IRouteCall;
25
27
  Args: any;
26
28
  }>;
29
+ protected fromDbModelDefaultQueryFunction(callData: IRouteCall, param: IRouteParameter<FromModelOptions<ModelBase>>, req: sRequest): Promise<any>;
27
30
  }
28
31
  export declare class DbModelHydrator extends ArgHydrator {
29
32
  hydrate(input: any, parameter: IRouteParameter): Promise<any>;
30
33
  }
31
34
  export declare function AsModel(field?: string, type?: ParameterType): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
32
- export declare function FromModel(field?: string, type?: ParameterType): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
35
+ export declare function FromModel(options?: FromModelOptions<ModelBase<any>>): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
33
36
  export declare class OrmHttpBootstrapper extends Bootstrapper {
34
37
  bootstrap(): Promise<void>;
35
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAoB,aAAa,EAAE,WAAW,EAAE,OAAO,IAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1I,OAAO,EAAE,UAAU,EAAqC,YAAY,EAAM,MAAM,aAAa,CAAC;AAG9F,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AAEzB,qBACa,SAAU,SAAQ,SAAS;IACtC,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ;;;;CAajF;AAED,qBACa,WAAY,SAAQ,SAAS;IAExC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAGhC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ;;;;CA0BjF;AAED,qBAAa,eAAgB,SAAQ,WAAW;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;CAS3E;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,yGAE3D;AAED,wBAAgB,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,yGAE7D;AAED,qBACa,mBAAoB,SAAQ,YAAY;IACtC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAgG,MAAM,cAAc,CAAC;AAC5I,OAAO,EAAE,eAAe,EAAE,UAAU,EAAoB,aAAa,EAAE,WAAW,EAAE,OAAO,IAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1I,OAAO,EAAE,UAAU,EAAqC,YAAY,EAAM,MAAM,aAAa,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,mCAAmC,CAAC;AAElD,qBACa,SAAU,SAAQ,SAAS;IACtC,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ;;;;CAajF;AAED,qBACa,WAAY,SAAQ,SAAS;IAExC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAGhC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ;;;;IAYhF,SAAS,CAAC,+BAA+B,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ;CA8DnI;AAED,qBAAa,eAAgB,SAAQ,WAAW;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;CAS3E;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,yGAE3D;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,yGAEnE;AAED,qBACa,mBAAoB,SAAQ,YAAY;IACtC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBxC"}
package/lib/mjs/index.js CHANGED
@@ -7,17 +7,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { Orm, OrmException } from '@spinajs/orm';
10
+ import { Orm, OrmException, extractModelDescriptor, RelationType, OrmNotFoundException } from '@spinajs/orm';
11
11
  import { Parameter, Route, ParameterType, ArgHydrator, RouteArgs } from '@spinajs/http';
12
12
  import { Injectable, Container, Autoinject, Bootstrapper, DI } from '@spinajs/di';
13
13
  import { MODEL_STATIC_MIXINS } from './model.js';
14
- export * from "./interfaces.js";
15
- export * from "./model.js";
16
- export * from "./decorators.js";
14
+ import { InvalidArgument } from '@spinajs/exceptions';
15
+ export * from './interfaces.js';
16
+ export * from './model.js';
17
+ export * from './decorators.js';
17
18
  export * from './extension.js';
18
- export * from "./route-arg.js";
19
+ export * from './route-arg.js';
19
20
  export * from './builders.js';
20
21
  export * from './dto.js';
22
+ export * from './response-methods/OrmNotFound.js';
21
23
  let AsDbModel = class AsDbModel extends RouteArgs {
22
24
  get SupportedType() {
23
25
  return 'AsDbModel';
@@ -42,27 +44,69 @@ let FromDbModel = class FromDbModel extends RouteArgs {
42
44
  return 'FromDB';
43
45
  }
44
46
  async extract(callData, param, req) {
45
- let p = null;
46
- switch (param.Options.type) {
47
+ let result = null;
48
+ if (param.Options.query) {
49
+ result = await param.Options.query.call(param.RuntimeType.query(), callData.Payload);
50
+ }
51
+ else {
52
+ result = await this.fromDbModelDefaultQueryFunction(callData, param, req);
53
+ }
54
+ return { CallData: callData, Args: result };
55
+ }
56
+ fromDbModelDefaultQueryFunction(callData, param, req) {
57
+ let pkValue = null;
58
+ const field = param.Options.field ?? param.Name;
59
+ switch (param.Options.paramType) {
47
60
  case ParameterType.FromQuery:
48
- p = req.query[param.Options.field ?? param.Name];
61
+ pkValue = req.query[field];
49
62
  break;
50
63
  case ParameterType.FromBody:
51
- p = req.body[param.Options.field ?? param.Name];
64
+ pkValue = req.body[field];
52
65
  break;
53
66
  case ParameterType.FromHeader:
54
- p = req.headers[param.Options.field ?? param.Name.toLowerCase()];
67
+ pkValue = req.headers[field.toLowerCase()];
55
68
  break;
56
69
  case ParameterType.FromParams:
57
70
  default:
58
- p = req.params[param.Options.field ?? param.Name];
71
+ pkValue = req.params[field];
59
72
  break;
60
73
  }
61
- if (!p) {
62
- throw new OrmException(`Cannot load model from db, parameter ${param.Options.field ?? param.Name} is required`);
74
+ const query = param.RuntimeType['query']();
75
+ const descriptor = extractModelDescriptor(param.RuntimeType);
76
+ query.select('*');
77
+ query.where(descriptor.PrimaryKey, pkValue);
78
+ /**
79
+ * Checks BelongsToRelations
80
+ */
81
+ for (const [, v] of descriptor.Relations) {
82
+ // if its one-to-one relations ( belongsTo)
83
+ // check if we have same field in route param list
84
+ // If exists, we assume that we want parent ( owner of this model )
85
+ if (v.Type === RelationType.One) {
86
+ const args = callData.Payload?.Param?.Args;
87
+ if (args) {
88
+ const keys = Object.keys(args);
89
+ const key = keys.find((k) => {
90
+ return k.toLowerCase() === v.Name.toLowerCase() || k.toLowerCase() === `_${v.Name.toLowerCase()}`;
91
+ });
92
+ if (key) {
93
+ if (callData.Payload.Param.Args[key]) {
94
+ query.where(v.ForeignKey, callData.Payload.Param.Args[key]);
95
+ }
96
+ else {
97
+ throw new InvalidArgument(`no key for relation ${v.Name} was provided`);
98
+ }
99
+ }
100
+ }
101
+ }
63
102
  }
64
- const result = await param.RuntimeType['getOrFail'](p);
65
- return { CallData: callData, Args: result };
103
+ /**
104
+ * Checks include field
105
+ */
106
+ if (callData.Payload?.Query?.Args?.include || callData.Payload?.Query?.Args?._include) {
107
+ query.populate(callData.Payload.Query.Args.include ?? callData.Payload.Query.Args._include);
108
+ }
109
+ return query.firstOrThrow(new OrmNotFoundException());
66
110
  }
67
111
  };
68
112
  __decorate([
@@ -90,8 +134,8 @@ export class DbModelHydrator extends ArgHydrator {
90
134
  export function AsModel(field, type) {
91
135
  return Route(Parameter('AsDbModel', null, { field, type }));
92
136
  }
93
- export function FromModel(field, type) {
94
- return Route(Parameter('FromDbModel', null, { field, type }));
137
+ export function FromModel(options) {
138
+ return Route(Parameter('FromDbModel', null, { options }));
95
139
  }
96
140
  let OrmHttpBootstrapper = class OrmHttpBootstrapper extends Bootstrapper {
97
141
  async bootstrap() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Class } from '@spinajs/di';
2
- import { ModelBase, SortOrder } from '@spinajs/orm';
2
+ import { ModelBase, SelectQueryBuilder, SortOrder } from '@spinajs/orm';
3
3
  export declare class JsonApiIncomingObject {
4
4
  data: {
5
5
  type: string;
@@ -26,5 +26,31 @@ export interface IFilter {
26
26
  Operator: FilterableOperators;
27
27
  Value: any;
28
28
  }
29
+ export interface FromModelOptions<T extends ModelBase> {
30
+ /**
31
+ * Optiona route/param/body field for primary key
32
+ * If not set , model primary key is used
33
+ */
34
+ field?: string;
35
+ /**
36
+ * From where to get primary key value
37
+ * Eg. body, query, param, header etc.
38
+ *
39
+ * If not set, param is used
40
+ */
41
+ paramType?: string;
42
+ /**
43
+ *
44
+ * Callback on query builder before model is fetched from DB
45
+ *
46
+ * It allows to modify query with data passed to route.
47
+ * If not set it check for include, model owner ( if has @BelongsTo field marked) etc.
48
+ *
49
+ * @param this
50
+ * @param routeParams passed route params to query
51
+ * @returns
52
+ */
53
+ query?: (this: SelectQueryBuilder<T>, routeParams: any) => SelectQueryBuilder;
54
+ }
29
55
  export type FilterableOperators = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'like' | 'in' | 'nin' | 'between' | 'isnull' | 'notnull' | 'notbetween';
30
56
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpD,qBACa,qBAAqB;IACzB,IAAI,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,GAAG,CAAC;QAChB,aAAa,EAAE,GAAG,CAAC;KACpB,CAAQ;gBAEG,IAAI,EAAE,GAAG;CAGtB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGxE,qBACa,qBAAqB;IACzB,IAAI,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,GAAG,CAAC;QAChB,aAAa,EAAE,GAAG,CAAC;KACpB,CAAQ;gBAEG,IAAI,EAAE,GAAG;CAGtB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC;CACZ;AAGD,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,SAAS;IACnD;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK,kBAAkB,CAAC;CAC/E;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { HTTP_STATUS_CODE, IResponseOptions, Response } from '@spinajs/http';
2
+ export declare class OrmNotFound extends Response {
3
+ protected options?: IResponseOptions;
4
+ protected _errorCode: HTTP_STATUS_CODE;
5
+ protected _template: string;
6
+ constructor(error: string | object | Promise<unknown>, options?: IResponseOptions);
7
+ }
8
+ //# sourceMappingURL=OrmNotFound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrmNotFound.d.ts","sourceRoot":"","sources":["../../../src/response-methods/OrmNotFound.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9F,qBAEa,WAAY,SAAQ,QAAQ;IAIgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB;IAH3F,SAAS,CAAC,UAAU,mBAA8B;IAClD,SAAS,CAAC,SAAS,SAAkB;gBAEzB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,EAAY,OAAO,CAAC,EAAE,gBAAgB;CAG5F"}
@@ -0,0 +1,27 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Injectable } from '@spinajs/di';
11
+ import { HandleException, HTTP_STATUS_CODE, Response } from '@spinajs/http';
12
+ import { OrmNotFoundException } from '@spinajs/orm';
13
+ let OrmNotFound = class OrmNotFound extends Response {
14
+ constructor(error, options) {
15
+ super(error, options);
16
+ this.options = options;
17
+ this._errorCode = HTTP_STATUS_CODE.NOT_FOUND;
18
+ this._template = 'notFound.pug';
19
+ }
20
+ };
21
+ OrmNotFound = __decorate([
22
+ HandleException([OrmNotFoundException]),
23
+ Injectable(Response),
24
+ __metadata("design:paramtypes", [Object, Object])
25
+ ], OrmNotFound);
26
+ export { OrmNotFound };
27
+ //# sourceMappingURL=OrmNotFound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrmNotFound.js","sourceRoot":"","sources":["../../../src/response-methods/OrmNotFound.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAoB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAI7C,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,QAAQ;IAIvC,YAAY,KAAyC,EAAY,OAA0B;QACzF,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QADyC,YAAO,GAAP,OAAO,CAAmB;QAHjF,eAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC;QACxC,cAAS,GAAG,cAAc,CAAC;IAIrC,CAAC;CACF,CAAA;AAPY,WAAW;IAFvB,eAAe,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACvC,UAAU,CAAC,QAAQ,CAAC;;GACR,WAAW,CAOvB"}