@pol-studios/db 1.0.10 → 1.0.12

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 (120) hide show
  1. package/dist/DataLayerContext-CL6alnkb.d.ts +755 -0
  2. package/dist/UserMetadataContext-B8gVWGMl.d.ts +35 -0
  3. package/dist/UserMetadataContext-DntmpK41.d.ts +33 -0
  4. package/dist/auth/context.d.ts +3 -2
  5. package/dist/auth/context.js +5 -4
  6. package/dist/auth/guards.js +2 -2
  7. package/dist/auth/hooks.d.ts +3 -3
  8. package/dist/auth/hooks.js +6 -5
  9. package/dist/auth/index.d.ts +3 -2
  10. package/dist/auth/index.js +8 -6
  11. package/dist/{canvas-UVNDA54X.node → canvas-C4TBBDUL.node} +0 -0
  12. package/dist/{canvas-75Y7XMF3.js → canvas-ZQNCL7JL.js} +2 -2
  13. package/dist/chunk-5EFDS7SR.js +205 -0
  14. package/dist/chunk-5EFDS7SR.js.map +1 -0
  15. package/dist/{chunk-BRTW7CO5.js → chunk-7SCJNYTE.js} +1 -9
  16. package/dist/chunk-7SCJNYTE.js.map +1 -0
  17. package/dist/chunk-DJ6VLEAL.js +247 -0
  18. package/dist/chunk-DJ6VLEAL.js.map +1 -0
  19. package/dist/{chunk-Y3INY2CS.js → chunk-GC3TBUWE.js} +1 -1
  20. package/dist/chunk-GC3TBUWE.js.map +1 -0
  21. package/dist/{chunk-7HG6G25H.js → chunk-H3LNH2NT.js} +169 -268
  22. package/dist/chunk-H3LNH2NT.js.map +1 -0
  23. package/dist/{chunk-USJYMRUO.js → chunk-HAWJTZCK.js} +2 -2
  24. package/dist/chunk-HAWJTZCK.js.map +1 -0
  25. package/dist/chunk-JAATANS3.js +429 -0
  26. package/dist/chunk-JAATANS3.js.map +1 -0
  27. package/dist/chunk-LNJ3WF7V.js +470 -0
  28. package/dist/chunk-LNJ3WF7V.js.map +1 -0
  29. package/dist/chunk-N26IEHZT.js +79 -0
  30. package/dist/chunk-N26IEHZT.js.map +1 -0
  31. package/dist/chunk-NSIAAYW3.js +1 -0
  32. package/dist/chunk-NSIAAYW3.js.map +1 -0
  33. package/dist/chunk-NZON56CB.js +3864 -0
  34. package/dist/chunk-NZON56CB.js.map +1 -0
  35. package/dist/{chunk-O3K7R32P.js → chunk-OQ7U6EQ3.js} +118 -123
  36. package/dist/chunk-OQ7U6EQ3.js.map +1 -0
  37. package/dist/chunk-SM73S2DY.js +11 -0
  38. package/dist/chunk-SM73S2DY.js.map +1 -0
  39. package/dist/{chunk-JUVE3DWY.js → chunk-TKWR5AAY.js} +47 -65
  40. package/dist/chunk-TKWR5AAY.js.map +1 -0
  41. package/dist/{chunk-2IFGILT3.js → chunk-U5UNPBKB.js} +76 -107
  42. package/dist/chunk-U5UNPBKB.js.map +1 -0
  43. package/dist/chunk-WGDJ4IXR.js +921 -0
  44. package/dist/chunk-WGDJ4IXR.js.map +1 -0
  45. package/dist/chunk-WVF7RUW5.js +186 -0
  46. package/dist/chunk-WVF7RUW5.js.map +1 -0
  47. package/dist/{chunk-ZTSBF536.js → chunk-X3HZLNBV.js} +637 -435
  48. package/dist/chunk-X3HZLNBV.js.map +1 -0
  49. package/dist/{chunk-EL45Z26M.js → chunk-XU3SBFAG.js} +1219 -208
  50. package/dist/chunk-XU3SBFAG.js.map +1 -0
  51. package/dist/chunk-ZVBHWU7O.js +1412 -0
  52. package/dist/chunk-ZVBHWU7O.js.map +1 -0
  53. package/dist/client/index.d.ts +1 -1
  54. package/dist/client/index.js +42 -23
  55. package/dist/client/index.js.map +1 -1
  56. package/dist/core/index.d.ts +19 -0
  57. package/dist/{index-BFu5_dS8.d.ts → database.types-ChFCG-4M.d.ts} +1 -177
  58. package/dist/gen/index.js +4 -2
  59. package/dist/hooks/index.d.ts +10 -3
  60. package/dist/hooks/index.js +8 -10
  61. package/dist/index-CQLyNG6A.d.ts +433 -0
  62. package/dist/index.d.ts +12 -8
  63. package/dist/index.js +92 -48
  64. package/dist/index.native.d.ts +373 -33
  65. package/dist/index.native.js +79 -47
  66. package/dist/index.web.d.ts +10 -7
  67. package/dist/index.web.js +83 -78
  68. package/dist/index.web.js.map +1 -1
  69. package/dist/mutation/index.d.ts +2 -2
  70. package/dist/mutation/index.js +307 -122
  71. package/dist/mutation/index.js.map +1 -1
  72. package/dist/parser/index.js +2 -2
  73. package/dist/{pdf-3TIGQRLA.js → pdf-PHXP7RHD.js} +2 -2
  74. package/dist/powersync-bridge/index.d.ts +284 -0
  75. package/dist/powersync-bridge/index.js +22 -0
  76. package/dist/powersync-bridge/index.js.map +1 -0
  77. package/dist/query/index.js +5 -5
  78. package/dist/realtime/index.js +252 -128
  79. package/dist/realtime/index.js.map +1 -1
  80. package/dist/{UserMetadataContext-BYYqA6LI.d.ts → setupAuthContext-Kv-THH-h.d.ts} +1 -29
  81. package/dist/types/index.d.ts +5 -1
  82. package/dist/types/index.js +10 -5
  83. package/dist/{useBatchUpsert-CSQVX7w8.d.ts → useBatchUpsert-9OYjibLh.d.ts} +1 -1
  84. package/dist/{useDbCount-RGCuHmHp.d.ts → useDbCount-BG356T9i.d.ts} +3 -719
  85. package/dist/{useReceiptAI-Bn0czE7C.d.ts → useReceiptAI-6HkRpRml.d.ts} +1 -1
  86. package/dist/{useResolveFeedback-CpZPP8Pw.d.ts → useResolveFeedback-BWmatBlE.d.ts} +26 -45
  87. package/dist/{useSupabase-pPhUZHcl.d.ts → useSupabase-DvWVuHHE.d.ts} +2 -1
  88. package/dist/with-auth/index.d.ts +704 -0
  89. package/dist/with-auth/index.js +1221 -0
  90. package/dist/with-auth/index.js.map +1 -0
  91. package/package.json +25 -10
  92. package/dist/chunk-2IFGILT3.js.map +0 -1
  93. package/dist/chunk-3M2U6TXH.js +0 -928
  94. package/dist/chunk-3M2U6TXH.js.map +0 -1
  95. package/dist/chunk-5ZYAEGCJ.js +0 -416
  96. package/dist/chunk-5ZYAEGCJ.js.map +0 -1
  97. package/dist/chunk-7HG6G25H.js.map +0 -1
  98. package/dist/chunk-7XT7K4QT.js +0 -2687
  99. package/dist/chunk-7XT7K4QT.js.map +0 -1
  100. package/dist/chunk-AWFMICFV.js +0 -158
  101. package/dist/chunk-AWFMICFV.js.map +0 -1
  102. package/dist/chunk-BRTW7CO5.js.map +0 -1
  103. package/dist/chunk-EL45Z26M.js.map +0 -1
  104. package/dist/chunk-ERGF2FCE.js +0 -903
  105. package/dist/chunk-ERGF2FCE.js.map +0 -1
  106. package/dist/chunk-GK7B66LY.js +0 -135
  107. package/dist/chunk-GK7B66LY.js.map +0 -1
  108. package/dist/chunk-GQI6WJGI.js +0 -172
  109. package/dist/chunk-GQI6WJGI.js.map +0 -1
  110. package/dist/chunk-JUVE3DWY.js.map +0 -1
  111. package/dist/chunk-O3K7R32P.js.map +0 -1
  112. package/dist/chunk-SEY5UO2T.js +0 -89
  113. package/dist/chunk-SEY5UO2T.js.map +0 -1
  114. package/dist/chunk-USJYMRUO.js.map +0 -1
  115. package/dist/chunk-XX3IWSPM.js +0 -189
  116. package/dist/chunk-XX3IWSPM.js.map +0 -1
  117. package/dist/chunk-Y3INY2CS.js.map +0 -1
  118. package/dist/chunk-ZTSBF536.js.map +0 -1
  119. /package/dist/{canvas-75Y7XMF3.js.map → canvas-ZQNCL7JL.js.map} +0 -0
  120. /package/dist/{pdf-3TIGQRLA.js.map → pdf-PHXP7RHD.js.map} +0 -0
