fastypest 1.1.1 → 1.3.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/README.md CHANGED
@@ -1,12 +1,21 @@
1
- # Fastypest
1
+ <h1 align="center">FASTYPEST</h1>
2
+ <p align="center">
3
+ <a href="https://www.npmjs.com/fastypest" target="_blank"><img alt="GitHub package.json version" src="https://img.shields.io/github/package-json/v/juanjo96dev/fastypest?logo=github&logoColor=fff&label=GitHub+package"></a>
4
+ <a href="https://www.npmjs.com/fastypest" target="_blank"><img alt="npm" src="https://img.shields.io/npm/v/fastypest?logo=npm&logoColor=fff&label=NPM+package"></a>
5
+ <a href="https://www.npmjs.com/fastypest" target="_blank"><img alt="npm peer dependency version" src="https://img.shields.io/npm/dependency-version/fastypest/peer/typeorm"></a>
6
+ <a href="https://www.npmjs.com/fastypest" target="_blank"><img alt="Node version" src="https://img.shields.io/node/v/fastypest"></a>
7
+ <a href="https://www.npmjs.com/fastypest" target="_blank"><img src="https://img.shields.io/npm/l/fastypest" alt="Package License" /></a>
8
+ <a href="https://www.npmjs.com/fastypest" target="_blank"><img src="https://img.shields.io/npm/dm/fastypest" alt="NPM Downloads" /></a>
9
+ </p>
2
10
 
3
11
  With this library, you can run your test suites without having to stop and restore the database in between them.
4
12
 
5
13
  Currently compatible with:
6
14
 
7
- - Mysql
8
- - MariaDB
9
- - Postgres
15
+ - <a href="https://www.npmjs.com/fastypest"><img alt="MySQL >= v5.7 supported" src="https://img.shields.io/badge/MySQL-%3E%3D5.7-informational"></a>
16
+ - <a href="https://www.npmjs.com/fastypest"><img alt="MariaDB >= v10.0 supported" src="https://img.shields.io/badge/MariaDB-%3E%3D10.0-yellowgreen"></a>
17
+ - <a href="https://www.npmjs.com/fastypest"><img alt="Postgres >= v9.0 supported" src="https://img.shields.io/badge/Postgres-%3E%3D9.0-green"></a>
18
+ - <a href="https://www.npmjs.com/fastypest"><img alt="cockroachDB >= v22.2.0 supported" src="https://img.shields.io/badge/CockroachDB-%3E%3D22.2.0-blue"></a>
10
19
 
11
20
  Install with npm
12
21
 
