@opra/sqb 0.0.8 → 0.0.9

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,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseEntityService = void 0;
4
+ const core_1 = require("@opra/core");
4
5
  const connect_1 = require("@sqb/connect");
5
6
  const sqb_adapter_js_1 = require("./sqb-adapter.js");
6
7
  class BaseEntityService {
@@ -14,12 +15,22 @@ class BaseEntityService {
14
15
  this._metadata = metadata;
15
16
  }
16
17
  async processRequest(ctx) {
17
- const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.request);
18
+ const prepared = sqb_adapter_js_1.SQBAdapter.prepare(ctx.query);
18
19
  switch (prepared.method) {
20
+ case 'create':
21
+ return this.create(prepared.values, prepared.options, ctx.userContext);
22
+ case 'destroy':
23
+ return this.delete(prepared.keyValue, prepared.options, ctx.userContext);
24
+ case 'destroyAll':
25
+ return this.deleteMany(prepared.options, ctx.userContext);
19
26
  case 'findAll':
20
27
  return this.search(prepared.options, ctx.userContext);
21
28
  case 'findByPk':
22
29
  return this.get(ctx, prepared.options);
30
+ case 'update':
31
+ return this.update(prepared.keyValue, prepared.values, prepared.options, ctx.userContext);
32
+ case 'updateAll':
33
+ return this.updateMany(prepared.values, prepared.options, ctx.userContext);
23
34
  default:
24
35
  throw new TypeError(`Unimplemented method (${prepared.method})`);
25
36
  }
@@ -55,7 +66,13 @@ class BaseEntityService {
55
66
  async create(data, options, userContext) {
56
67
  const conn = await this.getConnection(userContext);
57
68
  const repo = conn.getRepository(this.resourceType);
58
- let out = await repo.create(data, options);
69
+ let out;
70
+ try {
71
+ out = await repo.create(data, options);
72
+ }
73
+ catch (e) {
74
+ throw new core_1.BadRequestError(e);
75
+ }
59
76
  if (out && this.onTransformRow)
60
77
  out = this.onTransformRow(out, userContext, 'create');
61
78
  return out;
@@ -63,7 +80,13 @@ class BaseEntityService {
63
80
  async update(keyValue, data, options, userContext) {
64
81
  const conn = await this.getConnection(userContext);
65
82
  const repo = conn.getRepository(this.resourceType);
66
- let out = await repo.update(keyValue, data, options);
83
+ let out;
84
+ try {
85
+ out = await repo.update(keyValue, data, options);
86
+ }
87
+ catch (e) {
88
+ throw new core_1.BadRequestError(e);
89
+ }
67
90
  if (out && this.onTransformRow)
68
91
  out = this.onTransformRow(out, userContext, 'create');
69
92
  return out;
@@ -71,17 +94,32 @@ class BaseEntityService {
71
94
  async updateMany(data, options, userContext) {
72
95
  const conn = await this.getConnection(userContext);
73
96
  const repo = conn.getRepository(this.resourceType);
74
- return await repo.updateAll(data, options);
97
+ try {
98
+ return await repo.updateAll(data, options);
99
+ }
100
+ catch (e) {
101
+ throw new core_1.BadRequestError(e);
102
+ }
75
103
  }
76
104
  async delete(keyValue, options, userContext) {
77
105
  const conn = await this.getConnection(userContext);
78
106
  const repo = conn.getRepository(this.resourceType);
79
- return await repo.destroy(keyValue, options);
107
+ try {
108
+ return await repo.destroy(keyValue, options);
109
+ }
110
+ catch (e) {
111
+ throw new core_1.BadRequestError(e);
112
+ }
80
113
  }
81
114
  async deleteMany(options, userContext) {
82
115
  const conn = await this.getConnection(userContext);
83
116
  const repo = conn.getRepository(this.resourceType);
84
- return await repo.destroyAll(options);
117
+ try {
118
+ return await repo.destroyAll(options);
119
+ }
120
+ catch (e) {
121
+ throw new core_1.BadRequestError(e);
122
+ }
85
123
  }
86
124
  }
87
125
  exports.BaseEntityService = BaseEntityService;
@@ -6,8 +6,7 @@ const lodash_1 = tslib_1.__importDefault(require("lodash"));
6
6
  const convert_filter_js_1 = require("./convert-filter.js");
7
7
  var SQBAdapter;
8
8
  (function (SQBAdapter) {
9
- function prepare(request) {
10
- const { query } = request;
9
+ function prepare(query) {
11
10
  switch (query.queryType) {
12
11
  case 'create': {
13
12
  const options = lodash_1.default.omitBy({
@@ -107,25 +106,4 @@ var SQBAdapter;
107
106
  }
108
107
  }
109
108
  SQBAdapter.prepare = prepare;
110
- async function execute(connection, request) {
111
- const { query } = request;
112
- const repo = connection.getRepository(query.resource.dataType.ctor);
113
- const prepared = prepare(request);
114
- const out = {};
115
- // @ts-ignore
116
- const value = await repo[prepared.method](...prepared.args);
117
- if (value && typeof value === 'object')
118
- out.value = value;
119
- if (query.queryType === 'search') {
120
- if (query.count) {
121
- out.total = await repo.count(prepared.options);
122
- }
123
- }
124
- if (prepared.method === 'destroy')
125
- out.affected = value ? 1 : 0;
126
- else if (prepared.method === 'destroyAll' || prepared.method === 'updateAll')
127
- out.affected = value;
128
- return out;
129
- }
130
- SQBAdapter.execute = execute;
131
109
  })(SQBAdapter = exports.SQBAdapter || (exports.SQBAdapter = {}));
@@ -1,5 +1,5 @@
1
1
  import { Maybe, Type } from 'ts-gems';
2
- import { ExecutionContext, IEntityService } from '@opra/core';
2
+ import { IEntityService, QueryContext } from '@opra/core';
3
3
  import { EntityInput, EntityMetadata, EntityOutput, Repository, SqbClient, SqbConnection } from '@sqb/connect';
4
4
  export declare namespace BaseEntityService {
5
5
  type FindAllOptions = Repository.FindAllOptions & {
@@ -16,7 +16,7 @@ export declare abstract class BaseEntityService<T> implements IEntityService {
16
16
  readonly resourceType: Type<T>;
17
17
  protected _metadata: EntityMetadata;
18
18
  protected constructor(resourceType: Type<T>);
19
- processRequest(ctx: ExecutionContext): Promise<Maybe<T extends import("ts-gems").Builtin ? T : T extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T extends (infer U_1)[] ? any[] : { [P_1 in keyof T]?: (Exclude<T[P_1], undefined> extends infer T_1 ? T_1 extends Exclude<T[P_1], undefined> ? T_1 extends import("ts-gems").Builtin ? T_1 : T_1 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_1 extends (infer U_1)[] ? any[] : { [P_2 in keyof T_1]?: (Exclude<T_1[P_2], undefined> extends infer T_2 ? T_2 extends Exclude<T_1[P_2], undefined> ? T_2 extends import("ts-gems").Builtin ? T_2 : T_2 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_2 extends (infer U_1)[] ? any[] : { [P_3 in keyof T_2]?: (Exclude<T_2[P_3], undefined> extends infer T_3 ? T_3 extends Exclude<T_2[P_3], undefined> ? T_3 extends import("ts-gems").Builtin ? T_3 : T_3 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_3 extends (infer U_1)[] ? any[] : { [P_4 in keyof T_3]?: (Exclude<T_3[P_4], undefined> extends infer T_4 ? T_4 extends Exclude<T_3[P_4], undefined> ? T_4 extends import("ts-gems").Builtin ? T_4 : T_4 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_4 extends (infer U_1)[] ? any[] : { [P_5 in keyof T_4]?: (Exclude<T_4[P_5], undefined> extends infer T_5 ? T_5 extends Exclude<T_4[P_5], undefined> ? T_5 extends import("ts-gems").Builtin ? T_5 : T_5 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_5 extends (infer U_1)[] ? any[] : { [P_6 in keyof T_5]?: (Exclude<T_5[P_6], undefined> extends infer T_6 ? T_6 extends Exclude<T_5[P_6], undefined> ? T_6 extends import("ts-gems").Builtin ? T_6 : T_6 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_6 extends (infer U_1)[] ? any[] : { [P_7 in keyof T_6]?: (Exclude<T_6[P_7], undefined> extends infer T_7 ? T_7 extends Exclude<T_6[P_7], undefined> ? T_7 extends import("ts-gems").Builtin ? T_7 : T_7 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_7 extends (infer U_1)[] ? any[] : { [P_8 in keyof T_7]?: (Exclude<T_7[P_8], undefined> extends infer T_8 ? T_8 extends Exclude<T_7[P_8], undefined> ? T_8 extends import("ts-gems").Builtin ? T_8 : T_8 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_8 extends (infer U_1)[] ? any[] : { [P_9 in keyof T_8]?: (Exclude<T_8[P_9], undefined> extends infer T_9 ? T_9 extends Exclude<T_8[P_9], undefined> ? T_9 extends import("ts-gems").Builtin ? T_9 : T_9 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_9 extends (infer U_1)[] ? any[] : { [P_10 in keyof T_9]?: (Exclude<T_9[P_10], undefined> extends infer T_10 ? T_10 extends Exclude<T_9[P_10], undefined> ? T_10 extends import("ts-gems").Builtin ? T_10 : T_10 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_10 extends (infer U_1)[] ? any[] : { [P_11 in keyof T_10]?: any | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; }> | Maybe<T extends import("ts-gems").Builtin ? T : T extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T extends (infer U_1)[] ? any[] : { [P_1 in keyof T]?: (Exclude<T[P_1], undefined> extends infer T_1 ? T_1 extends Exclude<T[P_1], undefined> ? T_1 extends import("ts-gems").Builtin ? T_1 : T_1 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_1 extends (infer U_1)[] ? any[] : { [P_2 in keyof T_1]?: (Exclude<T_1[P_2], undefined> extends infer T_2 ? T_2 extends Exclude<T_1[P_2], undefined> ? T_2 extends import("ts-gems").Builtin ? T_2 : T_2 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_2 extends (infer U_1)[] ? any[] : { [P_3 in keyof T_2]?: (Exclude<T_2[P_3], undefined> extends infer T_3 ? T_3 extends Exclude<T_2[P_3], undefined> ? T_3 extends import("ts-gems").Builtin ? T_3 : T_3 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_3 extends (infer U_1)[] ? any[] : { [P_4 in keyof T_3]?: (Exclude<T_3[P_4], undefined> extends infer T_4 ? T_4 extends Exclude<T_3[P_4], undefined> ? T_4 extends import("ts-gems").Builtin ? T_4 : T_4 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_4 extends (infer U_1)[] ? any[] : { [P_5 in keyof T_4]?: (Exclude<T_4[P_5], undefined> extends infer T_5 ? T_5 extends Exclude<T_4[P_5], undefined> ? T_5 extends import("ts-gems").Builtin ? T_5 : T_5 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_5 extends (infer U_1)[] ? any[] : { [P_6 in keyof T_5]?: (Exclude<T_5[P_6], undefined> extends infer T_6 ? T_6 extends Exclude<T_5[P_6], undefined> ? T_6 extends import("ts-gems").Builtin ? T_6 : T_6 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_6 extends (infer U_1)[] ? any[] : { [P_7 in keyof T_6]?: (Exclude<T_6[P_7], undefined> extends infer T_7 ? T_7 extends Exclude<T_6[P_7], undefined> ? T_7 extends import("ts-gems").Builtin ? T_7 : T_7 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_7 extends (infer U_1)[] ? any[] : { [P_8 in keyof T_7]?: (Exclude<T_7[P_8], undefined> extends infer T_8 ? T_8 extends Exclude<T_7[P_8], undefined> ? T_8 extends import("ts-gems").Builtin ? T_8 : T_8 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_8 extends (infer U_1)[] ? any[] : { [P_9 in keyof T_8]?: (Exclude<T_8[P_9], undefined> extends infer T_9 ? T_9 extends Exclude<T_8[P_9], undefined> ? T_9 extends import("ts-gems").Builtin ? T_9 : T_9 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_9 extends (infer U_1)[] ? any[] : { [P_10 in keyof T_9]?: (Exclude<T_9[P_10], undefined> extends infer T_10 ? T_10 extends Exclude<T_9[P_10], undefined> ? T_10 extends import("ts-gems").Builtin ? T_10 : T_10 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_10 extends (infer U_1)[] ? any[] : { [P_11 in keyof T_10]?: any | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; }>[]>;
19
+ processRequest(ctx: QueryContext): Promise<number | boolean | (T extends import("ts-gems").Builtin ? T : T extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T extends (infer U_1)[] ? any[] : { [P_1 in keyof T]?: (Exclude<T[P_1], undefined> extends infer T_1 ? T_1 extends Exclude<T[P_1], undefined> ? T_1 extends import("ts-gems").Builtin ? T_1 : T_1 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_1 extends (infer U_1)[] ? any[] : { [P_2 in keyof T_1]?: (Exclude<T_1[P_2], undefined> extends infer T_2 ? T_2 extends Exclude<T_1[P_2], undefined> ? T_2 extends import("ts-gems").Builtin ? T_2 : T_2 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_2 extends (infer U_1)[] ? any[] : { [P_3 in keyof T_2]?: (Exclude<T_2[P_3], undefined> extends infer T_3 ? T_3 extends Exclude<T_2[P_3], undefined> ? T_3 extends import("ts-gems").Builtin ? T_3 : T_3 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_3 extends (infer U_1)[] ? any[] : { [P_4 in keyof T_3]?: (Exclude<T_3[P_4], undefined> extends infer T_4 ? T_4 extends Exclude<T_3[P_4], undefined> ? T_4 extends import("ts-gems").Builtin ? T_4 : T_4 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_4 extends (infer U_1)[] ? any[] : { [P_5 in keyof T_4]?: (Exclude<T_4[P_5], undefined> extends infer T_5 ? T_5 extends Exclude<T_4[P_5], undefined> ? T_5 extends import("ts-gems").Builtin ? T_5 : T_5 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_5 extends (infer U_1)[] ? any[] : { [P_6 in keyof T_5]?: (Exclude<T_5[P_6], undefined> extends infer T_6 ? T_6 extends Exclude<T_5[P_6], undefined> ? T_6 extends import("ts-gems").Builtin ? T_6 : T_6 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_6 extends (infer U_1)[] ? any[] : { [P_7 in keyof T_6]?: (Exclude<T_6[P_7], undefined> extends infer T_7 ? T_7 extends Exclude<T_6[P_7], undefined> ? T_7 extends import("ts-gems").Builtin ? T_7 : T_7 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_7 extends (infer U_1)[] ? any[] : { [P_8 in keyof T_7]?: (Exclude<T_7[P_8], undefined> extends infer T_8 ? T_8 extends Exclude<T_7[P_8], undefined> ? T_8 extends import("ts-gems").Builtin ? T_8 : T_8 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_8 extends (infer U_1)[] ? any[] : { [P_9 in keyof T_8]?: (Exclude<T_8[P_9], undefined> extends infer T_9 ? T_9 extends Exclude<T_8[P_9], undefined> ? T_9 extends import("ts-gems").Builtin ? T_9 : T_9 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_9 extends (infer U_1)[] ? any[] : { [P_10 in keyof T_9]?: (Exclude<T_9[P_10], undefined> extends infer T_10 ? T_10 extends Exclude<T_9[P_10], undefined> ? T_10 extends import("ts-gems").Builtin ? T_10 : T_10 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_10 extends (infer U_1)[] ? any[] : { [P_11 in keyof T_10]?: any | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; }) | Maybe<T extends import("ts-gems").Builtin ? T : T extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T extends (infer U_1)[] ? any[] : { [P_1 in keyof T]?: (Exclude<T[P_1], undefined> extends infer T_1 ? T_1 extends Exclude<T[P_1], undefined> ? T_1 extends import("ts-gems").Builtin ? T_1 : T_1 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_1 extends (infer U_1)[] ? any[] : { [P_2 in keyof T_1]?: (Exclude<T_1[P_2], undefined> extends infer T_2 ? T_2 extends Exclude<T_1[P_2], undefined> ? T_2 extends import("ts-gems").Builtin ? T_2 : T_2 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_2 extends (infer U_1)[] ? any[] : { [P_3 in keyof T_2]?: (Exclude<T_2[P_3], undefined> extends infer T_3 ? T_3 extends Exclude<T_2[P_3], undefined> ? T_3 extends import("ts-gems").Builtin ? T_3 : T_3 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_3 extends (infer U_1)[] ? any[] : { [P_4 in keyof T_3]?: (Exclude<T_3[P_4], undefined> extends infer T_4 ? T_4 extends Exclude<T_3[P_4], undefined> ? T_4 extends import("ts-gems").Builtin ? T_4 : T_4 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_4 extends (infer U_1)[] ? any[] : { [P_5 in keyof T_4]?: (Exclude<T_4[P_5], undefined> extends infer T_5 ? T_5 extends Exclude<T_4[P_5], undefined> ? T_5 extends import("ts-gems").Builtin ? T_5 : T_5 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_5 extends (infer U_1)[] ? any[] : { [P_6 in keyof T_5]?: (Exclude<T_5[P_6], undefined> extends infer T_6 ? T_6 extends Exclude<T_5[P_6], undefined> ? T_6 extends import("ts-gems").Builtin ? T_6 : T_6 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_6 extends (infer U_1)[] ? any[] : { [P_7 in keyof T_6]?: (Exclude<T_6[P_7], undefined> extends infer T_7 ? T_7 extends Exclude<T_6[P_7], undefined> ? T_7 extends import("ts-gems").Builtin ? T_7 : T_7 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_7 extends (infer U_1)[] ? any[] : { [P_8 in keyof T_7]?: (Exclude<T_7[P_8], undefined> extends infer T_8 ? T_8 extends Exclude<T_7[P_8], undefined> ? T_8 extends import("ts-gems").Builtin ? T_8 : T_8 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_8 extends (infer U_1)[] ? any[] : { [P_9 in keyof T_8]?: (Exclude<T_8[P_9], undefined> extends infer T_9 ? T_9 extends Exclude<T_8[P_9], undefined> ? T_9 extends import("ts-gems").Builtin ? T_9 : T_9 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_9 extends (infer U_1)[] ? any[] : { [P_10 in keyof T_9]?: (Exclude<T_9[P_10], undefined> extends infer T_10 ? T_10 extends Exclude<T_9[P_10], undefined> ? T_10 extends import("ts-gems").Builtin ? T_10 : T_10 extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<U extends import("ts-gems").Builtin ? U : U extends Promise<infer U> ? Promise<any> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : U extends (infer U_1)[] ? any[] : { [P in keyof U]?: any | null | undefined; }> : T_10 extends (infer U_1)[] ? any[] : { [P_11 in keyof T_10]?: any | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; } : never : never) | null | undefined; }>[] | undefined>;
20
20
  get(keyValue: any, options?: BaseEntityService.FindOneOptions, userContext?: any): Promise<Maybe<EntityOutput<T>>>;
21
21
  count(options?: BaseEntityService.FindAllOptions, userContext?: any): Promise<Maybe<number>>;
22
22
  search(options?: BaseEntityService.FindAllOptions, userContext?: any): Promise<Maybe<EntityOutput<T>>[]>;
@@ -1,3 +1,4 @@
1
+ import { BadRequestError } from '@opra/core';
1
2
  import { EntityMetadata } from '@sqb/connect';
2
3
  import { SQBAdapter } from './sqb-adapter.js';
3
4
  export class BaseEntityService {
@@ -11,12 +12,22 @@ export class BaseEntityService {
11
12
  this._metadata = metadata;
12
13
  }
13
14
  async processRequest(ctx) {
14
- const prepared = SQBAdapter.prepare(ctx.request);
15
+ const prepared = SQBAdapter.prepare(ctx.query);
15
16
  switch (prepared.method) {
17
+ case 'create':
18
+ return this.create(prepared.values, prepared.options, ctx.userContext);
19
+ case 'destroy':
20
+ return this.delete(prepared.keyValue, prepared.options, ctx.userContext);
21
+ case 'destroyAll':
22
+ return this.deleteMany(prepared.options, ctx.userContext);
16
23
  case 'findAll':
17
24
  return this.search(prepared.options, ctx.userContext);
18
25
  case 'findByPk':
19
26
  return this.get(ctx, prepared.options);
27
+ case 'update':
28
+ return this.update(prepared.keyValue, prepared.values, prepared.options, ctx.userContext);
29
+ case 'updateAll':
30
+ return this.updateMany(prepared.values, prepared.options, ctx.userContext);
20
31
  default:
21
32
  throw new TypeError(`Unimplemented method (${prepared.method})`);
22
33
  }
@@ -52,7 +63,13 @@ export class BaseEntityService {
52
63
  async create(data, options, userContext) {
53
64
  const conn = await this.getConnection(userContext);
54
65
  const repo = conn.getRepository(this.resourceType);
55
- let out = await repo.create(data, options);
66
+ let out;
67
+ try {
68
+ out = await repo.create(data, options);
69
+ }
70
+ catch (e) {
71
+ throw new BadRequestError(e);
72
+ }
56
73
  if (out && this.onTransformRow)
57
74
  out = this.onTransformRow(out, userContext, 'create');
58
75
  return out;
@@ -60,7 +77,13 @@ export class BaseEntityService {
60
77
  async update(keyValue, data, options, userContext) {
61
78
  const conn = await this.getConnection(userContext);
62
79
  const repo = conn.getRepository(this.resourceType);
63
- let out = await repo.update(keyValue, data, options);
80
+ let out;
81
+ try {
82
+ out = await repo.update(keyValue, data, options);
83
+ }
84
+ catch (e) {
85
+ throw new BadRequestError(e);
86
+ }
64
87
  if (out && this.onTransformRow)
65
88
  out = this.onTransformRow(out, userContext, 'create');
66
89
  return out;
@@ -68,16 +91,31 @@ export class BaseEntityService {
68
91
  async updateMany(data, options, userContext) {
69
92
  const conn = await this.getConnection(userContext);
70
93
  const repo = conn.getRepository(this.resourceType);
71
- return await repo.updateAll(data, options);
94
+ try {
95
+ return await repo.updateAll(data, options);
96
+ }
97
+ catch (e) {
98
+ throw new BadRequestError(e);
99
+ }
72
100
  }
73
101
  async delete(keyValue, options, userContext) {
74
102
  const conn = await this.getConnection(userContext);
75
103
  const repo = conn.getRepository(this.resourceType);
76
- return await repo.destroy(keyValue, options);
104
+ try {
105
+ return await repo.destroy(keyValue, options);
106
+ }
107
+ catch (e) {
108
+ throw new BadRequestError(e);
109
+ }
77
110
  }
78
111
  async deleteMany(options, userContext) {
79
112
  const conn = await this.getConnection(userContext);
80
113
  const repo = conn.getRepository(this.resourceType);
81
- return await repo.destroyAll(options);
114
+ try {
115
+ return await repo.destroyAll(options);
116
+ }
117
+ catch (e) {
118
+ throw new BadRequestError(e);
119
+ }
82
120
  }
83
121
  }
@@ -1,12 +1,10 @@
1
- import { ExecutionRequest } from '@opra/core';
2
- import { SqbClient, SqbConnection } from '@sqb/connect';
1
+ import { OpraQuery } from '@opra/core';
3
2
  export declare namespace SQBAdapter {
4
- function prepare(request: ExecutionRequest): {
3
+ function prepare(query: OpraQuery): {
5
4
  method: 'create' | 'findByPk' | 'findAll' | 'update' | 'updateAll' | 'destroy' | 'destroyAll';
6
5
  options: any;
7
6
  keyValue?: any;
8
7
  values?: any;
9
8
  args: any[];
10
9
  };
11
- function execute(connection: SqbClient | SqbConnection, request: ExecutionRequest): Promise<any>;
12
10
  }
@@ -2,8 +2,7 @@ import _ from 'lodash';
2
2
  import { convertFilter } from './convert-filter.js';
3
3
  export var SQBAdapter;
4
4
  (function (SQBAdapter) {
5
- function prepare(request) {
6
- const { query } = request;
5
+ function prepare(query) {
7
6
  switch (query.queryType) {
8
7
  case 'create': {
9
8
  const options = _.omitBy({
@@ -103,25 +102,4 @@ export var SQBAdapter;
103
102
  }
104
103
  }
105
104
  SQBAdapter.prepare = prepare;
106
- async function execute(connection, request) {
107
- const { query } = request;
108
- const repo = connection.getRepository(query.resource.dataType.ctor);
109
- const prepared = prepare(request);
110
- const out = {};
111
- // @ts-ignore
112
- const value = await repo[prepared.method](...prepared.args);
113
- if (value && typeof value === 'object')
114
- out.value = value;
115
- if (query.queryType === 'search') {
116
- if (query.count) {
117
- out.total = await repo.count(prepared.options);
118
- }
119
- }
120
- if (prepared.method === 'destroy')
121
- out.affected = value ? 1 : 0;
122
- else if (prepared.method === 'destroyAll' || prepared.method === 'updateAll')
123
- out.affected = value;
124
- return out;
125
- }
126
- SQBAdapter.execute = execute;
127
105
  })(SQBAdapter || (SQBAdapter = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/sqb",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "description": "Opra SQB adapter package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -32,9 +32,9 @@
32
32
  "@sqb/connect": "^4.5.1"
33
33
  },
34
34
  "peerDependencies": {
35
- "@opra/core": "^0.0.8",
36
- "@opra/optionals": "^0.0.8",
37
- "@opra/url": "^0.0.8",
35
+ "@opra/core": "^0.0.9",
36
+ "@opra/optionals": "^0.0.9",
37
+ "@opra/url": "^0.0.9",
38
38
  "@sqb/connect": ">= 4.5.0",
39
39
  "@sqb/sqljs": "^4.5.1"
40
40
  },