proto.io 0.0.168 → 0.0.169

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 (42) hide show
  1. package/dist/adapters/file/database.d.ts +2 -2
  2. package/dist/adapters/file/database.js +1 -1
  3. package/dist/adapters/file/database.mjs +1 -1
  4. package/dist/adapters/file/filesystem.d.ts +2 -2
  5. package/dist/adapters/file/google-cloud-storage.d.ts +2 -2
  6. package/dist/adapters/storage/progres.d.ts +1 -1
  7. package/dist/adapters/storage/progres.js +41 -81
  8. package/dist/adapters/storage/progres.js.map +1 -1
  9. package/dist/adapters/storage/progres.mjs +41 -81
  10. package/dist/adapters/storage/progres.mjs.map +1 -1
  11. package/dist/client.d.ts +3 -3
  12. package/dist/client.js +1 -1
  13. package/dist/client.mjs +2 -2
  14. package/dist/index.d.ts +3 -3
  15. package/dist/index.js +3 -3
  16. package/dist/index.mjs +4 -4
  17. package/dist/internals/{index-BejQNqvC.mjs → index-B1wqSio6.mjs} +1 -2
  18. package/dist/internals/index-B1wqSio6.mjs.map +1 -0
  19. package/dist/internals/{index-rkqvel7o.d.ts → index-B5u7VXjz.d.ts} +2 -2
  20. package/dist/internals/index-B5u7VXjz.d.ts.map +1 -0
  21. package/dist/internals/{index-y8EePsDY.d.ts → index-BB2vDnq0.d.ts} +2 -2
  22. package/dist/internals/index-BB2vDnq0.d.ts.map +1 -0
  23. package/dist/internals/{index-CyzpkgJB.js → index-BJP46VGq.js} +2 -2
  24. package/dist/internals/index-BJP46VGq.js.map +1 -0
  25. package/dist/internals/{index-CSNRyhjB.js → index-CzfsyXvb.js} +1 -2
  26. package/dist/internals/index-CzfsyXvb.js.map +1 -0
  27. package/dist/internals/{index-Dyfia5Om.mjs → index-D0hHgn2P.mjs} +2 -2
  28. package/dist/internals/index-D0hHgn2P.mjs.map +1 -0
  29. package/dist/internals/{index-BQggoDNX.d.ts → index-D_GYwO8X.d.ts} +2 -2
  30. package/dist/internals/index-D_GYwO8X.d.ts.map +1 -0
  31. package/dist/internals/{random-DrURPPxr.mjs → random-BCpwYpyw.mjs} +2 -2
  32. package/dist/internals/{random-DrURPPxr.mjs.map → random-BCpwYpyw.mjs.map} +1 -1
  33. package/dist/internals/{random-q0PeamQE.js → random-Dytum6Nh.js} +2 -2
  34. package/dist/internals/{random-q0PeamQE.js.map → random-Dytum6Nh.js.map} +1 -1
  35. package/package.json +1 -1
  36. package/dist/internals/index-BQggoDNX.d.ts.map +0 -1
  37. package/dist/internals/index-BejQNqvC.mjs.map +0 -1
  38. package/dist/internals/index-CSNRyhjB.js.map +0 -1
  39. package/dist/internals/index-CyzpkgJB.js.map +0 -1
  40. package/dist/internals/index-Dyfia5Om.mjs.map +0 -1
  41. package/dist/internals/index-rkqvel7o.d.ts.map +0 -1
  42. package/dist/internals/index-y8EePsDY.d.ts.map +0 -1
@@ -5,9 +5,9 @@ import QueryStream from 'pg-query-stream';
5
5
  import { asyncStream } from '@o2ter/utils-js';
6
6
  import Decimal from 'decimal.js';
7
7
  import { escapeLiteral, escapeIdentifier } from 'pg/lib/utils';
8
- import { a as QueryCoditionalSelector, b as QueryFieldSelector, c as QueryExpressionSelector, d as QueryDistanceExpression, e as QueryCoditionalExpression, f as QueryComparisonExpression, g as QueryNotExpression, h as QueryArrayExpression, i as QueryValueExpression, j as QueryKeyExpression, Q as QuerySelector, F as FieldSelectorExpression } from '../../internals/index-BejQNqvC.mjs';
8
+ import { a as QueryCoditionalSelector, b as QueryFieldSelector, c as QueryExpressionSelector, d as QueryDistanceExpression, e as QueryCoditionalExpression, f as QueryComparisonExpression, g as QueryNotExpression, h as QueryArrayExpression, i as QueryValueExpression, j as QueryKeyExpression, Q as QuerySelector, F as FieldSelectorExpression } from '../../internals/index-B1wqSio6.mjs';
9
9
  import '@o2ter/crypto-js';
