joist-core 2.2.0-next.3 → 2.2.0-next.5

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 (86) hide show
  1. package/build/BaseEntity.js +1 -1
  2. package/build/BaseEntity.js.map +1 -1
  3. package/build/EntityManager.d.ts +2 -0
  4. package/build/EntityManager.d.ts.map +1 -1
  5. package/build/EntityManager.js +139 -78
  6. package/build/EntityManager.js.map +1 -1
  7. package/build/EntityMetadata.d.ts +17 -1
  8. package/build/EntityMetadata.d.ts.map +1 -1
  9. package/build/EntityMetadata.js.map +1 -1
  10. package/build/IndexManager.d.ts +2 -2
  11. package/build/IndexManager.d.ts.map +1 -1
  12. package/build/IndexManager.js +22 -16
  13. package/build/IndexManager.js.map +1 -1
  14. package/build/InstanceData.d.ts +14 -2
  15. package/build/InstanceData.d.ts.map +1 -1
  16. package/build/InstanceData.js +34 -3
  17. package/build/InstanceData.js.map +1 -1
  18. package/build/IsLoadedCache.d.ts.map +1 -1
  19. package/build/IsLoadedCache.js +14 -17
  20. package/build/IsLoadedCache.js.map +1 -1
  21. package/build/QueryParser.collectionJoins.js +8 -2
  22. package/build/QueryParser.collectionJoins.js.map +1 -1
  23. package/build/QueryParser.d.ts +4 -2
  24. package/build/QueryParser.d.ts.map +1 -1
  25. package/build/QueryParser.js.map +1 -1
  26. package/build/QueryParser.pruning.d.ts.map +1 -1
  27. package/build/QueryParser.pruning.js +8 -1
  28. package/build/QueryParser.pruning.js.map +1 -1
  29. package/build/ReactionsManager.d.ts +2 -1
  30. package/build/ReactionsManager.d.ts.map +1 -1
  31. package/build/ReactionsManager.js +53 -49
  32. package/build/ReactionsManager.js.map +1 -1
  33. package/build/configure.d.ts +3 -3
  34. package/build/configure.d.ts.map +1 -1
  35. package/build/configure.js +64 -0
  36. package/build/configure.js.map +1 -1
  37. package/build/dataloaders/fastWhereFilterHash.d.ts +15 -0
  38. package/build/dataloaders/fastWhereFilterHash.d.ts.map +1 -0
  39. package/build/dataloaders/fastWhereFilterHash.js +164 -0
  40. package/build/dataloaders/fastWhereFilterHash.js.map +1 -0
  41. package/build/dataloaders/fastWhereFilterHash.test.d.ts +2 -0
  42. package/build/dataloaders/fastWhereFilterHash.test.d.ts.map +1 -0
  43. package/build/dataloaders/fastWhereFilterHash.test.js +59 -0
  44. package/build/dataloaders/fastWhereFilterHash.test.js.map +1 -0
  45. package/build/dataloaders/findCountDataLoader.d.ts +1 -2
  46. package/build/dataloaders/findCountDataLoader.d.ts.map +1 -1
  47. package/build/dataloaders/findCountDataLoader.js +16 -13
  48. package/build/dataloaders/findCountDataLoader.js.map +1 -1
  49. package/build/dataloaders/findDataLoader.d.ts +7 -4
  50. package/build/dataloaders/findDataLoader.d.ts.map +1 -1
  51. package/build/dataloaders/findDataLoader.js +85 -80
  52. package/build/dataloaders/findDataLoader.js.map +1 -1
  53. package/build/dataloaders/findIdsDataLoader.d.ts +1 -2
  54. package/build/dataloaders/findIdsDataLoader.d.ts.map +1 -1
  55. package/build/dataloaders/findIdsDataLoader.js +16 -15
  56. package/build/dataloaders/findIdsDataLoader.js.map +1 -1
  57. package/build/dataloaders/findOrCreateDataLoader.js +1 -1
  58. package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
  59. package/build/dataloaders/findPaginatedDataLoader.d.ts +1 -2
  60. package/build/dataloaders/findPaginatedDataLoader.d.ts.map +1 -1
  61. package/build/dataloaders/findPaginatedDataLoader.js +25 -23
  62. package/build/dataloaders/findPaginatedDataLoader.js.map +1 -1
  63. package/build/drivers/EntityWriter.js +13 -7
  64. package/build/drivers/EntityWriter.js.map +1 -1
  65. package/build/drivers/buildRawQuery.d.ts.map +1 -1
  66. package/build/drivers/buildRawQuery.js +5 -1
  67. package/build/drivers/buildRawQuery.js.map +1 -1
  68. package/build/fields.d.ts.map +1 -1
  69. package/build/fields.js +16 -6
  70. package/build/fields.js.map +1 -1
  71. package/build/keys.d.ts.map +1 -1
  72. package/build/keys.js +8 -6
  73. package/build/keys.js.map +1 -1
  74. package/build/loadHints.d.ts +9 -0
  75. package/build/loadHints.d.ts.map +1 -1
  76. package/build/loadHints.js +63 -9
  77. package/build/loadHints.js.map +1 -1
  78. package/build/utils.d.ts +2 -0
  79. package/build/utils.d.ts.map +1 -1
  80. package/build/utils.js +12 -0
  81. package/build/utils.js.map +1 -1
  82. package/package.json +3 -5
  83. package/build/caches.d.ts +0 -6
  84. package/build/caches.d.ts.map +0 -1
  85. package/build/caches.js +0 -42
  86. package/build/caches.js.map +0 -1
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fastWhereFilterHash_1 = require("./fastWhereFilterHash");
4
+ describe("fastWhereFilterHash", () => {
5
+ it("returns stable hashes for object keys regardless of insertion order", () => {
6
+ const first = (0, fastWhereFilterHash_1.fastWhereFilterHash)({ b: 2, a: "one" });
7
+ const second = (0, fastWhereFilterHash_1.fastWhereFilterHash)({ a: "one", b: 2 });
8
+ expect(first).toEqual("o2{1:a=s3:one;1:b=d2;}");
9
+ expect(second).toEqual(first);
10
+ });
11
+ it("uses type tags to distinguish similar scalar values", () => {
12
+ expect([
13
+ (0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: "1" }),
14
+ (0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: 1 }),
15
+ (0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: true }),
16
+ (0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: 1n }),
17
+ (0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: null }),
18
+ (0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: undefined }),
19
+ ]).toEqual([
20
+ "o1{5:value=s1:1;}",
21
+ "o1{5:value=d1;}",
22
+ "o1{5:value=b1;}",
23
+ "o1{5:value=i1;}",
24
+ "o1{5:value=n;}",
25
+ "o1{5:value=u;}",
26
+ ]);
27
+ });
28
+ it("hashes nested arrays and plain objects", () => {
29
+ const hash = (0, fastWhereFilterHash_1.fastWhereFilterHash)({ ids: [1, 2], nested: { name: "a1" } });
30
+ expect(hash).toEqual("o2{3:ids=a2[d1;d2;]6:nested=o1{4:name=s2:a1;}}");
31
+ });
32
+ it("hashes date values with their db representation", () => {
33
+ expect((0, fastWhereFilterHash_1.fastWhereFilterHash)({ at: new Date("2020-01-02T03:04:05.000Z") })).toEqual("o1{2:at=t24:2020-01-02T03:04:05.000Z;}");
34
+ });
35
+ it("hashes byte array values by their contents", () => {
36
+ expect((0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: new Uint8Array([11, 22]) })).toEqual("o1{5:value=y10:Uint8Array:4:CxY=;}");
37
+ });
38
+ it("hashes custom value objects by constructor and enumerable values", () => {
39
+ expect((0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: new SupportedValue("a1") })).toEqual("o1{5:value=c14:SupportedValue:1{4:name=s2:a1;}}");
40
+ });
41
+ it("returns undefined for unsupported object types", () => {
42
+ expect([
43
+ (0, fastWhereFilterHash_1.fastWhereFilterHash)(new Map([["name", "a1"]])),
44
+ (0, fastWhereFilterHash_1.fastWhereFilterHash)(function unsupportedFunction() { }),
45
+ ]).toEqual([undefined, undefined]);
46
+ });
47
+ it("returns undefined for circular structures", () => {
48
+ const value = { name: "a1" };
49
+ value.self = value;
50
+ expect((0, fastWhereFilterHash_1.fastWhereFilterHash)(value)).toEqual(undefined);
51
+ });
52
+ });
53
+ class SupportedValue {
54
+ name;
55
+ constructor(name) {
56
+ this.name = name;
57
+ }
58
+ }
59
+ //# sourceMappingURL=fastWhereFilterHash.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastWhereFilterHash.test.js","sourceRoot":"","sources":["../../src/dataloaders/fastWhereFilterHash.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- import DataLoader from "dataloader";
2
1
  import { Entity } from "../Entity";
