@taylordb/query-builder 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/{src → cjs}/__tests__/query-builder.spec.js +1 -1
  2. package/dist/{src → cjs}/__tests__/query-builder.spec.js.map +1 -1
  3. package/dist/{src → cjs}/aggregation-query-builder.d.ts +1 -0
  4. package/dist/{src → cjs}/aggregation-query-builder.js +4 -1
  5. package/dist/{src → cjs}/aggregation-query-builder.js.map +1 -1
  6. package/dist/cjs/batch-query-builder.d.ts +27 -0
  7. package/dist/{src → cjs}/batch-query-builder.js +10 -0
  8. package/dist/cjs/batch-query-builder.js.map +1 -0
  9. package/dist/cjs/executor.d.ts +15 -0
  10. package/dist/cjs/executor.js +67 -0
  11. package/dist/cjs/executor.js.map +1 -0
  12. package/dist/{src → cjs}/insert-query-builder.d.ts +8 -6
  13. package/dist/{src → cjs}/insert-query-builder.js +2 -1
  14. package/dist/cjs/insert-query-builder.js.map +1 -0
  15. package/dist/{src → cjs}/query-builder.d.ts +4 -2
  16. package/dist/{src → cjs}/query-builder.js +7 -0
  17. package/dist/cjs/query-builder.js.map +1 -0
  18. package/dist/cjs/subscription-manager.d.ts +19 -0
  19. package/dist/cjs/subscription-manager.js +105 -0
  20. package/dist/cjs/subscription-manager.js.map +1 -0
  21. package/dist/esm/@types/aggregate.d.ts +28 -0
  22. package/dist/esm/@types/aggregate.js +3 -0
  23. package/dist/esm/@types/aggregate.js.map +1 -0
  24. package/dist/esm/@types/delete.d.ts +2 -0
  25. package/dist/esm/@types/delete.js +3 -0
  26. package/dist/esm/@types/delete.js.map +1 -0
  27. package/dist/esm/@types/insert.d.ts +8 -0
  28. package/dist/esm/@types/insert.js +3 -0
  29. package/dist/esm/@types/insert.js.map +1 -0
  30. package/dist/esm/@types/internal-types.d.ts +24 -0
  31. package/dist/esm/@types/internal-types.js +3 -0
  32. package/dist/esm/@types/internal-types.js.map +1 -0
  33. package/dist/esm/@types/query-builder.d.ts +7 -0
  34. package/dist/esm/@types/query-builder.js +3 -0
  35. package/dist/esm/@types/query-builder.js.map +1 -0
  36. package/dist/esm/@types/type-helpers.d.ts +27 -0
  37. package/dist/esm/@types/type-helpers.js +3 -0
  38. package/dist/esm/@types/type-helpers.js.map +1 -0
  39. package/dist/esm/@types/update.d.ts +5 -0
  40. package/dist/esm/@types/update.js +3 -0
  41. package/dist/esm/@types/update.js.map +1 -0
  42. package/dist/esm/__tests__/query-builder.spec.js +129 -0
  43. package/dist/esm/__tests__/query-builder.spec.js.map +1 -0
  44. package/dist/esm/__tests__/taylorclient.types.js.map +1 -0
  45. package/dist/esm/aggregation-query-builder.d.ts +28 -0
  46. package/dist/esm/aggregation-query-builder.js +83 -0
  47. package/dist/esm/aggregation-query-builder.js.map +1 -0
  48. package/dist/esm/batch-query-builder.d.ts +27 -0
  49. package/dist/esm/batch-query-builder.js +38 -0
  50. package/dist/esm/batch-query-builder.js.map +1 -0
  51. package/dist/esm/delete-query-builder.d.ts +16 -0
  52. package/dist/esm/delete-query-builder.js +36 -0
  53. package/dist/esm/delete-query-builder.js.map +1 -0
  54. package/dist/esm/executor.d.ts +15 -0
  55. package/dist/esm/executor.js +67 -0
  56. package/dist/esm/executor.js.map +1 -0
  57. package/dist/esm/index.d.ts +1 -0
  58. package/dist/esm/index.js +6 -0
  59. package/dist/esm/index.js.map +1 -0
  60. package/dist/esm/insert-query-builder.d.ts +19 -0
  61. package/dist/esm/insert-query-builder.js +69 -0
  62. package/dist/esm/insert-query-builder.js.map +1 -0
  63. package/dist/esm/query-builder.d.ts +54 -0
  64. package/dist/esm/query-builder.js +209 -0
  65. package/dist/esm/query-builder.js.map +1 -0
  66. package/dist/esm/selection-builder.d.ts +10 -0
  67. package/dist/esm/selection-builder.js +20 -0
  68. package/dist/esm/selection-builder.js.map +1 -0
  69. package/dist/esm/subscription-manager.d.ts +19 -0
  70. package/dist/esm/subscription-manager.js +105 -0
  71. package/dist/esm/subscription-manager.js.map +1 -0
  72. package/dist/esm/update-query-builder.d.ts +17 -0
  73. package/dist/esm/update-query-builder.js +43 -0
  74. package/dist/esm/update-query-builder.js.map +1 -0
  75. package/dist/esm/where-query-builder.d.ts +14 -0
  76. package/dist/esm/where-query-builder.js +68 -0
  77. package/dist/esm/where-query-builder.js.map +1 -0
  78. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  79. package/package.json +16 -5
  80. package/dist/sample/sample-1/index.js +0 -68
  81. package/dist/sample/sample-1/index.js.map +0 -1
  82. package/dist/sample/sample-1/taylorclient.types.js.map +0 -1
  83. package/dist/src/batch-query-builder.d.ts +0 -16
  84. package/dist/src/batch-query-builder.js.map +0 -1
  85. package/dist/src/executor.d.ts +0 -12
  86. package/dist/src/executor.js +0 -37
  87. package/dist/src/executor.js.map +0 -1
  88. package/dist/src/insert-query-builder.js.map +0 -1
  89. package/dist/src/query-builder.js.map +0 -1
  90. package/dist/tsconfig.tsbuildinfo +0 -1
  91. /package/dist/{src → cjs}/@types/aggregate.d.ts +0 -0
  92. /package/dist/{src → cjs}/@types/aggregate.js +0 -0
  93. /package/dist/{src → cjs}/@types/aggregate.js.map +0 -0
  94. /package/dist/{src → cjs}/@types/delete.d.ts +0 -0
  95. /package/dist/{src → cjs}/@types/delete.js +0 -0
  96. /package/dist/{src → cjs}/@types/delete.js.map +0 -0
  97. /package/dist/{src → cjs}/@types/insert.d.ts +0 -0
  98. /package/dist/{src → cjs}/@types/insert.js +0 -0
  99. /package/dist/{src → cjs}/@types/insert.js.map +0 -0
  100. /package/dist/{src → cjs}/@types/internal-types.d.ts +0 -0
  101. /package/dist/{src → cjs}/@types/internal-types.js +0 -0
  102. /package/dist/{src → cjs}/@types/internal-types.js.map +0 -0
  103. /package/dist/{src → cjs}/@types/query-builder.d.ts +0 -0
  104. /package/dist/{src → cjs}/@types/query-builder.js +0 -0
  105. /package/dist/{src → cjs}/@types/query-builder.js.map +0 -0
  106. /package/dist/{src → cjs}/@types/type-helpers.d.ts +0 -0
  107. /package/dist/{src → cjs}/@types/type-helpers.js +0 -0
  108. /package/dist/{src → cjs}/@types/type-helpers.js.map +0 -0
  109. /package/dist/{src → cjs}/@types/update.d.ts +0 -0
  110. /package/dist/{src → cjs}/@types/update.js +0 -0
  111. /package/dist/{src → cjs}/@types/update.js.map +0 -0
  112. /package/dist/{src → cjs}/__tests__/query-builder.spec.d.ts +0 -0
  113. /package/dist/{sample/sample-1 → cjs/__tests__}/taylorclient.types.d.ts +0 -0
  114. /package/dist/{sample/sample-1 → cjs/__tests__}/taylorclient.types.js +0 -0
  115. /package/dist/{src → cjs}/__tests__/taylorclient.types.js.map +0 -0
  116. /package/dist/{src → cjs}/delete-query-builder.d.ts +0 -0
  117. /package/dist/{src → cjs}/delete-query-builder.js +0 -0
  118. /package/dist/{src → cjs}/delete-query-builder.js.map +0 -0
  119. /package/dist/{src → cjs}/index.d.ts +0 -0
  120. /package/dist/{src → cjs}/index.js +0 -0
  121. /package/dist/{src → cjs}/index.js.map +0 -0
  122. /package/dist/{src → cjs}/selection-builder.d.ts +0 -0
  123. /package/dist/{src → cjs}/selection-builder.js +0 -0
  124. /package/dist/{src → cjs}/selection-builder.js.map +0 -0
  125. /package/dist/{src → cjs}/update-query-builder.d.ts +0 -0
  126. /package/dist/{src → cjs}/update-query-builder.js +0 -0
  127. /package/dist/{src → cjs}/update-query-builder.js.map +0 -0
  128. /package/dist/{src → cjs}/where-query-builder.d.ts +0 -0
  129. /package/dist/{src → cjs}/where-query-builder.js +0 -0
  130. /package/dist/{src → cjs}/where-query-builder.js.map +0 -0
  131. /package/dist/{sample/sample-1/index.d.ts → esm/__tests__/query-builder.spec.d.ts} +0 -0
  132. /package/dist/{src → esm}/__tests__/taylorclient.types.d.ts +0 -0
  133. /package/dist/{src → esm}/__tests__/taylorclient.types.js +0 -0