10
- import { r as resolveColumn, a as resolveDataType, g as generateId, Q as QueryValidator } from '../../internals/random-DrURPPxr.mjs';
10
+ import { r as resolveColumn, a as resolveDataType, g as generateId, Q as QueryValidator } from '../../internals/random-BCpwYpyw.mjs';
11
11
  import { P as PVK } from '../../internals/private-BUpLAMZi.mjs';
12
12
 
13
13
  //
@@ -885,9 +885,6 @@ const fetchElement = (compiler, parent, field) => {
885
885
  relation: {
886
886
  target: dataType.target,
887
887
  populate,
888
- mapElem: (callback) => sql `SELECT
889
- ${callback(sql `${json ? sql `VALUE` : sql `UNNEST`}`)}
890
- FROM ${json ? sql `jsonb_array_elements(${element})` : sql `UNNEST(${element})`}`,
891
888
  },
892
889
  };
893
890
  }
@@ -2128,12 +2125,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2128
2125
  case '$lt':
2129
2126
  case '$lte':
2130
2127
  {
2131
- const operatorMap = {
2128
+ const op = {
2132
2129
  '$gt': '>',
2133
2130
  '$gte': '>=',
2134
2131
  '$lt': '<',
2135
2132
  '$lte': '<=',
2136
- };
2133
+ }[expr.type];
2137
2134
  if (_.isRegExp(expr.value) || expr.value instanceof QuerySelector || expr.value instanceof FieldSelectorExpression)
2138
2135
  break;
2139
2136
  if (dataType && isPrimitive(dataType)) {
@@ -2141,46 +2138,47 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2141
2138
  case 'boolean':
2142
2139
  if (!_.isBoolean(expr.value))
2143
2140
  break;
2144
- return sql `${element} ${{ literal: operatorMap[expr.type] }} ${encodeValue(expr.value)}`;
2141
+ return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
2145
2142
  case 'number':
2146
2143
  case 'decimal':
2147
2144
  if (!(expr.value instanceof Decimal) && !_.isNumber(expr.value))
2148
2145
  break;
2149
- return sql `${element} ${{ literal: operatorMap[expr.type] }} ${encodeValue(expr.value)}`;
2146
+ return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
2150
2147
  case 'string':
2151
2148
  if (!_.isString(expr.value))
2152
2149
  break;
2153
- return sql `${element} ${{ literal: operatorMap[expr.type] }} ${encodeValue(expr.value)}`;
2150
+ return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
2154
2151
  case 'date':
2155
2152
  if (!_.isDate(expr.value))
2156
2153
  break;
2157
- return sql `${element} ${{ literal: operatorMap[expr.type] }} ${encodeValue(expr.value)}`;
2154
+ return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
2158
2155
  }
2159
2156
  }
2160
2157
  else if (!_.isString(dataType) && dataType?.type === 'pointer' && expr.value instanceof TObject && expr.value.objectId) {
2161
- return sql `${element} ${{ literal: operatorMap[expr.type] }} ${{ value: expr.value.objectId }}`;
2158
+ return sql `${element} ${{ literal: op }} ${{ value: expr.value.objectId }}`;
2162
2159
  }
2163
2160
  else if (!dataType) {
2164
2161
  if (expr.value instanceof Decimal || _.isNumber(expr.value)) {
2165
2162
  return sql `(
2166
2163
  jsonb_typeof(${element}) ${nullSafeEqual()} 'number'
2167
- AND ${element}::NUMERIC ${{ literal: operatorMap[expr.type] }} ${{ value: expr.value instanceof Decimal ? expr.value.toNumber() : expr.value }}
2164
+ AND ${element}::NUMERIC ${{ literal: op }} ${{ value: expr.value instanceof Decimal ? expr.value.toNumber() : expr.value }}
2168
2165
  ) OR (
2169
2166
  jsonb_typeof(${element} -> '$decimal') ${nullSafeEqual()} 'string'
2170
- AND (${element} ->> '$decimal')::DECIMAL ${{ literal: operatorMap[expr.type] }} ${{ value: expr.value instanceof Decimal ? expr.value.toString() : expr.value }}::DECIMAL
2167
+ AND (${element} ->> '$decimal')::DECIMAL ${{ literal: op }} ${{ value: expr.value instanceof Decimal ? expr.value.toString() : expr.value }}::DECIMAL
2171
2168
  )`;
2172
2169
  }
2173
2170
  else if (_.isDate(expr.value)) {
2174
2171
  return sql `(
2175
2172
  jsonb_typeof(${element} -> '$date') ${nullSafeEqual()} 'string'
2176
- AND ${element} ${{ literal: operatorMap[expr.type] }} ${encodeValue(expr.value)}
2173
+ AND ${element} ${{ literal: op }} ${encodeValue(expr.value)}
2177
2174
  )`;
2178
2175
  }
2179
2176
  else {
2180
- return sql `${element} ${{ literal: operatorMap[expr.type] }} ${encodeValue(expr.value)}`;
2177
+ return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
2181
2178
  }
2182
2179
  }