3
2
  import { FilterAndSettings } from "../EntityFilter";
4
3
  import { EntityManager, MaybeAbstractEntityConstructor } from "../EntityManager";
5
4
  export declare const findCountOperation = "find-count";
6
- export declare function findCountDataLoader<T extends Entity>(em: EntityManager, type: MaybeAbstractEntityConstructor<T>, filter: FilterAndSettings<T>): DataLoader<FilterAndSettings<T>, number>;
5
+ export declare function findCountDataLoader<T extends Entity>(em: EntityManager, type: MaybeAbstractEntityConstructor<T>, filter: FilterAndSettings<T>): Promise<number>;
7
6
  //# sourceMappingURL=findCountDataLoader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"findCountDataLoader.d.ts","sourceRoot":"","sources":["../../src/dataloaders/findCountDataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAajF,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAClD,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,8BAA8B,CAAC,CAAC,CAAC,EACvC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC3B,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CA0E1C"}
1
+ {"version":3,"file":"findCountDataLoader.d.ts","sourceRoot":"","sources":["../../src/dataloaders/findCountDataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAcjF,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAClD,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,8BAA8B,CAAC,CAAC,CAAC,EACvC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,CA6EjB"}
@@ -16,18 +16,21 @@ function findCountDataLoader(em, type, filter) {
16
16
  }
17
17
  const meta = (0, EntityMetadata_1.getMetadata)(type);
18
18
  const query = (0, QueryParser_1.parseFindQuery)(meta, where, opts);
19
+ const { findSettings } = em["prepareFind"](meta, exports.findCountOperation, query, { ...opts, checkLimit: false });
20
+ const bindings = [];
21
+ (0, findDataLoader_1.collectValues)(bindings, query);
22
+ const prepared = { filter, query, bindings, findSettings };
19
23
  const batchKey = (0, findDataLoader_1.getBatchKeyFromGenericStructure)(meta, query);
20
- return em.getLoader(exports.findCountOperation, batchKey, async (queries) => {
24
+ return em
25
+ .getLoader(exports.findCountOperation, batchKey, async (entries) => {
21
26
  // We're guaranteed that these queries all have the same structure
22
27
  // Don't bother with the CTE if there's only 1 query (or each query has exactly the same filter values)
23
- if (queries.length === 1) {
24
- const { where, ...options } = queries[0];
25
- const meta = (0, EntityMetadata_1.getMetadata)(type);
26
- const query = (0, QueryParser_1.parseFindQuery)(meta, where, options);
28
+ if (entries.length === 1) {
29
+ const { query, findSettings } = entries[0];
27
30
  const primary = query.tables.find((t) => t.join === "primary") ?? (0, utils_1.fail)("No primary");
28
31
  query.selects = [`count(distinct ${(0, keywords_1.kq)(primary.alias)}.id) as count`];
29
32
  query.orderBys = [];
30
- const rows = await em["executeFind"](meta, exports.findCountOperation, query, { ...options, checkLimit: false });
33
+ const rows = await em["executePreparedFind"](meta, exports.findCountOperation, query, findSettings, false);
31
34
  return [Number(rows[0].count)];
32
35
  }
33
36
  // WITH _find (tag, arg1, arg2) AS (
@@ -40,8 +43,7 @@ function findCountDataLoader(em, type, filter) {
40
43
  // FROM author a WHERE a.first_name = _find.arg1 OR a.last_name = _find.arg2
41
44
  // ) _data
42
45
  // Build the list of 'arg1', 'arg2', ... strings
43
- const { where, ...options } = queries[0];
44
- const query = (0, QueryParser_1.parseFindQuery)((0, EntityMetadata_1.getMetadata)(type), where, options);
46
+ const { query, findSettings } = entries[0];
45
47
  const argsColumns = (0, findDataLoader_1.collectAndReplaceArgs)(query);
46
48
  argsColumns.unshift({ columnName: "tag", dbType: "int" });
47
49
  // We're not returning the entities, just counting them...
@@ -56,19 +58,20 @@ function findCountDataLoader(em, type, filter) {
56
58
  { join: "lateral", query: query, table: meta.tableName, alias: "_data", fromAlias: "_f" },
57
59
  ],
58
60
  // For each unique query, capture its filter values in `bindings` to populate the CTE _find table
59
- ctes: [(0, unnest_1.buildUnnestCte)("_find", argsColumns, (0, findDataLoader_1.createColumnValues)(meta, argsColumns, queries))],
61
+ ctes: [(0, unnest_1.buildUnnestCte)("_find", argsColumns, (0, findDataLoader_1.createColumnValuesFromPrepared)(argsColumns, entries))],
60
62
  orderBys: [],
61
63
  };
62
- const rows = await em["executeFind"](meta, exports.findCountOperation, query2, { ...options, checkLimit: false });
64
+ const rows = await em["executePreparedFind"](meta, exports.findCountOperation, query2, findSettings, false);
63
65
  // Make an empty array for each batched query, per the dataloader contract
64
- const results = queries.map(() => 0);
66
+ const results = entries.map(() => 0);
65
67
  // Then put each row into the tagged query it matched
66
68
  for (const row of rows) {
67
69
  results[row.tag] = Number(row.count);
68
70
  }
69
71
  return results;
70
72
  },
71
- // Our filter/order tuple is a complex object, so object-hash it to ensure caching works
72
- { cacheKeyFn: findDataLoader_1.whereFilterHash });
73
+ // Our filter/order tuple is a complex object, so use a stable cache key to ensure caching works.
74
+ { cacheKeyFn: (entry) => (0, findDataLoader_1.whereFilterHash)(entry.filter) })
75
+ .load(prepared);
73
76
  }
74
77
  //# sourceMappingURL=findCountDataLoader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findCountDataLoader.js","sourceRoot":"","sources":["../../src/dataloaders/findCountDataLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findCountDataLoader.js","sourceRoot":"","sources":["../../src/dataloaders/findCountDataLoader.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,12 @@
1
- import DataLoader from "dataloader";
2
1
  import { Entity } from "../Entity";
3
2
  import { FilterAndSettings } from "../EntityFilter";
4
3
  import { EntityManager, MaybeAbstractEntityConstructor } from "../EntityManager";
5
4
  import { EntityMetadata } from "../EntityMetadata";
6
5
  import { ParsedCteClause, ParsedFindQuery } from "../QueryParser";
7
- import { optimizeCollectionJoins } from "../QueryParser.collectionJoins";
8
6
  import { OpColumn } from "../drivers/EntityWriter";
9
7
  import { LoadHint } from "../loadHints";
10
8
  export declare const findOperation = "find";
11
- export declare function findDataLoader<T extends Entity>(em: EntityManager, type: MaybeAbstractEntityConstructor<T>, filter: FilterAndSettings<T>, hint: LoadHint<T> | undefined): DataLoader<FilterAndSettings<T>, T[]>;
9
+ export declare function findDataLoader<T extends Entity>(em: EntityManager, type: MaybeAbstractEntityConstructor<T>, filter: FilterAndSettings<T>, hint: LoadHint<T> | undefined): Promise<T[]>;
12
10
  export declare function whereFilterHash(where: FilterAndSettings<any>): any;
13
11
  /**
14
12
  * Recursively finds args in `query` and replaces them with `_find.argX` placeholders.
@@ -19,7 +17,12 @@ export declare function collectAndReplaceArgs(query: ParsedFindQuery): {
19
17
  columnName: string;
20
18
  dbType: string;
21
19
  }[];
22
- export declare function createColumnValues(meta: EntityMetadata, columns: OpColumn[], queries: readonly FilterAndSettings<any>[], optimizeOptions?: Parameters<typeof optimizeCollectionJoins>[1]): any[][];
20
+ /** Builds `_find` column values from already prepared queries. */
21
+ export declare function createColumnValuesFromPrepared(columns: OpColumn[], entries: readonly {
22
+ bindings: any[];
23
+ }[]): any[][];
24
+ /** Pushes the arg values of a given query in the cross-query `bindings` array. */
25
+ export declare function collectValues(bindings: any[], query: ParsedFindQuery): void;
23
26
  /**
24
27
  * Creates a `VALUES (...), (...)` SQL string for use in a CTE, typically for our
25
28
  * batch INSERTs/UPDATEs where the CTE is how we inject N rows of data/params into
@@ -1 +1 @@
1
- {"version":3,"file":"findDataLoader.d.ts","sourceRoot":"","sources":["../../src/dataloaders/findDataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAGpC,OAAO,EAAE,MAAM,EAAY,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,8BAA8B,EAAoB,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAEL,eAAe,EACf,eAAe,EAMhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAMxC,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAC7C,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,8BAA8B,CAAC,CAAC,CAAC,EACvC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,GAC5B,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAmHvC;AA0BD,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,GAAG,CAElE;AASD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAiCtG;AAaD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,QAAQ,EAAE,EACnB,OAAO,EAAE,SAAS,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAC1C,eAAe,GAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAM,GAClE,GAAG,EAAE,EAAE,CAkBT;AA2ED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,EACjD,IAAI,EAAE,SAAS,GAAG,EAAE,EAEpB,QAAQ,EAAE,SAAS,GAAG,EAAE,GACvB,eAAe,CAYjB;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAUpG"}
1
+ {"version":3,"file":"findDataLoader.d.ts","sourceRoot":"","sources":["../../src/dataloaders/findDataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,8BAA8B,EAAoB,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAEL,eAAe,EACf,eAAe,EAQhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC,eAAO,MAAM,aAAa,SAAS,CAAC;AAUpC,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAC7C,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,8BAA8B,CAAC,CAAC,CAAC,EACvC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,GAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAyGd;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,GAAG,CAIlE;AASD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAiCtG;AAaD,kEAAkE;AAClE,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAA;CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAUpH;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAc3E;AAuHD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,EACjD,IAAI,EAAE,SAAS,GAAG,EAAE,EAEpB,QAAQ,EAAE,SAAS,GAAG,EAAE,GACvB,eAAe,CAYjB;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAUpG"}
@@ -1,30 +1,23 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.findOperation = void 0;
7
4
  exports.findDataLoader = findDataLoader;
8
5
  exports.whereFilterHash = whereFilterHash;
9
6
  exports.collectAndReplaceArgs = collectAndReplaceArgs;
10
- exports.createColumnValues = createColumnValues;
7
+ exports.createColumnValuesFromPrepared = createColumnValuesFromPrepared;
8
+ exports.collectValues = collectValues;
11
9
  exports.buildValuesCte = buildValuesCte;
12
10
  exports.getBatchKeyFromGenericStructure = getBatchKeyFromGenericStructure;
13
- const object_hash_1 = __importDefault(require("object-hash"));
14
- const Aliases_1 = require("../Aliases");
15
- const Entity_1 = require("../Entity");
16
11
  const EntityGraphQLFilter_1 = require("../EntityGraphQLFilter");
17
12
  const EntityManager_1 = require("../EntityManager");
18
13
  const EntityMetadata_1 = require("../EntityMetadata");
19
14
  const HintTree_1 = require("../HintTree");
20
15
  const QueryParser_1 = require("../QueryParser");
21
- const QueryParser_collectionJoins_1 = require("../QueryParser.collectionJoins");
22
16
  const QueryVisitor_1 = require("../QueryVisitor");
23
17
  const keywords_1 = require("../keywords");
24
- const temporal_1 = require("../temporal");
25
- const temporalMappers_1 = require("../temporalMappers");
26
18
  const unnest_1 = require("../unnest");
27
19
  const utils_1 = require("../utils");
20
+ const fastWhereFilterHash_1 = require("./fastWhereFilterHash");
28
21
  exports.findOperation = "find";
29
22
  function findDataLoader(em, type, filter, hint) {
30
23
  const { where, ...opts } = filter;
@@ -33,25 +26,30 @@ function findDataLoader(em, type, filter, hint) {
33
26
  }
34
27
  const meta = (0, EntityMetadata_1.getMetadata)(type);
35
28
  const query = (0, QueryParser_1.parseFindQuery)(meta, where, opts);
29
+ const { checkLimit, findSettings } = em["prepareFind"](meta, exports.findOperation, query, {
30
+ ...opts,
31
+ limit: em.entityLimit,
32
+ });
33
+ const bindings = [];
34
+ collectValues(bindings, query);
35
+ const prepared = { filter, query, bindings, findSettings, checkLimit };
36
36
  const batchKey = getBatchKeyFromGenericStructure(meta, query);
37
- return em.getLoader(exports.findOperation,
37
+ return em
38
+ .getLoader(exports.findOperation,
38
39
  // It's unlikely we'll have simultaneous em.finds with the same WHERE clause structure
39
40
  // but lots of different load hints, and it'd be complicated to implement the preloading
40
41
  // in a way that doesn't naively over-fetch data (which our loadDataLoader does prevent,
41
42
  // but it's simpler b/c it's given exact ids to load), so for now just include the load
42
43
  // hint in the batch key.
43
- `${batchKey}-${JSON.stringify(hint)}`, async (queries) => {
44
+ `${batchKey}-${JSON.stringify(hint)}`, async (entries) => {
44
45
  // We're guaranteed that these queries all have the same structure
45
46
  // Don't bother with the CTE if there's only 1 query (or each query has exactly the same filter values)
46
- if (queries.length === 1) {
47
- const { where, ...opts } = queries[0];
48
- // We have to parseFindQuery queries[0], b/c our query variable may be captured from
49
- // a prior invocation that instantiated our dataloader instance.
50
- const query = (0, QueryParser_1.parseFindQuery)(meta, where, opts);
47
+ if (entries.length === 1) {
48
+ const { query, findSettings, checkLimit } = entries[0];
51
49
  // Maybe add preload joins
52
50
  const { preloader } = (0, EntityManager_1.getEmInternalApi)(em);
53
51
  const preloadHydrator = preloader && hint && preloader.addPreloading(meta, (0, HintTree_1.buildHintTree)(hint), query);
54
- const rows = await em["executeFind"](meta, exports.findOperation, query, opts);
52
+ const rows = await em["executePreparedFind"](meta, exports.findOperation, query, findSettings, checkLimit);
55
53
  const entities = em.hydrate(type, rows);
56
54
  preloadHydrator?.(rows, entities);
57
55
  return [entities];
@@ -65,25 +63,17 @@ function findDataLoader(em, type, filter, hint) {
65
63
  // WHERE a.first_name = _find.arg0 OR a.last_name = _find.arg1
66
64
  // GROUP BY a.id
67
65
  // Build the list of 'arg1', 'arg2', ... strings
68
- const { where, ...options } = queries[0];
69
- const query = (0, QueryParser_1.parseFindQuery)((0, EntityMetadata_1.getMetadata)(type), where, options);
66
+ const { query, findSettings, checkLimit } = entries[0];
70
67
  const { preloader } = (0, EntityManager_1.getEmInternalApi)(em);
71
68
  const preloadJoins = preloader && hint && preloader.getPreloadJoins(meta, (0, HintTree_1.buildHintTree)(hint), query);
72
- // Let plugins see the pre-batched query AST
73
- const { checkLimit, findSettings } = em["prepareFind"](meta, exports.findOperation, query, {
74
- ...options,
75
- limit: em.entityLimit,
76
- });
77
69
  const argsColumns = collectAndReplaceArgs(query);
78
70
  argsColumns.unshift({ columnName: "tag", dbType: "int" });
71
+ const columnValues = createColumnValuesFromPrepared(argsColumns, entries);
79
72
  const query2 = {
80
73
  ...query,
81
74
  selects: ["array_agg(_find.tag) as _tags", ...query.selects],
82
75
  tables: [{ join: "cross", table: "_find", alias: "_find" }, ...query.tables],
83
- ctes: [
84
- (0, unnest_1.buildUnnestCte)("_find", argsColumns, createColumnValues(meta, argsColumns, queries, findSettings)),
85
- ...(query.ctes ?? []),
86
- ],
76
+ ctes: [(0, unnest_1.buildUnnestCte)("_find", argsColumns, columnValues), ...(query.ctes ?? [])],
87
77
  };
88
78
  if (preloadJoins) {
89
79
  query2.selects.push(...preloadJoins.flatMap((j) =>
@@ -93,14 +83,7 @@ function findDataLoader(em, type, filter, hint) {
93
83
  query2.tables.push(...preloadJoins.map((j) => j.join));
94
84
  }
95
85
  // Because we want to use `array_agg(tag)`, add `GROUP BY`s to the values we're selecting
96
- query2.groupBys = query2.selects
97
- .filter((s) => typeof s === "string")
98
- .filter((s) => !s.includes("array_agg") && !s.includes("CASE") && !s.includes(" as "))
99
- .map((s) => {
100
- // Make a liberal assumption that this is a `a.id` or `a_st0.id` string
101
- const alias = (0, QueryParser_1.parseAlias)(s);
102
- return { alias, column: "id" };
103
- });
86
+ query2.groupBys = buildGroupBys(query2.selects);
104
87
  // Also because of our `array_agg` group by, add any order bys to the group by
105
88
  const [primary] = (0, QueryParser_1.getTables)(query2);
106
89
  for (const { alias, column } of query2.orderBys) {
@@ -112,7 +95,7 @@ function findDataLoader(em, type, filter, hint) {
112
95
  const entities = em.hydrate(type, rows);
113
96
  preloadJoins?.forEach((j) => j.hydrator(rows, entities));
114
97
  // Make an empty array for each batched query, per the dataloader contract
115
- const results = queries.map(() => []);
98
+ const results = entries.map(() => []);
116
99
  // Then put each row into the tagged query it matched
117
100
  rows.forEach((row, i) => {
118
101
  const entity = entities[i];
@@ -122,38 +105,15 @@ function findDataLoader(em, type, filter, hint) {
122
105
  });
123
106
  return results;
124
107
  },
125
- // Our filter/order tuple is a complex object, so object-hash it to ensure caching works
126
- { cacheKeyFn: whereFilterHash });
127
- }
128
- const Temporal = (0, temporal_1.maybeRequireTemporal)()?.Temporal;
129
- // If a where clause includes an entity, object-hash cannot hash it, so just use the id.
130
- function replacer(v) {
131
- if ((0, Entity_1.isEntity)(v)) {
132
- // Use toString() instead of id so that new entities are kept separate, i.e. `Author#2`
133
- return v.toString();
134
- }
135
- else if ((0, Aliases_1.isAlias)(v)) {
136
- // Strip out `{ as: ...alias proxy... }` from the `em.find` inline conditions
137
- return "alias";
138
- }
139
- else if (Temporal) {
140
- if (v instanceof Temporal.ZonedDateTime) {
141
- return temporalMappers_1.zonedDateTimeMapper.toDb(v);
142
- }
143
- else if (v instanceof Temporal.PlainDateTime) {
144
- return temporalMappers_1.plainDateTimeMapper.toDb(v);
145
- }
146
- else if (v instanceof Temporal.PlainDate) {
147
- return temporalMappers_1.plainDateMapper.toDb(v);
148
- }
149
- else if (v instanceof Temporal.PlainTime) {
150
- return temporalMappers_1.plainTimeMapper.toDb(v);
151
- }
152
- }
153
- return v;
108
+ // Our filter/order tuple is a complex object, so use a stable cache key to ensure caching works.
109
+ { cacheKeyFn: (entry) => whereFilterHash(entry.filter) })
110
+ .load(prepared);
154
111
  }
155
112
  function whereFilterHash(where) {
156
- return (0, object_hash_1.default)(where, { replacer, algorithm: "md5" });
113
+ const key = (0, fastWhereFilterHash_1.fastWhereFilterHash)(where);
114
+ if (key === undefined)
115
+ throw new Error("fastWhereFilterHash could not serialize find filter");
116
+ return key;
157
117
  }
158
118
  class ArgCounter {
159
119
  index = 0;
@@ -215,22 +175,15 @@ function rewriteToRawCondition(c, argsIndex) {
215
175
  bindings: [],
216
176
  };
217
177
  }
218
- function createColumnValues(meta, columns, queries, optimizeOptions = {}) {
178
+ /** Builds `_find` column values from already prepared queries. */
179
+ function createColumnValuesFromPrepared(columns, entries) {
219
180
  const columnValues = Array(columns.length);
220
181
  for (let i = 0; i < columns.length; i++)
221
182
  columnValues[i] = [];
222
- queries.forEach((filter, i) => {
223
- const { where, ...opts } = filter;
224
- // add this query's `tag` value
183
+ entries.forEach((entry, i) => {
225
184
  columnValues[0].push(i);
226
- const bindings = [];
227
- const parsed = (0, QueryParser_1.parseFindQuery)(meta, where, opts);
228
- // Make sure to call `optimizeCollectionJoins` so that our arg order matches conditions
229
- // that might have been moved into an EXISTS subquery.
230
- (0, QueryParser_collectionJoins_1.optimizeCollectionJoins)(parsed, optimizeOptions);
231
- collectValues(bindings, parsed);
232
- for (let j = 0; j < bindings.length; j++) {
233
- columnValues[j + 1].push(bindings[j]);
185
+ for (let j = 0; j < entry.bindings.length; j++) {
186
+ columnValues[j + 1].push(entry.bindings[j]);
234
187
  }
235
188
  });
236
189
  return columnValues;
@@ -252,6 +205,58 @@ function collectValues(bindings, query) {
252
205
  },
253
206
  });
254
207
  }
208
+ /** Returns true for select expressions that do not need to be represented in GROUP BY. */
209
+ function isAggregateSelect(select) {
210
+ return select.toLowerCase().includes("array_agg(");
211
+ }
212
+ /** Builds GROUP BYs for selected values, accounting for whole-row selects that are grouped by primary key. */
213
+ function buildGroupBys(selects) {
214
+ const sqlSelects = selects.map(selectSqlForGroupBy);
215
+ const wholeRowAliases = new Set(sqlSelects
216
+ .filter((select) => !isAggregateSelect(select) && stripSelectAlias(select).endsWith(".*"))
217
+ .map(QueryParser_1.parseAlias));
218
+ return sqlSelects
219
+ .filter((select) => !isAggregateSelect(select))
220
+ .filter((select) => !isCoveredByWholeRowGroupBy(select, wholeRowAliases))
221
+ .map((select) => groupBySelect(select));
222
+ }
223
+ /** Returns a SQL string for group-by analysis, until we support bindings in ParsedGroupBy. */
224
+ function selectSqlForGroupBy(select) {
225
+ if (typeof select === "string") {
226
+ return select;
227
+ }
228
+ throw new Error(`find batching does not support grouped selects with bindings: ${select.sql}`);
229
+ }
230
+ /** Builds a GROUP BY for a selected value so `array_agg(_find.tag)` can coexist with plugin-rewritten selects. */
231
+ function groupBySelect(select) {
232
+ const expression = stripSelectAlias(select);
233
+ if (expression.endsWith(".*")) {
234
+ return { alias: (0, QueryParser_1.parseAlias)(expression), column: "id" };
235
+ }
236
+ return { expression };
237
+ }
238
+ /** Removes a trailing SQL alias from a select expression, i.e. `(a.id) as id` -> `(a.id)`. */
239
+ function stripSelectAlias(select) {
240
+ const match = /^(.*)\s+as\s+[^\s]+$/i.exec(select);
241
+ return match?.[1] ?? select;
242
+ }
243
+ /** Returns true when an expression is functionally covered by an already-grouped whole-row alias. */
244
+ function isCoveredByWholeRowGroupBy(select, wholeRowAliases) {
245
+ const expression = stripSelectAlias(select);
246
+ if (expression.endsWith(".*")) {
247
+ return false;
248
+ }
249
+ const aliases = findSelectedAliases(expression);
250
+ return aliases.length > 0 && aliases.every((alias) => wholeRowAliases.has(alias));
251
+ }
252
+ /** Finds SQL aliases referenced as `alias.column` or `"alias".column`, i.e. `a.first_name` -> `a`. */
253
+ function findSelectedAliases(expression) {
254
+ const aliases = new Set();
255
+ for (const match of expression.matchAll(/(?:"([^"]+)"|([a-zA-Z_][\w]*))\./g)) {
256
+ aliases.add(match[1] ?? match[2]);
257
+ }
258
+ return [...aliases];
259
+ }
255
260
  /** Replaces all values with `*` so we can see the generic structure of the query. */
256
261
  function stripValues(query) {
257
262
  (0, QueryVisitor_1.visitConditions)(query, {
@@ -1 +1 @@
1
- {"version":3,"file":"findDataLoader.js","sourceRoot":"","sources":["../../src/dataloaders/findDataLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findDataLoader.js","sourceRoot":"","sources":["../../src/dataloaders/findDataLoader.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- import DataLoader from "dataloader";
2
1
  import { Entity } from "../Entity";
3
2
  import { FilterAndSettings } from "../EntityFilter";
4
3
  import { EntityManager, MaybeAbstractEntityConstructor } from "../EntityManager";
5
4
  export declare const findIdsOperation = "find-ids";
6
- export declare function findIdsDataLoader<T extends Entity>(em: EntityManager, type: MaybeAbstractEntityConstructor<T>, filter: FilterAndSettings<T>): DataLoader<FilterAndSettings<T>, string[]>;
5
+ export declare function findIdsDataLoader<T extends Entity>(em: EntityManager, type: MaybeAbstractEntityConstructor<T>, filter: FilterAndSettings<T>): Promise<string[]>;
7
6
  //# sourceMappingURL=findIdsDataLoader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"findIdsDataLoader.d.ts","sourceRoot":"","sources":["../../src/dataloaders/findIdsDataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAcjF,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAE3C,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,8BAA8B,CAAC,CAAC,CAAC,EACvC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC3B,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CA2E5C"}
1
+ {"version":3,"file":"findIdsDataLoader.d.ts","sourceRoot":"","sources":["../../src/dataloaders/findIdsDataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAejF,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAE3C,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,8BAA8B,CAAC,CAAC,CAAC,EACvC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CA4EnB"}
@@ -17,19 +17,21 @@ function findIdsDataLoader(em, type, filter) {
17
17
  }
18
18
  const meta = (0, EntityMetadata_1.getMetadata)(type);
19
19
  const query = (0, QueryParser_1.parseFindQuery)(meta, where, opts);
20
+ const { findSettings } = em["prepareFind"](meta, exports.findIdsOperation, query, { ...opts, limit: undefined });
21
+ const bindings = [];
22
+ (0, findDataLoader_1.collectValues)(bindings, query);
23
+ const prepared = { filter, query, bindings, findSettings };
20
24
  const batchKey = (0, findDataLoader_1.getBatchKeyFromGenericStructure)(meta, query);
21
- return em.getLoader(exports.findIdsOperation, batchKey, async (queries) => {
25
+ return em
26
+ .getLoader(exports.findIdsOperation, batchKey, async (entries) => {
22
27
  // We're guaranteed that these queries all have the same structure
23
28
  // Don't bother with the CTE if there's only 1 query (or each query has exactly the same filter values)
24
- if (queries.length === 1) {
25
- const { where, ...options } = queries[0];
26
- const meta = (0, EntityMetadata_1.getMetadata)(type);
27
- const query = (0, QueryParser_1.parseFindQuery)(meta, where, options);
29
+ if (entries.length === 1) {
30
+ const { query, findSettings } = entries[0];
28
31
  const primary = query.tables.find((t) => t.join === "primary") ?? (0, utils_1.fail)("No primary");
29
32
  query.selects = [`${(0, keywords_1.kq)(primary.alias)}.id as id`];
30
33
  query.orderBys = [{ alias: primary.alias, column: "id", order: "ASC" }];
31
- // explicitly pass limit: undefined to avoid executeFind applying the default entityLimit
32
- const rows = await em["executeFind"](meta, exports.findIdsOperation, query, { ...options, limit: undefined });
34
+ const rows = await em["executePreparedFind"](meta, exports.findIdsOperation, query, findSettings, false);
33
35
  return [rows.map((row) => (0, keys_1.keyToTaggedId)(meta, row.id))];
34
36
  }
35
37
  // WITH _find (tag, arg1, arg2) AS (
@@ -42,8 +44,7 @@ function findIdsDataLoader(em, type, filter) {
42
44
  // FROM author a WHERE a.first_name = _find.arg1 OR a.last_name = _find.arg2
43
45
  // ) _data
44
46
  // Build the list of 'arg1', 'arg2', ... strings
45
- const { where, ...options } = queries[0];
46
- const query = (0, QueryParser_1.parseFindQuery)((0, EntityMetadata_1.getMetadata)(type), where, options);
47
+ const { query, findSettings } = entries[0];
47
48
  const argsColumns = (0, findDataLoader_1.collectAndReplaceArgs)(query);
48
49
  argsColumns.unshift({ columnName: "tag", dbType: "int" });
49
50
  // We're not returning the entities, just selecting their IDs
@@ -57,20 +58,20 @@ function findIdsDataLoader(em, type, filter) {
57
58
  { join: "lateral", query, table: meta.tableName, alias: "_data", fromAlias: "_f" },
58
59
  ],
59
60
  // For each unique query, capture its filter values in `bindings` to populate the CTE _find table
60
- ctes: [(0, unnest_1.buildUnnestCte)("_find", argsColumns, (0, findDataLoader_1.createColumnValues)(meta, argsColumns, queries))],
61
+ ctes: [(0, unnest_1.buildUnnestCte)("_find", argsColumns, (0, findDataLoader_1.createColumnValuesFromPrepared)(argsColumns, entries))],
61
62
  orderBys: [],
62
63
  };
63
- // explicitly pass limit: undefined to avoid executeFind applying the default entityLimit
64
- const rows = await em["executeFind"](meta, exports.findIdsOperation, query2, { ...options, limit: undefined });
64
+ const rows = await em["executePreparedFind"](meta, exports.findIdsOperation, query2, findSettings, false);
65
65
  // Make an empty array for each batched query, per the dataloader contract
66
- const results = queries.map(() => []);
66
+ const results = entries.map(() => []);
67
67
  // Then put each row's ID into the tagged query it matched
68
68
  for (const row of rows) {
69
69
  results[row.tag].push((0, keys_1.keyToTaggedId)(meta, row.id));
70
70
  }
71
71
  return results;
72
72
  },
73
- // Our filter/order tuple is a complex object, so object-hash it to ensure caching works
74
- { cacheKeyFn: findDataLoader_1.whereFilterHash });
73
+ // Our filter/order tuple is a complex object, so use a stable cache key to ensure caching works.
74
+ { cacheKeyFn: (entry) => (0, findDataLoader_1.whereFilterHash)(entry.filter) })
75
+ .load(prepared);
75
76
  }
76
77
  //# sourceMappingURL=findIdsDataLoader.js.map