@stackpress/inquire-mysql2 0.4.6 → 0.5.1

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.
@@ -1,5 +1,5 @@
1
1
  import type { ResultSetHeader } from 'mysql2/promise';
2
- import type { Dialect, Connection, QueryObject, Transaction } from '@stackpress/inquire/dist/types';
2
+ import type { Dialect, Connection, QueryObject, Transaction } from '@stackpress/inquire/types';
3
3
  import type { Connector, Resource, Results } from './types';
4
4
  export default class Mysql2Connection implements Connection<Resource> {
5
5
  readonly dialect: Dialect;
@@ -9,7 +9,7 @@ export default class Mysql2Connection implements Connection<Resource> {
9
9
  constructor(resource: Connector);
10
10
  format(request: QueryObject): {
11
11
  query: string;
12
- values: import("@stackpress/inquire/dist/types").Value[];
12
+ values: import("@stackpress/inquire/types").Value[];
13
13
  };
14
14
  query<R = unknown>(request: QueryObject): Promise<R[]>;
15
15
  raw<R = unknown>(request: QueryObject): Promise<[ResultSetHeader, undefined] | Results<R>>;
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const Mysql_1 = __importDefault(require("@stackpress/inquire/dist/dialect/Mysql"));
15
+ const Mysql_1 = __importDefault(require("@stackpress/inquire/Mysql"));
16
16
  class Mysql2Connection {
17
17
  get lastId() {
18
18
  return this._lastId;
@@ -1,3 +1,3 @@
1
- import Engine from '@stackpress/inquire/dist/Engine';
1
+ import Engine from '@stackpress/inquire/Engine';
2
2
  import type { Connector } from './types';
3
3
  export declare function connect(resource: Connector): Engine<import("mysql2/promise").Connection>;
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.connect = connect;
7
- const Engine_1 = __importDefault(require("@stackpress/inquire/dist/Engine"));
7
+ const Engine_1 = __importDefault(require("@stackpress/inquire/Engine"));
8
8
  const Connection_1 = __importDefault(require("./Connection"));
9
9
  function connect(resource) {
10
10
  const connection = new Connection_1.default(resource);
@@ -0,0 +1 @@
1
+ {"type": "commonjs"}
@@ -0,0 +1,19 @@
1
+ import type { ResultSetHeader } from 'mysql2/promise';
2
+ import type { Dialect, Connection, QueryObject, Transaction } from '@stackpress/inquire/types';
3
+ import type { Connector, Resource, Results } from './types';
4
+ export default class Mysql2Connection implements Connection<Resource> {
5
+ readonly dialect: Dialect;
6
+ protected _lastId?: number | string;
7
+ protected _resource: Connector;
8
+ get lastId(): string | number | undefined;
9
+ constructor(resource: Connector);
10
+ format(request: QueryObject): {
11
+ query: string;
12
+ values: import("@stackpress/inquire/types").Value[];
13
+ };
14
+ query<R = unknown>(request: QueryObject): Promise<R[]>;
15
+ raw<R = unknown>(request: QueryObject): Promise<[ResultSetHeader, undefined] | Results<R>>;
16
+ resource(): Promise<import("mysql2/promise").Connection>;
17
+ transaction<R = unknown>(callback: Transaction<R>): Promise<R>;
18
+ protected _query<R = unknown>(request: QueryObject): Promise<Results<R> | [ResultSetHeader, undefined]>;
19
+ }
@@ -0,0 +1,67 @@
1
+ import Mysql from '@stackpress/inquire/Mysql';
2
+ export default class Mysql2Connection {
3
+ dialect = Mysql;
4
+ _lastId;
5
+ _resource;
6
+ get lastId() {
7
+ return this._lastId;
8
+ }
9
+ constructor(resource) {
10
+ this._resource = resource;
11
+ }
12
+ format(request) {
13
+ let { query, values = [] } = request;
14
+ for (let i = 0; i < values.length; i++) {
15
+ const value = values[i];
16
+ if (value instanceof Date) {
17
+ values[i] = value.toISOString();
18
+ }
19
+ else if (Array.isArray(value)) {
20
+ values[i] = JSON.stringify(value);
21
+ }
22
+ else if (value && typeof value === 'object') {
23
+ values[i] = JSON.stringify(value);
24
+ }
25
+ }
26
+ return { query, values };
27
+ }
28
+ async query(request) {
29
+ const results = await this.raw(request);
30
+ if (!Array.isArray(results[0]) && results[0].insertId) {
31
+ this._lastId = results[0].insertId;
32
+ }
33
+ return Array.isArray(results[0]) ? results[0] : [];
34
+ }
35
+ async raw(request) {
36
+ const formatted = this.format(request);
37
+ return await this._query(formatted);
38
+ }
39
+ async resource() {
40
+ if (typeof this._resource === 'function') {
41
+ this._resource = await this._resource();
42
+ }
43
+ return this._resource;
44
+ }
45
+ async transaction(callback) {
46
+ const resource = await this.resource();
47
+ try {
48
+ await resource.beginTransaction();
49
+ const results = await callback(this);
50
+ await resource.commit();
51
+ return results;
52
+ }
53
+ catch (e) {
54
+ await resource.rollback();
55
+ throw e;
56
+ }
57
+ }
58
+ async _query(request) {
59
+ const { query, values = [] } = request;
60
+ const resource = await this.resource();
61
+ const results = await resource.execute(query, values);
62
+ if (Array.isArray(results[0])) {
63
+ return results;
64
+ }
65
+ return results;
66
+ }
67
+ }
@@ -0,0 +1,3 @@
1
+ import Engine from '@stackpress/inquire/Engine';
2
+ import type { Connector } from './types';
3
+ export declare function connect(resource: Connector): Engine<import("mysql2/promise").Connection>;
package/esm/helpers.js ADDED
@@ -0,0 +1,6 @@
1
+ import Engine from '@stackpress/inquire/Engine';
2
+ import Connection from './Connection';
3
+ export function connect(resource) {
4
+ const connection = new Connection(resource);
5
+ return new Engine(connection);
6
+ }
package/esm/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import Mysql2Connection from './Connection';
2
+ import { connect } from './helpers';
3
+ export type * from './types';
4
+ export { Mysql2Connection, connect };
5
+ export default connect;
package/esm/index.js ADDED
@@ -0,0 +1,4 @@
1
+ import Mysql2Connection from './Connection';
2
+ import { connect } from './helpers';
3
+ export { Mysql2Connection, connect };
4
+ export default connect;
@@ -0,0 +1 @@
1
+ {"type": "module"}
package/esm/types.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type { Connection, FieldPacket } from 'mysql2/promise';
2
+ export type Results<R = unknown> = [R[], FieldPacket[]];
3
+ export type Resource = Connection;
4
+ export type Connector = Resource | (() => Promise<Resource>);
package/esm/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
+ "type": "module",
2
3
  "name": "@stackpress/inquire-mysql2",
3
- "version": "0.4.6",
4
+ "version": "0.5.1",
4
5
  "license": "Apache-2.0",
5
6
  "description": "Generic typed mysql2",
6
7
  "author": "Chris <chris@incept.asia>",
@@ -15,20 +16,53 @@
15
16
  "mysql",
16
17
  "stackpress"
17
18
  ],
18
- "main": "index.js",
19
+ "main": "./cjs/index.js",
20
+ "module": "./esm/index.js",
21
+ "types": "./cjs/index.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "require": "./cjs/index.js",
25
+ "import": "./esm/index.js"
26
+ },
27
+ "./helpers": {
28
+ "require": "./cjs/helpers.js",
29
+ "import": "./esm/helpers.js"
30
+ },
31
+ "./types": {
32
+ "require": "./cjs/types.js",
33
+ "import": "./esm/types.js"
34
+ },
35
+ "./Connection": {
36
+ "require": "./cjs/Connection.js",
37
+ "import": "./esm/Connection.js"
38
+ }
39
+ },
40
+ "typesVersions": {
41
+ "*": {
42
+ "index": [ "./cjs/index.d.ts"],
43
+ "helpers": [ "./cjs/helpers.d.ts" ],
44
+ "types": [ "./cjs/types.d.ts" ],
45
+ "Connection": [ "./cjs/Connection.d.ts" ]
46
+ }
47
+ },
19
48
  "files": [
20
- "dist",
21
- "index.js",
22
- "index.d.ts",
49
+ "cjs",
50
+ "esm",
23
51
  "LICENSE",
24
52
  "README.md"
25
53
  ],
26
54
  "scripts": {
27
- "build": "tsc",
28
- "test": "ts-mocha tests/*.test.ts"
55
+ "build": "yarn build:tsc && yarn build:pkg",
56
+ "build:pkg": "yarn build:pkg:cjs && yarn build:pkg:esm",
57
+ "build:pkg:cjs": "echo '{\"type\": \"commonjs\"}' > cjs/package.json",
58
+ "build:pkg:esm": "echo '{\"type\": \"module\"}' > esm/package.json",
59
+ "build:tsc": "yarn build:tsc:cjs && yarn build:tsc:esm",
60
+ "build:tsc:cjs": "tsc -p ./tsconfig.cjs.json",
61
+ "build:tsc:esm": "tsc -p ./tsconfig.esm.json",
62
+ "test": "DATABASE_URL=test ts-mocha -p ./tsconfig.cjs.json tests/*.test.ts"
29
63
  },
30
64
  "dependencies": {
31
- "@stackpress/inquire": "0.4.6"
65
+ "@stackpress/inquire": "0.5.1"
32
66
  },
33
67
  "peerDependencies": {
34
68
  "mysql2": "^3.11.5"
package/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import connect from './dist';
2
- export * from './dist';
3
- export default connect;
package/index.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('./dist');
File without changes
File without changes
File without changes
File without changes