@@ -117,7 +117,7 @@ describe('QueryBuilder', () => {
117
117
  })
118
118
  .compile();
119
119
  expect(variables.metadata[0]).toMatchObject({
120
- type: 'aggregate',
120
+ type: 'aggregation',
121
121
  tableName: 'customers',
122
122
  groupings: [{ field: 'firstName', direction: 'asc' }],
123
123
  aggregations: {
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.spec.js","sourceRoot":"","sources":["../../../src/__tests__/query-builder.spec.ts"],"names":[],"mappings":";;AAAA,0CAAiD;AAGjD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,aAAa;IACb,MAAM,EAAE,GAAG,IAAA,6BAAkB,EAAiB;QAC5C,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE;aACrB,UAAU,CAAC,WAAW,CAAC;aACvB,MAAM,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;aACjC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC;aAC/B,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;aAC1B,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;aACf,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;YACjC,UAAU,EAAE;gBACV,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE;oBACV;wBACE,KAAK,EAAE,WAAW;wBAClB,QAAQ,EAAE,GAAG;wBACb,KAAK,EAAE,MAAM;qBACd;iBACF;aACF;YACD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAClD,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE;aACrB,UAAU,CAAC,WAAW,CAAC;aACvB,MAAM,CAAC;YACN,SAAS,EAAE,MAAM;YACjB,QAAQ,EAAE,KAAK;SAChB,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,WAAW;YACtB,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;SACzD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE;aACrB,MAAM,CAAC,WAAW,CAAC;aACnB,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;aAC1B,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;aACnB,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;YAC7B,UAAU,EAAE;gBACV,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE;oBACV;wBACE,KAAK,EAAE,IAAI;wBACX,QAAQ,EAAE,GAAG;wBACb,KAAK,EAAE,CAAC;qBACT;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE;aACrB,UAAU,CAAC,WAAW,CAAC;aACvB,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;aACnB,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE;gBACV,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE;oBACV;wBACE,KAAK,EAAE,IAAI;wBACX,QAAQ,EAAE,GAAG;wBACb,KAAK,EAAE,CAAC;qBACT;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE;aACrB,KAAK,CAAC;YACL,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC5D,EAAE;iBACC,UAAU,CAAC,WAAW,CAAC;iBACvB,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;SAClD,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,WAAW;SACvB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,WAAW;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE;aACrB,aAAa,CAAC,WAAW,CAAC;aAC1B,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;aAC3B,cAAc,CAAC;YACd,EAAE,EAAE,CAAC,KAAK,CAAC;SACZ,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YACrD,YAAY,EAAE;gBACZ,EAAE,EAAE,CAAC,KAAK,CAAC;aACZ;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"query-builder.spec.js","sourceRoot":"","sources":["../../../src/__tests__/query-builder.spec.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export declare class AggregationQueryBuilder<DB extends AnyDB, TableName extends
19
19
  paginate(page: number, limit: number): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations>;
20
20
  orderBy(field: keyof DB['tables'][TableName], direction?: 'asc' | 'desc'): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations>;
21
21
  execute(): Promise<AggregateRecord<DB, TableName, TGroupBy, TAggregations>[]>;
22
+ subscribe(callback: (result: AggregateRecord<DB, TableName, TGroupBy, TAggregations>[]) => void): Promise<void>;
22
23
  compile(): {
23
24
  query: string;
24
25
  variables: Record<string, any>;
@@ -57,6 +57,9 @@ class AggregationQueryBuilder extends where_query_builder_js_1.FilterableQueryBu
57
57
  const response = await this._executor.execute(this);
58
58
  return response;
59
59
  }
60
+ subscribe(callback) {
61
+ return this._executor.subscribe([this], callback);
62
+ }
60
63
  compile() {
61
64
  const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
62
65
  const metadata = [this._prepareMetadata()];
@@ -64,7 +67,7 @@ class AggregationQueryBuilder extends where_query_builder_js_1.FilterableQueryBu
64
67
  }
65
68
  _prepareMetadata() {
66
69
  return {
67
- type: 'aggregate',
70
+ type: 'aggregation',
68
71
  tableName: this.#node.tableName,
69
72
  groupings: this.#node.groupings,
70
73
  aggregations: this.#node.aggregations,
@@ -1 +1 @@
1
- {"version":3,"file":"aggregation-query-builder.js","sourceRoot":"","sources":["../../src/aggregation-query-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aggregation-query-builder.js","sourceRoot":"","sources":["../../src/aggregation-query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { AggregationQueryBuilder } from './aggregation-query-builder.js';
2
+ import { DeleteQueryBuilder } from './delete-query-builder.js';
3
+ import { Executor } from './executor.js';
4
+ import { InsertQueryBuilder } from './insert-query-builder.js';
5
+ import { QueryBuilder } from './query-builder.js';
6
+ import { UpdateQueryBuilder } from './update-query-builder.js';
7
+ export type AnySubscribableQueryBuilder = QueryBuilder<any, any, any, any> | AggregationQueryBuilder<any, any, any, any>;
8
+ export type AnyQueryBuilder = AnySubscribableQueryBuilder | InsertQueryBuilder<any, any, any> | UpdateQueryBuilder<any, any> | DeleteQueryBuilder<any, any>;
9
+ type InferExecuteResult<TBuilder> = TBuilder extends {
10
+ execute: () => Promise<any>;
11
+ } ? Awaited<ReturnType<TBuilder['execute']>> : never;
12
+ export type AreAllBuildersSubscribable<TBuilders extends readonly AnyQueryBuilder[]> = TBuilders[number] extends AnySubscribableQueryBuilder ? true : false;
13
+ export declare class BatchQueryBuilder<const TBuilders extends readonly AnyQueryBuilder[]> {
14
+ #private;
15
+ constructor(builders: TBuilders, executor: Executor);
16
+ execute(): Promise<{
17
+ -readonly [K in keyof TBuilders]: InferExecuteResult<TBuilders[K]>;
18
+ }>;
19
+ subscribe(callback: (...results: {
20
+ -readonly [K in keyof TBuilders]: InferExecuteResult<TBuilders[K]>;
21
+ }) => void): Promise<void>;
22
+ compile(): {
23
+ query: string;
24
+ variables: Record<string, any>;
25
+ };
26
+ }
27
+ export {};
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BatchQueryBuilder = void 0;
4
+ const aggregation_query_builder_js_1 = require("./aggregation-query-builder.js");
5
+ const query_builder_js_1 = require("./query-builder.js");
4
6
  class BatchQueryBuilder {
5
7
  #builders;
6
8
  #executor;
@@ -11,6 +13,14 @@ class BatchQueryBuilder {
11
13
  async execute() {
12
14
  return this.#executor.execute(this);
13
15
  }
16
+ subscribe(callback) {
17
+ const builders = this.#builders.filter(builder => builder instanceof aggregation_query_builder_js_1.AggregationQueryBuilder ||
18
+ builder instanceof query_builder_js_1.QueryBuilder);
19
+ if (builders.length !== this.#builders.length) {
20
+ throw new Error('Batch contains non-subscribable queries (e.g., insert, update, delete)');
21
+ }
22
+ return this.#executor.subscribe(builders, callback);
23
+ }
14
24
  compile() {
15
25
  const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
16
26
  const metadata = this.#builders.map(builder => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-query-builder.js","sourceRoot":"","sources":["../../src/batch-query-builder.ts"],"names":[],"mappings":";;;AAAA,iFAAyE;AAIzE,yDAAkD;AAuBlD,MAAa,iBAAiB;IAG5B,SAAS,CAAY;IACrB,SAAS,CAAW;IAEpB,YAAY,QAAmB,EAAE,QAAkB;QACjD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QAGX,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,CACP,QAIS;QAET,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CACpC,OAAO,CAAC,EAAE,CACR,OAAO,YAAY,sDAAuB;YAC1C,OAAO,YAAY,+BAAY,CAClC,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAe,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,6DAA6D,CAAC;QAE5E,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC5C,OAAO,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,SAAS,EAAE;gBACT,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;CACF;AArDD,8CAqDC"}
@@ -0,0 +1,15 @@
1
+ import { AnySubscribableQueryBuilder } from './batch-query-builder.js';
2
+ interface Compilable {
3
+ compile(): {
4
+ query: string;
5
+ variables: Record<string, any>;
6
+ };
7
+ }
8
+ export declare class Executor {
9
+ #private;
10
+ constructor(baseUrl: string, apiKey: string);
11
+ execute<T>(builder: Compilable): Promise<T>;
12
+ rawRequest<T>(query: string, variables: Record<string, any>, headers?: Record<string, string>): Promise<T>;
13
+ subscribe<TResult>(builders: AnySubscribableQueryBuilder[], callback: (result: TResult) => void): Promise<void>;
14
+ }
15
+ export {};
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Executor = void 0;
4
+ const subscription_manager_js_1 = require("./subscription-manager.js");
5
+ const generateUUID = () => {
6
+ if (globalThis.crypto && globalThis.crypto.randomUUID) {
7
+ return globalThis.crypto.randomUUID();
8
+ }
9
+ // A simple fallback for environments without crypto.randomUUID
10
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
11
+ const r = (Math.random() * 16) | 0;
12
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
13
+ return v.toString(16);
14
+ });
15
+ };
16
+ class Executor {
17
+ #baseUrl;
18
+ #apiKey;
19
+ #subscriptionManager;
20
+ constructor(baseUrl, apiKey) {
21
+ this.#baseUrl = baseUrl;
22
+ this.#apiKey = apiKey;
23
+ this.#subscriptionManager = new subscription_manager_js_1.SubscriptionManager(this, {
24
+ baseUrl,
25
+ apiKey,
26
+ clientId: generateUUID(),
27
+ });
28
+ }
29
+ async execute(builder) {
30
+ const { query, variables } = builder.compile();
31
+ return this.rawRequest(query, variables);
32
+ }
33
+ async rawRequest(query, variables, headers) {
34
+ const response = await fetch(this.#baseUrl, {
35
+ method: 'POST',
36
+ headers: {
37
+ 'Content-Type': 'application/json',
38
+ Authorization: `Bearer ${this.#apiKey}`,
39
+ schema: 'readable',
40
+ ...(headers ? { ...headers } : {}),
41
+ },
42
+ body: JSON.stringify({ query, variables }),
43
+ });
44
+ if (!response.ok) {
45
+ const errorText = await response.text();
46
+ throw new Error(`Request failed with status ${response.status}: ${errorText}`);
47
+ }
48
+ const jsonResponse = await response.json();
49
+ if (jsonResponse.errors) {
50
+ throw new Error(`GraphQL errors: ${JSON.stringify(jsonResponse.errors)}`);
51
+ }
52
+ if (jsonResponse.data) {
53
+ const [firstKey] = Object.keys(jsonResponse.data);
54
+ if (Array.isArray(jsonResponse.data[firstKey])) {
55
+ return jsonResponse.data[firstKey];
56
+ }
57
+ return jsonResponse.data;
58
+ }
59
+ throw new Error('Unexpected response format');
60
+ }
61
+ async subscribe(builders, callback) {
62
+ const metadatas = builders.map(b => b._prepareMetadata());
63
+ return this.#subscriptionManager.subscribe(metadatas, callback);
64
+ }
65
+ }
66
+ exports.Executor = Executor;
67
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,16 @@
1
1
  import type { Insertable, InsertNode } from './@types/insert.js';
2
2
  import type { AnyDB } from './@types/internal-types.js';
3
+ import { NonLinkColumnNames } from './@types/query-builder.js';
4
+ import { ResolveSelection } from './@types/type-helpers.js';
3
5
  import { Executor } from './executor.js';
4
- import { QueryBuilder } from './query-builder.js';
5
- import { SelectionBuilder } from './selection-builder.js';
6
- export declare class InsertQueryBuilder<DB extends AnyDB, TableName extends keyof DB['tables']> {
6
+ export declare class InsertQueryBuilder<DB extends AnyDB, TableName extends keyof DB['tables'], Selection = {
7
+ id: number;
8
+ }> {
7
9
  #private;
8
10
  constructor(node: InsertNode, executor: Executor);
9
- values(values: Insertable<DB['tables'][TableName]> | Insertable<DB['tables'][TableName]>[]): InsertQueryBuilder<DB, TableName>;
10
- returning<K extends keyof DB['tables'][TableName] | ((builder: SelectionBuilder<DB, TableName>) => QueryBuilder<DB, any>)>(fields: K[]): InsertQueryBuilder<DB, TableName>;
11
- execute<T>(): Promise<T>;
11
+ values(values: Insertable<DB['tables'][TableName]> | Insertable<DB['tables'][TableName]>[]): InsertQueryBuilder<DB, TableName, Selection>;
12
+ returning<const TFields extends readonly NonLinkColumnNames<DB['tables'][TableName]>[]>(fields: TFields): InsertQueryBuilder<DB, TableName, ResolveSelection<DB, TableName, TFields, object>>;
13
+ execute(): Promise<Selection[]>;
12
14
  compile(): {
13
15
  query: string;
14
16
  variables: Record<string, any>;
@@ -20,6 +20,7 @@ class InsertQueryBuilder {
20
20
  const newSelects = fields.map(field => {
21
21
  if (typeof field === 'function') {
22
22
  const builder = new selection_builder_js_1.SelectionBuilder(this.#executor);
23
+ // @ts-ignore
23
24
  const subQuery = field(builder);
24
25
  return subQuery._node;
25
26
  }
@@ -31,7 +32,7 @@ class InsertQueryBuilder {
31
32
  }, this.#executor);
32
33
  }
33
34
  async execute() {
34
- return this.#executor.execute(this);
35
+ return (await this.#executor.execute(this))[0];
35
36
  }
36
37
  compile() {
37
38
  const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-query-builder.js","sourceRoot":"","sources":["../../src/insert-query-builder.ts"],"names":[],"mappings":";;;AAKA,yDAAkD;AAClD,iEAA0D;AAE1D,MAAa,kBAAkB;IAK7B,KAAK,CAAa;IAClB,SAAS,CAAW;IAEpB,YAAY,IAAgB,EAAE,QAAkB;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,MAAM,CACJ,MAEyC;QAEzC,OAAO,IAAI,kBAAkB,CAC3B;YACE,GAAG,IAAI,CAAC,KAAK;YACb,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SAC1D,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,SAAS,CAKP,MAAe;QAMf,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,IAAI,uCAAgB,CAAgB,IAAI,CAAC,SAAS,CAAC,CAAC;gBACpE,aAAa;gBACb,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gBAChC,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,OAAO,KAAe,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,kBAAkB,CAC3B;YACE,GAAG,IAAI,CAAC,KAAK;YACb,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC;SACpD,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,6DAA6D,CAAC;QAE5E,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAE3C,OAAO;YACL,KAAK;YACL,SAAS,EAAE;gBACT,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,MAAM,YAAY,GAAG,CAAC,OAA+B,EAAS,EAAE;YAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,MAAM,eAAe,GAAG,IAAI,+BAAY,CACtC,KAAkB,EAClB,IAAI,CAAC,SAAS,CACf,CAAC;gBACF,OAAO,eAAe,CAAC,gBAAgB,EAAE,CAAC;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;YACpD,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACpC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEX,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;YACzC,SAAS,EAAE,kBAAkB;SAC9B,CAAC;IACJ,CAAC;CACF;AAnGD,gDAmGC"}
@@ -3,7 +3,7 @@ import { AnyDB, QueryNode, RootQueryNode, SelectionQueryNode } from './@types/in
3
3
  import { LinkColumnNames, NonLinkColumnNames } from './@types/query-builder.js';
4
4
  import { InferDataType, ResolveSelection, ResolveWithObject, ResolveWithPlain } from './@types/type-helpers.js';
5
5
  import { AggregationQueryBuilder } from './aggregation-query-builder.js';
6
- import { AnyQueryBuilder, BatchQueryBuilder } from './batch-query-builder.js';
6
+ import { AnyQueryBuilder, AreAllBuildersSubscribable, BatchQueryBuilder } from './batch-query-builder.js';
7
7
  import { DeleteQueryBuilder } from './delete-query-builder.js';
8
8
  import { Executor } from './executor.js';
9
9
  import { InsertQueryBuilder } from './insert-query-builder.js';
@@ -25,6 +25,8 @@ export declare class QueryBuilder<DB extends AnyDB, TableName extends keyof DB['
25
25
  paginate(page: number, limit: number): QueryBuilder<DB, TableName, Selection, LinkName>;
26
26
  orderBy(field: keyof DB['tables'][TableName], direction?: 'asc' | 'desc'): QueryBuilder<DB, TableName, Selection, LinkName>;
27
27
  execute(): Promise<Selection[]>;
28
+ executeTakeFirst(): Promise<Selection | null>;
29
+ subscribe(callback: (result: Selection[]) => void): Promise<void>;
28
30
  compile(): {
29
31
  query: string;
30
32
  variables: Record<string, any>;
@@ -43,7 +45,7 @@ export declare class RootQueryBuilder<DB extends AnyDB> {
43
45
  insertInto<TableName extends keyof Omit<DB['tables'], 'selectTable' | 'attachmentTable' | 'collaboratorsTable'> & string>(into: TableName): InsertQueryBuilder<DB, TableName>;
44
46
  update<TableName extends keyof Omit<DB['tables'], 'selectTable' | 'attachmentTable' | 'collaboratorsTable'> & string>(tableName: TableName): UpdateQueryBuilder<DB, TableName>;
45
47
  deleteFrom<TableName extends keyof Omit<DB['tables'], 'selectTable' | 'attachmentTable' | 'collaboratorsTable'> & string>(tableName: TableName): DeleteQueryBuilder<DB, TableName>;
46
- batch(builders: AnyQueryBuilder[]): BatchQueryBuilder;
48
+ batch<const TBuilders extends readonly AnyQueryBuilder[]>(builders: TBuilders): AreAllBuildersSubscribable<TBuilders> extends true ? BatchQueryBuilder<TBuilders> : Omit<BatchQueryBuilder<TBuilders>, 'subscribe'>;
47
49
  aggregateFrom<TableName extends keyof Omit<DB['tables'], 'selectTable' | 'attachmentTable' | 'collaboratorsTable'> & string>(tableName: TableName): AggregationQueryBuilder<DB, TableName>;
48
50
  }
49
51
  export declare function createQueryBuilder<DB extends AnyDB>(config: {
@@ -84,6 +84,13 @@ class QueryBuilder extends where_query_builder_js_1.FilterableQueryBuilder {
84
84
  const response = await this._executor.execute(this);
85
85
  return response[0];
86
86
  }
87
+ async executeTakeFirst() {
88
+ const response = await this._executor.execute(this);
89
+ return response[0]?.[0] ?? null;
90
+ }
91
+ subscribe(callback) {
92
+ return this._executor.subscribe([this], callback);
93
+ }
87
94
  compile() {
88
95
  const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
89
96
  const metadata = [this._prepareMetadata()];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Executor } from './executor.js';
2
+ export type DriverSubscriptionResponse = {
3
+ id: string;
4
+ delta: object[];
5
+ tableName: string;
6
+ subscriptionId: string;
7
+ };
8
+ export declare class SubscriptionManager {
9
+ #private;
10
+ private executor;
11
+ private config;
12
+ constructor(executor: Executor, config: {
13
+ baseUrl: string;
14
+ apiKey: string;
15
+ timeZone?: string;
16
+ clientId?: string;
17
+ });
18
+ subscribe<TResult>(metadatas: any[], callback: (...results: TResult[]) => void): Promise<void>;
19
+ }
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SubscriptionManager = void 0;
7
+ const fast_json_patch_1 = __importDefault(require("fast-json-patch"));
8
+ const socket_io_client_1 = require("socket.io-client");
9
+ class SubscriptionManager {
10
+ executor;
11
+ config;
12
+ #socket = null;
13
+ #subscriptions = new Map();
14
+ #isConnecting = false;
15
+ constructor(executor, config) {
16
+ this.executor = executor;
17
+ this.config = config;
18
+ }
19
+ async #connect() {
20
+ if (this.#socket || this.#isConnecting) {
21
+ return;
22
+ }
23
+ this.#isConnecting = true;
24
+ try {
25
+ const socketUrl = this.config.baseUrl
26
+ .replace(/^http/, 'ws')
27
+ .replace('api', 'bamboo');
28
+ this.#socket = (0, socket_io_client_1.io)(socketUrl, {
29
+ auth: {
30
+ token: this.config.apiKey,
31
+ 'time-zone': this.config.timeZone || 'UTC',
32
+ 'client-id': this.config.clientId,
33
+ },
34
+ query: {},
35
+ });
36
+ this.#socket.emit('listen', { clientId: this.config.clientId });
37
+ this.#socket.on('patch', this.#handlePatch.bind(this));
38
+ await new Promise((resolve, reject) => {
39
+ if (!this.#socket)
40
+ return reject('Socket not initialized');
41
+ this.#socket.on('connect', () => {
42
+ resolve();
43
+ });
44
+ this.#socket.on('connect_error', err => {
45
+ reject(err);
46
+ });
47
+ });
48
+ this.#socket.emit('subscribe', { clientId: this.config.clientId });
49
+ }
50
+ finally {
51
+ this.#isConnecting = false;
52
+ }
53
+ }
54
+ async subscribe(metadatas, callback) {
55
+ await this.#connect();
56
+ const param = metadatas.map(metadata => ({
57
+ metadata,
58
+ options: {
59
+ returns: ['patch', 'affectedFields'],
60
+ },
61
+ }));
62
+ const result = await this.executor.rawRequest(`
63
+ query ($param: [SubscriptionMetadataInput]!) {
64
+ plugins {
65
+ subscriptions {
66
+ subscribe(subscriptions: $param) {
67
+ subscriptionId
68
+ data
69
+ }
70
+ }
71
+ }
72
+ }
73
+ `, { param }, { 'client-id': this.config.clientId });
74
+ const subscriptions = result.plugins.subscriptions.subscribe;
75
+ const initialData = subscriptions.map(s => s.data);
76
+ for (const sub of subscriptions) {
77
+ this.#subscriptions.set(sub.subscriptionId, {
78
+ data: sub.data,
79
+ callback: (patchedData) => {
80
+ // This needs to be more robust for batching.
81
+ // For now, we'll just update the single data and call back.
82
+ const idx = subscriptions.findIndex(s => s.subscriptionId === sub.subscriptionId);
83
+ if (idx !== -1) {
84
+ initialData[idx] = patchedData;
85
+ callback(...initialData);
86
+ }
87
+ },
88
+ });
89
+ }
90
+ callback(...initialData);
91
+ }
92
+ #handlePatch(response) {
93
+ for (const patch of response.patches) {
94
+ const sub = this.#subscriptions.get(patch.subscriptionId);
95
+ if (sub) {
96
+ // @ts-ignore
97
+ const { newDocument } = fast_json_patch_1.default.applyPatch(sub.data, patch.delta);
98
+ sub.data = newDocument;
99
+ sub.callback(newDocument);
100
+ }
101
+ }
102
+ }
103
+ }
104
+ exports.SubscriptionManager = SubscriptionManager;
105
+ //# sourceMappingURL=subscription-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-manager.js","sourceRoot":"","sources":["../../src/subscription-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { AggregationQueryMetaData, MetadataWithTableName } from '@taylordb/shared';
2
+ import { AnyDB } from './internal-types.js';
3
+ import { InferDataType } from './type-helpers.js';
4
+ export type AggregationValue = number | null | object | undefined;
5
+ export type Aggregates<DB extends AnyDB, TName extends keyof DB['tables'], TAggregations extends {
6
+ [K in keyof DB['tables'][TName] & string]?: readonly (keyof DB['aggregates'][DB['tables'][TName][K]['type']])[];
7
+ }> = {
8
+ -readonly [K in keyof TAggregations & keyof DB['tables'][TName]]: {
9
+ -readonly [P in NonNullable<TAggregations[K]>[number]]: DB['aggregates'][DB['tables'][TName][K]['type']][P];
10
+ };
11
+ };
12
+ type Head<T extends readonly any[]> = T extends readonly [infer H, ...any[]] ? H : never;
13
+ type Tail<T extends readonly any[]> = T extends readonly [any, ...infer R] ? R : never;
14
+ export type AggregateRecord<DB extends AnyDB, TName extends keyof DB['tables'], TGroupBy extends readonly (keyof DB['tables'][TName] & string)[], TAggregations extends {
15
+ [K in keyof DB['tables'][TName] & string]?: readonly (keyof DB['aggregates'][DB['tables'][TName][K]['type']])[];
16
+ }> = TGroupBy extends readonly [] ? {
17
+ count: number;
18
+ aggregates: Aggregates<DB, TName, TAggregations>;
19
+ } : {
20
+ field: Head<TGroupBy>;
21
+ value: InferDataType<DB['tables'][TName][Head<TGroupBy>]>;
22
+ count: number;
23
+ aggregates: Aggregates<DB, TName, TAggregations>;
24
+ } & (Tail<TGroupBy> extends readonly [] ? object : {
25
+ children: AggregateRecord<DB, TName, Tail<TGroupBy>, TAggregations>[];
26
+ });
27
+ export type AggregateNode = Omit<MetadataWithTableName<AggregationQueryMetaData>, 'fields'>;
28
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=aggregate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/@types/aggregate.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { DeleteMutationMetaData, MetadataWithTableName } from '@taylordb/shared';
2
+ export type DeleteNode = MetadataWithTableName<DeleteMutationMetaData>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/@types/delete.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { ColumnType, CreateMutationMetaData, MetadataWithTableName } from '@taylordb/shared';
2
+ import { QueryNode } from './internal-types.js';
3
+ export type InsertNode = MetadataWithTableName<CreateMutationMetaData> & {
4
+ returning: (string | QueryNode)[];
5
+ };
6
+ export type Insertable<T> = {
7
+ [K in keyof T]?: T[K] extends ColumnType<any, any, infer I, any> ? I : never;
8
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=insert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../src/@types/insert.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { MetadataWithTableName, ObjConfigurationVisibleField, SelectQueryMetaData } from '@taylordb/shared';
2
+ export type Filters = {
3
+ [key: string]: {
4
+ [key: string]: any;
5
+ };
6
+ };
7
+ export type Aggregates = {
8
+ [key: string]: {
9
+ [key: string]: any;
10
+ };
11
+ };
12
+ export type AnyDB = {
13
+ filters: Filters;
14
+ aggregates: Aggregates;
15
+ tables: any;
16
+ };
17
+ export type SelectionQueryNode = ObjConfigurationVisibleField<string> & {
18
+ queryType: 'link';
19
+ };
20
+ export type RootQueryNode = Omit<MetadataWithTableName<SelectQueryMetaData>, 'fields'> & {
21
+ fields?: ('*' | string | SelectionQueryNode)[];
22
+ queryType: 'root';
23
+ };
24
+ export type QueryNode = SelectionQueryNode | RootQueryNode;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=internal-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../../src/@types/internal-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { LinkColumnType } from '@taylordb/shared';
2
+ export type NonLinkColumnNames<T> = {
3
+ [K in keyof T]: T[K] extends LinkColumnType<any> ? never : K;
4
+ }[keyof T];
5
+ export type LinkColumnNames<T> = {
6
+ [K in keyof T]: T[K] extends LinkColumnType<any> ? K : never;
7
+ }[keyof T];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../../src/@types/query-builder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { ColumnType, LinkColumnType } from '@taylordb/shared';
2
+ import { QueryBuilder } from '../query-builder.js';
3
+ import { AnyDB } from './internal-types.js';
4
+ import { LinkColumnNames, NonLinkColumnNames } from './query-builder.js';
5
+ export type InferDataType<TColumn> = TColumn extends ColumnType<any, any, any, infer D> ? D : never;
6
+ export type TableShape<TTable> = {
7
+ [K in keyof TTable]: InferDataType<TTable[K]>;
8
+ };
9
+ type InferSubqueryResult<TSubquery> = TSubquery extends QueryBuilder<any, any, infer TSelection, any> ? TSelection[] : never;
10
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
11
+ type InferSubqueryShape<TFunc> = TFunc extends (b: any) => QueryBuilder<any, any, infer SubSelection, infer LinkName> ? {
12
+ [K in LinkName & string]: SubSelection[];
13
+ } : object;
14
+ export type ResolveSelection<DB extends AnyDB, TName extends keyof DB['tables'], TFields extends readonly any[], TCurrentSelection> = TCurrentSelection & UnionToIntersection<{
15
+ [I in keyof TFields]: TFields[I] extends NonLinkColumnNames<DB['tables'][TName]> ? {
16
+ [K in TFields[I]]: InferDataType<DB['tables'][TName][K]>;
17
+ } : TFields[I] extends (b: any) => QueryBuilder<any, any, any, any> ? InferSubqueryShape<TFields[I]> : object;
18
+ }[number]>;
19
+ export type ResolveWithPlain<DB extends AnyDB, TName extends keyof DB['tables'], TRelations extends (LinkColumnNames<DB['tables'][TName]> & string) | readonly (LinkColumnNames<DB['tables'][TName]> & string)[], TCurrentSelection> = TCurrentSelection & UnionToIntersection<{
20
+ [K in TRelations extends readonly any[] ? TRelations[number] : TRelations]: {
21
+ [P in K]: TableShape<DB['tables'][DB['tables'][TName][P] extends LinkColumnType<infer L> ? L : never]>[];
22
+ };
23
+ }[TRelations extends readonly any[] ? TRelations[number] : TRelations]>;
24
+ export type ResolveWithObject<TRelations extends Record<string, (qb: any) => QueryBuilder<any, any, any, any>>, TCurrentSelection> = TCurrentSelection & {
25
+ -readonly [K in keyof TRelations]: InferSubqueryResult<ReturnType<TRelations[K]>>;
26
+ };
27
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=type-helpers.js.map