@simonbackx/simple-database 1.33.0 → 1.35.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/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +13 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/{src → cjs/src}/classes/Column.d.ts +3 -2
- package/dist/cjs/src/classes/Column.d.ts.map +1 -0
- package/dist/{src → cjs/src}/classes/Column.js +21 -8
- package/dist/cjs/src/classes/Column.js.map +1 -0
- package/dist/cjs/src/classes/ColumnType.d.ts +2 -0
- package/dist/cjs/src/classes/ColumnType.d.ts.map +1 -0
- package/dist/cjs/src/classes/ColumnType.js +3 -0
- package/dist/cjs/src/classes/ColumnType.js.map +1 -0
- package/dist/{src → cjs/src}/classes/Database.d.ts +18 -14
- package/dist/cjs/src/classes/Database.d.ts.map +1 -0
- package/dist/{src → cjs/src}/classes/Database.js +26 -20
- package/dist/cjs/src/classes/Database.js.map +1 -0
- package/dist/cjs/src/classes/DatabaseStoredValue.d.ts +2 -0
- package/dist/cjs/src/classes/DatabaseStoredValue.d.ts.map +1 -0
- package/dist/cjs/src/classes/DatabaseStoredValue.js +3 -0
- package/dist/cjs/src/classes/DatabaseStoredValue.js.map +1 -0
- package/dist/{src → cjs/src}/classes/Factory.d.ts +1 -0
- package/dist/cjs/src/classes/Factory.d.ts.map +1 -0
- package/dist/{src → cjs/src}/classes/Factory.js +8 -7
- package/dist/cjs/src/classes/Factory.js.map +1 -0
- package/dist/{src → cjs/src}/classes/ManyToManyRelation.d.ts +4 -3
- package/dist/cjs/src/classes/ManyToManyRelation.d.ts.map +1 -0
- package/dist/{src → cjs/src}/classes/ManyToManyRelation.js +29 -18
- package/dist/cjs/src/classes/ManyToManyRelation.js.map +1 -0
- package/dist/{src → cjs/src}/classes/ManyToOneRelation.d.ts +2 -1
- package/dist/cjs/src/classes/ManyToOneRelation.d.ts.map +1 -0
- package/dist/{src → cjs/src}/classes/ManyToOneRelation.js +11 -2
- package/dist/cjs/src/classes/ManyToOneRelation.js.map +1 -0
- package/dist/{src → cjs/src}/classes/Migration.d.ts +2 -0
- package/dist/cjs/src/classes/Migration.d.ts.map +1 -0
- package/dist/{src → cjs/src}/classes/Migration.js +64 -17
- package/dist/cjs/src/classes/Migration.js.map +1 -0
- package/dist/{src → cjs/src}/classes/Model.d.ts +17 -6
- package/dist/cjs/src/classes/Model.d.ts.map +1 -0
- package/dist/{src → cjs/src}/classes/Model.js +83 -33
- package/dist/cjs/src/classes/Model.js.map +1 -0
- package/dist/{src → cjs/src}/classes/OneToManyRelation.d.ts +2 -1
- package/dist/cjs/src/classes/OneToManyRelation.d.ts.map +1 -0
- package/dist/{src → cjs/src}/classes/OneToManyRelation.js +17 -3
- package/dist/cjs/src/classes/OneToManyRelation.js.map +1 -0
- package/dist/{src → cjs/src}/classes/data/boys.d.ts +1 -0
- package/dist/cjs/src/classes/data/boys.d.ts.map +1 -0
- package/dist/cjs/src/classes/data/boys.js.map +1 -0
- package/dist/cjs/src/classes/data/family-names.d.ts +3 -0
- package/dist/cjs/src/classes/data/family-names.d.ts.map +1 -0
- package/dist/cjs/src/classes/data/family-names.js.map +1 -0
- package/dist/{src → cjs/src}/classes/data/girls.d.ts +1 -0
- package/dist/cjs/src/classes/data/girls.d.ts.map +1 -0
- package/dist/cjs/src/classes/data/girls.js.map +1 -0
- package/dist/cjs/src/classes/data/streets.d.ts +3 -0
- package/dist/cjs/src/classes/data/streets.d.ts.map +1 -0
- package/dist/cjs/src/classes/data/streets.js.map +1 -0
- package/dist/{src → cjs/src}/decorators/Column.d.ts +4 -3
- package/dist/cjs/src/decorators/Column.d.ts.map +1 -0
- package/dist/{src → cjs/src}/decorators/Column.js +3 -4
- package/dist/cjs/src/decorators/Column.js.map +1 -0
- package/dist/{src → cjs/src}/models/Migration.d.ts +2 -1
- package/dist/cjs/src/models/Migration.d.ts.map +1 -0
- package/dist/{src → cjs/src}/models/Migration.js +14 -15
- package/dist/cjs/src/models/Migration.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/src/classes/Column.d.ts +30 -0
- package/dist/esm/src/classes/Column.d.ts.map +1 -0
- package/dist/esm/src/classes/Column.js +179 -0
- package/dist/esm/src/classes/Column.js.map +1 -0
- package/dist/esm/src/classes/ColumnType.d.ts +2 -0
- package/dist/esm/src/classes/ColumnType.d.ts.map +1 -0
- package/dist/esm/src/classes/ColumnType.js +2 -0
- package/dist/esm/src/classes/ColumnType.js.map +1 -0
- package/dist/esm/src/classes/Database.d.ts +59 -0
- package/dist/esm/src/classes/Database.d.ts.map +1 -0
- package/dist/esm/src/classes/Database.js +171 -0
- package/dist/esm/src/classes/Database.js.map +1 -0
- package/dist/esm/src/classes/DatabaseStoredValue.d.ts +2 -0
- package/dist/esm/src/classes/DatabaseStoredValue.d.ts.map +1 -0
- package/dist/esm/src/classes/DatabaseStoredValue.js +2 -0
- package/dist/esm/src/classes/DatabaseStoredValue.js.map +1 -0
- package/dist/esm/src/classes/Factory.d.ts +14 -0
- package/dist/esm/src/classes/Factory.d.ts.map +1 -0
- package/dist/esm/src/classes/Factory.js +51 -0
- package/dist/esm/src/classes/Factory.js.map +1 -0
- package/dist/esm/src/classes/ManyToManyRelation.d.ts +79 -0
- package/dist/esm/src/classes/ManyToManyRelation.d.ts.map +1 -0
- package/dist/esm/src/classes/ManyToManyRelation.js +254 -0
- package/dist/esm/src/classes/ManyToManyRelation.js.map +1 -0
- package/dist/esm/src/classes/ManyToOneRelation.d.ts +22 -0
- package/dist/esm/src/classes/ManyToOneRelation.d.ts.map +1 -0
- package/dist/esm/src/classes/ManyToOneRelation.js +47 -0
- package/dist/esm/src/classes/ManyToOneRelation.js.map +1 -0
- package/dist/esm/src/classes/Migration.d.ts +14 -0
- package/dist/esm/src/classes/Migration.d.ts.map +1 -0
- package/dist/esm/src/classes/Migration.js +168 -0
- package/dist/esm/src/classes/Migration.js.map +1 -0
- package/dist/esm/src/classes/Model.d.ts +159 -0
- package/dist/esm/src/classes/Model.d.ts.map +1 -0
- package/dist/esm/src/classes/Model.js +635 -0
- package/dist/esm/src/classes/Model.js.map +1 -0
- package/dist/esm/src/classes/OneToManyRelation.d.ts +38 -0
- package/dist/esm/src/classes/OneToManyRelation.d.ts.map +1 -0
- package/dist/esm/src/classes/OneToManyRelation.js +75 -0
- package/dist/esm/src/classes/OneToManyRelation.js.map +1 -0
- package/dist/{src/classes/data/family-names.d.ts → esm/src/classes/data/boys.d.ts} +1 -0
- package/dist/esm/src/classes/data/boys.d.ts.map +1 -0
- package/dist/esm/src/classes/data/boys.js +1003 -0
- package/dist/{src → esm/src}/classes/data/boys.js.map +1 -1
- package/dist/esm/src/classes/data/family-names.d.ts +3 -0
- package/dist/esm/src/classes/data/family-names.d.ts.map +1 -0
- package/dist/esm/src/classes/data/family-names.js +1003 -0
- package/dist/{src → esm/src}/classes/data/family-names.js.map +1 -1
- package/dist/{src/classes/data/streets.d.ts → esm/src/classes/data/girls.d.ts} +1 -0
- package/dist/esm/src/classes/data/girls.d.ts.map +1 -0
- package/dist/esm/src/classes/data/girls.js +1002 -0
- package/dist/{src → esm/src}/classes/data/girls.js.map +1 -1
- package/dist/esm/src/classes/data/streets.d.ts +3 -0
- package/dist/esm/src/classes/data/streets.d.ts.map +1 -0
- package/dist/esm/src/classes/data/streets.js +294 -0
- package/dist/{src → esm/src}/classes/data/streets.js.map +1 -1
- package/dist/esm/src/decorators/Column.d.ts +18 -0
- package/dist/esm/src/decorators/Column.d.ts.map +1 -0
- package/dist/esm/src/decorators/Column.js +36 -0
- package/dist/esm/src/decorators/Column.js.map +1 -0
- package/dist/esm/src/models/Migration.d.ts +11 -0
- package/dist/esm/src/models/Migration.d.ts.map +1 -0
- package/dist/esm/src/models/Migration.js +48 -0
- package/dist/esm/src/models/Migration.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +52 -36
- package/dist/index.d.ts +0 -9
- package/dist/index.js +0 -13
- package/dist/index.js.map +0 -1
- package/dist/migrations.d.ts +0 -1
- package/dist/migrations.js +0 -18
- package/dist/migrations.js.map +0 -1
- package/dist/src/classes/Column.js.map +0 -1
- package/dist/src/classes/Database.js.map +0 -1
- package/dist/src/classes/Factory.js.map +0 -1
- package/dist/src/classes/ManyToManyRelation.js.map +0 -1
- package/dist/src/classes/ManyToOneRelation.js.map +0 -1
- package/dist/src/classes/Migration.js.map +0 -1
- package/dist/src/classes/Model.js.map +0 -1
- package/dist/src/classes/Model.test.d.ts +0 -1
- package/dist/src/classes/Model.test.js +0 -629
- package/dist/src/classes/Model.test.js.map +0 -1
- package/dist/src/classes/OneToManyRelation.js.map +0 -1
- package/dist/src/decorators/Column.js.map +0 -1
- package/dist/src/models/Migration.js.map +0 -1
- package/dist/tests/jest.global.setup.d.ts +0 -3
- package/dist/tests/jest.global.setup.js +0 -12
- package/dist/tests/jest.global.setup.js.map +0 -1
- package/dist/tests/jest.setup.d.ts +0 -1
- package/dist/tests/jest.setup.js +0 -8
- package/dist/tests/jest.setup.js.map +0 -1
- /package/dist/{src → cjs/src}/classes/data/boys.js +0 -0
- /package/dist/{src → cjs/src}/classes/data/family-names.js +0 -0
- /package/dist/{src → cjs/src}/classes/data/girls.js +0 -0
- /package/dist/{src → cjs/src}/classes/data/streets.js +0 -0
- /package/{dist/src/migrations → migrations}/000000000-setup-migrations.sql +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function fileExists(file: string): Promise<boolean>;
|
|
1
2
|
type MigrationFunction = () => Promise<void>;
|
|
2
3
|
export declare class Migration {
|
|
3
4
|
up: MigrationFunction;
|
|
@@ -10,3 +11,4 @@ export declare class Migration {
|
|
|
10
11
|
static getMigration(file: string): Promise<Migration | undefined>;
|
|
11
12
|
}
|
|
12
13
|
export {};
|
|
14
|
+
//# sourceMappingURL=Migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration.d.ts","sourceRoot":"","sources":["../../../../src/classes/Migration.ts"],"names":[],"mappings":"AAuBA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ/D;AAaD,KAAK,iBAAiB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAW7C,qBAAa,SAAS;IAClB,EAAE,EAAE,iBAAiB,CAAC;IACtB,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAAC;gBAExB,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,iBAAiB;IAK3D;;OAEG;WACU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WA8HxC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;CA6B1E"}
|
|
@@ -15,19 +15,64 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.Migration = void 0;
|
|
37
|
+
exports.fileExists = fileExists;
|
|
27
38
|
const fs_1 = require("fs");
|
|
28
|
-
const
|
|
29
|
-
const
|
|
39
|
+
const Migration_js_1 = require("../models/Migration.js");
|
|
40
|
+
const Database_js_1 = require("./Database.js");
|
|
30
41
|
const simple_logging_1 = require("@simonbackx/simple-logging");
|
|
42
|
+
const node_path_1 = require("node:path");
|
|
43
|
+
const node_url_1 = require("node:url");
|
|
44
|
+
function getDirname() {
|
|
45
|
+
// CJS environment
|
|
46
|
+
if (typeof __dirname !== 'undefined') {
|
|
47
|
+
return __dirname;
|
|
48
|
+
}
|
|
49
|
+
// ESM environment
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
if (typeof import.meta !== 'undefined' && import.meta.url) {
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
return (0, node_path_1.dirname)((0, node_url_1.fileURLToPath)(import.meta.url));
|
|
54
|
+
}
|
|
55
|
+
throw new Error('Cannot determine __dirname');
|
|
56
|
+
}
|
|
57
|
+
async function fileExists(file) {
|
|
58
|
+
try {
|
|
59
|
+
await fs_1.promises.access(file);
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function getProjectRoot() {
|
|
67
|
+
let path = getDirname();
|
|
68
|
+
for (let index = 0; index < 5; index++) {
|
|
69
|
+
if (await fileExists(path + '/migrations')) {
|
|
70
|
+
return path;
|
|
71
|
+
}
|
|
72
|
+
path += '/..';
|
|
73
|
+
}
|
|
74
|
+
throw new Error('Could not find migrations root');
|
|
75
|
+
}
|
|
31
76
|
async function directoryExists(filePath) {
|
|
32
77
|
try {
|
|
33
78
|
return (await fs_1.promises.stat(filePath)).isDirectory();
|
|
@@ -37,6 +82,8 @@ async function directoryExists(filePath) {
|
|
|
37
82
|
}
|
|
38
83
|
}
|
|
39
84
|
class Migration {
|
|
85
|
+
up;
|
|
86
|
+
down;
|
|
40
87
|
constructor(up, down) {
|
|
41
88
|
this.up = up;
|
|
42
89
|
this.down = down;
|
|
@@ -45,19 +92,20 @@ class Migration {
|
|
|
45
92
|
* Given a folder, loop all the folders in that folder and run the migrations in the 'migrations' folder
|
|
46
93
|
*/
|
|
47
94
|
static async runAll(folder) {
|
|
48
|
-
const dirname =
|
|
95
|
+
const dirname = getDirname();
|
|
49
96
|
// Get the current working directory by removing shared part of folder and dirname
|
|
50
97
|
const shared = dirname.split('/').filter((part, index) => part === folder.split('/')[index]).join('/');
|
|
51
98
|
const cwd = folder.replace(shared, '');
|
|
52
99
|
simple_logging_1.logger.log(new simple_logging_1.StyledText('[Migration]').addClass('migration', 'prefix').addTag('migration'), ' ', new simple_logging_1.StyledText('Running all... ').addClass('migration', 'runAll'), new simple_logging_1.StyledText(cwd).addClass('migration', 'folder').addStyle('dim'));
|
|
53
100
|
process.env.DB_MULTIPLE_STATEMENTS = 'true';
|
|
54
101
|
// First check if we have migrations table
|
|
55
|
-
const
|
|
102
|
+
const projectRoot = await getProjectRoot();
|
|
103
|
+
const setupMigration = await this.getMigration(projectRoot + '/migrations/000000000-setup-migrations.sql');
|
|
56
104
|
if (!setupMigration) {
|
|
57
105
|
throw new Error('Setup migration missing');
|
|
58
106
|
}
|
|
59
107
|
await setupMigration.up();
|
|
60
|
-
await
|
|
108
|
+
await Migration_js_1.Migration.markAsExecuted('000000000-setup-migrations.sql');
|
|
61
109
|
const parts = folder.split('/');
|
|
62
110
|
const firstPart = parts.shift();
|
|
63
111
|
if (firstPart === undefined) {
|
|
@@ -85,7 +133,7 @@ class Migration {
|
|
|
85
133
|
for (const file of folderFiles) {
|
|
86
134
|
const full = p + '/' + file;
|
|
87
135
|
const name = file;
|
|
88
|
-
if (!(await
|
|
136
|
+
if (!(await Migration_js_1.Migration.isExecuted(name))) {
|
|
89
137
|
migrations.push([name, full]);
|
|
90
138
|
}
|
|
91
139
|
}
|
|
@@ -113,7 +161,7 @@ class Migration {
|
|
|
113
161
|
tags: ['migration'],
|
|
114
162
|
}, async () => {
|
|
115
163
|
await migration.up();
|
|
116
|
-
await
|
|
164
|
+
await Migration_js_1.Migration.markAsExecuted(name);
|
|
117
165
|
});
|
|
118
166
|
simple_logging_1.logger.log(new simple_logging_1.StyledText('[Migration]').addClass('migration', 'prefix').addTag('migration'), ' ', new simple_logging_1.StyledText('✓').addClass('migration', 'success', 'tag'), ' ', new simple_logging_1.StyledText('Migration ' + name + ' ran successfully').addClass('migration', 'success', 'text'));
|
|
119
167
|
}
|
|
@@ -127,7 +175,6 @@ class Migration {
|
|
|
127
175
|
return true;
|
|
128
176
|
}
|
|
129
177
|
static async getMigration(file) {
|
|
130
|
-
var _a;
|
|
131
178
|
let migration;
|
|
132
179
|
if (file.endsWith('.sql')) {
|
|
133
180
|
if (file.endsWith('.down.sql')) {
|
|
@@ -136,7 +183,7 @@ class Migration {
|
|
|
136
183
|
}
|
|
137
184
|
const sqlStatement = await fs_1.promises.readFile(file, { encoding: 'utf-8' });
|
|
138
185
|
migration = new Migration(async () => {
|
|
139
|
-
await
|
|
186
|
+
await Database_js_1.Database.statement(sqlStatement);
|
|
140
187
|
});
|
|
141
188
|
}
|
|
142
189
|
else {
|
|
@@ -149,7 +196,7 @@ class Migration {
|
|
|
149
196
|
if (!file.endsWith('.ts') && !file.endsWith('.js')) {
|
|
150
197
|
return;
|
|
151
198
|
}
|
|
152
|
-
const imported = await
|
|
199
|
+
const imported = await Promise.resolve(`${file}`).then(s => __importStar(require(s)));
|
|
153
200
|
migration = imported.default;
|
|
154
201
|
}
|
|
155
202
|
return migration;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration.js","sourceRoot":"","sources":["../../../../src/classes/Migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Column
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { Column } from './Column.js';
|
|
2
|
+
import { type DatabaseStoredValue } from './DatabaseStoredValue.js';
|
|
3
|
+
import { type ManyToManyRelation } from './ManyToManyRelation.js';
|
|
4
|
+
import { type ManyToOneRelation } from './ManyToOneRelation.js';
|
|
5
|
+
import { type OneToManyRelation } from './OneToManyRelation.js';
|
|
5
6
|
type SQLWhere = {
|
|
6
7
|
sign: string;
|
|
7
8
|
value: string | Date | number | null | (string | null)[] | (number | null)[];
|
|
@@ -51,7 +52,10 @@ export declare class Model {
|
|
|
51
52
|
static table: string;
|
|
52
53
|
static relations: ManyToOneRelation<string, Model>[];
|
|
53
54
|
existsInDatabase: boolean;
|
|
54
|
-
savedProperties: Map<string, DatabaseStoredValue
|
|
55
|
+
savedProperties: Map<string, DatabaseStoredValue | {
|
|
56
|
+
to: () => DatabaseStoredValue;
|
|
57
|
+
from: () => unknown;
|
|
58
|
+
}>;
|
|
55
59
|
/**
|
|
56
60
|
* Sometimes we have skipUpdate properties that still should get saved on specific occasions.
|
|
57
61
|
* E.g. update updatedAt field manually if is the only changed field.
|
|
@@ -92,13 +96,19 @@ export declare class Model {
|
|
|
92
96
|
* Set a many relation. Note that this doesn't save the relation! You'll need to use the methods of the relation instead
|
|
93
97
|
*/
|
|
94
98
|
setManyRelation<Key extends keyof any, Value extends Model>(relation: ManyToManyRelation<Key, any, Value, any> | OneToManyRelation<Key, any, Value>, value: Value[]): this & Record<Key, Value[]>;
|
|
99
|
+
/**
|
|
100
|
+
* Set a many relation. Note that this doesn't save the relation! You'll need to use the methods of the relation instead
|
|
101
|
+
*/
|
|
102
|
+
getManyRelation<Key extends keyof any, Value extends Model>(relation: ManyToManyRelation<Key, any, Value, any> | OneToManyRelation<Key, any, Value>): Value[] | null;
|
|
95
103
|
/**
|
|
96
104
|
* Load the returned properties from a DB response row into the model
|
|
97
105
|
* If the row's primary key is null, undefined is returned
|
|
98
106
|
*/
|
|
99
107
|
static fromRow<T extends typeof Model>(this: T, row: Record<string, DatabaseStoredValue>): InstanceType<T> | undefined;
|
|
100
108
|
static fromRows<T extends typeof Model>(this: T, rows: Record<string, Record<string, DatabaseStoredValue>>[], namespace: string): InstanceType<T>[];
|
|
101
|
-
markSaved(fields?: Record<string, DatabaseStoredValue
|
|
109
|
+
markSaved(fields?: Record<string, DatabaseStoredValue>, options?: {
|
|
110
|
+
fromMySQL?: boolean;
|
|
111
|
+
}): void;
|
|
102
112
|
copyFrom<T extends Model>(this: T, from: T): void;
|
|
103
113
|
get static(): typeof Model;
|
|
104
114
|
getPrimaryKey(): number | string | null;
|
|
@@ -146,3 +156,4 @@ export declare class Model {
|
|
|
146
156
|
delete(): Promise<void>;
|
|
147
157
|
}
|
|
148
158
|
export {};
|
|
159
|
+
//# sourceMappingURL=Model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../../../src/classes/Model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Model = exports.ModelEventBus = void 0;
|
|
4
|
-
const
|
|
4
|
+
const Database_js_1 = require("./Database.js");
|
|
5
5
|
/**
|
|
6
6
|
* Controls the fetching and decrypting of members
|
|
7
7
|
*/
|
|
8
8
|
class ModelEventBus {
|
|
9
|
-
|
|
10
|
-
this.listeners = new Map();
|
|
11
|
-
}
|
|
9
|
+
listeners = new Map();
|
|
12
10
|
addListener(owner, listener) {
|
|
13
11
|
const existing = this.listeners.get(owner);
|
|
14
12
|
if (existing) {
|
|
@@ -25,7 +23,10 @@ class ModelEventBus {
|
|
|
25
23
|
const values = [];
|
|
26
24
|
for (const owner of this.listeners.values()) {
|
|
27
25
|
for (const listener of owner) {
|
|
28
|
-
|
|
26
|
+
const v = listener.listener(value);
|
|
27
|
+
if (v) {
|
|
28
|
+
values.push(v);
|
|
29
|
+
}
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
32
|
return await Promise.all(values);
|
|
@@ -33,14 +34,24 @@ class ModelEventBus {
|
|
|
33
34
|
}
|
|
34
35
|
exports.ModelEventBus = ModelEventBus;
|
|
35
36
|
class Model /* static implements RowInitiable<Model> */ {
|
|
37
|
+
static primary;
|
|
38
|
+
static modelEventBus = new ModelEventBus();
|
|
39
|
+
/**
|
|
40
|
+
* Properties that are stored in the table (including foreign keys, but without mapped relations!)
|
|
41
|
+
*/
|
|
42
|
+
static columns;
|
|
43
|
+
static debug = false;
|
|
44
|
+
static showWarnings = false;
|
|
45
|
+
static table; // override this!
|
|
46
|
+
static relations;
|
|
47
|
+
existsInDatabase = false;
|
|
48
|
+
savedProperties = new Map();
|
|
49
|
+
/**
|
|
50
|
+
* Sometimes we have skipUpdate properties that still should get saved on specific occasions.
|
|
51
|
+
* E.g. update updatedAt field manually if is the only changed field.
|
|
52
|
+
*/
|
|
53
|
+
forceSaveProperties = new Set();
|
|
36
54
|
constructor() {
|
|
37
|
-
this.existsInDatabase = false;
|
|
38
|
-
this.savedProperties = new Map();
|
|
39
|
-
/**
|
|
40
|
-
* Sometimes we have skipUpdate properties that still should get saved on specific occasions.
|
|
41
|
-
* E.g. update updatedAt field manually if is the only changed field.
|
|
42
|
-
*/
|
|
43
|
-
this.forceSaveProperties = new Set();
|
|
44
55
|
// Read values
|
|
45
56
|
if (!this.static.relations) {
|
|
46
57
|
this.static.relations = [];
|
|
@@ -137,6 +148,13 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
137
148
|
t[relation.modelKey] = value;
|
|
138
149
|
return t;
|
|
139
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Set a many relation. Note that this doesn't save the relation! You'll need to use the methods of the relation instead
|
|
153
|
+
*/
|
|
154
|
+
getManyRelation(relation) {
|
|
155
|
+
const t = this;
|
|
156
|
+
return t[relation.modelKey] ?? null;
|
|
157
|
+
}
|
|
140
158
|
/**
|
|
141
159
|
* Load the returned properties from a DB response row into the model
|
|
142
160
|
* If the row's primary key is null, undefined is returned
|
|
@@ -156,7 +174,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
156
174
|
model[column.name] = undefined;
|
|
157
175
|
}
|
|
158
176
|
}
|
|
159
|
-
model.markSaved(); // note: we don't pass row because that value is unreliable for json values (mysql performs sorting and other opertions on keys)
|
|
177
|
+
model.markSaved(row, { fromMySQL: true }); // note: we don't pass row because that value is unreliable for json values (mysql performs sorting and other opertions on keys)
|
|
160
178
|
return model;
|
|
161
179
|
}
|
|
162
180
|
static fromRows(rows, namespace) {
|
|
@@ -168,13 +186,40 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
168
186
|
return [];
|
|
169
187
|
});
|
|
170
188
|
}
|
|
171
|
-
markSaved(fields) {
|
|
189
|
+
markSaved(fields, options) {
|
|
172
190
|
this.existsInDatabase = true;
|
|
173
191
|
this.forceSaveProperties.clear();
|
|
174
192
|
for (const column of this.static.columns.values()) {
|
|
175
193
|
if ((fields ? fields[column.name] : this[column.name]) !== undefined) {
|
|
176
194
|
// If undefined: do not update, since we didn't save the value
|
|
177
|
-
this.savedProperties.set(column.name, fields
|
|
195
|
+
this.savedProperties.set(column.name, fields
|
|
196
|
+
? (column.type === 'json' && options?.fromMySQL
|
|
197
|
+
? {
|
|
198
|
+
// We can never use the original value we received from MySQL because the ordering of keys is different in MySQL.
|
|
199
|
+
// We use this object to avoid doing expensive CPU operations if we don't need to check if a value has changed
|
|
200
|
+
// so we only evaluate this once we actually try to save a model to the database
|
|
201
|
+
to() {
|
|
202
|
+
if (this._to) {
|
|
203
|
+
return this._to;
|
|
204
|
+
}
|
|
205
|
+
const value = this._from ?? column.from(fields[column.name]);
|
|
206
|
+
this._from = value;
|
|
207
|
+
const found = column.to(value);
|
|
208
|
+
// Store permanently
|
|
209
|
+
this._to = found;
|
|
210
|
+
return found;
|
|
211
|
+
},
|
|
212
|
+
from() {
|
|
213
|
+
if (this._from) {
|
|
214
|
+
return this._from;
|
|
215
|
+
}
|
|
216
|
+
const from = column.from(fields[column.name]);
|
|
217
|
+
this._from = from;
|
|
218
|
+
return from;
|
|
219
|
+
},
|
|
220
|
+
}
|
|
221
|
+
: fields[column.name])
|
|
222
|
+
: column.to(this[column.name]));
|
|
178
223
|
}
|
|
179
224
|
}
|
|
180
225
|
/// Save relation foreign keys (so we can check if the id has changed)
|
|
@@ -202,6 +247,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
202
247
|
}
|
|
203
248
|
this.savedProperties = from.savedProperties;
|
|
204
249
|
this.forceSaveProperties = from.forceSaveProperties;
|
|
250
|
+
this.existsInDatabase = from.existsInDatabase;
|
|
205
251
|
}
|
|
206
252
|
get static() {
|
|
207
253
|
return this.constructor;
|
|
@@ -214,7 +260,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
214
260
|
* @param id primary key
|
|
215
261
|
*/
|
|
216
262
|
static async getByID(id) {
|
|
217
|
-
const [rows] = await
|
|
263
|
+
const [rows] = await Database_js_1.Database.select(`SELECT ${this.getDefaultSelect()} FROM \`${this.table}\` WHERE \`${this.primary.name}\` = ? LIMIT 1`, [id]);
|
|
218
264
|
if (rows.length === 0) {
|
|
219
265
|
return undefined;
|
|
220
266
|
}
|
|
@@ -230,7 +276,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
230
276
|
if (ids.length === 0) {
|
|
231
277
|
return [];
|
|
232
278
|
}
|
|
233
|
-
const [rows] = await
|
|
279
|
+
const [rows] = await Database_js_1.Database.select(`SELECT ${this.getDefaultSelect()} FROM \`${this.table}\` WHERE \`${this.primary.name}\` IN (?) LIMIT ?`, [
|
|
234
280
|
ids,
|
|
235
281
|
ids.length,
|
|
236
282
|
]);
|
|
@@ -360,9 +406,8 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
360
406
|
* Get multiple models by a simple where
|
|
361
407
|
*/
|
|
362
408
|
static async where(where, extra) {
|
|
363
|
-
var _a, _b, _c;
|
|
364
409
|
const params = [];
|
|
365
|
-
let query = `SELECT ${
|
|
410
|
+
let query = `SELECT ${extra?.select ?? this.getDefaultSelect()} FROM \`${this.table}\``;
|
|
366
411
|
if (Object.keys(where).length !== 0) {
|
|
367
412
|
const [whereQuery, p] = this.buildWhereQuery(where);
|
|
368
413
|
query += `WHERE ` + whereQuery;
|
|
@@ -372,15 +417,15 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
372
417
|
const sortQuery = [];
|
|
373
418
|
for (const item of extra.sort) {
|
|
374
419
|
if (typeof item === 'string') {
|
|
375
|
-
sortQuery.push(
|
|
420
|
+
sortQuery.push(Database_js_1.Database.escapeId(item) + ' ASC');
|
|
376
421
|
}
|
|
377
422
|
else if (typeof item.column === 'string') {
|
|
378
|
-
sortQuery.push(
|
|
423
|
+
sortQuery.push(Database_js_1.Database.escapeId(item.column) + ' ' + (item.direction ?? 'ASC'));
|
|
379
424
|
}
|
|
380
425
|
else {
|
|
381
426
|
// Repeat use of a where query in the sorting (needed when fulltext searching and need to sort on the score, because limit won't work without this for an unknown reason)
|
|
382
427
|
const [w, p] = this.buildWhereQuery(item.column);
|
|
383
|
-
sortQuery.push('(' + w + ') ' + (
|
|
428
|
+
sortQuery.push('(' + w + ') ' + (item.direction ?? 'ASC'));
|
|
384
429
|
params.push(...p);
|
|
385
430
|
}
|
|
386
431
|
}
|
|
@@ -390,7 +435,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
390
435
|
query += ` LIMIT ?`;
|
|
391
436
|
params.push(extra.limit);
|
|
392
437
|
}
|
|
393
|
-
const [rows] = await
|
|
438
|
+
const [rows] = await Database_js_1.Database.select(query, params);
|
|
394
439
|
return this.fromRows(rows, this.table);
|
|
395
440
|
}
|
|
396
441
|
/**
|
|
@@ -403,7 +448,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
403
448
|
query += ` LIMIT ?`;
|
|
404
449
|
params.push(limit);
|
|
405
450
|
}
|
|
406
|
-
const [rows] = await
|
|
451
|
+
const [rows] = await Database_js_1.Database.select(query, params);
|
|
407
452
|
return this.fromRows(rows, this.table);
|
|
408
453
|
}
|
|
409
454
|
/**
|
|
@@ -426,7 +471,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
426
471
|
const forceSave = this.forceSaveProperties.has(column.name);
|
|
427
472
|
const oldSavedValue = forceSave ? undefined : this.savedProperties.get(column.name);
|
|
428
473
|
const saveValue = forceSave ? null : column.to(this[column.name]); // .to is expensive, so avoid calling it when not needed
|
|
429
|
-
if (forceSave || oldSavedValue === undefined || column.isChanged(oldSavedValue, saveValue)) {
|
|
474
|
+
if (forceSave || oldSavedValue === undefined || column.isChanged(typeof oldSavedValue === 'object' && oldSavedValue !== null && 'to' in oldSavedValue ? oldSavedValue.to() : oldSavedValue, saveValue)) {
|
|
430
475
|
set[column.name] = forceSave ? column.to(this[column.name]) : saveValue;
|
|
431
476
|
if (column.skipUpdate && !forceSave) {
|
|
432
477
|
skipUpdate++;
|
|
@@ -456,6 +501,9 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
456
501
|
if (c === undefined) {
|
|
457
502
|
return undefined;
|
|
458
503
|
}
|
|
504
|
+
if (typeof c === 'object' && c !== null && 'from' in c) {
|
|
505
|
+
return c.from();
|
|
506
|
+
}
|
|
459
507
|
return column.from(c);
|
|
460
508
|
}
|
|
461
509
|
async save() {
|
|
@@ -517,7 +565,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
517
565
|
if (!this.existsInDatabase) {
|
|
518
566
|
if (Model.debug)
|
|
519
567
|
console.log(`Creating new ${this.constructor.name}`);
|
|
520
|
-
const [result] = await
|
|
568
|
+
const [result] = await Database_js_1.Database.insert('INSERT INTO `' + this.static.table + '` SET ?', [fields]);
|
|
521
569
|
if (this.static.primary.type === 'integer' && this.static.primary.name === 'id') {
|
|
522
570
|
// Auto increment value
|
|
523
571
|
this[this.static.primary.name] = result.insertId;
|
|
@@ -529,7 +577,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
529
577
|
else {
|
|
530
578
|
if (Model.debug)
|
|
531
579
|
console.log(`Updating ${this.constructor.name} where ${this.static.primary.name} = ${id}`);
|
|
532
|
-
const [result] = await
|
|
580
|
+
const [result] = await Database_js_1.Database.update('UPDATE `' + this.static.table + '` SET ? WHERE `' + this.static.primary.name + '` = ?', [fields, id]);
|
|
533
581
|
if (result.changedRows !== 1 && Model.showWarnings) {
|
|
534
582
|
console.warn(`Updated ${this.constructor.name}, but it didn't change a row. Check if ID exists.`);
|
|
535
583
|
}
|
|
@@ -537,7 +585,12 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
537
585
|
// Emit event
|
|
538
586
|
if (this.existsInDatabase) {
|
|
539
587
|
// Keep reference to old properties before marking saved
|
|
540
|
-
const originalProperties = Object.fromEntries(Array.from(this.savedProperties.entries()))
|
|
588
|
+
const originalProperties = Object.fromEntries(Array.from(this.savedProperties.entries()).map(([key, value]) => {
|
|
589
|
+
if (typeof value === 'object' && value !== null && 'to' in value) {
|
|
590
|
+
return [key, value.to()];
|
|
591
|
+
}
|
|
592
|
+
return [key, value];
|
|
593
|
+
}));
|
|
541
594
|
// Mark saved before sending the event
|
|
542
595
|
this.markSaved(fields);
|
|
543
596
|
await this.static.modelEventBus.sendEvent({
|
|
@@ -570,8 +623,8 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
570
623
|
throw new Error('Model ' + this.constructor.name + " can't be deleted if it doesn't exist in the database already");
|
|
571
624
|
}
|
|
572
625
|
if (Model.debug)
|
|
573
|
-
console.log(`
|
|
574
|
-
const [result] = await
|
|
626
|
+
console.log(`Deleting ${this.constructor.name} where ${this.static.primary.name} = ${id}`);
|
|
627
|
+
const [result] = await Database_js_1.Database.delete('DELETE FROM `' + this.static.table + '` WHERE `' + this.static.primary.name + '` = ?', [id]);
|
|
575
628
|
if (result.affectedRows !== 1 && Model.showWarnings) {
|
|
576
629
|
console.warn(`Deleted ${this.constructor.name}, but it didn't change a row. Check if ID exists.`);
|
|
577
630
|
}
|
|
@@ -584,7 +637,4 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
584
637
|
}
|
|
585
638
|
}
|
|
586
639
|
exports.Model = Model;
|
|
587
|
-
Model.modelEventBus = new ModelEventBus();
|
|
588
|
-
Model.debug = false;
|
|
589
|
-
Model.showWarnings = false;
|
|
590
640
|
//# sourceMappingURL=Model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../../src/classes/Model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Model } from './Model';
|
|
1
|
+
import { Model } from './Model.js';
|
|
2
2
|
export declare class OneToManyRelation<Key extends keyof any, A extends Model, B extends Model> {
|
|
3
3
|
modelA: {
|
|
4
4
|
new (): A;
|
|
@@ -35,3 +35,4 @@ export declare class OneToManyRelation<Key extends keyof any, A extends Model, B
|
|
|
35
35
|
orderByQuery(namespaceB: string): string;
|
|
36
36
|
load(modelA: A, sorted?: boolean, where?: object): Promise<B[]>;
|
|
37
37
|
}
|
|
38
|
+
//# sourceMappingURL=OneToManyRelation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OneToManyRelation.d.ts","sourceRoot":"","sources":["../../../../src/classes/OneToManyRelation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,qBAAa,iBAAiB,CAAC,GAAG,SAAS,MAAM,GAAG,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,KAAK;IAClF,MAAM,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,CAAC;IACrC,MAAM,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,CAAC;IAErC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC;IAEd;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,KAAK,GAAG,MAAM,CAAS;gBAEtB,MAAM,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC;IAO1H,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAO1D,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;IAK9D;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAIzD,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAYlC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,UAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAuBrE"}
|
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OneToManyRelation = void 0;
|
|
4
|
-
const
|
|
4
|
+
const Database_js_1 = require("./Database.js");
|
|
5
5
|
class OneToManyRelation {
|
|
6
|
+
modelA;
|
|
7
|
+
modelB;
|
|
8
|
+
/**
|
|
9
|
+
* Foreign key of the other model that references the current model
|
|
10
|
+
*/
|
|
11
|
+
foreignKey;
|
|
12
|
+
/**
|
|
13
|
+
* E.g. categories
|
|
14
|
+
*/
|
|
15
|
+
modelKey;
|
|
16
|
+
/**
|
|
17
|
+
* Sort the loading of this relation
|
|
18
|
+
*/
|
|
19
|
+
sortKey;
|
|
20
|
+
sortOrder = 'ASC';
|
|
6
21
|
constructor(modelA, modelB, modelKey, foreignKey) {
|
|
7
|
-
this.sortOrder = 'ASC';
|
|
8
22
|
this.modelA = modelA;
|
|
9
23
|
this.modelB = modelB;
|
|
10
24
|
this.modelKey = modelKey;
|
|
@@ -55,7 +69,7 @@ class OneToManyRelation {
|
|
|
55
69
|
if (sorted) {
|
|
56
70
|
str += this.orderByQuery('B');
|
|
57
71
|
}
|
|
58
|
-
const [rows] = await
|
|
72
|
+
const [rows] = await Database_js_1.Database.select(str, params);
|
|
59
73
|
const modelsB = this.modelB.fromRows(rows, namespaceB);
|
|
60
74
|
modelA.setManyRelation(this, modelsB);
|
|
61
75
|
return modelsB;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OneToManyRelation.js","sourceRoot":"","sources":["../../../../src/classes/OneToManyRelation.ts"],"names":[],"mappings":";;;AAAA,+CAAyC;AAGzC,MAAa,iBAAiB;IAC1B,MAAM,CAA+B;IACrC,MAAM,CAA+B;IAErC;;OAEG;IACH,UAAU,CAAU;IAEpB;;OAEG;IACH,QAAQ,CAAM;IAEd;;OAEG;IACH,OAAO,CAAsB;IAC7B,SAAS,GAAmB,KAAK,CAAC;IAElC,YAAY,MAAoC,EAAE,MAAoC,EAAE,QAAa,EAAE,UAAmB;QACtH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,GAAY,EAAE,QAAwB,KAAK;QAC/C,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mCAAmC;IACnC,QAAQ,CAAc,KAAQ;QAC1B,yFAAyF;QACzF,OAAO,KAAK,CAAC,OAAO,CAAE,KAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,UAAkB,EAAE,UAAkB;QAC5C,OAAO,aAAa,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,UAAU,OAAO,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IAC1J,CAAC;IAED,YAAY,CAAC,UAAkB;QAC3B,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACd,CAAC;QACD,IAAI,GAAG,GAAG,cAAc,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QAChE,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC5B,GAAG,IAAI,OAAO,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,IAAI,CAAC,MAAS,EAAE,MAAM,GAAG,IAAI,EAAE,KAAc;QAC/C,MAAM,UAAU,GAAG,GAAG,CAAC;QACvB,IAAI,GAAG,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,UAAU,IAAI,CAAC;QAC5G,GAAG,IAAI,SAAS,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;QAE/D,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACtB,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;oBACzC,GAAG,IAAI,QAAQ,UAAU,MAAM,GAAG,QAAQ,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,CAAC,CAAC;gBACtC,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACT,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,sBAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAQ,CAAC;QAC9D,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAnFD,8CAmFC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boys.d.ts","sourceRoot":"","sources":["../../../../../src/classes/data/boys.ts"],"names":[],"mappings":";AAAA,wBAy+BE"}
|