@snowtop/ent 0.1.0-alpha159 → 0.1.0-alpha160-test1
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/action/orchestrator.js +7 -7
- package/core/db.js +3 -1
- package/core/ent.d.ts +31 -1
- package/core/ent.js +25 -10
- package/core/privacy.js +14 -5
- package/core/query/query.js +4 -4
- package/package.json +3 -4
- package/schema/field.js +2 -2
- package/testutils/db/temp_db.js +8 -1
package/action/orchestrator.js
CHANGED
|
@@ -36,7 +36,7 @@ const executor_1 = require("./executor");
|
|
|
36
36
|
const logger_1 = require("../core/logger");
|
|
37
37
|
const memoizee_1 = __importDefault(require("memoizee"));
|
|
38
38
|
const clause = __importStar(require("../core/clause"));
|
|
39
|
-
const
|
|
39
|
+
const types_1 = require("util/types");
|
|
40
40
|
const operations_2 = require("./operations");
|
|
41
41
|
var edgeDirection;
|
|
42
42
|
(function (edgeDirection) {
|
|
@@ -341,7 +341,7 @@ class Orchestrator {
|
|
|
341
341
|
}
|
|
342
342
|
if (field.valid) {
|
|
343
343
|
let valid = field.valid(val);
|
|
344
|
-
if (
|
|
344
|
+
if ((0, types_1.isPromise)(valid)) {
|
|
345
345
|
valid = await valid;
|
|
346
346
|
}
|
|
347
347
|
// if not valid, don't format and don't pass to ent?
|
|
@@ -353,7 +353,7 @@ class Orchestrator {
|
|
|
353
353
|
}
|
|
354
354
|
// nested so it's not JSON stringified or anything like that
|
|
355
355
|
val = field.format(formatted[dbKey], true);
|
|
356
|
-
if (
|
|
356
|
+
if ((0, types_1.isPromise)(val)) {
|
|
357
357
|
val = await val;
|
|
358
358
|
}
|
|
359
359
|
formatted[dbKey] = val;
|
|
@@ -673,7 +673,7 @@ class Orchestrator {
|
|
|
673
673
|
if (defaultValue === undefined) {
|
|
674
674
|
throw new Error(`defaultValueOnCreate() returned undefined for field ${fieldName}`);
|
|
675
675
|
}
|
|
676
|
-
if (
|
|
676
|
+
if ((0, types_1.isPromise)(defaultValue)) {
|
|
677
677
|
defaultValue = await defaultValue;
|
|
678
678
|
}
|
|
679
679
|
}
|
|
@@ -681,7 +681,7 @@ class Orchestrator {
|
|
|
681
681
|
if (field.defaultValueOnEdit &&
|
|
682
682
|
this.actualOperation === action_1.WriteOperation.Edit) {
|
|
683
683
|
defaultValue = field.defaultValueOnEdit(builder, input);
|
|
684
|
-
if (
|
|
684
|
+
if ((0, types_1.isPromise)(defaultValue)) {
|
|
685
685
|
defaultValue = await defaultValue;
|
|
686
686
|
}
|
|
687
687
|
}
|
|
@@ -741,7 +741,7 @@ class Orchestrator {
|
|
|
741
741
|
else if (this.isBuilder(value)) {
|
|
742
742
|
if (field.valid) {
|
|
743
743
|
let valid = field.valid(value);
|
|
744
|
-
if (
|
|
744
|
+
if ((0, types_1.isPromise)(valid)) {
|
|
745
745
|
valid = await valid;
|
|
746
746
|
}
|
|
747
747
|
if (!valid) {
|
|
@@ -756,7 +756,7 @@ class Orchestrator {
|
|
|
756
756
|
else {
|
|
757
757
|
if (field.valid) {
|
|
758
758
|
let valid = field.valid(value);
|
|
759
|
-
if (
|
|
759
|
+
if ((0, types_1.isPromise)(valid)) {
|
|
760
760
|
valid = await valid;
|
|
761
761
|
}
|
|
762
762
|
if (!valid) {
|
package/core/db.js
CHANGED
|
@@ -139,7 +139,9 @@ class DB {
|
|
|
139
139
|
}
|
|
140
140
|
else {
|
|
141
141
|
let sqlite = require("better-sqlite3");
|
|
142
|
-
|
|
142
|
+
const dbb = sqlite(db.filePath || "");
|
|
143
|
+
dbb.pragma("journal_mode = WAL");
|
|
144
|
+
this.q = new Sqlite(dbb);
|
|
143
145
|
}
|
|
144
146
|
}
|
|
145
147
|
getConnection() {
|
package/core/ent.d.ts
CHANGED
|
@@ -1,8 +1,38 @@
|
|
|
1
1
|
import { Queryer, SyncQueryer } from "./db";
|
|
2
|
-
import { Viewer, Ent, ID, LoadRowsOptions, LoadRowOptions, Data, DataOptions, QueryableDataOptions, EditRowOptions, LoadEntOptions, LoadCustomEntOptions, EdgeQueryableDataOptions, Context, CreateRowOptions, QueryDataOptions, SelectCustomDataOptions } from "./base";
|
|
2
|
+
import { Viewer, Ent, ID, LoadRowsOptions, LoadRowOptions, Data, DataOptions, QueryableDataOptions, EditRowOptions, LoadEntOptions, LoadCustomEntOptions, EdgeQueryableDataOptions, Context, CreateRowOptions, QueryDataOptions, SelectCustomDataOptions, LoaderWithLoadMany } from "./base";
|
|
3
3
|
import * as clause from "./clause";
|
|
4
4
|
import DataLoader from "dataloader";
|
|
5
5
|
import { OrderBy } from "./query_impl";
|
|
6
|
+
declare class entCacheMap<TViewer extends Viewer, TEnt extends Ent<TViewer>> {
|
|
7
|
+
private viewer;
|
|
8
|
+
private options;
|
|
9
|
+
private m;
|
|
10
|
+
private logEnabled;
|
|
11
|
+
constructor(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>);
|
|
12
|
+
get(id: ID): any;
|
|
13
|
+
set(key: string, value: any): Map<any, any>;
|
|
14
|
+
delete(key: string): boolean;
|
|
15
|
+
clear(): void;
|
|
16
|
+
}
|
|
17
|
+
declare class ErrorWrapper {
|
|
18
|
+
error: Error;
|
|
19
|
+
constructor(error: Error);
|
|
20
|
+
}
|
|
21
|
+
export declare function rowIsError(row: any): row is Error;
|
|
22
|
+
declare class EntLoader<TViewer extends Viewer, TEnt extends Ent<TViewer>> implements LoaderWithLoadMany<ID, TEnt | ErrorWrapper | Error> {
|
|
23
|
+
private viewer;
|
|
24
|
+
private options;
|
|
25
|
+
private loader;
|
|
26
|
+
private map;
|
|
27
|
+
constructor(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>);
|
|
28
|
+
getMap(): entCacheMap<TViewer, TEnt>;
|
|
29
|
+
load(id: ID): Promise<TEnt | ErrorWrapper>;
|
|
30
|
+
loadMany(ids: ID[]): Promise<Array<TEnt | ErrorWrapper | Error>>;
|
|
31
|
+
prime(id: ID, ent: TEnt | ErrorWrapper): void;
|
|
32
|
+
clear(id: ID): void;
|
|
33
|
+
clearAll(): void;
|
|
34
|
+
}
|
|
35
|
+
export declare function getEntLoader<TViewer extends Viewer, TEnt extends Ent<TViewer>>(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>): EntLoader<TViewer, TEnt>;
|
|
6
36
|
export declare function getEntKey<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, id: ID, options: LoadEntOptions<TEnt, TViewer>): string;
|
|
7
37
|
export declare function loadEnt<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, id: ID, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt | null>;
|
|
8
38
|
export declare function loadEntViaKey<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, key: any, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt | null>;
|
package/core/ent.js
CHANGED
|
@@ -26,7 +26,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
29
|
+
exports.applyPrivacyPolicyForRow = exports.loadNodesByEdge = exports.loadEdgeForID2 = exports.loadRawEdgeCountX = exports.loadUniqueNode = exports.loadUniqueEdge = exports.loadCustomEdges = exports.getEdgeClauseAndFields = exports.loadEdges = exports.getDefaultLimit = exports.setDefaultLimit = exports.loadEdgeDatas = exports.loadEdgeData = exports.assocEdgeLoader = exports.AssocEdgeData = exports.getCursor = exports.AssocEdge = exports.deleteRowsSync = exports.deleteRows = exports.editRowSync = exports.editRow = exports.buildUpdateQuery = exports.createRowSync = exports.createRow = exports.buildInsertQuery = exports.buildGroupQuery = exports.buildQuery = exports.loadRows = exports.performRawQuery = exports.___setLogQueryErrorWithError = exports.loadRow = exports.loadRowX = exports.logQuery = exports.loadDerivedEntX = exports.loadDerivedEnt = exports.loadCustomCount = exports.loadCustomData = exports.loadCustomEnts = exports.loadEntsFromClause = exports.loadEntsList = exports.loadEnts = exports.loadEntXFromClause = exports.loadEntFromClause = exports.loadEntXViaKey = exports.loadEntX = exports.loadEntViaKey = exports.loadEnt = exports.getEntKey = exports.getEntLoader = exports.rowIsError = void 0;
|
|
30
|
+
exports.getEdgeTypeInGroup = exports.applyPrivacyPolicyForRows = void 0;
|
|
30
31
|
const db_1 = __importStar(require("./db"));
|
|
31
32
|
const privacy_1 = require("./privacy");
|
|
32
33
|
const clause = __importStar(require("./clause"));
|
|
@@ -102,6 +103,13 @@ class ErrorWrapper {
|
|
|
102
103
|
this.error = error;
|
|
103
104
|
}
|
|
104
105
|
}
|
|
106
|
+
// note if storing the result of this in something that checks instanceof Error e.g. DataLoader, we need to check instanceof at that callsite
|
|
107
|
+
function rowIsError(row) {
|
|
108
|
+
// jest does things that break instanceof checks
|
|
109
|
+
// so we need to check the name as well for native error SqliteError
|
|
110
|
+
return row instanceof Error || row?.constructor?.name === "SqliteError";
|
|
111
|
+
}
|
|
112
|
+
exports.rowIsError = rowIsError;
|
|
105
113
|
function createEntLoader(viewer, options, map) {
|
|
106
114
|
// share the cache across loaders even if we create a new instance
|
|
107
115
|
const loaderOptions = {};
|
|
@@ -119,8 +127,14 @@ function createEntLoader(viewer, options, map) {
|
|
|
119
127
|
for (let idx = 0; idx < rows.length; idx++) {
|
|
120
128
|
const row = rows[idx];
|
|
121
129
|
// db error
|
|
122
|
-
if (row
|
|
123
|
-
|
|
130
|
+
if (rowIsError(row)) {
|
|
131
|
+
if (row instanceof Error) {
|
|
132
|
+
result[idx] = row;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// @ts-ignore SqliteError
|
|
136
|
+
result[idx] = new Error(row.message);
|
|
137
|
+
}
|
|
124
138
|
continue;
|
|
125
139
|
}
|
|
126
140
|
else if (!row) {
|
|
@@ -133,7 +147,7 @@ function createEntLoader(viewer, options, map) {
|
|
|
133
147
|
}
|
|
134
148
|
else {
|
|
135
149
|
const r = await applyPrivacyPolicyForRowImpl(viewer, options, row);
|
|
136
|
-
if (r
|
|
150
|
+
if (rowIsError(r)) {
|
|
137
151
|
result[idx] = new ErrorWrapper(r);
|
|
138
152
|
}
|
|
139
153
|
else {
|
|
@@ -177,6 +191,7 @@ function getEntLoader(viewer, options) {
|
|
|
177
191
|
const name = `ent-loader:${viewer.instanceKey()}:${options.loaderFactory.name}`;
|
|
178
192
|
return viewer.context.cache.getLoaderWithLoadMany(name, () => new EntLoader(viewer, options));
|
|
179
193
|
}
|
|
194
|
+
exports.getEntLoader = getEntLoader;
|
|
180
195
|
function getEntKey(viewer, id, options) {
|
|
181
196
|
return `${viewer.instanceKey()}:${options.loaderFactory.name}:${id}`;
|
|
182
197
|
}
|
|
@@ -207,7 +222,7 @@ loader) {
|
|
|
207
222
|
return result;
|
|
208
223
|
}
|
|
209
224
|
const r = await applyPrivacyPolicyForRowImpl(viewer, options, row);
|
|
210
|
-
if (r
|
|
225
|
+
if (rowIsError(r)) {
|
|
211
226
|
loader.prime(id, new ErrorWrapper(r));
|
|
212
227
|
return new ErrorWrapper(r);
|
|
213
228
|
}
|
|
@@ -297,7 +312,7 @@ async function loadEnts(viewer, options, ...ids) {
|
|
|
297
312
|
let m = new Map();
|
|
298
313
|
const ret = await getEntLoader(viewer, options).loadMany(ids);
|
|
299
314
|
for (const r of ret) {
|
|
300
|
-
if (r
|
|
315
|
+
if (rowIsError(r)) {
|
|
301
316
|
throw r;
|
|
302
317
|
}
|
|
303
318
|
if (r instanceof ErrorWrapper) {
|
|
@@ -450,7 +465,7 @@ async function loadDerivedEnt(viewer, data, loader) {
|
|
|
450
465
|
const r = await applyPrivacyPolicyForEnt(viewer, ent, data, {
|
|
451
466
|
ent: loader,
|
|
452
467
|
});
|
|
453
|
-
if (r
|
|
468
|
+
if (rowIsError(r)) {
|
|
454
469
|
return null;
|
|
455
470
|
}
|
|
456
471
|
return r;
|
|
@@ -473,7 +488,7 @@ async function applyPrivacyPolicyForEnt(viewer, ent, data, fieldPrivacyOptions)
|
|
|
473
488
|
}
|
|
474
489
|
async function applyPrivacyPolicyForEntX(viewer, ent, data, options) {
|
|
475
490
|
const r = await applyPrivacyPolicyForEnt(viewer, ent, data, options);
|
|
476
|
-
if (r
|
|
491
|
+
if (rowIsError(r)) {
|
|
477
492
|
throw r;
|
|
478
493
|
}
|
|
479
494
|
if (r === null) {
|
|
@@ -919,7 +934,7 @@ async function loadEdgeDatas(...edgeTypes) {
|
|
|
919
934
|
if (!row) {
|
|
920
935
|
return;
|
|
921
936
|
}
|
|
922
|
-
if (row
|
|
937
|
+
if (rowIsError(row)) {
|
|
923
938
|
throw row;
|
|
924
939
|
}
|
|
925
940
|
m.set(row["edge_type"], new AssocEdgeData(row));
|
|
@@ -1088,7 +1103,7 @@ async function loadNodesByEdge(viewer, id1, edgeType, options) {
|
|
|
1088
1103
|
exports.loadNodesByEdge = loadNodesByEdge;
|
|
1089
1104
|
async function applyPrivacyPolicyForRow(viewer, options, row) {
|
|
1090
1105
|
const r = await applyPrivacyPolicyForRowImpl(viewer, options, row);
|
|
1091
|
-
return r
|
|
1106
|
+
return rowIsError(r) ? null : r;
|
|
1092
1107
|
}
|
|
1093
1108
|
exports.applyPrivacyPolicyForRow = applyPrivacyPolicyForRow;
|
|
1094
1109
|
async function applyPrivacyPolicyForRowImpl(viewer, options, row) {
|
package/core/privacy.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AllowIfViewerHasIdentityPrivacyPolicy = exports.AllowIfViewerPrivacyPolicy = exports.AlwaysDenyPrivacyPolicy = exports.AlwaysAllowPrivacyPolicy = exports.applyPrivacyPolicyImpl = exports.applyPrivacyPolicyX = exports.applyPrivacyPolicy = exports.AllowIfSubPolicyAllowsRule = exports.DelayedResultRule = exports.AllowIfConditionAppliesRule = exports.DenyIfViewerOutboundEdgeDoesNotExistRule = exports.DenyIfViewerInboundEdgeDoesNotExistRule = exports.DenyIfEdgeDoesNotExistRule = exports.DenyIfViewerOutboundEdgeExistsRule = exports.DenyIfViewerInboundEdgeExistsRule = exports.DenyIfEdgeExistsRule = exports.AllowIfViewerOutboundEdgeExistsRule = exports.AllowIfViewerInboundEdgeExistsRule = exports.AllowIfEdgeExistsRule = exports.DenyIfEntIsNotVisibleRule = exports.DenyIfEntIsVisibleRule = exports.DenyIfEntIsVisiblePolicy = exports.AllowIfEntIsVisiblePolicy = exports.AllowIfEntIsNotVisibleRule = exports.AllowIfEntIsVisibleRule = exports.DenyIfEntPropertyIsRule = exports.AllowIfEntPropertyIsRule = exports.AllowIfViewerIsEntPropertyRule = exports.AllowIfViewerIsRule = exports.DenyIfFuncRule = exports.AllowIfFuncRule = exports.DenyIfViewerEqualsRule = exports.AllowIfViewerEqualsRule = exports.AllowIfViewerRule = exports.AllowIfHasIdentity = exports.DenyIfLoggedInRule = exports.DenyIfLoggedOutRule = exports.AlwaysDenyRule = exports.AlwaysAllowRule = exports.EntPrivacyError = void 0;
|
|
4
|
+
const types_1 = require("util/types");
|
|
4
5
|
const base_1 = require("./base");
|
|
5
6
|
const ent_1 = require("./ent");
|
|
6
7
|
// copied from ./base
|
|
@@ -102,7 +103,10 @@ class AllowIfFuncRule {
|
|
|
102
103
|
this.fn = fn;
|
|
103
104
|
}
|
|
104
105
|
async apply(v, ent) {
|
|
105
|
-
|
|
106
|
+
let result = this.fn(v, ent);
|
|
107
|
+
if ((0, types_1.isPromise)(result)) {
|
|
108
|
+
result = await result;
|
|
109
|
+
}
|
|
106
110
|
if (result) {
|
|
107
111
|
return (0, base_1.Allow)();
|
|
108
112
|
}
|
|
@@ -115,7 +119,10 @@ class DenyIfFuncRule {
|
|
|
115
119
|
this.fn = fn;
|
|
116
120
|
}
|
|
117
121
|
async apply(v, ent) {
|
|
118
|
-
|
|
122
|
+
let result = this.fn(v, ent);
|
|
123
|
+
if ((0, types_1.isPromise)(result)) {
|
|
124
|
+
result = await result;
|
|
125
|
+
}
|
|
119
126
|
if (result) {
|
|
120
127
|
return (0, base_1.Deny)();
|
|
121
128
|
}
|
|
@@ -424,12 +431,14 @@ class DelayedResultRule {
|
|
|
424
431
|
this.fn = fn;
|
|
425
432
|
}
|
|
426
433
|
async apply(v, ent) {
|
|
427
|
-
|
|
434
|
+
let rule = this.fn(v, ent);
|
|
435
|
+
if ((0, types_1.isPromise)(rule)) {
|
|
436
|
+
rule = await rule;
|
|
437
|
+
}
|
|
428
438
|
if (!rule) {
|
|
429
439
|
return (0, base_1.Skip)();
|
|
430
440
|
}
|
|
431
|
-
|
|
432
|
-
return res;
|
|
441
|
+
return rule.apply(v, ent);
|
|
433
442
|
}
|
|
434
443
|
}
|
|
435
444
|
exports.DelayedResultRule = DelayedResultRule;
|
package/core/query/query.js
CHANGED
|
@@ -32,8 +32,8 @@ const clause = __importStar(require("../clause"));
|
|
|
32
32
|
const memoizee_1 = __importDefault(require("memoizee"));
|
|
33
33
|
const privacy_1 = require("../privacy");
|
|
34
34
|
const uuid_1 = require("uuid");
|
|
35
|
-
const util_1 = require("util");
|
|
36
35
|
const query_impl_1 = require("../query_impl");
|
|
36
|
+
const types_1 = require("util/types");
|
|
37
37
|
// TODO can we generalize EdgeQuery to support any clause
|
|
38
38
|
function assertPositive(n) {
|
|
39
39
|
if (n < 0) {
|
|
@@ -108,7 +108,7 @@ class FirstFilter {
|
|
|
108
108
|
});
|
|
109
109
|
if (this.offset) {
|
|
110
110
|
const res = this.edgeQuery.getTableName();
|
|
111
|
-
const tableName =
|
|
111
|
+
const tableName = (0, types_1.isPromise)(res) ? await res : res;
|
|
112
112
|
// inner col time
|
|
113
113
|
options.clause = clause.PaginationMultipleColsSubQuery(this.sortCol, less ? "<" : ">", tableName, this.options.cursorCol, this.offset);
|
|
114
114
|
}
|
|
@@ -174,7 +174,7 @@ class LastFilter {
|
|
|
174
174
|
options.limit = this.options.limit + 1; // fetch an extra so we know if previous pag
|
|
175
175
|
if (this.options.cursorCol !== this.sortCol) {
|
|
176
176
|
const res = this.edgeQuery.getTableName();
|
|
177
|
-
const tableName =
|
|
177
|
+
const tableName = (0, types_1.isPromise)(res) ? await res : res;
|
|
178
178
|
if (this.offset) {
|
|
179
179
|
// inner col time
|
|
180
180
|
options.clause = clause.PaginationMultipleColsSubQuery(this.sortCol, greater ? ">" : "<", tableName, this.options.cursorCol, this.offset);
|
|
@@ -389,7 +389,7 @@ class BaseEdgeQuery {
|
|
|
389
389
|
for (const filter of this.filters) {
|
|
390
390
|
if (filter.query) {
|
|
391
391
|
let res = filter.query(options);
|
|
392
|
-
options =
|
|
392
|
+
options = (0, types_1.isPromise)(res) ? await res : res;
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
395
|
await this.loadRawData(idsInfo, options);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@snowtop/ent",
|
|
3
|
-
"version": "0.1.0-
|
|
3
|
+
"version": "0.1.0-alpha160-test1",
|
|
4
4
|
"description": "snowtop ent framework",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
"example": "examples"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@swc-node/register": "^1.6.5",
|
|
12
11
|
"@types/node": "^20.2.5",
|
|
13
12
|
"camel-case": "^4.1.2",
|
|
14
13
|
"cosmiconfig": "^8.1.3",
|
|
@@ -31,7 +30,7 @@
|
|
|
31
30
|
"uuid": "^9.0.0"
|
|
32
31
|
},
|
|
33
32
|
"peerDependencies": {
|
|
34
|
-
"better-sqlite3": "^
|
|
33
|
+
"better-sqlite3": "^8.4.0",
|
|
35
34
|
"graphql": "^16.5.0"
|
|
36
35
|
},
|
|
37
36
|
"peerDependenciesMeta": {
|
|
@@ -40,7 +39,7 @@
|
|
|
40
39
|
}
|
|
41
40
|
},
|
|
42
41
|
"engines": {
|
|
43
|
-
"node": ">=
|
|
42
|
+
"node": ">=16.0"
|
|
44
43
|
},
|
|
45
44
|
"devDependencies": {},
|
|
46
45
|
"scripts": {},
|
package/schema/field.js
CHANGED
|
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.UUIDListType = exports.IntegerEnumListType = exports.EnumListType = exports.DateListType = exports.TimetzListType = exports.TimeListType = exports.TimestamptzListType = exports.TimestampListType = exports.BooleanListType = exports.BigIntegerListType = exports.FloatListType = exports.IntegerListType = exports.IntListType = exports.StringListType = exports.ListField = exports.IntegerEnumType = exports.IntegerEnumField = exports.EnumType = exports.StringEnumField = exports.EnumField = exports.DateType = exports.DateField = exports.TimetzType = exports.TimeType = exports.TimeField = exports.leftPad = exports.TimestamptzType = exports.TimestampType = exports.TimestampField = exports.StringType = exports.PolymorphicStringField = exports.StringField = exports.BooleanType = exports.BooleanField = exports.FloatType = exports.FloatField = exports.BigIntegerType = exports.BigIntegerField = exports.IntegerType = exports.IntegerField = exports.NumberField = exports.UUIDType = exports.UUIDField = exports.BaseField = void 0;
|
|
27
27
|
const luxon_1 = require("luxon");
|
|
28
28
|
const camel_case_1 = require("camel-case");
|
|
29
|
-
const
|
|
29
|
+
const types_1 = require("util/types");
|
|
30
30
|
const uuid_1 = require("uuid");
|
|
31
31
|
const base_1 = require("../core/base");
|
|
32
32
|
const db_1 = __importStar(require("../core/db"));
|
|
@@ -727,7 +727,7 @@ class ListField extends BaseField {
|
|
|
727
727
|
return true;
|
|
728
728
|
}
|
|
729
729
|
const res = valid.apply(this.field, [val[0]]);
|
|
730
|
-
if (
|
|
730
|
+
if ((0, types_1.isPromise)(res)) {
|
|
731
731
|
const ret = await Promise.all(val.map(async (v) => await valid.apply(this.field, [v])));
|
|
732
732
|
return ret.every((v) => v);
|
|
733
733
|
}
|
package/testutils/db/temp_db.js
CHANGED
|
@@ -496,7 +496,14 @@ class TempDB {
|
|
|
496
496
|
if (this.dialect === db_1.Dialect.SQLite) {
|
|
497
497
|
this.sqlite.close();
|
|
498
498
|
if (!this.sqlite.memory) {
|
|
499
|
-
|
|
499
|
+
const f = this.getSqliteClient().name;
|
|
500
|
+
fs.rmSync(f);
|
|
501
|
+
fs.rmSync(`${f}-shm`, {
|
|
502
|
+
force: true,
|
|
503
|
+
});
|
|
504
|
+
fs.rmSync(`${f}-wal`, {
|
|
505
|
+
force: true,
|
|
506
|
+
});
|
|
500
507
|
}
|
|
501
508
|
return;
|
|
502
509
|
}
|