2183
2180
  }
2181
+ break;
2184
2182
  case '$in':
2185
2183
  {
2186
2184
  if (!_.isArray(expr.value))
@@ -2216,6 +2214,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2216
2214
  return sql `${element} IN (${_.map(values, x => encodeValue(x))})`;
2217
2215
  }
2218
2216
  }
2217
+ break;
2219
2218
  case '$nin':
2220
2219
  {
2221
2220
  if (!_.isArray(expr.value))
@@ -2251,76 +2250,34 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2251
2250
  return sql `${element} NOT IN (${_.map(values, x => encodeValue(x))})`;
2252
2251
  }
2253
2252
  }
2253
+ break;
2254
2254
  case '$subset':
2255
- {
2256
- if (!_.isArray(expr.value))
2257
- break;
2258
- if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
2259
- return sql `${element} <@ ${{ value: _encodeValue(expr.value) }}`;
2260
- }
2261
- if (relation) {
2262
- if (!_.every(expr.value, x => x instanceof TObject && x.objectId))
2263
- break;
2264
- return sql `ARRAY(${relation.mapElem((v) => sql `${v} ->> '_id'`)}) <@ ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
2265
- }
2266
- if (!dataType) {
2267
- return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} <@ ${_encodeJsonValue(_encodeValue(expr.value))}`;
2268
- }
2269
- }
2270
2255
  case '$superset':
2271
- {
2272
- if (!_.isArray(expr.value))
2273
- break;
2274
- if (_.isEmpty(expr.value))
2275
- return sql `true`;
2276
- if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
2277
- return sql `${element} @> ${{ value: _encodeValue(expr.value) }}`;
2278
- }
2279
- if (relation) {
2280
- if (!_.every(expr.value, x => x instanceof TObject && x.objectId))
2281
- break;
2282
- return sql `ARRAY(${relation.mapElem((v) => sql `${v} ->> '_id'`)}) @> ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
2283
- }
2284
- if (!dataType) {
2285
- return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} @> ${_encodeJsonValue(_encodeValue(expr.value))}`;
2286
- }
2287
- }
2288
- case '$disjoint':
2289
- {
2290
- if (!_.isArray(expr.value))
2291
- break;
2292
- if (_.isEmpty(expr.value))
2293
- return sql `true`;
2294
- if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
2295
- return sql `NOT ${element} && ${{ value: _encodeValue(expr.value) }}`;
2296
- }
2297
- if (relation) {
2298
- if (!_.every(expr.value, x => x instanceof TObject && x.objectId))
2299
- break;
2300
- return sql `NOT ARRAY(${relation.mapElem((v) => sql `${v} ->> '_id'`)}) && ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
2301
- }
2302
- if (!dataType) {
2303
- return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND NOT ${element} && ${_encodeJsonValue(_encodeValue(expr.value))}`;
2304
- }
2305
- }
2306
2256
  case '$intersect':
2307
2257
  {
2258
+ const op = {
2259
+ '$subset': '<@',
2260
+ '$superset': '@>',
2261
+ '$intersect': '&&',
2262
+ }[expr.type];
2308
2263
  if (!_.isArray(expr.value))
2309
2264
  break;
2310
2265
  if (_.isEmpty(expr.value))
2311
- return sql `false`;
2266
+ return sql `true`;
2312
2267
  if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
2313
- return sql `${element} && ${{ value: _encodeValue(expr.value) }}`;
2268
+ return sql `${element} ${{ literal: op }} ${{ value: _encodeValue(expr.value) }}`;
2314
2269
  }
