@proteinjs/db 1.3.2 → 1.4.0
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/CHANGELOG.md +11 -0
- package/LICENSE +21 -0
- package/dist/generated/index.js +5 -5
- package/dist/generated/index.js.map +1 -1
- package/dist/src/Columns.d.ts.map +1 -1
- package/dist/src/Columns.js +12 -2
- package/dist/src/Columns.js.map +1 -1
- package/dist/src/reference/ReferenceArray.d.ts +3 -4
- package/dist/src/reference/ReferenceArray.d.ts.map +1 -1
- package/dist/src/reference/ReferenceArray.js +22 -51
- package/dist/src/reference/ReferenceArray.js.map +1 -1
- package/dist/test/ReferenceArray.test.js +38 -54
- package/dist/test/ReferenceArray.test.js.map +1 -1
- package/dist/test/ReferenceArraySerializer.test.js +41 -8
- package/dist/test/ReferenceArraySerializer.test.js.map +1 -1
- package/dist/test/reusable/CrudTests.d.ts +1 -1
- package/generated/index.ts +17 -20
- package/package.json +7 -6
- package/src/Columns.ts +11 -1
- package/src/reference/ReferenceArray.ts +23 -46
- package/test/ReferenceArray.test.ts +29 -58
- package/test/ReferenceArraySerializer.test.ts +48 -7
|
@@ -61,63 +61,23 @@ var ReferenceArray = /** @class */ (function () {
|
|
|
61
61
|
this._ids = _ids;
|
|
62
62
|
this._objects = _objects;
|
|
63
63
|
this.__serializerId = ReferenceArraySerializer_1.ReferenceArraySerializerId;
|
|
64
|
-
if (this._objects) {
|
|
65
|
-
this._objects = this.createProxy(this._objects);
|
|
66
|
-
}
|
|
67
64
|
}
|
|
68
65
|
ReferenceArray.fromObjects = function (table, objects) {
|
|
69
66
|
var ids = objects.map(function (object) { return object.id; });
|
|
70
67
|
return new ReferenceArray(table, ids, objects);
|
|
71
68
|
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
*/
|
|
75
|
-
ReferenceArray.prototype.createProxy = function (objects) {
|
|
76
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
77
|
-
var referenceArray = this;
|
|
78
|
-
var handler = {
|
|
79
|
-
get: function (target, property, receiver) {
|
|
80
|
-
var value = Reflect.get(target, property, receiver);
|
|
81
|
-
if (typeof value === 'function' && ['push', 'pop', 'splice'].includes(property)) {
|
|
82
|
-
return function () {
|
|
83
|
-
var _a;
|
|
84
|
-
var args = [];
|
|
85
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
86
|
-
args[_i] = arguments[_i];
|
|
87
|
-
}
|
|
88
|
-
var result = (_a = target)[property].apply(_a, args);
|
|
89
|
-
referenceArray._ids = target.map(function (obj) { return obj.id; });
|
|
90
|
-
return result;
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
return value;
|
|
94
|
-
},
|
|
95
|
-
set: function (target, property, value, receiver) {
|
|
96
|
-
var result = Reflect.set(target, property, value, receiver);
|
|
97
|
-
if (typeof property === 'number' || !isNaN(Number(property))) {
|
|
98
|
-
referenceArray._ids = target.map(function (obj) { return obj.id; });
|
|
99
|
-
}
|
|
100
|
-
return result;
|
|
101
|
-
},
|
|
102
|
-
deleteProperty: function (target, property) {
|
|
103
|
-
if (typeof property === 'number' || !isNaN(Number(property))) {
|
|
104
|
-
target.splice(Number(property), 1);
|
|
105
|
-
}
|
|
106
|
-
referenceArray._ids = target.map(function (obj) { return obj.id; });
|
|
107
|
-
return true;
|
|
108
|
-
},
|
|
109
|
-
};
|
|
110
|
-
return new Proxy(objects, handler);
|
|
69
|
+
ReferenceArray.prototype.isLoaded = function () {
|
|
70
|
+
return this._objects !== undefined;
|
|
111
71
|
};
|
|
112
72
|
ReferenceArray.prototype.get = function () {
|
|
113
73
|
return __awaiter(this, void 0, void 0, function () {
|
|
114
|
-
var table, db, qb,
|
|
115
|
-
return __generator(this, function (
|
|
116
|
-
switch (
|
|
74
|
+
var table, db, qb, _a;
|
|
75
|
+
return __generator(this, function (_b) {
|
|
76
|
+
switch (_b.label) {
|
|
117
77
|
case 0:
|
|
118
78
|
if (!!this._objects) return [3 /*break*/, 3];
|
|
119
79
|
if (!(this._ids.length < 1)) return [3 /*break*/, 1];
|
|
120
|
-
this._objects =
|
|
80
|
+
this._objects = [];
|
|
121
81
|
return [3 /*break*/, 3];
|
|
122
82
|
case 1:
|
|
123
83
|
table = (0, Table_1.tableByName)(this._table);
|
|
@@ -125,19 +85,30 @@ var ReferenceArray = /** @class */ (function () {
|
|
|
125
85
|
qb = new QueryBuilderFactory_1.QueryBuilderFactory().getQueryBuilder(table);
|
|
126
86
|
qb.condition({ field: 'id', operator: 'IN', value: this._ids });
|
|
127
87
|
qb.sort([{ field: 'id', byValues: this._ids }]);
|
|
88
|
+
_a = this;
|
|
128
89
|
return [4 /*yield*/, db.query(table, qb)];
|
|
129
90
|
case 2:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
_a.label = 3;
|
|
91
|
+
_a._objects = _b.sent();
|
|
92
|
+
_b.label = 3;
|
|
133
93
|
case 3: return [2 /*return*/, this._objects];
|
|
134
94
|
}
|
|
135
95
|
});
|
|
136
96
|
});
|
|
137
97
|
};
|
|
98
|
+
ReferenceArray.prototype.getIfExists = function () {
|
|
99
|
+
if (this._objects) {
|
|
100
|
+
return this._objects;
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
};
|
|
104
|
+
ReferenceArray.prototype.getLength = function () {
|
|
105
|
+
if (this._objects) {
|
|
106
|
+
return this._objects.length;
|
|
107
|
+
}
|
|
108
|
+
return this._ids.length;
|
|
109
|
+
};
|
|
138
110
|
ReferenceArray.prototype.set = function (objects) {
|
|
139
|
-
this._objects =
|
|
140
|
-
this._ids = objects.map(function (object) { return object.id; });
|
|
111
|
+
this._objects = objects;
|
|
141
112
|
};
|
|
142
113
|
return ReferenceArray;
|
|
143
114
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferenceArray.js","sourceRoot":"","sources":["../../../src/reference/ReferenceArray.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4BAA8B;AAE9B,kCAAuC;AACvC,oFAAqF;AACrF,8DAA6D;AAE7D;;;;;;;;;;;;;GAaG;AACH;
|
|
1
|
+
{"version":3,"file":"ReferenceArray.js","sourceRoot":"","sources":["../../../src/reference/ReferenceArray.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4BAA8B;AAE9B,kCAAuC;AACvC,oFAAqF;AACrF,8DAA6D;AAE7D;;;;;;;;;;;;;GAaG;AACH;IAEE,wBACS,MAAc,EACd,IAAc,EACd,QAAc;QAFd,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAU;QACd,aAAQ,GAAR,QAAQ,CAAM;QAJhB,mBAAc,GAAG,qDAA0B,CAAC;IAKhD,CAAC;IAEG,0BAAW,GAAlB,UAAqC,KAAa,EAAE,OAA8C;QAChG,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,EAAE,EAAT,CAAS,CAAC,CAAC;QAC/C,OAAO,IAAI,cAAc,CAAI,KAAK,EAAE,GAAG,EAAE,OAAc,CAAC,CAAC;IAC3D,CAAC;IAED,iCAAQ,GAAR;QACE,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;IACrC,CAAC;IAEK,4BAAG,GAAT;;;;;;6BACM,CAAC,IAAI,CAAC,QAAQ,EAAd,wBAAc;6BACZ,CAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,EAApB,wBAAoB;wBACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;;;wBAEb,KAAK,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACjC,EAAE,GAAG,IAAA,UAAK,GAAE,CAAC;wBACb,EAAE,GAAG,IAAI,yCAAmB,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;wBAC5D,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;wBAChE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;wBAChD,KAAA,IAAI,CAAA;wBAAY,qBAAM,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,EAAA;;wBAAzC,GAAK,QAAQ,GAAG,SAAyB,CAAC;;4BAI9C,sBAAO,IAAI,CAAC,QAAQ,EAAC;;;;KACtB;IAED,oCAAW,GAAX;QACE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,kCAAS,GAAT;QACE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC7B;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,4BAAG,GAAH,UAAI,OAAY;QACd,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IACH,qBAAC;AAAD,CAAC,AArDD,IAqDC;AArDY,wCAAc"}
|
|
@@ -48,82 +48,66 @@ var MockRecord = /** @class */ (function () {
|
|
|
48
48
|
}());
|
|
49
49
|
describe('ReferenceArray', function () {
|
|
50
50
|
var createMockRecord = function (id) { return new MockRecord(id, (0, moment_1.moment)(), (0, moment_1.moment)()); };
|
|
51
|
-
it('should initialize with correct ids
|
|
52
|
-
var
|
|
53
|
-
var refArray = new ReferenceArray_1.ReferenceArray('mock_table', ['1', '2'], objects);
|
|
51
|
+
it('should initialize with correct ids', function () {
|
|
52
|
+
var refArray = new ReferenceArray_1.ReferenceArray('mock_table', ['1', '2']);
|
|
54
53
|
expect(refArray._ids).toEqual(['1', '2']);
|
|
55
|
-
expect(refArray._objects).
|
|
54
|
+
expect(refArray._objects).toBeUndefined();
|
|
56
55
|
});
|
|
57
|
-
it('should
|
|
58
|
-
var
|
|
56
|
+
it('should set and get objects', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
57
|
+
var refArray, mockObjects, objects;
|
|
59
58
|
return __generator(this, function (_a) {
|
|
60
59
|
switch (_a.label) {
|
|
61
60
|
case 0:
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
refArray = new ReferenceArray_1.ReferenceArray('mock_table', ['1', '2']);
|
|
62
|
+
mockObjects = [createMockRecord('1'), createMockRecord('2')];
|
|
63
|
+
refArray.set(mockObjects);
|
|
64
64
|
return [4 /*yield*/, refArray.get()];
|
|
65
65
|
case 1:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
expect(refArray._ids).toEqual(['1', '2', '3']);
|
|
70
|
-
// Modify an object
|
|
71
|
-
refArrayObjects[1] = createMockRecord('4');
|
|
72
|
-
expect(refArray._ids).toEqual(['1', '4', '3']);
|
|
73
|
-
// Delete an object using pop
|
|
74
|
-
refArrayObjects.pop();
|
|
75
|
-
expect(refArray._ids).toEqual(['1', '4']);
|
|
76
|
-
// Delete an object using splice
|
|
77
|
-
refArrayObjects.splice(0, 1);
|
|
78
|
-
expect(refArray._ids).toEqual(['4']);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
fail('refArrayObjects is undefined');
|
|
82
|
-
}
|
|
66
|
+
objects = _a.sent();
|
|
67
|
+
expect(objects).toEqual(mockObjects);
|
|
68
|
+
expect(refArray._objects).toBeDefined();
|
|
83
69
|
return [2 /*return*/];
|
|
84
70
|
}
|
|
85
71
|
});
|
|
86
72
|
}); });
|
|
87
|
-
it('should
|
|
88
|
-
var
|
|
89
|
-
var
|
|
90
|
-
var newObjects = [createMockRecord('5'), createMockRecord('6')];
|
|
73
|
+
it('should set objects without updating ids', function () {
|
|
74
|
+
var refArray = new ReferenceArray_1.ReferenceArray('mock_table', ['1', '2']);
|
|
75
|
+
var newObjects = [createMockRecord('3'), createMockRecord('4')];
|
|
91
76
|
refArray.set(newObjects);
|
|
92
|
-
expect(refArray._ids).toEqual(['
|
|
77
|
+
expect(refArray._ids).toEqual(['1', '2']); // ids remain unchanged
|
|
93
78
|
expect(refArray._objects).toEqual(newObjects);
|
|
94
79
|
});
|
|
95
|
-
it('should not leave null or undefined entries in ids array when objects are deleted', function () {
|
|
96
|
-
var objects = [createMockRecord('1'), createMockRecord('2'), createMockRecord('3')];
|
|
97
|
-
var refArray = new ReferenceArray_1.ReferenceArray('mock_table', ['1', '2', '3'], objects);
|
|
98
|
-
if (refArray._objects) {
|
|
99
|
-
// Delete the second object using splice
|
|
100
|
-
refArray._objects.splice(1, 1);
|
|
101
|
-
expect(refArray._ids).toEqual(['1', '3']);
|
|
102
|
-
// Delete the first object using splice
|
|
103
|
-
refArray._objects.splice(0, 1);
|
|
104
|
-
expect(refArray._ids).toEqual(['3']);
|
|
105
|
-
// Delete the remaining object
|
|
106
|
-
refArray._objects.pop();
|
|
107
|
-
expect(refArray._ids).toEqual([]);
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
fail('refArray._objects is undefined');
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
80
|
it('should handle initializing with an empty array', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
114
|
-
var refArray,
|
|
81
|
+
var refArray, objects;
|
|
115
82
|
return __generator(this, function (_a) {
|
|
116
83
|
switch (_a.label) {
|
|
117
84
|
case 0:
|
|
118
85
|
refArray = new ReferenceArray_1.ReferenceArray('mock_table', []);
|
|
119
86
|
expect(refArray._ids).toEqual([]);
|
|
87
|
+
expect(refArray._objects).toBeUndefined();
|
|
88
|
+
return [4 /*yield*/, refArray.get()];
|
|
89
|
+
case 1:
|
|
90
|
+
objects = _a.sent();
|
|
91
|
+
expect(objects).toEqual([]);
|
|
92
|
+
return [2 /*return*/];
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}); });
|
|
96
|
+
it('should not update ids when objects are modified', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
97
|
+
var refArray, initialObjects, objects;
|
|
98
|
+
return __generator(this, function (_a) {
|
|
99
|
+
switch (_a.label) {
|
|
100
|
+
case 0:
|
|
101
|
+
refArray = new ReferenceArray_1.ReferenceArray('mock_table', ['1', '2']);
|
|
102
|
+
initialObjects = [createMockRecord('1'), createMockRecord('2')];
|
|
103
|
+
refArray.set(initialObjects);
|
|
120
104
|
return [4 /*yield*/, refArray.get()];
|
|
121
105
|
case 1:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
expect(
|
|
106
|
+
objects = _a.sent();
|
|
107
|
+
objects.push(createMockRecord('3'));
|
|
108
|
+
objects[1] = createMockRecord('4');
|
|
109
|
+
objects.pop();
|
|
110
|
+
expect(refArray._ids).toEqual(['1', '2']); // ids remain unchanged
|
|
127
111
|
return [2 /*return*/];
|
|
128
112
|
}
|
|
129
113
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferenceArray.test.js","sourceRoot":"","sources":["../../test/ReferenceArray.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA2C;AAC3C,kEAAiE;AAGjE;IACE,oBACS,EAAU,EACV,OAAsB,EACtB,OAAsB;QAFtB,OAAE,GAAF,EAAE,CAAQ;QACV,YAAO,GAAP,OAAO,CAAe;QACtB,YAAO,GAAP,OAAO,CAAe;IAC5B,CAAC;IACN,iBAAC;AAAD,CAAC,AAND,IAMC;AAED,QAAQ,CAAC,gBAAgB,EAAE;IACzB,IAAM,gBAAgB,GAAG,UAAC,EAAU,IAAK,OAAA,IAAI,UAAU,CAAC,EAAE,EAAE,IAAA,eAAM,GAAE,EAAE,IAAA,eAAM,GAAE,CAAC,EAAtC,CAAsC,CAAC;IAEhF,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ReferenceArray.test.js","sourceRoot":"","sources":["../../test/ReferenceArray.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,17 +24,50 @@ describe('ReferenceArraySerializer', function () {
|
|
|
24
24
|
_objects: objects,
|
|
25
25
|
});
|
|
26
26
|
var deserialized = serializer.deserialize(serialized);
|
|
27
|
+
expect(deserialized).toBeInstanceOf(ReferenceArray_1.ReferenceArray);
|
|
27
28
|
expect(deserialized._table).toEqual('mock_table');
|
|
28
29
|
expect(deserialized._ids).toEqual(['1', '2']);
|
|
29
30
|
expect(deserialized._objects).toEqual(objects);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
});
|
|
32
|
+
it('should handle empty ReferenceArray', function () {
|
|
33
|
+
var refArray = new ReferenceArray_1.ReferenceArray('mock_table', []);
|
|
34
|
+
var serializer = new ReferenceArraySerializer_1.ReferenceArraySerializer();
|
|
35
|
+
var serialized = serializer.serialize(refArray);
|
|
36
|
+
expect(serialized).toEqual({
|
|
37
|
+
_table: 'mock_table',
|
|
38
|
+
_ids: [],
|
|
39
|
+
_objects: undefined,
|
|
40
|
+
});
|
|
41
|
+
var deserialized = serializer.deserialize(serialized);
|
|
42
|
+
expect(deserialized).toBeInstanceOf(ReferenceArray_1.ReferenceArray);
|
|
43
|
+
expect(deserialized._table).toEqual('mock_table');
|
|
44
|
+
expect(deserialized._ids).toEqual([]);
|
|
45
|
+
expect(deserialized._objects).toBeUndefined();
|
|
46
|
+
});
|
|
47
|
+
it('should handle ReferenceArray with ids but no objects', function () {
|
|
48
|
+
var refArray = new ReferenceArray_1.ReferenceArray('mock_table', ['1', '2']);
|
|
49
|
+
var serializer = new ReferenceArraySerializer_1.ReferenceArraySerializer();
|
|
50
|
+
var serialized = serializer.serialize(refArray);
|
|
51
|
+
expect(serialized).toEqual({
|
|
52
|
+
_table: 'mock_table',
|
|
53
|
+
_ids: ['1', '2'],
|
|
54
|
+
_objects: undefined,
|
|
55
|
+
});
|
|
56
|
+
var deserialized = serializer.deserialize(serialized);
|
|
57
|
+
expect(deserialized).toBeInstanceOf(ReferenceArray_1.ReferenceArray);
|
|
58
|
+
expect(deserialized._table).toEqual('mock_table');
|
|
59
|
+
expect(deserialized._ids).toEqual(['1', '2']);
|
|
60
|
+
expect(deserialized._objects).toBeUndefined();
|
|
61
|
+
});
|
|
62
|
+
it('should maintain separate ids and objects after deserialization', function () {
|
|
63
|
+
var _a;
|
|
64
|
+
var objects = [createMockRecord('1'), createMockRecord('2')];
|
|
65
|
+
var refArray = new ReferenceArray_1.ReferenceArray('mock_table', ['3', '4'], objects);
|
|
66
|
+
var serializer = new ReferenceArraySerializer_1.ReferenceArraySerializer();
|
|
67
|
+
var serialized = serializer.serialize(refArray);
|
|
68
|
+
var deserialized = serializer.deserialize(serialized);
|
|
69
|
+
expect(deserialized._ids).toEqual(['3', '4']);
|
|
70
|
+
expect((_a = deserialized._objects) === null || _a === void 0 ? void 0 : _a.map(function (obj) { return obj.id; })).toEqual(['1', '2']);
|
|
38
71
|
});
|
|
39
72
|
});
|
|
40
73
|
//# sourceMappingURL=ReferenceArraySerializer.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferenceArraySerializer.test.js","sourceRoot":"","sources":["../../test/ReferenceArraySerializer.test.ts"],"names":[],"mappings":";;AAAA,4CAA2C;AAC3C,kEAAiE;AAEjE,wFAAuF;AAEvF;IACE,oBACS,EAAU,EACV,OAAsB,EACtB,OAAsB;QAFtB,OAAE,GAAF,EAAE,CAAQ;QACV,YAAO,GAAP,OAAO,CAAe;QACtB,YAAO,GAAP,OAAO,CAAe;IAC5B,CAAC;IACN,iBAAC;AAAD,CAAC,AAND,IAMC;AAED,QAAQ,CAAC,0BAA0B,EAAE;IACnC,IAAM,gBAAgB,GAAG,UAAC,EAAU,IAAK,OAAA,IAAI,UAAU,CAAC,EAAE,EAAE,IAAA,eAAM,GAAE,EAAE,IAAA,eAAM,GAAE,CAAC,EAAtC,CAAsC,CAAC;IAEhF,EAAE,CAAC,4CAA4C,EAAE;QAC/C,IAAM,OAAO,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAM,QAAQ,GAAG,IAAI,+BAAc,CAAa,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACnF,IAAM,UAAU,GAAG,IAAI,mDAAwB,EAAE,CAAC;QAElD,IAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;YACzB,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YAChB,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QAEH,IAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ReferenceArraySerializer.test.js","sourceRoot":"","sources":["../../test/ReferenceArraySerializer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,9 +38,9 @@ export declare class ReservedWordTestTable extends Table<ReservedWordTest> {
|
|
|
38
38
|
updated: import("../../src/Table").Column<import("moment").Moment, any>;
|
|
39
39
|
} & {} & {
|
|
40
40
|
select: import("../../src/Table").Column<string | undefined, any>;
|
|
41
|
-
join: import("../../src/Table").Column<string | undefined, any>;
|
|
42
41
|
name: import("../../src/Table").Column<string, any>;
|
|
43
42
|
order: import("../../src/Table").Column<string | undefined, any>;
|
|
43
|
+
join: import("../../src/Table").Column<string | undefined, any>;
|
|
44
44
|
} & {};
|
|
45
45
|
}
|
|
46
46
|
/**
|