@spinajs/orm-http 2.0.386 → 2.0.389

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,6 +1,6 @@
1
- import { ModelBase } from '@spinajs/orm';
1
+ import { ModelBase, WhereFunction } from '@spinajs/orm';
2
2
  import { FilterableOperators, IColumnFilter } from './interfaces.js';
3
3
  import { Constructor } from '@spinajs/di';
4
- export declare function Filterable(operatorsOrClass: FilterableOperators[] | Constructor<ModelBase>, isAggregate?: boolean): any;
4
+ export declare function Filterable(operatorsOrClass: FilterableOperators[] | Constructor<ModelBase>, queryFunc?: (operator: FilterableOperators, value: any) => WhereFunction<unknown>, isAggregate?: boolean): any;
5
5
  export declare function Filter(model: Constructor<ModelBase> | IColumnFilter<unknown>[]): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
6
6
  //# sourceMappingURL=decorators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAkF,MAAM,cAAc,CAAC;AAC3I,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AAGzD,wBAAgB,UAAU,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,EAAG,WAAW,CAAC,EAAG,OAAO,OAiCnH;AAGD,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,yGAE9E"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,aAAa,EAAkF,MAAM,cAAc,CAAC;AAC1J,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AAGzD,wBAAgB,UAAU,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,OAqCpM;AAGD,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,yGAE9E"}
@@ -4,7 +4,7 @@ exports.Filter = exports.Filterable = void 0;
4
4
  const orm_1 = require("@spinajs/orm");
5
5
  const di_1 = require("@spinajs/di");
6
6
  const http_1 = require("@spinajs/http");