2315
- if (relation) {
2270
+ if (relation && parent.className) {
2316
2271
  if (!_.every(expr.value, x => x instanceof TObject && x.objectId))
2317
2272
  break;
2318
- return sql `ARRAY(${relation.mapElem((v) => sql `${v} ->> '_id'`)}) && ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
2273
+ const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
2274
+ return sql `ARRAY(SELECT ${{ identifier: '_id' }} FROM (${populate})) ${{ literal: op }} ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
2319
2275
  }
2320
2276
  if (!dataType) {
2321
- return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} && ${_encodeJsonValue(_encodeValue(expr.value))}`;
2277
+ return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} ${{ literal: op }} ${_encodeJsonValue(_encodeValue(expr.value))}`;
2322
2278
  }
2323
2279
  }
2280
+ break;
2324
2281
  case '$not':
2325
2282
  {
2326
2283
  if (!(expr.value instanceof FieldSelectorExpression))
@@ -2350,6 +2307,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2350
2307
  }
2351
2308
  }
2352
2309
  }
2310
+ break;
2353
2311
  case '$starts':
2354
2312
  {
2355
2313
  if (!_.isString(expr.value))
@@ -2361,6 +2319,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2361
2319
  return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'string' AND (${element} #>> '{}') LIKE ${{ value: `${expr.value.replace(/([\\_%])/g, '\\$1')}%` }}`;
2362
2320
  }
2363
2321
  }
2322
+ break;
2364
2323
  case '$ends':
2365
2324
  {
2366
2325
  if (!_.isString(expr.value))
@@ -2372,6 +2331,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2372
2331
  return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'string' AND (${element} #>> '{}') LIKE ${{ value: `%${expr.value.replace(/([\\_%])/g, '\\$1')}` }}`;
2373
2332
  }
2374
2333
  }
2334
+ break;
2375
2335
  case '$size':
2376
2336
  {
2377
2337
  if (!_.isNumber(expr.value) || !_.isSafeInteger(expr.value))
@@ -2392,6 +2352,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2392
2352
  )`;
2393
2353
  }
2394
2354
  }
2355
+ break;
2395
2356
  case '$empty':
2396
2357
  {
2397
2358
  if (!_.isBoolean(expr.value))
@@ -2412,11 +2373,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2412
2373
  )`;
2413
2374
  }
2414
2375
  }
2376
+ break;
2415
2377
  case '$every':
2416
2378
  {
2417
2379
  if (!(expr.value instanceof QuerySelector))
2418
2380
  break;
2419
- if (relation?.populate && parent.className) {
2381
+ if (relation && parent.className) {
2420
2382
  const tempName = `_populate_expr_$${compiler.nextIdx()}`;
2421
2383
  const filter = compiler._encodeFilter({
2422
2384
  name: tempName,
@@ -2425,11 +2387,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2425
2387
  }, expr.value);
2426
2388
  if (!filter)
2427
2389
  break;
2390
+ const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
2428
2391
  return sql `NOT EXISTS(
2429
- SELECT * FROM (${_selectRelationPopulate(compiler, {
2430
- className: parent.className,
2431
- name: parent.name,
2432
- }, relation.populate, `$${field}`, false)}) AS ${{ identifier: tempName }}
2392
+ SELECT * FROM (${populate}) AS ${{ identifier: tempName }}
2433
2393
  WHERE NOT (${filter})
2434
2394
  )`;
2435
2395
  }
@@ -2450,11 +2410,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2450
2410
  )`;
2451
2411
  }
2452
2412
  }
2413
+ break;
2453
2414
  case '$some':
2454
2415
  {
2455
2416
  if (!(expr.value instanceof QuerySelector))
2456
2417
  break;
2457
- if (relation?.populate && parent.className) {
2418
+ if (relation && parent.className) {
2458
2419
  const tempName = `_populate_expr_$${compiler.nextIdx()}`;
2459
2420
  const filter = compiler._encodeFilter({
2460
2421
  name: tempName,
@@ -2463,11 +2424,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2463
2424
  }, expr.value);
2464
2425
  if (!filter)
2465
2426
  break;
2427
+ const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
2466
2428
  return sql `EXISTS(
2467
- SELECT * FROM (${_selectRelationPopulate(compiler, {
2468
- className: parent.className,
2469
- name: parent.name,
2470
- }, relation.populate, `$${field}`, false)}) AS ${{ identifier: tempName }}
2429
+ SELECT * FROM (${populate}) AS ${{ identifier: tempName }}
2471
2430
  WHERE ${filter}
2472
2431
  )`;
2473
2432
  }
@@ -2488,6 +2447,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
2488
2447
  )`;
2489
2448
  }
2490
2449
  }
2450
+ break;
2491
2451
  }
2492
2452
  throw Error('Invalid expression');
2493
2453
  };