@@ -1,10 +1,19 @@
1
- import { Connection, DataSource } from "typeorm";
2
- export declare class Fastypest {
1
+ import { Connection, DataSource, EntityManager } from "typeorm";
2
+ import { SQLScript } from "./sql-script";
3
+ export declare class Fastypest extends SQLScript {
3
4
  private manager;
4
5
  private tables;
5
- private scriptSQL;
6
6
  constructor(connection: DataSource | Connection);
7
7
  init(): Promise<void>;
8
+ detectTables(em: EntityManager): Promise<void>;
8
9
  restoreData(): Promise<void>;
10
+ private restoreOrder;
11
+ restoreManager(em: EntityManager): Promise<{
12
+ foreignKey: {
13
+ disable: () => Promise<{}>;
14
+ enable: () => Promise<{}>;
15
+ };
16
+ dependencyTree: () => Promise<undefined>;
17
+ }>;
9
18
  clearTempTables(): Promise<void>;
10
19
  }
@@ -11,43 +11,88 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.Fastypest = void 0;
13
13
  const sql_script_1 = require("./sql-script");
14
- class Fastypest {
14
+ class Fastypest extends sql_script_1.SQLScript {
15
15
  constructor(connection) {
16
+ super(connection.options.type);
16
17
  this.tables = new Set();
17
18
  this.manager = connection.manager;
18
- this.scriptSQL = new sql_script_1.ScriptSQL(connection.options.type);
19
19
  }
20
20
  init() {
21
21
  return __awaiter(this, void 0, void 0, function* () {
22
22
  yield this.manager.transaction((em) => __awaiter(this, void 0, void 0, function* () {
23
- (yield em.query(this.scriptSQL.getQuery("getTables"))).map((row) => {
24
- this.tables.add(row.name);
25
- });
23
+ yield this.detectTables(em);
26
24
  yield Promise.all([...this.tables].map((tableName) => __awaiter(this, void 0, void 0, function* () {
27
- yield em.query(this.scriptSQL.getQuery("createTempTable", { tableName }));
25
+ yield em.query(this.getQuery("createTempTable", { tableName }));
28
26
  })));
29
27
  }));
30
28
  });
31
29
  }
30
+ detectTables(em) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ (yield em.query(this.getQuery("getTables"))).map((row) => {
33
+ this.tables.add(row.name);
34
+ });
35
+ });
36
+ }
32
37
  restoreData() {
33
38
  return __awaiter(this, void 0, void 0, function* () {
34
39
  yield this.manager.transaction((em) => __awaiter(this, void 0, void 0, function* () {
35
- yield em.query(this.scriptSQL.getQuery("foreignKey.disable"));
36
- yield Promise.all([...this.tables].map((tableName) => __awaiter(this, void 0, void 0, function* () {
37
- yield em.query(this.scriptSQL.getQuery("truncateTable", { tableName }));
38
- yield em.query(this.scriptSQL.getQuery("restoreData", { tableName }));
39
- })));
40
- yield em.query(this.scriptSQL.getQuery("foreignKey.enable"));
40
+ const restoreManager = yield this.restoreManager(em);
41
+ yield restoreManager.foreignKey.disable();
42
+ const dependencyTree = yield restoreManager.dependencyTree();
43
+ const tables = [...(dependencyTree || this.tables)];
44
+ yield this.restoreOrder(em, tables, dependencyTree ? "sorted" : "random");
45
+ yield restoreManager.foreignKey.enable();
41
46
  }));
42
47
  });
43
48
  }
