proto.io 0.0.217 → 0.0.218
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/aliyun-oss.d.ts +3 -3
- package/dist/adapters/file/database.d.ts +2 -2
- package/dist/adapters/file/database.js +2 -2
- package/dist/adapters/file/database.mjs +2 -2
- package/dist/adapters/file/filesystem.d.ts +3 -3
- package/dist/adapters/file/google-cloud-storage.d.ts +3 -3
- package/dist/adapters/storage/progres.d.ts +1 -1
- package/dist/adapters/storage/progres.js +38 -38
- package/dist/adapters/storage/progres.js.map +1 -1
- package/dist/adapters/storage/progres.mjs +38 -38
- package/dist/adapters/storage/progres.mjs.map +1 -1
- package/dist/client.d.ts +3 -3
- package/dist/client.js +2 -2
- package/dist/client.mjs +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +27 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +28 -28
- package/dist/index.mjs.map +1 -1
- package/dist/internals/{base-CWnOBKD5.d.ts → base-CqeIQTE9.d.ts} +2 -2
- package/dist/internals/base-CqeIQTE9.d.ts.map +1 -0
- package/dist/internals/{chunk-CNNSQpRF.d.ts → chunk-CLKTwfRe.d.ts} +3 -3
- package/dist/internals/chunk-CLKTwfRe.d.ts.map +1 -0
- package/dist/internals/{index-B8TESzd9.js → index-CLKTEIj0.js} +2 -2
- package/dist/internals/index-CLKTEIj0.js.map +1 -0
- package/dist/internals/{index-DfqABzjr.mjs → index-CZ5fKgiJ.mjs} +26 -26
- package/dist/internals/index-CZ5fKgiJ.mjs.map +1 -0
- package/dist/internals/{index-BRIlS3mY.d.ts → index-Ci8d33k-.d.ts} +2 -2
- package/dist/internals/index-Ci8d33k-.d.ts.map +1 -0
- package/dist/internals/{index-Bs8n7Q8f.d.ts → index-DQHWdslW.d.ts} +5 -5
- package/dist/internals/index-DQHWdslW.d.ts.map +1 -0
- package/dist/internals/{index-BzDsTt4R.mjs → index-gWcE22mf.mjs} +2 -2
- package/dist/internals/index-gWcE22mf.mjs.map +1 -0
- package/dist/internals/{index-DylUjD_1.js → index-xHeu-AjT.js} +26 -26
- package/dist/internals/index-xHeu-AjT.js.map +1 -0
- package/dist/internals/{validator-mcBCJP4P.js → validator-B5yHpyvb.js} +10 -10
- package/dist/internals/validator-B5yHpyvb.js.map +1 -0
- package/dist/internals/{validator-CEcBF4Cn.mjs → validator-DX2nXeQo.mjs} +10 -10
- package/dist/internals/validator-DX2nXeQo.mjs.map +1 -0
- package/package.json +2 -2
- package/dist/internals/base-CWnOBKD5.d.ts.map +0 -1
- package/dist/internals/chunk-CNNSQpRF.d.ts.map +0 -1
- package/dist/internals/index-B8TESzd9.js.map +0 -1
- package/dist/internals/index-BRIlS3mY.d.ts.map +0 -1
- package/dist/internals/index-Bs8n7Q8f.d.ts.map +0 -1
- package/dist/internals/index-BzDsTt4R.mjs.map +0 -1
- package/dist/internals/index-DfqABzjr.mjs.map +0 -1
- package/dist/internals/index-DylUjD_1.js.map +0 -1
- package/dist/internals/validator-CEcBF4Cn.mjs.map +0 -1
- package/dist/internals/validator-mcBCJP4P.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { a as isRelation, i as isPointer, b as isShape, e as decodeUpdateOp, s as shapePaths, c as isPrimitive, T as TObject, _ as _encodeValue, f as dimensionOf, g as _decodeValue, h as _typeof, j as isVector, k as _isTypeof } from '../../internals/index-
|
|
2
|
+
import { a as isRelation, i as isPointer, b as isShape, e as decodeUpdateOp, s as shapePaths, c as isPrimitive, T as TObject, _ as _encodeValue, f as dimensionOf, g as _decodeValue, h as _typeof, j as isVector, k as _isTypeof } from '../../internals/index-gWcE22mf.mjs';
|
|
3
3
|
import { Pool, types } from 'pg';
|
|
4
4
|
import QueryStream from 'pg-query-stream';
|
|
5
5
|
import { asyncStream, IteratorPool } from '@o2ter/utils-js';
|
|
6
6
|
import Decimal from 'decimal.js';
|
|
7
7
|
import { escapeLiteral, escapeIdentifier } from 'pg/lib/utils';
|
|
8
|
-
import { r as resolveColumn, b as resolveDataType$1, d as QueryCoditionalSelector, e as QueryFieldSelector, f as QueryExpressionSelector, g as QueryArrayExpression, h as QueryValueExpression, i as QueryKeyExpression, j as QueryCoditionalExpression, k as QueryComparisonExpression, l as QueryNotExpression, m as QueryDistanceExpression, n as QueryZeroParamExpression, o as QueryUnaryExpression, p as QueryBinaryExpression, q as QueryListExpression, s as QueryTernaryExpression, t as QueryCondExpression, Q as QueryValidator, u as QueryZeroParamAccumulator, v as QueryUnaryAccumulator, w as QueryPercentileAccumulator, c as QuerySelector, F as FieldSelectorExpression } from '../../internals/validator-
|
|
8
|
+
import { r as resolveColumn, b as resolveDataType$1, d as QueryCoditionalSelector, e as QueryFieldSelector, f as QueryExpressionSelector, g as QueryArrayExpression, h as QueryValueExpression, i as QueryKeyExpression, j as QueryCoditionalExpression, k as QueryComparisonExpression, l as QueryNotExpression, m as QueryDistanceExpression, n as QueryZeroParamExpression, o as QueryUnaryExpression, p as QueryBinaryExpression, q as QueryListExpression, s as QueryTernaryExpression, t as QueryCondExpression, Q as QueryValidator, u as QueryZeroParamAccumulator, v as QueryUnaryAccumulator, w as QueryPercentileAccumulator, c as QuerySelector, F as FieldSelectorExpression } from '../../internals/validator-DX2nXeQo.mjs';
|
|
9
9
|
import '@o2ter/crypto-js';
|
|
10
10
|
import { c as PROTO_EVENT } from '../../internals/const-Dkp7Nsv5.mjs';
|
|
11
11
|
import { g as generateId } from '../../internals/random-CYjWDvex.mjs';
|
|
@@ -185,12 +185,12 @@ const _encodeSorting = (includes, populates, sort) => {
|
|
|
185
185
|
return sorting;
|
|
186
186
|
};
|
|
187
187
|
const _defaultInsertOpts = (options) => {
|
|
188
|
-
const
|
|
188
|
+
const id = generateId(options.objectIdSize);
|
|
189
189
|
return {
|
|
190
|
-
_id: sql `${{ value:
|
|
190
|
+
_id: sql `${{ value: id }}`,
|
|
191
191
|
...options.className === 'User' ? {
|
|
192
|
-
_rperm: sql `${{ value: [
|
|
193
|
-
_wperm: sql `${{ value: [
|
|
192
|
+
_rperm: sql `${{ value: [id] }}`,
|
|
193
|
+
_wperm: sql `${{ value: [id] }}`,
|
|
194
194
|
} : {},
|
|
195
195
|
};
|
|
196
196
|
};
|
|
@@ -628,12 +628,12 @@ const encodeType = (colname, dataType, value) => {
|
|
|
628
628
|
break;
|
|
629
629
|
return sql `ARRAY[${_.map(value, x => _encodeJsonValue(_encodeValue(x)))}]::JSONB[]`;
|
|
630
630
|
case 'pointer':
|
|
631
|
-
if (value instanceof TObject && value.
|
|
632
|
-
return sql `${{ value: `${value.className}$${value.
|
|
631
|
+
if (value instanceof TObject && value.id)
|
|
632
|
+
return sql `${{ value: `${value.className}$${value.id}` }}`;
|
|
633
633
|
break;
|
|
634
634
|
case 'relation':
|
|
635
|
-
if (_.isArray(value) && _.every(value, x => x instanceof TObject && x.
|
|
636
|
-
return sql `${{ value: _.uniq(_.map(value, (x) => `${x.className}$${x.
|
|
635
|
+
if (_.isArray(value) && _.every(value, x => x instanceof TObject && x.id)) {
|
|
636
|
+
return sql `${{ value: _.uniq(_.map(value, (x) => `${x.className}$${x.id}`)) }}`;
|
|
637
637
|
}
|
|
638
638
|
break;
|
|
639
639
|
}
|
|
@@ -1313,7 +1313,7 @@ class SqlStorage {
|
|
|
1313
1313
|
const _value = _.get(value, path);
|
|
1314
1314
|
if (_.isPlainObject(_value)) {
|
|
1315
1315
|
const decoded = this._decodeObject(type.target, _value, matchType);
|
|
1316
|
-
if (decoded.
|
|
1316
|
+
if (decoded.id)
|
|
1317
1317
|
_.set(result, path, decoded);
|
|
1318
1318
|
}
|
|
1319
1319
|
}
|
|
@@ -1353,7 +1353,7 @@ class SqlStorage {
|
|
|
1353
1353
|
else if (isPointer(dataType)) {
|
|
1354
1354
|
if (_.isPlainObject(value)) {
|
|
1355
1355
|
const decoded = this._decodeObject(dataType.target, value, matchType);
|
|
1356
|
-
if (decoded.
|
|
1356
|
+
if (decoded.id)
|
|
1357
1357
|
obj[PVK].attributes[key] = decoded;
|
|
1358
1358
|
}
|
|
1359
1359
|
}
|
|
@@ -1446,7 +1446,7 @@ class SqlStorage {
|
|
|
1446
1446
|
const self = this;
|
|
1447
1447
|
const query = sql `
|
|
1448
1448
|
SELECT *
|
|
1449
|
-
FROM (${this._refs(_.pick(this.schema, classNames), object.className, TObject.defaultKeys, sql `${{ value: `${object.className}$${object.
|
|
1449
|
+
FROM (${this._refs(_.pick(this.schema, classNames), object.className, TObject.defaultKeys, sql `${{ value: `${object.className}$${object.id}` }}`)}) AS "$"
|
|
1450
1450
|
${_.isNil(roles) ? sql `` : sql `WHERE ${{ identifier: '$' }}.${{ identifier: '_rperm' }} && ${{ value: roles }}`}
|
|
1451
1451
|
`;
|
|
1452
1452
|
return (async function* () {
|
|
@@ -2037,25 +2037,25 @@ const updateOperation = (paths, dataType, operation) => {
|
|
|
2037
2037
|
case '$addToSet':
|
|
2038
2038
|
case '$push':
|
|
2039
2039
|
{
|
|
2040
|
-
if (!_.isArray(value) || !_.every(value, x => x instanceof TObject && x.
|
|
2040
|
+
if (!_.isArray(value) || !_.every(value, x => x instanceof TObject && x.id))
|
|
2041
2041
|
break;
|
|
2042
|
-
const
|
|
2042
|
+
const ids = _.uniq(_.map(value, (x) => `${x.className}$${x.id}`));
|
|
2043
2043
|
return sql `ARRAY(
|
|
2044
2044
|
SELECT DISTINCT "$"
|
|
2045
|
-
FROM UNNEST(${{ identifier: column }} || ARRAY[${_.map(
|
|
2045
|
+
FROM UNNEST(${{ identifier: column }} || ARRAY[${_.map(ids, (x) => sql `${{ value: x }}`)}]) "$"
|
|
2046
2046
|
RIGHT JOIN ${{ identifier: dataType.target }} ON "$" = (${{ quote: dataType.target + '$' }} || ${{ identifier: dataType.target }}._id)
|
|
2047
2047
|
)`;
|
|
2048
2048
|
}
|
|
2049
2049
|
case '$removeAll':
|
|
2050
2050
|
{
|
|
2051
|
-
if (!_.isArray(value) || !_.every(value, x => x instanceof TObject && x.
|
|
2051
|
+
if (!_.isArray(value) || !_.every(value, x => x instanceof TObject && x.id))
|
|
2052
2052
|
break;
|
|
2053
|
-
const
|
|
2053
|
+
const ids = _.uniq(_.map(value, (x) => `${x.className}$${x.id}`));
|
|
2054
2054
|
return sql `ARRAY(
|
|
2055
2055
|
SELECT "$"
|
|
2056
2056
|
FROM UNNEST(${{ identifier: column }}) "$"
|
|
2057
2057
|
RIGHT JOIN ${{ identifier: dataType.target }} ON "$" = (${{ quote: dataType.target + '$' }} || ${{ identifier: dataType.target }}._id)
|
|
2058
|
-
WHERE "$" NOT IN (${_.map(
|
|
2058
|
+
WHERE "$" NOT IN (${_.map(ids, (x) => sql `${{ value: x }}`)})
|
|
2059
2059
|
)`;
|
|
2060
2060
|
}
|
|
2061
2061
|
}
|
|
@@ -2555,9 +2555,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2555
2555
|
if (_.isNil(expr.value))
|
|
2556
2556
|
return sql `${element} IS NULL`;
|
|
2557
2557
|
if (!_.isString(dataType) && dataType?.type === 'pointer') {
|
|
2558
|
-
if (!(expr.value instanceof TObject) || dataType.target !== expr.value.className || !expr.value.
|
|
2558
|
+
if (!(expr.value instanceof TObject) || dataType.target !== expr.value.className || !expr.value.id)
|
|
2559
2559
|
break;
|
|
2560
|
-
return sql `${element} ${nullSafeEqual()} ${{ value: expr.value.
|
|
2560
|
+
return sql `${element} ${nullSafeEqual()} ${{ value: expr.value.id }}`;
|
|
2561
2561
|
}
|
|
2562
2562
|
return sql `${element} ${nullSafeEqual()} ${encodeValue(expr.value)}`;
|
|
2563
2563
|
}
|
|
@@ -2568,9 +2568,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2568
2568
|
if (_.isNil(expr.value))
|
|
2569
2569
|
return sql `${element} IS NOT NULL`;
|
|
2570
2570
|
if (!_.isString(dataType) && dataType?.type === 'pointer') {
|
|
2571
|
-
if (!(expr.value instanceof TObject) || dataType.target !== expr.value.className || !expr.value.
|
|
2571
|
+
if (!(expr.value instanceof TObject) || dataType.target !== expr.value.className || !expr.value.id)
|
|
2572
2572
|
break;
|
|
2573
|
-
return sql `${element} ${nullSafeNotEqual()} ${{ value: expr.value.
|
|
2573
|
+
return sql `${element} ${nullSafeNotEqual()} ${{ value: expr.value.id }}`;
|
|
2574
2574
|
}
|
|
2575
2575
|
return sql `${element} ${nullSafeNotEqual()} ${encodeValue(expr.value)}`;
|
|
2576
2576
|
}
|
|
@@ -2612,8 +2612,8 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2612
2612
|
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2613
2613
|
}
|
|
2614
2614
|
}
|
|
2615
|
-
else if (!_.isString(dataType) && dataType?.type === 'pointer' && expr.value instanceof TObject && expr.value.
|
|
2616
|
-
return sql `${element} ${{ literal: op }} ${{ value: expr.value.
|
|
2615
|
+
else if (!_.isString(dataType) && dataType?.type === 'pointer' && expr.value instanceof TObject && expr.value.id) {
|
|
2616
|
+
return sql `${element} ${{ literal: op }} ${{ value: expr.value.id }}`;
|
|
2617
2617
|
}
|
|
2618
2618
|
else if (!dataType) {
|
|
2619
2619
|
if (expr.value instanceof Decimal || _.isNumber(expr.value)) {
|
|
@@ -2649,9 +2649,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2649
2649
|
if (!_.isString(dataType) && dataType?.type === 'pointer') {
|
|
2650
2650
|
if (_.isNil(value))
|
|
2651
2651
|
return sql `${element} IS NULL`;
|
|
2652
|
-
if (!(value instanceof TObject) || dataType.target !== value.className || !value.
|
|
2652
|
+
if (!(value instanceof TObject) || dataType.target !== value.className || !value.id)
|
|
2653
2653
|
break;
|
|
2654
|
-
return sql `${element} ${nullSafeEqual()} ${{ value: value.
|
|
2654
|
+
return sql `${element} ${nullSafeEqual()} ${{ value: value.id }}`;
|
|
2655
2655
|
}
|
|
2656
2656
|
return sql `${element} ${nullSafeEqual()} ${encodeValue(value)}`;
|
|
2657
2657
|
}
|
|
@@ -2659,12 +2659,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2659
2659
|
const containsNil = _.some(expr.value, x => _.isNil(x));
|
|
2660
2660
|
const values = _.filter(expr.value, x => !_.isNil(x));
|
|
2661
2661
|
if (!_.isString(dataType) && dataType?.type === 'pointer') {
|
|
2662
|
-
if (!_.every(values, x => x instanceof TObject && dataType.target === x.className && x.
|
|
2662
|
+
if (!_.every(values, x => x instanceof TObject && dataType.target === x.className && x.id))
|
|
2663
2663
|
break;
|
|
2664
2664
|
if (containsNil) {
|
|
2665
|
-
return sql `${element} IS NULL OR ${element} IN (${_.map(values, (x) => sql `${{ value: x.
|
|
2665
|
+
return sql `${element} IS NULL OR ${element} IN (${_.map(values, (x) => sql `${{ value: x.id }}`)})`;
|
|
2666
2666
|
}
|
|
2667
|
-
return sql `${element} IN (${_.map(values, (x) => sql `${{ value: x.
|
|
2667
|
+
return sql `${element} IN (${_.map(values, (x) => sql `${{ value: x.id }}`)})`;
|
|
2668
2668
|
}
|
|
2669
2669
|
if (containsNil) {
|
|
2670
2670
|
return sql `${element} IS NULL OR ${element} IN (${_.map(values, x => encodeValue(x))})`;
|
|
@@ -2685,9 +2685,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2685
2685
|
if (!_.isString(dataType) && dataType?.type === 'pointer') {
|
|
2686
2686
|
if (_.isNil(value))
|
|
2687
2687
|
return sql `${element} IS NOT NULL`;
|
|
2688
|
-
if (!(value instanceof TObject) || dataType.target !== value.className || !value.
|
|
2688
|
+
if (!(value instanceof TObject) || dataType.target !== value.className || !value.id)
|
|
2689
2689
|
break;
|
|
2690
|
-
return sql `${element} ${nullSafeNotEqual()} ${{ value: value.
|
|
2690
|
+
return sql `${element} ${nullSafeNotEqual()} ${{ value: value.id }}`;
|
|
2691
2691
|
}
|
|
2692
2692
|
return sql `${element} ${nullSafeNotEqual()} ${encodeValue(value)}`;
|
|
2693
2693
|
}
|
|
@@ -2695,12 +2695,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2695
2695
|
const containsNil = _.some(expr.value, x => _.isNil(x));
|
|
2696
2696
|
const values = _.filter(expr.value, x => !_.isNil(x));
|
|
2697
2697
|
if (!_.isString(dataType) && dataType?.type === 'pointer') {
|
|
2698
|
-
if (!_.every(values, x => x instanceof TObject && dataType.target === x.className && x.
|
|
2698
|
+
if (!_.every(values, x => x instanceof TObject && dataType.target === x.className && x.id))
|
|
2699
2699
|
break;
|
|
2700
2700
|
if (containsNil) {
|
|
2701
|
-
return sql `${element} IS NOT NULL AND ${element} NOT IN (${_.map(values, (x) => sql `${{ value: x.
|
|
2701
|
+
return sql `${element} IS NOT NULL AND ${element} NOT IN (${_.map(values, (x) => sql `${{ value: x.id }}`)})`;
|
|
2702
2702
|
}
|
|
2703
|
-
return sql `${element} NOT IN (${_.map(values, (x) => sql `${{ value: x.
|
|
2703
|
+
return sql `${element} NOT IN (${_.map(values, (x) => sql `${{ value: x.id }}`)})`;
|
|
2704
2704
|
}
|
|
2705
2705
|
if (containsNil) {
|
|
2706
2706
|
return sql `${element} IS NOT NULL AND ${element} NOT IN (${_.map(values, x => encodeValue(x))})`;
|
|
@@ -2730,14 +2730,14 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2730
2730
|
return sql `${element} ${{ literal: op }} ${{ value: _encodeValue(expr.value) }}`;
|
|
2731
2731
|
}
|
|
2732
2732
|
if (relation && parent.className) {
|
|
2733
|
-
if (!_.every(expr.value, x => x instanceof TObject && relation.target === x.className && x.
|
|
2733
|
+
if (!_.every(expr.value, x => x instanceof TObject && relation.target === x.className && x.id))
|
|
2734
2734
|
break;
|
|
2735
2735
|
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2736
2736
|
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2737
2737
|
return sql `ARRAY(
|
|
2738
2738
|
SELECT ${{ identifier: '_id' }}
|
|
2739
2739
|
FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2740
|
-
) ${{ literal: op }} ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.
|
|
2740
|
+
) ${{ literal: op }} ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.id }}`)}]::TEXT[]`;
|
|
2741
2741
|
}
|
|
2742
2742
|
if (!dataType) {
|
|
2743
2743
|
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} ${{ literal: op }} ${_encodeJsonValue(_encodeValue(expr.value))}`;
|
|
@@ -3023,7 +3023,7 @@ const encodeRelation = (compiler, parent, relatedBy) => {
|
|
|
3023
3023
|
SELECT 1
|
|
3024
3024
|
FROM ${{ identifier: relatedBy.className }} AS ${{ identifier: name }}
|
|
3025
3025
|
${!_.isEmpty(joins) ? { literal: joins, separator: '\n' } : sql ``}
|
|
3026
|
-
WHERE ${_foreign('_id')} = ${{ value: relatedBy.
|
|
3026
|
+
WHERE ${_foreign('_id')} = ${{ value: relatedBy.id }} AND ${sql `(${{ quote: parent.className + '$' }} || ${_local('_id')})`} = ANY(${field})
|
|
3027
3027
|
)`;
|
|
3028
3028
|
};
|
|
3029
3029
|
|