proto.io 0.0.168 → 0.0.170
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.
- package/dist/adapters/file/database.d.ts +2 -2
- package/dist/adapters/file/database.js +1 -1
- package/dist/adapters/file/database.mjs +1 -1
- package/dist/adapters/file/filesystem.d.ts +2 -2
- package/dist/adapters/file/google-cloud-storage.d.ts +2 -2
- package/dist/adapters/storage/progres.d.ts +1 -1
- package/dist/adapters/storage/progres.js +45 -81
- package/dist/adapters/storage/progres.js.map +1 -1
- package/dist/adapters/storage/progres.mjs +45 -81
- package/dist/adapters/storage/progres.mjs.map +1 -1
- package/dist/client.d.ts +3 -3
- package/dist/client.js +1 -1
- package/dist/client.mjs +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.mjs +4 -4
- package/dist/internals/{index-BejQNqvC.mjs → index-B1wqSio6.mjs} +1 -2
- package/dist/internals/index-B1wqSio6.mjs.map +1 -0
- package/dist/internals/{index-rkqvel7o.d.ts → index-B5u7VXjz.d.ts} +2 -2
- package/dist/internals/index-B5u7VXjz.d.ts.map +1 -0
- package/dist/internals/{index-y8EePsDY.d.ts → index-BB2vDnq0.d.ts} +2 -2
- package/dist/internals/index-BB2vDnq0.d.ts.map +1 -0
- package/dist/internals/{index-CyzpkgJB.js → index-BJP46VGq.js} +2 -2
- package/dist/internals/index-BJP46VGq.js.map +1 -0
- package/dist/internals/{index-CSNRyhjB.js → index-CzfsyXvb.js} +1 -2
- package/dist/internals/index-CzfsyXvb.js.map +1 -0
- package/dist/internals/{index-Dyfia5Om.mjs → index-D0hHgn2P.mjs} +2 -2
- package/dist/internals/index-D0hHgn2P.mjs.map +1 -0
- package/dist/internals/{index-BQggoDNX.d.ts → index-D_GYwO8X.d.ts} +2 -2
- package/dist/internals/index-D_GYwO8X.d.ts.map +1 -0
- package/dist/internals/{random-DrURPPxr.mjs → random-BCpwYpyw.mjs} +2 -2
- package/dist/internals/{random-DrURPPxr.mjs.map → random-BCpwYpyw.mjs.map} +1 -1
- package/dist/internals/{random-q0PeamQE.js → random-Dytum6Nh.js} +2 -2
- package/dist/internals/{random-q0PeamQE.js.map → random-Dytum6Nh.js.map} +1 -1
- package/package.json +1 -1
- package/dist/internals/index-BQggoDNX.d.ts.map +0 -1
- package/dist/internals/index-BejQNqvC.mjs.map +0 -1
- package/dist/internals/index-CSNRyhjB.js.map +0 -1
- package/dist/internals/index-CyzpkgJB.js.map +0 -1
- package/dist/internals/index-Dyfia5Om.mjs.map +0 -1
- package/dist/internals/index-rkqvel7o.d.ts.map +0 -1
- 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-
|
|
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-
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
2173
|
+
AND ${element} ${{ literal: op }} ${encodeValue(expr.value)}
|
|
2177
2174
|
)`;
|
|
2178
2175
|
}
|
|
2179
2176
|
else {
|
|
2180
|
-
return sql `${element} ${{ literal:
|
|
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,38 @@ 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 `
|
|
2266
|
+
return sql `true`;
|
|
2312
2267
|
if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
|
|
2313
|
-
return sql `${element}
|
|
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
|
-
|
|
2273
|
+
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2274
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2275
|
+
return sql `ARRAY(
|
|
2276
|
+
SELECT ${{ identifier: '_id' }}
|
|
2277
|
+
FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2278
|
+
) ${{ literal: op }} ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
|
|
2319
2279
|
}
|
|
2320
2280
|
if (!dataType) {
|
|
2321
|
-
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element}
|
|
2281
|
+
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} ${{ literal: op }} ${_encodeJsonValue(_encodeValue(expr.value))}`;
|
|
2322
2282
|
}
|
|
2323
2283
|
}
|
|
2284
|
+
break;
|
|
2324
2285
|
case '$not':
|
|
2325
2286
|
{
|
|
2326
2287
|
if (!(expr.value instanceof FieldSelectorExpression))
|
|
@@ -2350,6 +2311,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2350
2311
|
}
|
|
2351
2312
|
}
|
|
2352
2313
|
}
|
|
2314
|
+
break;
|
|
2353
2315
|
case '$starts':
|
|
2354
2316
|
{
|
|
2355
2317
|
if (!_.isString(expr.value))
|
|
@@ -2361,6 +2323,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2361
2323
|
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'string' AND (${element} #>> '{}') LIKE ${{ value: `${expr.value.replace(/([\\_%])/g, '\\$1')}%` }}`;
|
|
2362
2324
|
}
|
|
2363
2325
|
}
|
|
2326
|
+
break;
|
|
2364
2327
|
case '$ends':
|
|
2365
2328
|
{
|
|
2366
2329
|
if (!_.isString(expr.value))
|
|
@@ -2372,6 +2335,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2372
2335
|
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'string' AND (${element} #>> '{}') LIKE ${{ value: `%${expr.value.replace(/([\\_%])/g, '\\$1')}` }}`;
|
|
2373
2336
|
}
|
|
2374
2337
|
}
|
|
2338
|
+
break;
|
|
2375
2339
|
case '$size':
|
|
2376
2340
|
{
|
|
2377
2341
|
if (!_.isNumber(expr.value) || !_.isSafeInteger(expr.value))
|
|
@@ -2392,6 +2356,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2392
2356
|
)`;
|
|
2393
2357
|
}
|
|
2394
2358
|
}
|
|
2359
|
+
break;
|
|
2395
2360
|
case '$empty':
|
|
2396
2361
|
{
|
|
2397
2362
|
if (!_.isBoolean(expr.value))
|
|
@@ -2412,11 +2377,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2412
2377
|
)`;
|
|
2413
2378
|
}
|
|
2414
2379
|
}
|
|
2380
|
+
break;
|
|
2415
2381
|
case '$every':
|
|
2416
2382
|
{
|
|
2417
2383
|
if (!(expr.value instanceof QuerySelector))
|
|
2418
2384
|
break;
|
|
2419
|
-
if (relation
|
|
2385
|
+
if (relation && parent.className) {
|
|
2420
2386
|
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2421
2387
|
const filter = compiler._encodeFilter({
|
|
2422
2388
|
name: tempName,
|
|
@@ -2425,11 +2391,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2425
2391
|
}, expr.value);
|
|
2426
2392
|
if (!filter)
|
|
2427
2393
|
break;
|
|
2394
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2428
2395
|
return sql `NOT EXISTS(
|
|
2429
|
-
SELECT * FROM (${
|
|
2430
|
-
className: parent.className,
|
|
2431
|
-
name: parent.name,
|
|
2432
|
-
}, relation.populate, `$${field}`, false)}) AS ${{ identifier: tempName }}
|
|
2396
|
+
SELECT * FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2433
2397
|
WHERE NOT (${filter})
|
|
2434
2398
|
)`;
|
|
2435
2399
|
}
|
|
@@ -2450,11 +2414,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2450
2414
|
)`;
|
|
2451
2415
|
}
|
|
2452
2416
|
}
|
|
2417
|
+
break;
|
|
2453
2418
|
case '$some':
|
|
2454
2419
|
{
|
|
2455
2420
|
if (!(expr.value instanceof QuerySelector))
|
|
2456
2421
|
break;
|
|
2457
|
-
if (relation
|
|
2422
|
+
if (relation && parent.className) {
|
|
2458
2423
|
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2459
2424
|
const filter = compiler._encodeFilter({
|
|
2460
2425
|
name: tempName,
|
|
@@ -2463,11 +2428,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2463
2428
|
}, expr.value);
|
|
2464
2429
|
if (!filter)
|
|
2465
2430
|
break;
|
|
2431
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2466
2432
|
return sql `EXISTS(
|
|
2467
|
-
SELECT * FROM (${
|
|
2468
|
-
className: parent.className,
|
|
2469
|
-
name: parent.name,
|
|
2470
|
-
}, relation.populate, `$${field}`, false)}) AS ${{ identifier: tempName }}
|
|
2433
|
+
SELECT * FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2471
2434
|
WHERE ${filter}
|
|
2472
2435
|
)`;
|
|
2473
2436
|
}
|
|
@@ -2488,6 +2451,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2488
2451
|
)`;
|
|
2489
2452
|
}
|
|
2490
2453
|
}
|
|
2454
|
+
break;
|
|
2491
2455
|
}
|
|
2492
2456
|
throw Error('Invalid expression');
|
|
2493
2457
|
};
|