49
+ restoreOrder(em, tables, type = "random") {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ switch (type) {
52
+ case "sorted":
53
+ for (const tableName of tables) {
54
+ yield em.query(this.getQuery("truncateTable", { tableName }));
55
+ yield em.query(this.getQuery("restoreData", { tableName }));
56
+ }
57
+ break;
58
+ default:
59
+ yield Promise.all(tables.map((tableName) => __awaiter(this, void 0, void 0, function* () {
60
+ yield em.query(this.getQuery("truncateTable", { tableName }));
61
+ yield em.query(this.getQuery("restoreData", { tableName }));
62
+ })));
63
+ break;
64
+ }
65
+ });
66
+ }
67
+ restoreManager(em) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ if (this.tables.size === 0) {
70
+ yield this.detectTables(em);
71
+ }
72
+ const manager = {
73
+ foreignKey: {
74
+ disable: () => __awaiter(this, void 0, void 0, function* () { return Promise.resolve({}); }),
75
+ enable: () => __awaiter(this, void 0, void 0, function* () { return Promise.resolve({}); }),
76
+ },
77
+ dependencyTree: () => __awaiter(this, void 0, void 0, function* () { return Promise.resolve(undefined); }),
78
+ };
79
+ switch (this.type) {
80
+ case "cockroachdb":
81
+ const dependencyTree = yield em.query(this.getQuery("dependencyTree"));
82
+ manager.dependencyTree = () => __awaiter(this, void 0, void 0, function* () {
83
+ return new Set(dependencyTree.map((row) => row.table_name));
84
+ });
85
+ break;
86
+ case "mariadb":
87
+ case "mysql":
88
+ manager.foreignKey.disable = () => __awaiter(this, void 0, void 0, function* () { return em.query(this.getQuery("foreignKey.disable")); });
89
+ manager.foreignKey.enable = () => __awaiter(this, void 0, void 0, function* () { return em.query(this.getQuery("foreignKey.enable")); });
90
+ }
91
+ return manager;
92
+ });
93
+ }
44
94
  clearTempTables() {
45
95
  return __awaiter(this, void 0, void 0, function* () {
46
- yield this.manager.transaction((em) => __awaiter(this, void 0, void 0, function* () {
47
- yield Promise.all([...this.tables].map((tableName) => __awaiter(this, void 0, void 0, function* () {
48
- yield em.query(yield em.query(this.scriptSQL.getQuery("dropTempTable", { tableName })));
49
- })));
50
- }));
51
96
  this.tables.clear();
52
97
  });
53
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fastypest.js","sourceRoot":"","sources":["../../src/core/fastypest.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,6CAAyC;AAEzC,MAAa,SAAS;IAKpB,YAAY,UAAmC;QAHvC,WAAM,GAAgB,IAAI,GAAG,EAAE,CAAC;QAItC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAEK,IAAI;;YACR,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAO,EAAE,EAAE,EAAE;gBAC1C,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CACxD,CAAC,GAA2B,EAAE,EAAE;oBAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC,CACF,CAAC;gBAEF,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAO,SAAS,EAAE,EAAE;oBACvC,MAAM,EAAE,CAAC,KAAK,CACZ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,CAC1D,CAAC;gBACJ,CAAC,CAAA,CAAC,CACH,CAAC;YACJ,CAAC,CAAA,CAAC,CAAC;QACL,CAAC;KAAA;IAEK,WAAW;;YACf,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAO,EAAE,EAAE,EAAE;gBAC1C,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAE9D,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAO,SAAS,EAAE,EAAE;oBACvC,MAAM,EAAE,CAAC,KAAK,CACZ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,CACxD,CAAC;oBACF,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBACxE,CAAC,CAAA,CAAC,CACH,CAAC;gBAEF,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAA,CAAC,CAAC;QACL,CAAC;KAAA;IAEK,eAAe;;YACnB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAO,EAAE,EAAE,EAAE;gBAC1C,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAO,SAAS,EAAE,EAAE;oBACvC,MAAM,EAAE,CAAC,KAAK,CACZ,MAAM,EAAE,CAAC,KAAK,CACZ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,CACxD,CACF,CAAC;gBACJ,CAAC,CAAA,CAAC,CACH,CAAC;YACJ,CAAC,CAAA,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;KAAA;CACF;AA5DD,8BA4DC"}
1
+ {"version":3,"file":"fastypest.js","sourceRoot":"","sources":["../../src/core/fastypest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export * from "./script-sql";
1
+ export * from "./sql-script";
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./script-sql"), exports);
17
+ __exportStar(require("./sql-script"), exports);
18
18
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,12 @@
1
+ {
2
+ "dependencyTree": "WITH RECURSIVE dependency_tree AS (SELECT table_name, 0 AS level FROM information_schema.tables WHERE table_schema = 'public' AND table_name NOT IN (SELECT DISTINCT ccu.table_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage ccu ON ccu.constraint_name = tc.constraint_name WHERE constraint_type = 'FOREIGN KEY' AND tc.table_schema = 'public') UNION ALL SELECT ccu.table_name, dt.level + 1 AS level FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage ccu ON ccu.constraint_name = tc.constraint_name JOIN dependency_tree dt ON dt.table_name = tc.table_name WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_schema = 'public') SELECT table_name FROM dependency_tree ORDER BY level DESC, table_name",
3
+ "foreignKey": {
4
+ "disable": "-- NOT USED",
5
+ "enable": "-- NOT USED"
6
+ },
7
+ "getTables": "SELECT table_name AS name FROM information_schema.tables WHERE table_catalog = CURRENT_DATABASE() AND table_schema = 'public' AND table_type = 'BASE TABLE'",
8
+ "createTempTable": "SET experimental_enable_temp_tables=on; CREATE TEMPORARY TABLE \"{{tableName}}_temp\" AS SELECT * FROM \"{{tableName}}\"",
9
+ "dropTempTable": "DROP TABLE IF EXISTS \"{{tableName}}_temp\"",
10
+ "restoreData": "INSERT INTO \"{{tableName}}\" SELECT * FROM \"{{tableName}}_temp\"; SELECT setval(pg_get_serial_sequence('\"{{tableName}}\"', 'id'), (SELECT COALESCE(MAX(id), 0) FROM \"{{tableName}}\"))",
11
+ "truncateTable": "TRUNCATE TABLE \"{{tableName}}\" CASCADE; ALTER SEQUENCE {{tableName}}_id_seq RESTART WITH 1;"
12
+ }
@@ -1,5 +1,6 @@
1
1
  export declare const DB_QUERIES: {
2
2
  mysql: {
3
+ dependencyTree: string;
3
4
  foreignKey: {
4
5
  disable: string;
5
6
  enable: string;
@@ -11,6 +12,7 @@ export declare const DB_QUERIES: {
11
12
  truncateTable: string;
12
13
  };
13
14
  mariadb: {
15
+ dependencyTree: string;
14
16
  foreignKey: {
15
17
  disable: string;
16
18
  enable: string;
@@ -22,6 +24,19 @@ export declare const DB_QUERIES: {
22
24
  truncateTable: string;
23
25
  };
24
26
  postgres: {
27
+ dependencyTree: string;
28
+ foreignKey: {
29
+ disable: string;
30
+ enable: string;
31
+ };
32
+ getTables: string;
33
+ createTempTable: string;
34
+ dropTempTable: string;
35
+ restoreData: string;
36
+ truncateTable: string;
37
+ };
38
+ cockroachdb: {
39
+ dependencyTree: string;
25
40
  foreignKey: {
26
41
  disable: string;
27
42
  enable: string;
@@ -4,11 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DB_QUERIES = void 0;
7
+ const cockroachdb_json_1 = __importDefault(require("./cockroachdb.json"));
7
8
  const mysql_query_json_1 = __importDefault(require("./mysql.query.json"));
8
9
  const postgres_query_json_1 = __importDefault(require("./postgres.query.json"));
9
10
  exports.DB_QUERIES = {
10
11
  mysql: mysql_query_json_1.default,
11
12
  mariadb: mysql_query_json_1.default,
12
13
  postgres: postgres_query_json_1.default,
14
+ cockroachdb: cockroachdb_json_1.default,
13
15
  };
14
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/sql-script/queries/index.ts"],"names":[],"mappings":";;;;;;AAAA,0EAA+C;AAC/C,gFAAqD;AAExC,QAAA,UAAU,GAAG;IACxB,KAAK,EAAE,0BAAa;IACpB,OAAO,EAAE,0BAAa;IACtB,QAAQ,EAAE,6BAAgB;CAC3B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/sql-script/queries/index.ts"],"names":[],"mappings":";;;;;;AAAA,0EAAqD;AACrD,0EAA+C;AAC/C,gFAAqD;AAExC,QAAA,UAAU,GAAG;IACxB,KAAK,EAAE,0BAAa;IACpB,OAAO,EAAE,0BAAa;IACtB,QAAQ,EAAE,6BAAgB;IAC1B,WAAW,EAAE,0BAAmB;CACjC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  {
2
+ "dependencyTree": "-- NOT USED",
2
3
  "foreignKey": {
3
4
  "disable": "SET FOREIGN_KEY_CHECKS=0",
4
5
  "enable": "SET FOREIGN_KEY_CHECKS=1"
@@ -1,11 +1,12 @@
1
1
  {
2
+ "dependencyTree": "-- NOT USED",
2
3
  "foreignKey": {
3
- "disable": "SET CONSTRAINTS ALL DEFERRED",
4
- "enable": "SET CONSTRAINTS ALL IMMEDIATE"
4
+ "disable": "-- NOT USED",
5
+ "enable": "-- NOT USED"
5
6
  },
6
7
  "getTables": "SELECT table_name AS name FROM information_schema.tables WHERE table_schema = CURRENT_SCHEMA() AND table_type = 'BASE TABLE'",
7
- "createTempTable": "CREATE TEMPORARY TABLE {{tableName}}_temp AS SELECT * FROM {{tableName}}",
8
- "dropTempTable": "DROP TABLE IF EXISTS {{tableName}}_temp",
9
- "restoreData": "INSERT INTO {{tableName}} SELECT * FROM {{tableName}}_temp",
10
- "truncateTable": "TRUNCATE TABLE {{tableName}}"
8
+ "createTempTable": "CREATE TEMPORARY TABLE \"{{tableName}}_temp\" AS SELECT * FROM \"{{tableName}}\"",
9
+ "dropTempTable": "DROP TABLE IF EXISTS \"{{tableName}}_temp\"",
10
+ "restoreData": "INSERT INTO \"{{tableName}}\" SELECT * FROM \"{{tableName}}_temp\"; SELECT SETVAL(pg_get_serial_sequence('{{tableName}}', 'id'), (SELECT COALESCE(MAX(id), 0) FROM \"{{tableName}}\"))",
11
+ "truncateTable": "TRUNCATE TABLE \"{{tableName}}\" RESTART IDENTITY CASCADE"
11
12
  }
@@ -2,8 +2,8 @@ import { DataSourceOptions } from "typeorm";
2
2
  import { Queries } from "./queries";
3
3
  import { QueryPath } from "./types";
4
4
  type DBTypes = DataSourceOptions["type"];
5
- export declare class ScriptSQL {
6
- private readonly type;
5
+ export declare class SQLScript {
6
+ readonly type: DBTypes;
7
7
  queries: Queries;
8
8
  constructor(type: DBTypes);
9
9
  getQuery(queryPath: QueryPath<Queries>, values?: Record<string, string>): string;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ScriptSQL = void 0;
3
+ exports.SQLScript = void 0;
4
4
  const queries_1 = require("./queries");
5
- class ScriptSQL {
5
+ class SQLScript {
6
6
  constructor(type) {
7
7
  this.type = type;
8
8
  if (!(this.type in queries_1.DB_QUERIES)) {
@@ -21,5 +21,5 @@ class ScriptSQL {
21
21
  return queryStr;
22
22
  }
23
23
  }
24
- exports.ScriptSQL = ScriptSQL;
25
- //# sourceMappingURL=script-sql.js.map
24
+ exports.SQLScript = SQLScript;
25
+ //# sourceMappingURL=sql-script.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"script-sql.js","sourceRoot":"","sources":["../../../src/core/sql-script/script-sql.ts"],"names":[],"mappings":";;;AACA,uCAAkE;AAKlE,MAAa,SAAS;IAEpB,YAA6B,IAAa;QAAb,SAAI,GAAJ,IAAI,CAAS;QACxC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,oBAAU,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CACb,kFAAkF,MAAM,CAAC,IAAI,CAC3F,oBAAU,CACX,EAAE,CACJ,CAAC;SACH;QAED,IAAI,CAAC,OAAO,GAAG,oBAAU,CAAC,IAAI,CAAC,IAAwB,CAAC,CAAC;IAC3D,CAAC;IAED,QAAQ,CACN,SAA6B,EAC7B,MAA+B;QAE/B,MAAM,QAAQ,GAAG,SAAS;aACvB,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,QAAQ,GAAG,QAAQ,CAAC;QAExB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACxB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CACzB,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,EACrC,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;SACH;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAjCD,8BAiCC"}
1
+ {"version":3,"file":"sql-script.js","sourceRoot":"","sources":["../../../src/core/sql-script/sql-script.ts"],"names":[],"mappings":";;;AACA,uCAAkE;AAKlE,MAAa,SAAS;IAEpB,YAAqB,IAAa;QAAb,SAAI,GAAJ,IAAI,CAAS;QAChC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,oBAAU,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CACb,kFAAkF,MAAM,CAAC,IAAI,CAC3F,oBAAU,CACX,EAAE,CACJ,CAAC;SACH;QAED,IAAI,CAAC,OAAO,GAAG,oBAAU,CAAC,IAAI,CAAC,IAAwB,CAAC,CAAC;IAC3D,CAAC;IAED,QAAQ,CACN,SAA6B,EAC7B,MAA+B;QAE/B,MAAM,QAAQ,GAAG,SAAS;aACvB,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,QAAQ,GAAG,QAAQ,CAAC;QAExB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACxB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CACzB,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,EACrC,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;SACH;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAjCD,8BAiCC"}
package/package.json CHANGED
@@ -1,14 +1,22 @@
1
1
  {
2
2
  "name": "fastypest",
3
- "version": "1.1.1",
3
+ "version": "1.3.0",
4
4
  "description": "Restores the database automatically after each test. Allows serial execution of tests without having to delete and restore the database having to stop the application",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "engines": {
8
+ "node": ">=18"
9
+ },
10
+ "volta": {
11
+ "node": "18.0.0"
12
+ },
7
13
  "scripts": {
8
14
  "prebuild": "rimraf dist",
9
15
  "build": "tsc",
10
16
  "eslint": "eslint . --fix --config .eslintrc",
11
- "test": "jest --runInBand --config ./jest.config.json"
17
+ "pretest": "tsc",
18
+ "test": "jest --runInBand --config ./jest.config.json",
19
+ "docker": "ts-node -r tsconfig-paths/register scripts/prepare-docker.ts"
12
20
  },
13
21
  "repository": {
14
22
  "type": "git",
@@ -33,28 +41,29 @@
33
41
  "bugs": {
34
42
  "url": "https://github.com/juanjo96Dev/fastypest/issues"
35
43
  },
36
- "homepage": "https://github.com/juanjo96Dev/fastypestb#readme",
44
+ "homepage": "https://github.com/juanjo96Dev/fastypest#readme",
37
45
  "devDependencies": {
38
- "@types/dotenv": "^8.2.0",
39
- "@types/jest": "^29.4.0",
40
- "@types/node": "^18.13.0",
41
- "@typescript-eslint/eslint-plugin": "^5.52.0",
42
- "eslint": "^8.34.0",
43
- "eslint-config-standard-with-typescript": "^34.0.0",
46
+ "@types/cross-spawn": "^6.0.2",
47
+ "@types/jest": "^29.5.0",
48
+ "@types/node": "^18.15.11",
49
+ "@typescript-eslint/eslint-plugin": "^5.58.0",
50
+ "cross-spawn": "^7.0.3",
51
+ "eslint": "^8.38.0",
52
+ "eslint-config-standard-with-typescript": "^34.0.1",
44
53
  "eslint-plugin-import": "^2.27.5",
45
- "eslint-plugin-n": "^15.6.1",
54
+ "eslint-plugin-n": "^15.7.0",
46
55
  "eslint-plugin-prettier": "^4.2.1",
47
56
  "eslint-plugin-promise": "^6.1.1",
48
- "jest": "^29.4.2",
49
- "mariadb": "^3.1.0",
57
+ "jest": "^29.5.0",
58
+ "mariadb": "^3.1.1",
50
59
  "mysql": "^2.18.1",
51
- "pg": "^8.9.0",
52
- "rimraf": "^4.1.2",
53
- "ts-jest": "^29.0.5",
60
+ "pg": "^8.10.0",
61
+ "rimraf": "^5.0.0",
62
+ "ts-jest": "^29.1.0",
54
63
  "ts-node": "^10.9.1",
55
- "typescript": "^4.9.5"
64
+ "typescript": "^5.0.4"
56
65
  },
57
66
  "peerDependencies": {
58
- "typeorm": "^0.3.12"
67
+ "typeorm": "^0.3.14"
59
68
  }
60
69
  }