7
- function Filterable(operatorsOrClass, isAggregate) {
7
+ function Filterable(operatorsOrClass, queryFunc, isAggregate) {
8
8
  return (0, orm_1.extractDecoratorPropertyDescriptor)((model, _target, propertyKey) => {
9
9
  if (model.FilterableColumns === undefined) {
10
10
  model.FilterableColumns = new Map();
@@ -25,7 +25,10 @@ function Filterable(operatorsOrClass, isAggregate) {
25
25
  if (!operatorsOrClass) {
26
26
  throw new Error(`Filterable decorator on ${model.Name} model, property ${propertyKey} must have operators defined`);
27
27
  }
28
- model.FilterableColumns.set(propertyKey, operatorsOrClass);
28
+ model.FilterableColumns.set(propertyKey, {
29
+ operators: operatorsOrClass,
30
+ query: queryFunc,
31
+ });
29
32
  }
30
33
  const columnDesc = model.Columns.find((c) => c.Name === propertyKey);
31
34
  if (!columnDesc) {
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":";;;AAAA,sCAA2I;AAE3I,oCAAyD;AACzD,wCAAiD;AAEjD,SAAgB,UAAU,CAAC,gBAAgE,EAAG,WAAsB;IAClH,OAAO,IAAA,wCAAkC,EAAC,CAAC,KAAuB,EAAE,OAAY,EAAE,WAAmB,EAAE,EAAE;QACvG,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAiC,CAAC;QACrE,CAAC;QAED,IAAI,IAAA,kBAAa,EAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,kFAAkF;YAClF,yBAAyB;YACzB,MAAM,UAAU,GAAG,IAAA,4BAAsB,EAAC,gBAAgB,CAAC,CAAC;YAC5D,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACzB,OAAO,CAAC,GAAG,WAAW,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAgC,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,GAAG,GAAU,CAAC,CAAC,CAAC;YAC1H,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,oBAAoB,WAAW,8BAA8B,CAAC,CAAC;YACtH,CAAC;YACD,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,mFAAmF;YACnF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAA,wBAAkB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,IAAI,KAAK,EAAG,OAAO,EAAG,IAAI,EAAC,CAAC,CAAC,CAAC;QACjH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,SAAS,GAAG,WAAW,IAAI,KAAK,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAjCD,gCAiCC;AAGD,SAAgB,MAAM,CAAC,KAAwD;IAC7E,OAAO,IAAA,YAAK,EAAC,IAAA,gBAAS,EAAC,qBAAqB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AAFD,wBAEC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":";;;AAAA,sCAA0J;AAE1J,oCAAyD;AACzD,wCAAiD;AAEjD,SAAgB,UAAU,CAAC,gBAAgE,EAAE,SAAiF,EAAE,WAAqB;IACnM,OAAO,IAAA,wCAAkC,EAAC,CAAC,KAAuB,EAAE,OAAY,EAAE,WAAmB,EAAE,EAAE;QACvG,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;QACtE,CAAC;QAED,IAAI,IAAA,kBAAa,EAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,kFAAkF;YAClF,yBAAyB;YACzB,MAAM,UAAU,GAAG,IAAA,4BAAsB,EAAC,gBAAgB,CAAC,CAAC;YAC5D,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACzB,OAAO,CAAC,GAAG,WAAW,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAiC,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,GAAG,GAAU,CAAC,CAAC,CAAC;YAC3H,CAAC;QACH,CAAC;aACI,CAAC;YACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,oBAAoB,WAAW,8BAA8B,CAAC,CAAC;YACtH,CAAC;YACD,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE;gBACvC,SAAS,EAAE,gBAAgB;gBAC3B,KAAK,EAAE,SAAS;aACS,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,mFAAmF;YACnF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAA,wBAAkB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,IAAI,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,SAAS,GAAG,WAAW,IAAI,KAAK,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AArCD,gCAqCC;AAGD,SAAgB,MAAM,CAAC,KAAwD;IAC7E,OAAO,IAAA,YAAK,EAAC,IAAA,gBAAS,EAAC,qBAAqB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AAFD,wBAEC"}
@@ -1,10 +1,10 @@
1
- import { FilterableOperators, IColumnFilter, IFilter } from './interfaces.js';
1
+ import { IColumnFilter, IFilter } from './interfaces.js';
2
2
  declare module '@spinajs/orm' {
3
3
  interface IModelDescriptor {
4
4
  /**
5
5
  * If set column is fitlerable by this operators
6
6
  */
7
- FilterableColumns?: Map<string, FilterableOperators[]>;
7
+ FilterableColumns?: Map<string, IColumnFilter<unknown>>;
8
8
  }
9
9
  interface ISelectQueryBuilder {
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAiB,gBAAgB;QAC/B;;WAEG;QACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAC,mBAAmB,EAAE,CAAC,CAAC;KACvD;IAED,UAAiB,mBAAmB;QAClC;;;;;WAKG;QACH,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAG,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;KACtE;IAED,UAAU,SAAS,CAAC;QAElB;;WAEG;QACH,SAAgB,YAAY,IAAI,GAAG,CAAC;QAEpC,SAAgB,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAE1D;;;;;;;WAOG;QACH,SAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7F;CACF"}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAiB,gBAAgB;QAC/B;;WAEG;QACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;KACxD;IAED,UAAiB,mBAAmB;QAClC;;;;;WAKG;QACH,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAG,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;KACtE;IAED,UAAU,SAAS,CAAC;QAElB;;WAEG;QACH,SAAgB,YAAY,IAAI,GAAG,CAAC;QAEpC,SAAgB,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAE1D;;;;;;;WAOG;QACH,SAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7F;CACF"}
@@ -1,10 +1,11 @@
1
1
  import './builders.js';
2
- import { FilterableOperators, IFilter } from './interfaces.js';
2
+ import { IFilter } from './interfaces.js';
3
3
  export declare const MODEL_STATIC_MIXINS: {
4
4
  filter(filters: IFilter[]): Promise<any>;
5
5
  filterColumns(): {
6
6
  column: string;
7
- operators: FilterableOperators[];
7
+ operators: import("./interfaces.js").FilterableOperators[];
8
+ query: (operator: import("./interfaces.js").FilterableOperators, value: any) => import("@spinajs/orm").WhereFunction<unknown>;
8
9
  }[];
9
10
  filterSchema(): {
10
11
  type: string;
@@ -22,7 +23,7 @@ export declare const MODEL_STATIC_MIXINS: {
22
23
  };
23
24
  Operator: {
24
25
  type: string;
25
- enum: FilterableOperators[];
26
+ enum: import("./interfaces.js").FilterableOperators[];
26
27
  };
27
28
  };
28
29
  }[];
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/D,eAAO,MAAM,mBAAmB;oBACR,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ChC,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAiB,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEzD,eAAO,MAAM,mBAAmB;oBACR,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ChC,CAAC"}
package/lib/cjs/model.js CHANGED
@@ -16,7 +16,8 @@ exports.MODEL_STATIC_MIXINS = {
16
16
  return [...modelDescriptor.FilterableColumns.entries()].map(([key, val]) => {
17
17
  return {
18
18
  column: key,
19
- operators: val,
19
+ operators: val.operators,
20
+ query: val.query,
20
21
  };
21
22
  });
22
23
  },
@@ -35,8 +36,8 @@ exports.MODEL_STATIC_MIXINS = {
35
36
  required: ['Column', 'Operator'],
36
37
  properties: {
37
38
  Column: { const: key },
38
- Value: { type: ['string', 'integer', 'array'] },
39
- Operator: { type: 'string', enum: val },
39
+ Value: { type: ['string', 'integer', 'array', 'boolean'] },
40
+ Operator: { type: 'string', enum: val.operators },
40
41
  },
41
42
  };
42
43
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":";;;AAAA,sCAA+F;AAC/F,yBAAuB;AAGV,QAAA,mBAAmB,GAAG;IACjC,KAAK,CAAC,MAAM,CAAC,OAAkB;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,iBAAW,EAAC,IAAI,EAAE,wBAAkB,CAAC,CAAC;QACxD,OAAQ,KAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;QACX,MAAM,eAAe,GAAI,IAAY,CAAC,kBAAkB,EAAsB,CAAC;QAE/E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,kBAAY,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAmC,EAAE,EAAE;YAC3G,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,GAAG;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,MAAM,eAAe,GAAI,IAAY,CAAC,kBAAkB,EAAsB,CAAC;QAE/E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,kBAAY,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAkC,EAAE,EAAE;oBAC1G,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;wBAChC,UAAU,EAAE;4BACV,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;4BACtB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;4BAC/C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE;yBACxC;qBACF,CAAC;gBACJ,CAAC,CAAC;aACH;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":";;;AAAA,sCAA+F;AAC/F,yBAAuB;AAGV,QAAA,mBAAmB,GAAG;IACjC,KAAK,CAAC,MAAM,CAAC,OAAkB;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,iBAAW,EAAC,IAAI,EAAE,wBAAkB,CAAC,CAAC;QACxD,OAAQ,KAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;QACX,MAAM,eAAe,GAAI,IAAY,CAAC,kBAAkB,EAAsB,CAAC;QAE/E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,kBAAY,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAoC,EAAE,EAAE;YAC5G,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,MAAM,eAAe,GAAI,IAAY,CAAC,kBAAkB,EAAsB,CAAC;QAE/E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,kBAAY,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAmC,EAAE,EAAE;oBAC3G,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;wBAChC,UAAU,EAAE;4BACV,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;4BACtB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;4BAC1D,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE;yBAClD;qBACF,CAAC;gBACJ,CAAC,CAAC;aACH;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,6 +1,6 @@
1
- import { ModelBase } from '@spinajs/orm';
1
+ import { ModelBase, WhereFunction } from '@spinajs/orm';
2
2
  import { FilterableOperators, IColumnFilter } from './interfaces.js';
3
3
  import { Constructor } from '@spinajs/di';
4
- export declare function Filterable(operatorsOrClass: FilterableOperators[] | Constructor<ModelBase>, isAggregate?: boolean): any;
4
+ export declare function Filterable(operatorsOrClass: FilterableOperators[] | Constructor<ModelBase>, queryFunc?: (operator: FilterableOperators, value: any) => WhereFunction<unknown>, isAggregate?: boolean): any;
5
5
  export declare function Filter(model: Constructor<ModelBase> | IColumnFilter<unknown>[]): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
6
6
  //# sourceMappingURL=decorators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAkF,MAAM,cAAc,CAAC;AAC3I,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AAGzD,wBAAgB,UAAU,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,EAAG,WAAW,CAAC,EAAG,OAAO,OAiCnH;AAGD,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,yGAE9E"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,aAAa,EAAkF,MAAM,cAAc,CAAC;AAC1J,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AAGzD,wBAAgB,UAAU,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,OAqCpM;AAGD,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,yGAE9E"}
@@ -1,7 +1,7 @@
1
1
  import { _prepareColumnDesc, extractDecoratorPropertyDescriptor, extractModelDescriptor } from '@spinajs/orm';
2
2
  import { isConstructor } from '@spinajs/di';
3
3
  import { Parameter, Route } from '@spinajs/http';
4
- export function Filterable(operatorsOrClass, isAggregate) {
4
+ export function Filterable(operatorsOrClass, queryFunc, isAggregate) {
5
5
  return extractDecoratorPropertyDescriptor((model, _target, propertyKey) => {
6
6
  if (model.FilterableColumns === undefined) {
7
7
  model.FilterableColumns = new Map();
@@ -22,7 +22,10 @@ export function Filterable(operatorsOrClass, isAggregate) {
22
22
  if (!operatorsOrClass) {
23
23
  throw new Error(`Filterable decorator on ${model.Name} model, property ${propertyKey} must have operators defined`);
24
24
  }
25
- model.FilterableColumns.set(propertyKey, operatorsOrClass);
25
+ model.FilterableColumns.set(propertyKey, {
26
+ operators: operatorsOrClass,
27
+ query: queryFunc,
28
+ });
26
29
  }
27
30
  const columnDesc = model.Columns.find((c) => c.Name === propertyKey);
28
31
  if (!columnDesc) {
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,kBAAkB,EAAE,kCAAkC,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3I,OAAO,EAAe,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,UAAU,UAAU,CAAC,gBAAgE,EAAG,WAAsB;IAClH,OAAO,kCAAkC,CAAC,CAAC,KAAuB,EAAE,OAAY,EAAE,WAAmB,EAAE,EAAE;QACvG,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAiC,CAAC;QACrE,CAAC;QAED,IAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,kFAAkF;YAClF,yBAAyB;YACzB,MAAM,UAAU,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YAC5D,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACzB,OAAO,CAAC,GAAG,WAAW,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAgC,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,GAAG,GAAU,CAAC,CAAC,CAAC;YAC1H,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,oBAAoB,WAAW,8BAA8B,CAAC,CAAC;YACtH,CAAC;YACD,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,mFAAmF;YACnF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,IAAI,KAAK,EAAG,OAAO,EAAG,IAAI,EAAC,CAAC,CAAC,CAAC;QACjH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,SAAS,GAAG,WAAW,IAAI,KAAK,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAGD,MAAM,UAAU,MAAM,CAAC,KAAwD;IAC7E,OAAO,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,kBAAkB,EAAE,kCAAkC,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE1J,OAAO,EAAe,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,UAAU,UAAU,CAAC,gBAAgE,EAAE,SAAiF,EAAE,WAAqB;IACnM,OAAO,kCAAkC,CAAC,CAAC,KAAuB,EAAE,OAAY,EAAE,WAAmB,EAAE,EAAE;QACvG,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;QACtE,CAAC;QAED,IAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,kFAAkF;YAClF,yBAAyB;YACzB,MAAM,UAAU,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YAC5D,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACzB,OAAO,CAAC,GAAG,WAAW,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAiC,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,GAAG,GAAU,CAAC,CAAC,CAAC;YAC3H,CAAC;QACH,CAAC;aACI,CAAC;YACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,oBAAoB,WAAW,8BAA8B,CAAC,CAAC;YACtH,CAAC;YACD,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE;gBACvC,SAAS,EAAE,gBAAgB;gBAC3B,KAAK,EAAE,SAAS;aACS,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,mFAAmF;YACnF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,IAAI,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,SAAS,GAAG,WAAW,IAAI,KAAK,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAGD,MAAM,UAAU,MAAM,CAAC,KAAwD;IAC7E,OAAO,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,10 +1,10 @@
1
- import { FilterableOperators, IColumnFilter, IFilter } from './interfaces.js';
1
+ import { IColumnFilter, IFilter } from './interfaces.js';
2
2
  declare module '@spinajs/orm' {
3
3
  interface IModelDescriptor {
4
4
  /**
5
5
  * If set column is fitlerable by this operators
6
6
  */
7
- FilterableColumns?: Map<string, FilterableOperators[]>;
7
+ FilterableColumns?: Map<string, IColumnFilter<unknown>>;
8
8
  }
9
9
  interface ISelectQueryBuilder {
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAiB,gBAAgB;QAC/B;;WAEG;QACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAC,mBAAmB,EAAE,CAAC,CAAC;KACvD;IAED,UAAiB,mBAAmB;QAClC;;;;;WAKG;QACH,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAG,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;KACtE;IAED,UAAU,SAAS,CAAC;QAElB;;WAEG;QACH,SAAgB,YAAY,IAAI,GAAG,CAAC;QAEpC,SAAgB,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAE1D;;;;;;;WAOG;QACH,SAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7F;CACF"}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAiB,gBAAgB;QAC/B;;WAEG;QACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;KACxD;IAED,UAAiB,mBAAmB;QAClC;;;;;WAKG;QACH,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAG,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;KACtE;IAED,UAAU,SAAS,CAAC;QAElB;;WAEG;QACH,SAAgB,YAAY,IAAI,GAAG,CAAC;QAEpC,SAAgB,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAE1D;;;;;;;WAOG;QACH,SAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7F;CACF"}
@@ -1,10 +1,11 @@
1
1
  import './builders.js';
2
- import { FilterableOperators, IFilter } from './interfaces.js';
2
+ import { IFilter } from './interfaces.js';
3
3
  export declare const MODEL_STATIC_MIXINS: {
4
4
  filter(filters: IFilter[]): Promise<any>;
5
5
  filterColumns(): {
6
6
  column: string;
7
- operators: FilterableOperators[];
7
+ operators: import("./interfaces.js").FilterableOperators[];
8
+ query: (operator: import("./interfaces.js").FilterableOperators, value: any) => import("@spinajs/orm").WhereFunction<unknown>;
8
9
  }[];
9
10
  filterSchema(): {
10
11
  type: string;
@@ -22,7 +23,7 @@ export declare const MODEL_STATIC_MIXINS: {
22
23
  };
23
24
  Operator: {
24
25
  type: string;
25
- enum: FilterableOperators[];
26
+ enum: import("./interfaces.js").FilterableOperators[];
26
27
  };
27
28
  };
28
29
  }[];
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/D,eAAO,MAAM,mBAAmB;oBACR,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ChC,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAiB,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEzD,eAAO,MAAM,mBAAmB;oBACR,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ChC,CAAC"}
package/lib/mjs/model.js CHANGED
@@ -13,7 +13,8 @@ export const MODEL_STATIC_MIXINS = {
13
13
  return [...modelDescriptor.FilterableColumns.entries()].map(([key, val]) => {
14
14
  return {
15
15
  column: key,
16
- operators: val,
16
+ operators: val.operators,
17
+ query: val.query,
17
18
  };
18
19
  });
19
20
  },
@@ -32,8 +33,8 @@ export const MODEL_STATIC_MIXINS = {
32
33
  required: ['Column', 'Operator'],
33
34
  properties: {
34
35
  Column: { const: key },
35
- Value: { type: ['string', 'integer', 'array'] },
36
- Operator: { type: 'string', enum: val },
36
+ Value: { type: ['string', 'integer', 'array', 'boolean'] },
37
+ Operator: { type: 'string', enum: val.operators },
37
38
  },
38
39
  };
39
40
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/F,OAAO,eAAe,CAAC;AAGvB,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK,CAAC,MAAM,CAAC,OAAkB;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACxD,OAAQ,KAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;QACX,MAAM,eAAe,GAAI,IAAY,CAAC,kBAAkB,EAAsB,CAAC;QAE/E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,YAAY,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAmC,EAAE,EAAE;YAC3G,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,GAAG;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,MAAM,eAAe,GAAI,IAAY,CAAC,kBAAkB,EAAsB,CAAC;QAE/E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,YAAY,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAkC,EAAE,EAAE;oBAC1G,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;wBAChC,UAAU,EAAE;4BACV,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;4BACtB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;4BAC/C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE;yBACxC;qBACF,CAAC;gBACJ,CAAC,CAAC;aACH;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/F,OAAO,eAAe,CAAC;AAGvB,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK,CAAC,MAAM,CAAC,OAAkB;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACxD,OAAQ,KAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;QACX,MAAM,eAAe,GAAI,IAAY,CAAC,kBAAkB,EAAsB,CAAC;QAE/E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,YAAY,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAoC,EAAE,EAAE;YAC5G,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,MAAM,eAAe,GAAI,IAAY,CAAC,kBAAkB,EAAsB,CAAC;QAE/E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,YAAY,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAmC,EAAE,EAAE;oBAC3G,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;wBAChC,UAAU,EAAE;4BACV,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;4BACtB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;4BAC1D,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE;yBAClD;qBACF,CAAC;gBACJ,CAAC,CAAC;aACH;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}