@@ -0,0 +1,11 @@
1
+ // src/gen/public/UserMetadata/query.ts
2
+ var UserMetadata = {
3
+ schema: "public",
4
+ table: "UserMetadata",
5
+ defaultQuery: "key, userId, value"
6
+ };
7
+
8
+ export {
9
+ UserMetadata
10
+ };
11
+ //# sourceMappingURL=chunk-SM73S2DY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/gen/public/UserMetadata/query.ts"],"sourcesContent":["export const UserMetadata = {\n schema: \"public\",\n table: \"UserMetadata\",\n defaultQuery: \"key, userId, value\"\n} as const;"],"mappings":";AAAO,IAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,cAAc;AAChB;","names":[]}
@@ -5,13 +5,11 @@ import {
5
5
  } from "./chunk-3PJTNH2L.js";
6
6
 
7
7
  // src/parser/lib/sort-search-param.ts
8
- var sortSearchParams = (params) => new URLSearchParams(
9
- Array.from(params.entries()).sort((a, b) => {
10
- const x = `${a[0]}${a[1]}`;
11
- const y = `${b[0]}${b[1]}`;
12
- return x > y ? 1 : -1;
13
- })
14
- );
8
+ var sortSearchParams = (params) => new URLSearchParams(Array.from(params.entries()).sort((a, b) => {
9
+ const x = `${a[0]}${a[1]}`;
10
+ const y = `${b[0]}${b[1]}`;
11
+ return x > y ? 1 : -1;
12
+ }));
15
13
 
16
14
  // src/parser/lib/encode-object.ts
17
15
  var encodeObject = (obj) => {
@@ -75,14 +73,10 @@ var OPERATOR_MAP = {
75
73
  cd: (c, v) => {
76
74
  if (!Array.isArray(c)) return false;
77
75
  if (!Array.isArray(v)) v = v.slice(1, -1).split(",");
78
- return c.every(
79
- (i) => v.some((cmpVal) => deepEqual(cmpVal, i))
80
- );
76
+ return c.every((i) => v.some((cmpVal) => deepEqual(cmpVal, i)));
81
77
  },
82
78
  fts: textSearch,
83
- plfts: (c, v) => buildLikeRegex(enclose(v.toLowerCase(), "%")).test(
84
- c.toString().toLowerCase()
85
- )
79
+ plfts: (c, v) => buildLikeRegex(enclose(v.toLowerCase(), "%")).test(c.toString().toLowerCase())
86
80
  };
87
81
 
88
82
  // src/parser/lib/parse-select-param.ts
@@ -98,17 +92,14 @@ var parseSelectParam = (s, currentPath) => {
98
92
  }).reduce((prev, curr, idx, matches) => {
99
93
  if (curr.name === "selectedColumns") {
100
94
  const name = matches[idx - 1].value.slice(1, -1);
101
- prev = { ...prev, [name]: curr.value };
95
+ prev = {
96
+ ...prev,
97
+ [name]: curr.value
98
+ };
102
99
  }
103
100
  return prev;
104
101
  }, {});
105
- const columns = s.replace(
106
- new RegExp(
107
- `${Object.entries(foreignTables).map(([table, selectedColumns]) => `${table}(${selectedColumns})`.replace(/\(/g, "\\(").replace(/\)/g, "\\)")).join("|")}`,
108
- "g"
109
- ),
110
- ""
111
- ).replace(/(,)\1+/g, ",").split(",").filter((c) => c.length > 0).map((c) => {
102
+ const columns = s.replace(new RegExp(`${Object.entries(foreignTables).map(([table, selectedColumns]) => `${table}(${selectedColumns})`.replace(/\(/g, "\\(").replace(/\)/g, "\\)")).join("|")}`, "g"), "").replace(/(,)\1+/g, ",").split(",").filter((c) => c.length > 0).map((c) => {
112
103
  const split = c.split(":");
113
104
  const hasAlias = split.length > 1;
114
105
  return {
@@ -117,29 +108,24 @@ var parseSelectParam = (s, currentPath) => {
117
108
  path: [currentPath?.path, split[hasAlias ? 1 : 0]].filter(Boolean).join(".")
118
109
  };
119
110
  });
120
- return [
121
- ...columns,
122
- ...Object.entries(foreignTables).flatMap(([currentDeclaration, selectedColumns]) => {
123
- const aliasSplit = currentDeclaration.split(":");
124
- const currentAliasElem = aliasSplit.length > 1 ? aliasSplit[0] : void 0;
125
- const currentPathDeclaration = aliasSplit[aliasSplit.length - 1];
126
- const currentPathElem = currentPathDeclaration.split("!")[0];
127
- const path = [currentPath?.path, currentPathElem].filter(Boolean).join(".");
128
- const alias = [currentPath?.alias ?? currentPath?.path, currentAliasElem ?? currentPathElem].filter(Boolean).join(".");
129
- const declaration = [currentPath?.declaration, currentDeclaration].filter(Boolean).join(".");
130
- return parseSelectParam(`${selectedColumns}`, {
131
- path,
132
- alias: currentPath?.alias || currentAliasElem ? alias : void 0,
133
- declaration
134
- });
135
- })
136
- ];
111
+ return [...columns, ...Object.entries(foreignTables).flatMap(([currentDeclaration, selectedColumns]) => {
112
+ const aliasSplit = currentDeclaration.split(":");
113
+ const currentAliasElem = aliasSplit.length > 1 ? aliasSplit[0] : void 0;
114
+ const currentPathDeclaration = aliasSplit[aliasSplit.length - 1];
115
+ const currentPathElem = currentPathDeclaration.split("!")[0];
116
+ const path = [currentPath?.path, currentPathElem].filter(Boolean).join(".");
117
+ const alias = [currentPath?.alias ?? currentPath?.path, currentAliasElem ?? currentPathElem].filter(Boolean).join(".");
118
+ const declaration = [currentPath?.declaration, currentDeclaration].filter(Boolean).join(".");
119
+ return parseSelectParam(`${selectedColumns}`, {
120
+ path,
121
+ alias: currentPath?.alias || currentAliasElem ? alias : void 0,
122
+ declaration
123
+ });
124
+ })];
137
125
  };
138
126
 
139
127
  // src/parser/lib/is-iso-date-string.ts
140
- var isISODateString = (v) => typeof v === "string" && /(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/.test(
141
- v
142
- );
128
+ var isISODateString = (v) => typeof v === "string" && /(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/.test(v);
143
129
 
144
130
  // src/parser/lib/parse-value.ts
145
131
  var parseValue = (v) => {
@@ -271,9 +257,7 @@ var PostgrestQueryParser = class {
271
257
  if (!this._filters) {
272
258
  const filters = [];
273
259
  this._params.forEach((value, key) => {
274
- if (SUPPORTED_OPERATORS.some(
275
- (f) => key === f || value.split(".").includes(f)
276
- )) {
260
+ if (SUPPORTED_OPERATORS.some((f) => key === f || value.split(".").includes(f))) {
277
261
  const filter = this.parseFilterString(`${key}.${value}`, void 0);
278
262
  if (filter !== null) filters.push(filter);
279
263
  }
@@ -286,7 +270,9 @@ var PostgrestQueryParser = class {
286
270
  if (filter.startsWith("and(") && filter.endsWith(")")) {
287
271
  const andFilters = filter.slice(4, -1).split(",").map((s) => this.parseFilterString(s, prefix)).filter(isNotNull);
288
272
  if (andFilters.length === 0) return null;
289
- else return { and: andFilters };
273
+ else return {
274
+ and: andFilters
275
+ };
290
276
  }
291
277
  const split = filter.split(".");
292
278
  if ([split[0], split[1]].includes("or")) {
@@ -303,23 +289,14 @@ var PostgrestQueryParser = class {
303
289
  return prev;
304
290
  }, []).map((s) => this.parseFilterString(s, foreignTable)).filter(isNotNull);
305
291
  if (orFilters.length === 0) return null;
306
- else return { or: orFilters };
292
+ else return {
293
+ or: orFilters
294
+ };
307
295
  }
308
- const operatorIdx = findLastIndex(
309
- split,
310
- (s) => SUPPORTED_OPERATORS.includes(s)
311
- );
312
- if (operatorIdx === -1)
313
- throw new Error(
314
- `Could not find a valid operator in ${split.join(
315
- "."
316
- )}. Supported are ${SUPPORTED_OPERATORS.join(",")}.`
317
- );
296
+ const operatorIdx = findLastIndex(split, (s) => SUPPORTED_OPERATORS.includes(s));
297
+ if (operatorIdx === -1) throw new Error(`Could not find a valid operator in ${split.join(".")}. Supported are ${SUPPORTED_OPERATORS.join(",")}.`);
318
298
  const negate = split[operatorIdx - 1] === "not";
319
- const pathOrAlias = [
320
- prefix,
321
- ...split.slice(0, negate ? operatorIdx - 1 : operatorIdx)
322
- ].filter(Boolean).join(".").replace(/\s/g, "");
299
+ const pathOrAlias = [prefix, ...split.slice(0, negate ? operatorIdx - 1 : operatorIdx)].filter(Boolean).join(".").replace(/\s/g, "");
323
300
  let path = pathOrAlias;
324
301
  let alias;
325
302
  for (const p of this.paths) {
@@ -356,7 +333,9 @@ var PostgrestParser = class extends PostgrestQueryParser {
356
333
  this._url = new URL(fb["url"]);
357
334
  const headers = fb["headers"];
358
335
  this._headers = Object.fromEntries(headers.entries());
359
- this._body = isObject(fb["body"]) ? { ...fb["body"] } : void 0;
336
+ this._body = isObject(fb["body"]) ? {
337
+ ...fb["body"]
338
+ } : void 0;
360
339
  this.method = fb["method"];
361
340
  this.searchParams = this._url.searchParams;
362
341
  this.queryKey = sortSearchParams(this._url.searchParams).toString();
@@ -394,9 +373,12 @@ var PostgrestParser = class extends PostgrestQueryParser {
394
373
  });
395
374
  }
396
375
  });
397
- this.orderByKey = this.orderBy.map(
398
- ({ column, ascending, nullsFirst, foreignTable }) => `${foreignTable ? `${foreignTable}.` : ""}${column}:${ascending ? "asc" : "desc"}.${nullsFirst ? "nullsFirst" : "nullsLast"}`
399
- ).join("|");
376
+ this.orderByKey = this.orderBy.map(({
377
+ column,
378
+ ascending,
379
+ nullsFirst,
380
+ foreignTable
381
+ }) => `${foreignTable ? `${foreignTable}.` : ""}${column}:${ascending ? "asc" : "desc"}.${nullsFirst ? "nullsFirst" : "nullsLast"}`).join("|");
400
382
  }
401
383
  _url;
402
384
  _headers;
@@ -430,4 +412,4 @@ export {
430
412
  PostgrestQueryParser,
431
413
  PostgrestParser
432
414
  };
433
- //# sourceMappingURL=chunk-JUVE3DWY.js.map
415
+ //# sourceMappingURL=chunk-TKWR5AAY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/parser/lib/sort-search-param.ts","../src/parser/lib/encode-object.ts","../src/parser/lib/is-object.ts","../src/parser/lib/find-last-index.ts","../src/parser/lib/is-not-null.ts","../src/parser/lib/operators.ts","../src/parser/lib/parse-select-param.ts","../src/parser/lib/is-iso-date-string.ts","../src/parser/lib/parse-value.ts","../src/parser/postgrest-query-parser.ts","../src/parser/PostgrestParser.ts"],"sourcesContent":["export const sortSearchParams = (params: URLSearchParams) => new URLSearchParams(Array.from(params.entries()).sort((a, b) => {\n const x = `${a[0]}${a[1]}`;\n const y = `${b[0]}${b[1]}`;\n return x > y ? 1 : -1;\n}));","import { flatten } from \"flat\";\nimport { sortSearchParams } from \"./sort-search-param\";\n\n/**\n * Encodes an object by url-encoding an ordered lists of all paths and their values.\n */\nexport const encodeObject = (obj: Record<string, unknown>): string => {\n const sortedEntries = Object.entries(flatten(obj) as Record<string, unknown>).sort(([a], [b]) => a.length - b.length);\n const bodyParams = new URLSearchParams();\n sortedEntries.forEach(([key, value]) => {\n bodyParams.append(key, String(value));\n });\n return sortSearchParams(bodyParams).toString();\n};","export const isObject = (v: unknown): v is Record<string, unknown> => typeof v === 'object' && !Array.isArray(v) && v !== null;","/**\n * Returns the index of the last element in the array where predicate is true, and -1\n * otherwise.\n * @param array The source array to search in\n * @param predicate find calls predicate once for each element of the array, in descending\n * order, until it finds one where predicate returns true. If such an element is found,\n * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n */\nexport function findLastIndex<T>(array: T[], predicate: (value: T, index: number, obj: T[]) => boolean): number {\n let l = array.length;\n while (l--) {\n if (predicate(array[l], l, array)) return l;\n }\n return -1;\n}","/**\n *\n * @param i Ahhh gotta love typescript\n * @returns\n */\nexport const isNotNull = <I,>(i: I | null): i is I => i !== null;","import { deepEqual } from 'fast-equals';\nimport { PostgrestFilterOperator, OperatorFn } from './query-types';\n\n/**\n * Builds a regex for a (i)like postgres operator by replacing the \"%\" with a regex wildcard \".*\"\n * @param search The search value\n * @returns A RegExp representing the (i)like operation\n */\nconst buildLikeRegex = (search: string) => new RegExp(`^${search.replace(/%/g, '.*')}$`);\n\n/**\n * A poor humans attempt to implement postgres text search in javascript.\n * Converts the search string into a regex before testing it against all tokens.\n */\nconst textSearch: OperatorFn = (c, v) => {\n const regExp = `^${v.split('&').map((v: string) => v.trim().toLowerCase()).join('|').replace(/:\\*/g, '.*')}$`;\n const tokens = c.match(/'(.*?)'/g).map((t: string) => t.replace(/'/g, '').toLowerCase());\n return tokens.some((t: string) => new RegExp(regExp).test(t));\n};\n\n/**\n * Date instances do not work with equality operators, which is why their times are compared instead.\n *\n * ref: https://stackoverflow.com/questions/492994/compare-two-dates-with-javascript\n * @param v The input value\n * @returns If the input value is an instanceof Date, return v.getTime(), else the input value\n */\nconst ifDateGetTime = (v: any) => v instanceof Date ? v.getTime() : v;\nconst enclose = (v: string, char: string) => {\n if (!v.startsWith(char)) v = `${char}${v}`;\n if (!v.endsWith(char)) v = `${v}${char}`;\n return v;\n};\n\n/**\n * An object containing all PostgrestFilterOperator implementations\n */\nexport const OPERATOR_MAP: { [Key in PostgrestFilterOperator]?: OperatorFn } = {\n eq: (c, v) => ifDateGetTime(c) === ifDateGetTime(v),\n neq: (c, v) => ifDateGetTime(c) !== ifDateGetTime(v),\n gt: (c, v) => c > v,\n gte: (c, v) => c >= v,\n lt: (c, v) => c < v,\n lte: (c, v) => c <= v,\n like: (c, v) => buildLikeRegex(v).test(c.toString()),\n ilike: (c, v) => buildLikeRegex(v.toLowerCase()).test(c.toString().toLowerCase()),\n is: (c, v) => c === v,\n in: (c, v) => {\n const parsedValue = v.slice(1, -1).split(',');\n return parsedValue.some((i: string) => i === c);\n },\n // contains\n cs: (c, v) => {\n if (!Array.isArray(c)) return false;\n if (!Array.isArray(v)) v = v.slice(1, -1).split(',');\n return v.every((i: string) => c.some(colVal => deepEqual(colVal, i)));\n },\n // containedBy\n cd: (c, v) => {\n if (!Array.isArray(c)) return false;\n if (!Array.isArray(v)) v = v.slice(1, -1).split(',');\n return c.every((i: string) => v.some((cmpVal: any) => deepEqual(cmpVal, i)));\n },\n fts: textSearch,\n plfts: (c, v) => buildLikeRegex(enclose(v.toLowerCase(), '%')).test(c.toString().toLowerCase())\n};","import XRegExp from \"xregexp\";\nimport { Path } from \"./query-types\";\nexport const parseSelectParam = (s: string, currentPath?: Path): Path[] => {\n s = s.replace(/\\s/g, \"\");\n const foreignTables = XRegExp.matchRecursive(`,${s}`, \",[^,]*\\\\(\", \"\\\\)\", \"g\", {\n valueNames: {\n \"0\": null,\n \"1\": \"tableName\",\n \"2\": \"selectedColumns\",\n \"3\": null\n }\n }).reduce((prev, curr, idx, matches) => {\n if (curr.name === \"selectedColumns\") {\n const name = matches[idx - 1].value.slice(1, -1);\n prev = {\n ...prev,\n [name]: curr.value\n };\n }\n return prev;\n }, {});\n const columns = s.replace(new RegExp(`${Object.entries(foreignTables).map(([table, selectedColumns]) => `${table}(${selectedColumns})`.replace(/\\(/g, \"\\\\(\").replace(/\\)/g, \"\\\\)\")).join(\"|\")}`, \"g\"), \"\").replace(/(,)\\1+/g, \",\").split(\",\").filter(c => c.length > 0).map(c => {\n const split = c.split(\":\");\n const hasAlias = split.length > 1;\n return {\n declaration: [currentPath?.declaration, c].filter(Boolean).join(\".\"),\n alias: hasAlias || currentPath?.alias ? [currentPath?.alias ?? currentPath?.path, split[0]].filter(Boolean).join(\".\") : undefined,\n path: [currentPath?.path, split[hasAlias ? 1 : 0]].filter(Boolean).join(\".\")\n };\n });\n\n // if (columns.find((c) => c.path.includes('*')))\n // throw new Error('Wildcard selector is not supported');\n\n return [...columns, ...Object.entries(foreignTables).flatMap(([currentDeclaration, selectedColumns]) => {\n // example for declaration\n // alias:organisation!contact_organisation_id_fkey!inner\n const aliasSplit = currentDeclaration.split(\":\");\n const currentAliasElem = aliasSplit.length > 1 ? aliasSplit[0] : undefined;\n const currentPathDeclaration = aliasSplit[aliasSplit.length - 1];\n const currentPathElem = currentPathDeclaration.split(\"!\")[0];\n const path = [currentPath?.path, currentPathElem].filter(Boolean).join(\".\");\n const alias = [currentPath?.alias ?? currentPath?.path, currentAliasElem ?? currentPathElem].filter(Boolean).join(\".\");\n const declaration = [currentPath?.declaration, currentDeclaration].filter(Boolean).join(\".\");\n return parseSelectParam(`${selectedColumns}`, {\n path,\n alias: currentPath?.alias || currentAliasElem ? alias : undefined,\n declaration\n });\n })];\n};","/**\n * Check if a value is a valid ISO DateTime string\n * @param v\n * @returns\n */\nexport const isISODateString = (v: unknown): boolean => typeof v === 'string' && /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/.test(v);","import { isISODateString } from './is-iso-date-string';\nimport { ValueType } from './query-types';\n\n/**\n * Safely parse any value to a ValueType\n * @param v Any value\n * @returns a ValueType\n */\nexport const parseValue = (v: any): ValueType => {\n if (isISODateString(v)) return new Date(v);\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n};","import { findLastIndex } from './lib/find-last-index';\nimport { isNotNull } from './lib/is-not-null';\nimport { OPERATOR_MAP } from './lib/operators';\nimport { parseSelectParam } from './lib/parse-select-param';\nimport { parseValue } from './lib/parse-value';\nimport { FilterDefinition, FilterDefinitions, PostgrestFilterOperator, Path } from './lib/query-types';\nexport const SUPPORTED_OPERATORS = ['or', ...Object.keys(OPERATOR_MAP)];\nexport type PostgrestQueryParserOptions = {\n /**\n * If defined, will use only filters that apply to the given paths\n */\n exclusivePaths?: string[];\n};\nexport class PostgrestQueryParser {\n private readonly _params: URLSearchParams;\n private _filters: FilterDefinitions | undefined;\n private _paths: Path[] | undefined;\n constructor(query: string, public readonly opts?: PostgrestQueryParserOptions) {\n this._params = new URLSearchParams(query);\n }\n\n /**\n * Getter that returns the paths and their aliases that the query selects. Will do the computation only once.\n *\n * ```js\n * const p = new PostgrestParser(\n * supabaseClient.from(\"test\")\n * .select(\n * `name,\n * city:cities (\n * test:name\n * ),\n * countries (\n * capital,\n * population,\n * some_ref (\n * test:first,\n * second\n * )\n * )`\n * );\n * console.log(p.paths);\n * // [\n * // { alias: undefined, path: \"name\" },\n * // { alias: \"city.test\", path: \"cities.name\" },\n * // { alias: undefined, path: \"countries.capital\" },\n * // { alias: undefined, path: \"countries.population\" },\n * // {\n * // alias: \"countries.some_ref.test\",\n * // path: \"countries.some_ref.first\",\n * // },\n * // { alias: undefined, path: \"countries.some_ref.second\" },\n * // ];\n * ```\n *\n * @returns an array of paths that the query selects, containing the columns and aliases\n */\n get paths(): Path[] {\n if (!this._paths) {\n const select = this._params.get('select');\n this._paths = select ? parseSelectParam(select) : [];\n }\n return this._paths;\n }\n\n /**\n * Getter that returns the filters that this query applies in a json object.\n *\n * ```js\n * const p = new PostgrestParser(\n * supabaseClient.from(\"test\").select('*')\n * .or(\"full_name.eq.20,test.neq.true,and(full_name.eq.Test Name,email.eq.test@mail.com)\")\n * .eq(\"id\", \"123\")\n * .contains(\"id\", \"456\")\n * );\n *\n * console.log(p.filters);\n *\n * // [\n * // {\n * // or: [\n * // {\n * // path: \"full_name\",\n * // negate: false,\n * // operator: \"eq\",\n * // value: 20,\n * // },\n * // {\n * // path: \"test\",\n * // negate: false,\n * // operator: \"neq\",\n * // value: true,\n * // },\n * // {\n * // and: [\n * // {\n * // path: \"full_name\",\n * // negate: false,\n * // operator: \"eq\",\n * // value: \"Test Name\",\n * // },\n * // {\n * // path: \"email\",\n * // negate: false,\n * // operator: \"eq\",\n * // value: \"test@mail.com\",\n * // },\n * // ],\n * // },\n * // ],\n * // },\n * // {\n * // path: \"id\",\n * // negate: false,\n * // operator: \"eq\",\n * // value: 123,\n * // },\n * // {\n * // path: \"id\",\n * // negate: false,\n * // operator: \"cs\",\n * // value: 456,\n * // },\n * // ];\n * ```\n *\n * @returns a FilterDefinitions object\n */\n get filters(): FilterDefinitions {\n if (!this._filters) {\n const filters: FilterDefinitions = [];\n this._params.forEach((value, key) => {\n if (SUPPORTED_OPERATORS.some(f => key === f || value.split('.').includes(f))) {\n const filter = this.parseFilterString(`${key}.${value}`, undefined);\n if (filter !== null) filters.push(filter);\n }\n });\n this._filters = filters;\n }\n return this._filters;\n }\n private parseFilterString(filter: string, prefix?: string): FilterDefinition | {\n or: FilterDefinitions;\n } | {\n and: FilterDefinitions;\n } | null {\n if (filter.startsWith('and(') && filter.endsWith(')')) {\n // nested and\n const andFilters = filter.slice(4, -1).split(',').map(s => this.parseFilterString(s, prefix)).filter(isNotNull);\n if (andFilters.length === 0) return null;else return {\n and: andFilters\n };\n }\n const split = filter.split('.');\n\n // or\n if ([split[0], split[1]].includes('or')) {\n let foreignTable: string | undefined;\n if (split[1] === 'or') {\n // with foreign table\n foreignTable = split[0];\n }\n const orFilters = filter.slice(4 + (foreignTable ? foreignTable.length + 1 : 0), -1).split(',').reduce<string[]>((prev, curr, idx, filters) => {\n if (curr.startsWith('and(')) {\n // nested and\n prev = [...prev, [curr, filters[idx + 1]].join()];\n } else if (!curr.endsWith(')')) {\n prev = [...prev, curr];\n }\n return prev;\n }, []).map(s => this.parseFilterString(s, foreignTable)).filter(isNotNull);\n if (orFilters.length === 0) return null;else return {\n or: orFilters\n };\n }\n const operatorIdx = findLastIndex(split, s => SUPPORTED_OPERATORS.includes(s));\n if (operatorIdx === -1) throw new Error(`Could not find a valid operator in ${split.join('.')}. Supported are ${SUPPORTED_OPERATORS.join(',')}.`);\n const negate = split[operatorIdx - 1] === 'not';\n const pathOrAlias = [prefix, ...split.slice(0, negate ? operatorIdx - 1 : operatorIdx)].filter(Boolean).join('.').replace(/\\s/g, '');\n let path = pathOrAlias;\n let alias;\n // filter paths can use either the real path or the alias\n // search for alias and path in paths of query\n // if none is found, its a path because the alias would need to be defined\n // in the query\n for (const p of this.paths) {\n if (p.path === pathOrAlias) {\n alias = p.alias;\n break;\n }\n if (p.alias === pathOrAlias) {\n path = p.path;\n alias = p.alias;\n break;\n }\n }\n if (this.opts && Array.isArray(this.opts.exclusivePaths) && !this.opts.exclusivePaths.includes(path)) {\n return null;\n }\n const operator = split[operatorIdx] as PostgrestFilterOperator;\n const value = split.slice(operatorIdx + 1).join('.');\n return {\n path,\n alias,\n negate,\n operator,\n value: parseValue(value)\n };\n }\n}","import { PostgrestBuilder } from \"@supabase/postgrest-js\";\nimport { encodeObject } from \"./lib/encode-object\";\nimport { isObject } from \"./lib/is-object\";\nimport { OrderDefinition } from \"./lib/query-types\";\nimport { sortSearchParams } from \"./lib/sort-search-param\";\nimport { PostgrestQueryParser, PostgrestQueryParserOptions } from \"./postgrest-query-parser\";\nexport class PostgrestParser<Result> extends PostgrestQueryParser {\n private readonly _url: URL;\n private readonly _headers: {\n [key: string]: string;\n };\n private readonly _body: object | undefined;\n public readonly method: \"GET\" | \"HEAD\" | \"POST\" | \"PATCH\" | \"DELETE\";\n public readonly select: string;\n public readonly queryKey: string;\n public readonly bodyKey: string | undefined;\n public readonly count: string | null;\n public readonly schema: string;\n public readonly table: string;\n public readonly isHead: boolean | undefined;\n public readonly limit: number | undefined;\n public readonly offset: number | undefined;\n public readonly orderBy: OrderDefinition[] = [];\n public readonly orderByKey: string;\n public readonly searchParams: URLSearchParams;\n constructor(fb: PostgrestBuilder<any, Result>, public readonly opts?: PostgrestQueryParserOptions) {\n super(new URL(fb[\"url\"]).searchParams.toString(), opts);\n this._url = new URL(fb[\"url\"]);\n // Convert Headers object to plain object\n const headers = fb[\"headers\"] as Headers;\n this._headers = Object.fromEntries(headers.entries());\n this._body = isObject(fb[\"body\"]) ? {\n ...fb[\"body\"]\n } : undefined;\n this.method = fb[\"method\"];\n this.searchParams = this._url.searchParams;\n this.queryKey = sortSearchParams(this._url.searchParams).toString();\n this.select = this._url.searchParams.get(\"select\")?.toString() ?? \"*\";\n this.table = (this._url.toString().split(\"/rest/v1/\").pop() as string).split(\"?\").shift() as string;\n if (this._body) {\n this.bodyKey = encodeObject(this._body as Record<string, unknown>);\n }\n\n // 'Prefer': return=minimal|representation,count=exact|planned|estimated\n const preferHeaders: Record<string, string> = (this._headers[\"Prefer\"] ?? \"\").split(\",\").reduce<Record<string, string>>((prev, curr) => {\n const s = curr.split(\"=\");\n return {\n ...prev,\n [s[0]]: s[1]\n };\n }, {});\n this.count = preferHeaders[\"count\"] ?? null;\n this.schema = fb[\"schema\"] as string;\n this.isHead = this.method === \"HEAD\";\n const limit = this._url.searchParams.get(\"limit\");\n this.limit = limit ? Number(limit) : undefined;\n const offset = this._url.searchParams.get(\"offset\");\n this.offset = offset ? Number(offset) : undefined;\n this._url.searchParams.forEach((value, key) => {\n const split = key.split(\".\");\n if (split[split.length === 2 ? 1 : 0] === \"order\") {\n // separated by ,\n const orderByDefs = value.split(\",\");\n orderByDefs.forEach(def => {\n const [column, ascending, nullsFirst] = def.split(\".\");\n this.orderBy.push({\n ascending: ascending === \"asc\",\n column,\n nullsFirst: nullsFirst === \"nullsfirst\",\n foreignTable: split.length === 2 ? split[0] : undefined\n });\n });\n }\n });\n this.orderByKey = this.orderBy.map(({\n column,\n ascending,\n nullsFirst,\n foreignTable\n }) => `${foreignTable ? `${foreignTable}.` : \"\"}${column}:${ascending ? \"asc\" : \"desc\"}.${nullsFirst ? \"nullsFirst\" : \"nullsLast\"}`).join(\"|\");\n }\n}"],"mappings":"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","names":["v"]}
@@ -3,7 +3,7 @@ import {
3
3
  PostgrestQueryParser,
4
4
  isObject,
5
5
  parseValue
6
- } from "./chunk-JUVE3DWY.js";
6
+ } from "./chunk-TKWR5AAY.js";
7
7
  import {
8
8
  unflatten
9
9
  } from "./chunk-3PJTNH2L.js";
@@ -29,9 +29,7 @@ var groupPathsRecursive = (paths) => {
29
29
  return prev;
30
30
  }
31
31
  const firstLevelDeclaration = curr.declaration.split(".")[0];
32
- const indexOfNested = prev.findIndex(
33
- (p) => isNestedPath(p) && p.declaration === firstLevelDeclaration
34
- );
32
+ const indexOfNested = prev.findIndex((p) => isNestedPath(p) && p.declaration === firstLevelDeclaration);
35
33
  const pathWithoutCurrentLevel = removeFirstPathElement(curr);
36
34
  if (indexOfNested !== -1) {
37
35
  prev[indexOfNested].paths.push(pathWithoutCurrentLevel);
@@ -41,13 +39,16 @@ var groupPathsRecursive = (paths) => {
41
39
  declaration: firstLevelDeclaration,
42
40
  path: curr.path.split(".")[0],
43
41
  paths: [pathWithoutCurrentLevel],
44
- ...curr.alias ? { alias: curr.alias.split(".")[0] } : {}
42
+ ...curr.alias ? {
43
+ alias: curr.alias.split(".")[0]
44
+ } : {}
45
45
  });
46
46
  return prev;
47
47
  }, []);
48
- return grouped.map(
49
- (p) => isNestedPath(p) ? { ...p, paths: groupPathsRecursive(p.paths) } : p
50
- );
48
+ return grouped.map((p) => isNestedPath(p) ? {
49
+ ...p,
50
+ paths: groupPathsRecursive(p.paths)
51
+ } : p);
51
52
  };
52
53
 
53
54
  // src/parser/filter/denormalize.ts
@@ -69,28 +70,25 @@ var denormalize = (paths, obj) => {
69
70
  }
70
71
  if (typeof value === "undefined") {
71
72
  let isArray2 = false;
72
- const jsonValue = Object.entries(obj).reduce(
73
- (prev2, [k, v]) => {
74
- if (k.startsWith(`${curr.path}.`)) {
75
- const key = k.slice(curr.path.length + 1);
76
- const maybeIdx = key.match(/^\b\d+\b/);
77
- if (maybeIdx && isFlatNestedArray(prev2)) {
78
- isArray2 = true;
79
- prev2 = {
80
- ...prev2,
81
- [maybeIdx[0]]: {
82
- ...prev2[maybeIdx[0]] ? prev2[maybeIdx[0]] : {},
83
- [key.slice(maybeIdx[0].length + 1)]: v
84
- }
85
- };
86
- } else {
87
- prev2[maybeIdx ? maybeIdx[0] : key] = v;
88
- }
73
+ const jsonValue = Object.entries(obj).reduce((prev2, [k, v]) => {
74
+ if (k.startsWith(`${curr.path}.`)) {
75
+ const key = k.slice(curr.path.length + 1);
76
+ const maybeIdx = key.match(/^\b\d+\b/);
77
+ if (maybeIdx && isFlatNestedArray(prev2)) {
78
+ isArray2 = true;
79
+ prev2 = {
80
+ ...prev2,
81
+ [maybeIdx[0]]: {
82
+ ...prev2[maybeIdx[0]] ? prev2[maybeIdx[0]] : {},
83
+ [key.slice(maybeIdx[0].length + 1)]: v
84
+ }
85
+ };
86
+ } else {
87
+ prev2[maybeIdx ? maybeIdx[0] : key] = v;
89
88
  }
90
- return prev2;
91
- },
92
- {}
93
- );
89
+ }
90
+ return prev2;
91
+ }, {});
94
92
  if (Object.keys(jsonValue).length > 0) {
95
93
  if (isArray2) {
96
94
  value = Object.values(jsonValue).map((v) => unflatten(v));
@@ -117,9 +115,7 @@ var denormalize = (paths, obj) => {
117
115
  const flatNestedObjectOrArray = Object.entries(obj).reduce((prev2, [k, v]) => {
118
116
  const isNested = k.startsWith(`${curr.path}.`) || k.includes("!") && k.startsWith(`${removeFirstAlias(curr.declaration)}.`);
119
117
  if (!isNested) return prev2;
120
- const flatKey = k.slice(
121
- (k.includes("!") ? removeFirstAlias(curr.declaration) : curr.path).length + 1
122
- );
118
+ const flatKey = k.slice((k.includes("!") ? removeFirstAlias(curr.declaration) : curr.path).length + 1);
123
119
  const maybeIdx = flatKey.match(/^\b\d+\b/);
124
120
  if (maybeIdx && isFlatNestedArray(prev2)) {
125
121
  isArray = true;
@@ -141,17 +137,12 @@ var denormalize = (paths, obj) => {
141
137
  if (isArray && isFlatNestedArray(flatNestedObjectOrArray)) {
142
138
  return {
143
139
  ...prev,
144
- [curr.alias || curr.path]: Object.values(flatNestedObjectOrArray).map(
145
- (v) => denormalize(curr.paths, v)
146
- )
140
+ [curr.alias || curr.path]: Object.values(flatNestedObjectOrArray).map((v) => denormalize(curr.paths, v))
147
141
  };
148
142
  }
149
143
  return {
150
144
  ...prev,
151
- [curr.alias || curr.path]: denormalize(
152
- curr.paths,
153
- flatNestedObjectOrArray
154
- )
145
+ [curr.alias || curr.path]: denormalize(curr.paths, flatNestedObjectOrArray)
155
146
  };
156
147
  }, {});
157
148
  };
@@ -179,9 +170,7 @@ var extractPathsFromFilters = (f, p) => {
179
170
  const relatedPath = p.find((p2) => p2.path === filter.path);
180
171
  const pathElements = filter.path.split(".");
181
172
  const aliasElements = filter.alias?.split(".");
182
- const declaration = pathElements.map(
183
- (el, idx) => `${aliasElements && aliasElements[idx] !== el ? `${aliasElements[idx]}:` : ""}${el}`
184
- ).join(".");
173
+ const declaration = pathElements.map((el, idx) => `${aliasElements && aliasElements[idx] !== el ? `${aliasElements[idx]}:` : ""}${el}`).join(".");
185
174
  prev.push({
186
175
  path: filter.path,
187
176
  alias: filter.alias,
@@ -198,12 +187,16 @@ var filterFilterDefinitionsByPaths = (f, paths) => {
198
187
  if (isAndFilter(filter)) {
199
188
  const filters = filterFilterDefinitionsByPaths(filter.and, paths);
200
189
  if (filters.length > 0) {
201
- prev.push({ and: filters });
190
+ prev.push({
191
+ and: filters
192
+ });
202
193
  }
203
194
  } else if (isOrFilter(filter)) {
204
195
  const filters = filterFilterDefinitionsByPaths(filter.or, paths);
205
196
  if (filters.length > 0) {
206
- prev.push({ or: filters });
197
+ prev.push({
198
+ or: filters
199
+ });
207
200
  }
208
201
  } else if (isFilterDefinition(filter) && paths.includes(filter.path)) {
209
202
  prev.push(filter);
@@ -214,10 +207,7 @@ var filterFilterDefinitionsByPaths = (f, paths) => {
214
207
 
215
208
  // src/parser/lib/get.ts
216
209
  var get = (obj, path, defaultValue = void 0) => {
217
- const travel = (regexp) => String.prototype.split.call(path, regexp).filter(Boolean).reduce(
218
- (res, key) => res !== null && res !== void 0 ? res[key] : res,
219
- obj
220
- );
210
+ const travel = (regexp) => String.prototype.split.call(path, regexp).filter(Boolean).reduce((res, key) => res !== null && res !== void 0 ? res[key] : res, obj);
221
211
  const result = travel(/[,[\]]+?/) || travel(/[,[\].]+?/);
222
212
  return result === void 0 || result === obj ? defaultValue : result;
223
213
  };
@@ -226,10 +216,7 @@ var get = (obj, path, defaultValue = void 0) => {
226
216
  var PostgrestFilter = class _PostgrestFilter {
227
217
  constructor(params) {
228
218
  this.params = params;
229
- this._filterPaths = extractPathsFromFilters(
230
- this.params.filters,
231
- this.params.paths
232
- );
219
+ this._filterPaths = extractPathsFromFilters(this.params.filters, this.params.paths);
233
220
  }
234
221
  _fn;
235
222
  _selectFn;
@@ -243,10 +230,7 @@ var PostgrestFilter = class _PostgrestFilter {
243
230
  });
244
231
  }
245
232
  static fromBuilder(fb, opts) {
246
- const parser = new PostgrestQueryParser(
247
- fb["url"].searchParams.toString(),
248
- opts
249
- );
233
+ const parser = new PostgrestQueryParser(fb["url"].searchParams.toString(), opts);
250
234
  return new _PostgrestFilter({
251
235
  filters: parser.filters,
252
236
  paths: parser.paths
@@ -272,18 +256,13 @@ var PostgrestFilter = class _PostgrestFilter {
272
256
  return filterFilterDefinitionsByPaths(this.params.filters, paths).length > 0;
273
257
  }
274
258
  applyFiltersOnPaths(obj, paths) {
275
- const filterFns = filterFilterDefinitionsByPaths(
276
- this.params.filters,
277
- paths
278
- ).map((d) => this.buildFilterFn(d));
259
+ const filterFns = filterFilterDefinitionsByPaths(this.params.filters, paths).map((d) => this.buildFilterFn(d));
279
260
  const filtersFn = (obj2) => filterFns.every((fn) => isObject(obj2) && fn(obj2));
280
261
  return filtersFn(obj);
281
262
  }
282
263
  hasPaths(obj) {
283
264
  if (!this._selectFn) {
284
- this._selectFn = (obj2) => this.params.paths.every(
285
- (p) => this.hasPathRecursive(obj2, p.alias ?? p.path)
286
- );
265
+ this._selectFn = (obj2) => this.params.paths.every((p) => this.hasPathRecursive(obj2, p.alias ?? p.path));
287
266
  }
288
267
  return this._selectFn(obj);
289
268
  }
@@ -296,11 +275,7 @@ var PostgrestFilter = class _PostgrestFilter {
296
275
  const pathElements = basePath.replace(/->>|->/g, ".").split(".");
297
276
  const currentPathElement = pathElements.pop();
298
277
  if (pathElements.length === 0) return v === null;
299
- return this.hasPathRecursive(
300
- obj,
301
- pathElements.join("."),
302
- [currentPathElement, objectPath].filter(Boolean).join(".")
303
- );
278
+ return this.hasPathRecursive(obj, pathElements.join("."), [currentPathElement, objectPath].filter(Boolean).join("."));
304
279
  }
305
280
  applyFilterFn(obj, path, {
306
281
  filterFn,
@@ -311,22 +286,20 @@ var PostgrestFilter = class _PostgrestFilter {
311
286
  const v = get(obj, pathElements[0]);
312
287
  if (typeof v === "undefined") {
313
288
  if (Array.isArray(obj)) {
314
- return obj.every(
315
- (o) => this.applyFilterFn(o, path, { filterFn, value, negate })
316
- );
289
+ return obj.every((o) => this.applyFilterFn(o, path, {
290
+ filterFn,
291
+ value,
292
+ negate
293
+ }));
317
294
  }
318
295
  return false;
319
296
  }
320
297
  if (pathElements.length > 1) {
321
- return this.applyFilterFn(
322
- v,
323
- pathElements.slice(1).join("."),
324
- {
325
- filterFn,
326
- value,
327
- negate
328
- }
329
- );
298
+ return this.applyFilterFn(v, pathElements.slice(1).join("."), {
299
+ filterFn,
300
+ value,
301
+ negate
302
+ });
330
303
  }
331
304
  const res = filterFn(parseValue(v), value);
332
305
  if (negate) return !res;
@@ -339,15 +312,20 @@ var PostgrestFilter = class _PostgrestFilter {
339
312
  if ("and" in def) {
340
313
  return (obj) => def.and.every((d) => this.buildFilterFn(d)(obj));
341
314
  }
342
- const { operator, path, value, negate, alias } = def;
315
+ const {
316
+ operator,
317
+ path,
318
+ value,
319
+ negate,
320
+ alias
321
+ } = def;
343
322
  const filterFn = OPERATOR_MAP[operator];
344
- if (!filterFn)
345
- throw new Error(
346
- `Unable to build filter function for ${JSON.stringify(
347
- def
348
- )}. Operator ${operator} is not supported.`
349
- );
350
- return (obj) => this.applyFilterFn(obj, alias ?? path, { filterFn, value, negate });
323
+ if (!filterFn) throw new Error(`Unable to build filter function for ${JSON.stringify(def)}. Operator ${operator} is not supported.`);
324
+ return (obj) => this.applyFilterFn(obj, alias ?? path, {
325
+ filterFn,
326
+ value,
327
+ negate
328
+ });
351
329
  }
352
330
  };
353
331
 
@@ -378,9 +356,7 @@ var isPostgrestHasMorePaginationCacheData = (q) => {
378
356
  if (!Array.isArray(q)) return false;
379
357
  if (q.length === 0) return true;
380
358
  const firstPage = q[0];
381
- return Array.isArray(
382
- firstPage.data
383
- ) && typeof firstPage.hasMore === "boolean";
359
+ return Array.isArray(firstPage.data) && typeof firstPage.hasMore === "boolean";
384
360
  };
385
361
 
386
362
  // src/parser/lib/find-filters.ts
@@ -415,21 +391,14 @@ var ifDateGetTime = (v) => {
415
391
  // src/parser/lib/sorted-comparator.ts
416
392
  var buildSortedComparator = (orderBy) => {
417
393
  return (a, b) => {
418
- for (const { column, ascending, nullsFirst, foreignTable } of orderBy) {
419
- const aValue = ifDateGetTime(
420
- get(
421
- a,
422
- `${foreignTable ? `${foreignTable}.` : ""}${column}`,
423
- null
424
- )
425
- );
426
- const bValue = ifDateGetTime(
427
- get(
428
- b,
429
- `${foreignTable ? `${foreignTable}.` : ""}${column}`,
430
- null
431
- )
432
- );
394
+ for (const {
395
+ column,
396
+ ascending,
397
+ nullsFirst,
398
+ foreignTable
399
+ } of orderBy) {
400
+ const aValue = ifDateGetTime(get(a, `${foreignTable ? `${foreignTable}.` : ""}${column}`, null));
401
+ const bValue = ifDateGetTime(get(b, `${foreignTable ? `${foreignTable}.` : ""}${column}`, null));
433
402
  if (aValue === bValue) continue;
434
403
  if (aValue === null || aValue === void 0) {
435
404
  return nullsFirst ? -1 : 1;
@@ -529,4 +498,4 @@ export {
529
498
  isPostgrestHasMorePaginationResponse,
530
499
  setFilterValue
531
500
  };
532
- //# sourceMappingURL=chunk-2IFGILT3.js.map
501
+ //# sourceMappingURL=chunk-U5UNPBKB.js.map