@juit/pgproxy-utils 1.0.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 +119 -0
- package/dist/database.cjs +60 -0
- package/dist/database.cjs.map +6 -0
- package/dist/database.d.ts +17 -0
- package/dist/database.mjs +33 -0
- package/dist/database.mjs.map +6 -0
- package/dist/extract.cjs +119 -0
- package/dist/extract.cjs.map +6 -0
- package/dist/extract.d.ts +18 -0
- package/dist/extract.mjs +94 -0
- package/dist/extract.mjs.map +6 -0
- package/dist/helpers.cjs +65 -0
- package/dist/helpers.cjs.map +6 -0
- package/dist/helpers.d.ts +10 -0
- package/dist/helpers.mjs +29 -0
- package/dist/helpers.mjs.map +6 -0
- package/dist/index.cjs +53 -0
- package/dist/index.cjs.map +6 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.mjs +12 -0
- package/dist/index.mjs.map +6 -0
- package/dist/migrate.cjs +138 -0
- package/dist/migrate.cjs.map +6 -0
- package/dist/migrate.d.ts +14 -0
- package/dist/migrate.mjs +103 -0
- package/dist/migrate.mjs.map +6 -0
- package/dist/serialize.cjs +279 -0
- package/dist/serialize.cjs.map +6 -0
- package/dist/serialize.d.ts +9 -0
- package/dist/serialize.mjs +244 -0
- package/dist/serialize.mjs.map +6 -0
- package/dist/types.cjs +130 -0
- package/dist/types.cjs.map +6 -0
- package/dist/types.d.ts +31 -0
- package/dist/types.mjs +66 -0
- package/dist/types.mjs.map +6 -0
- package/package.json +50 -0
- package/src/database.ts +48 -0
- package/src/extract.ts +137 -0
- package/src/helpers.ts +30 -0
- package/src/index.ts +22 -0
- package/src/migrate.ts +177 -0
- package/src/serialize.ts +217 -0
- package/src/types.ts +51 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/serialize.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["ts"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import '@juit/pgproxy-client-psql';
|
|
2
|
+
import ts from 'typescript';
|
|
3
|
+
import type { Schema } from './index';
|
|
4
|
+
/**
|
|
5
|
+
* Serialize the specified `Schema` as a TypeScript source file.
|
|
6
|
+
*
|
|
7
|
+
* If the `id` is unspecified, the default name `Schema` will be used.
|
|
8
|
+
*/
|
|
9
|
+
export declare function serializeSchema(schema: Schema, id?: string, overrides?: Record<number, ts.TypeNode>): string;
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
// serialize.ts
|
|
2
|
+
import "@juit/pgproxy-client-psql";
|
|
3
|
+
import { PGOIDs } from "@juit/pgproxy-types";
|
|
4
|
+
import ts from "typescript";
|
|
5
|
+
import * as types from "./types.mjs";
|
|
6
|
+
var exportModifier = ts.factory.createModifier(ts.SyntaxKind.ExportKeyword);
|
|
7
|
+
var endOfFileToken = ts.factory.createToken(ts.SyntaxKind.EndOfFileToken);
|
|
8
|
+
var oidTypes = {
|
|
9
|
+
/* Basic known types |_oid__|_typname______| */
|
|
10
|
+
[PGOIDs.bool]: types.booleanType,
|
|
11
|
+
/* | 16 | bool | */
|
|
12
|
+
[PGOIDs.bytea]: types.uint8ArrayType,
|
|
13
|
+
/* | 17 | bytea | */
|
|
14
|
+
[PGOIDs.int8]: types.bigintType,
|
|
15
|
+
/* | 20 | int8 | */
|
|
16
|
+
[PGOIDs.int2]: types.numberType,
|
|
17
|
+
/* | 21 | int2 | */
|
|
18
|
+
[PGOIDs.int4]: types.numberType,
|
|
19
|
+
/* | 23 | int4 | */
|
|
20
|
+
[PGOIDs.oid]: types.numberType,
|
|
21
|
+
/* | 26 | oid | */
|
|
22
|
+
[PGOIDs.json]: types.anyType,
|
|
23
|
+
/* | 114 | json | */
|
|
24
|
+
[PGOIDs.point]: types.pgPointType,
|
|
25
|
+
/* | 600 | point | */
|
|
26
|
+
[PGOIDs.float4]: types.numberType,
|
|
27
|
+
/* | 700 | float4 | */
|
|
28
|
+
[PGOIDs.float8]: types.numberType,
|
|
29
|
+
/* | 701 | float8 | */
|
|
30
|
+
[PGOIDs.circle]: types.pgCircleType,
|
|
31
|
+
/* | 718 | circle | */
|
|
32
|
+
[PGOIDs.varchar]: types.stringType,
|
|
33
|
+
/* | 1043 | varchar | */
|
|
34
|
+
[PGOIDs.timestamp]: types.dateType,
|
|
35
|
+
/* | 1114 | timestamp | */
|
|
36
|
+
[PGOIDs.timestamptz]: types.dateType,
|
|
37
|
+
/* | 1184 | timestamptz | */
|
|
38
|
+
[PGOIDs.interval]: types.pgIntervalType,
|
|
39
|
+
/* | 1186 | interval | */
|
|
40
|
+
[PGOIDs.numeric]: types.stringType,
|
|
41
|
+
/* | 1700 | numeric | */
|
|
42
|
+
[PGOIDs.jsonb]: types.anyType,
|
|
43
|
+
/* | 3802 | jsonb | */
|
|
44
|
+
/* Special types |_oid__|_typname______| */
|
|
45
|
+
[PGOIDs.void]: types.voidType,
|
|
46
|
+
/* | 2278 | void | */
|
|
47
|
+
[PGOIDs.xid]: types.numberType,
|
|
48
|
+
/* | 28 | xid | */
|
|
49
|
+
[PGOIDs.xid8]: types.bigintType,
|
|
50
|
+
/* | 5069 | xid8 | */
|
|
51
|
+
[PGOIDs._xid]: types.numberArrayType,
|
|
52
|
+
/* | 1011 | _xid | */
|
|
53
|
+
[PGOIDs._xid8]: types.bigintArrayType,
|
|
54
|
+
/* | 271 | _xid8 | */
|
|
55
|
+
/* Native array types of the above |_oid__|_typname______| */
|
|
56
|
+
[PGOIDs._bool]: types.booleanArrayType,
|
|
57
|
+
/* | 1000 | _bool | */
|
|
58
|
+
[PGOIDs._bytea]: types.uint8ArrayArrayType,
|
|
59
|
+
/* | 1001 | _bytea | */
|
|
60
|
+
[PGOIDs._int8]: types.bigintArrayType,
|
|
61
|
+
/* | 1016 | _int8 | */
|
|
62
|
+
[PGOIDs._int2]: types.numberArrayType,
|
|
63
|
+
/* | 1005 | _int2 | */
|
|
64
|
+
[PGOIDs._int4]: types.numberArrayType,
|
|
65
|
+
/* | 1007 | _int4 | */
|
|
66
|
+
[PGOIDs._oid]: types.numberArrayType,
|
|
67
|
+
/* | 1028 | _oid | */
|
|
68
|
+
[PGOIDs._json]: types.anyArrayType,
|
|
69
|
+
/* | 199 | _json | */
|
|
70
|
+
[PGOIDs._point]: types.pgPointArrayType,
|
|
71
|
+
/* | 1017 | _point | */
|
|
72
|
+
[PGOIDs._float4]: types.numberArrayType,
|
|
73
|
+
/* | 1021 | _float4 | */
|
|
74
|
+
[PGOIDs._float8]: types.numberArrayType,
|
|
75
|
+
/* | 1022 | _float8 | */
|
|
76
|
+
[PGOIDs._circle]: types.pgCircleArrayType,
|
|
77
|
+
/* | 719 | _circle | */
|
|
78
|
+
[PGOIDs._timestamp]: types.dateArrayType,
|
|
79
|
+
/* | 1115 | _timestamp | */
|
|
80
|
+
[PGOIDs._timestamptz]: types.dateArrayType,
|
|
81
|
+
/* | 1185 | _timestamptz | */
|
|
82
|
+
[PGOIDs._interval]: types.pgIntervalArrayType,
|
|
83
|
+
/* | 1187 | _interval | */
|
|
84
|
+
[PGOIDs._numeric]: types.stringArrayType,
|
|
85
|
+
/* | 1231 | _numeric | */
|
|
86
|
+
[PGOIDs._jsonb]: types.anyArrayType,
|
|
87
|
+
/* | 3807 | _jsonb | */
|
|
88
|
+
/* Other known array types |_oid__|_typname______| */
|
|
89
|
+
[PGOIDs._cidr]: types.stringArrayType,
|
|
90
|
+
/* | 651 | _cidr | */
|
|
91
|
+
[PGOIDs._money]: types.stringArrayType,
|
|
92
|
+
/* | 791 | _money | */
|
|
93
|
+
[PGOIDs._regproc]: types.stringArrayType,
|
|
94
|
+
/* | 1008 | _regproc | */
|
|
95
|
+
[PGOIDs._text]: types.stringArrayType,
|
|
96
|
+
/* | 1009 | _text | */
|
|
97
|
+
[PGOIDs._bpchar]: types.stringArrayType,
|
|
98
|
+
/* | 1014 | _bpchar | */
|
|
99
|
+
[PGOIDs._varchar]: types.stringArrayType,
|
|
100
|
+
/* | 1015 | _varchar | */
|
|
101
|
+
[PGOIDs._macaddr]: types.stringArrayType,
|
|
102
|
+
/* | 1040 | _macaddr | */
|
|
103
|
+
[PGOIDs._inet]: types.stringArrayType,
|
|
104
|
+
/* | 1041 | _inet | */
|
|
105
|
+
[PGOIDs._date]: types.stringArrayType,
|
|
106
|
+
/* | 1182 | _date | */
|
|
107
|
+
[PGOIDs._time]: types.stringArrayType,
|
|
108
|
+
/* | 1183 | _time | */
|
|
109
|
+
[PGOIDs._timetz]: types.stringArrayType,
|
|
110
|
+
/* | 1270 | _timetz | */
|
|
111
|
+
[PGOIDs._uuid]: types.stringArrayType,
|
|
112
|
+
/* | 2951 | _uuid | */
|
|
113
|
+
/* Range types |_oid__|_typname______| */
|
|
114
|
+
[PGOIDs.int4range]: types.numberRangeType,
|
|
115
|
+
/* | 3904 | int4range | */
|
|
116
|
+
[PGOIDs.numrange]: types.numberRangeType,
|
|
117
|
+
/* | 3906 | numrange | */
|
|
118
|
+
[PGOIDs.tsrange]: types.dateRangeType,
|
|
119
|
+
/* | 3908 | tsrange | */
|
|
120
|
+
[PGOIDs.tstzrange]: types.dateRangeType,
|
|
121
|
+
/* | 3910 | tstzrange | */
|
|
122
|
+
[PGOIDs.daterange]: types.stringRangeType,
|
|
123
|
+
/* | 3912 | daterange | */
|
|
124
|
+
[PGOIDs.int8range]: types.bigintRangeType,
|
|
125
|
+
/* | 3926 | int8range | */
|
|
126
|
+
/* Array of range types |_oid__|_typname______| */
|
|
127
|
+
[PGOIDs._int4range]: types.numberRangeArrayType,
|
|
128
|
+
/* | 3905 | _int4range | */
|
|
129
|
+
[PGOIDs._numrange]: types.numberRangeArrayType,
|
|
130
|
+
/* | 3907 | _numrange | */
|
|
131
|
+
[PGOIDs._tsrange]: types.dateRangeArrayType,
|
|
132
|
+
/* | 3909 | _tsrange | */
|
|
133
|
+
[PGOIDs._tstzrange]: types.dateRangeArrayType,
|
|
134
|
+
/* | 3911 | _tstzrange | */
|
|
135
|
+
[PGOIDs._daterange]: types.stringRangeArrayType,
|
|
136
|
+
/* | 3913 | _daterange | */
|
|
137
|
+
[PGOIDs._int8range]: types.bigintRangeArrayType
|
|
138
|
+
/* | 3927 | _int8range | */
|
|
139
|
+
};
|
|
140
|
+
var trueLiteralTypeNode = ts.factory.createLiteralTypeNode(
|
|
141
|
+
ts.factory.createToken(ts.SyntaxKind.TrueKeyword)
|
|
142
|
+
);
|
|
143
|
+
var isNullableSignature = ts.factory.createPropertySignature(
|
|
144
|
+
void 0,
|
|
145
|
+
// no modifiers
|
|
146
|
+
"isNullable",
|
|
147
|
+
void 0,
|
|
148
|
+
// no question mark
|
|
149
|
+
trueLiteralTypeNode
|
|
150
|
+
);
|
|
151
|
+
var hasDefaultSignature = ts.factory.createPropertySignature(
|
|
152
|
+
void 0,
|
|
153
|
+
// no modifiers
|
|
154
|
+
"hasDefault",
|
|
155
|
+
void 0,
|
|
156
|
+
// no question mark
|
|
157
|
+
trueLiteralTypeNode
|
|
158
|
+
);
|
|
159
|
+
function serializeSchema(schema, id = "Schema", overrides = {}) {
|
|
160
|
+
const tables = [];
|
|
161
|
+
for (const [tableName, table] of Object.entries(schema)) {
|
|
162
|
+
const columns = [];
|
|
163
|
+
for (const [columnName, column] of Object.entries(table)) {
|
|
164
|
+
let typeNode;
|
|
165
|
+
if (column.oid in overrides) {
|
|
166
|
+
typeNode = overrides[column.oid];
|
|
167
|
+
} else if (column.oid in oidTypes) {
|
|
168
|
+
typeNode = oidTypes[column.oid];
|
|
169
|
+
} else if (column.enumValues) {
|
|
170
|
+
typeNode = ts.factory.createUnionTypeNode(
|
|
171
|
+
column.enumValues.map((value) => ts.factory.createLiteralTypeNode(
|
|
172
|
+
ts.factory.createStringLiteral(value)
|
|
173
|
+
))
|
|
174
|
+
);
|
|
175
|
+
} else {
|
|
176
|
+
typeNode = types.stringType;
|
|
177
|
+
}
|
|
178
|
+
const typeSignature = ts.factory.createPropertySignature(
|
|
179
|
+
void 0,
|
|
180
|
+
// no modifiers
|
|
181
|
+
"type",
|
|
182
|
+
void 0,
|
|
183
|
+
// no question mark
|
|
184
|
+
typeNode
|
|
185
|
+
);
|
|
186
|
+
const definition = [typeSignature];
|
|
187
|
+
if (column.hasDefault)
|
|
188
|
+
definition.push(hasDefaultSignature);
|
|
189
|
+
if (column.isNullable)
|
|
190
|
+
definition.push(isNullableSignature);
|
|
191
|
+
const columnSignature = ts.factory.createPropertySignature(
|
|
192
|
+
void 0,
|
|
193
|
+
// no modifiers
|
|
194
|
+
ts.factory.createStringLiteral(columnName),
|
|
195
|
+
void 0,
|
|
196
|
+
// no question mark
|
|
197
|
+
ts.factory.createTypeLiteralNode(definition)
|
|
198
|
+
);
|
|
199
|
+
if (column.description) {
|
|
200
|
+
ts.addSyntheticLeadingComment(
|
|
201
|
+
columnSignature,
|
|
202
|
+
ts.SyntaxKind.MultiLineCommentTrivia,
|
|
203
|
+
`* ${column.description} `,
|
|
204
|
+
true
|
|
205
|
+
// trailing newline!
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
columns.push(columnSignature);
|
|
209
|
+
}
|
|
210
|
+
const tableSignature = ts.factory.createPropertySignature(
|
|
211
|
+
void 0,
|
|
212
|
+
// modifiers
|
|
213
|
+
ts.factory.createStringLiteral(tableName),
|
|
214
|
+
void 0,
|
|
215
|
+
// question mark
|
|
216
|
+
ts.factory.createTypeLiteralNode(columns)
|
|
217
|
+
// as any,
|
|
218
|
+
);
|
|
219
|
+
tables.push(tableSignature);
|
|
220
|
+
}
|
|
221
|
+
const declaration = ts.factory.createInterfaceDeclaration(
|
|
222
|
+
[exportModifier],
|
|
223
|
+
// export modifier
|
|
224
|
+
id,
|
|
225
|
+
// the name of the schema, "Schema" or whatever we were given
|
|
226
|
+
void 0,
|
|
227
|
+
// no type parameters
|
|
228
|
+
void 0,
|
|
229
|
+
// no heritage clause
|
|
230
|
+
tables
|
|
231
|
+
// all our tables signatures
|
|
232
|
+
);
|
|
233
|
+
const source = ts.factory.createSourceFile(
|
|
234
|
+
[declaration],
|
|
235
|
+
endOfFileToken,
|
|
236
|
+
ts.NodeFlags.None
|
|
237
|
+
);
|
|
238
|
+
const content = ts.createPrinter().printFile(source);
|
|
239
|
+
return content;
|
|
240
|
+
}
|
|
241
|
+
export {
|
|
242
|
+
serializeSchema
|
|
243
|
+
};
|
|
244
|
+
//# sourceMappingURL=serialize.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/serialize.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/dist/types.cjs
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// types.ts
|
|
31
|
+
var types_exports = {};
|
|
32
|
+
__export(types_exports, {
|
|
33
|
+
anyArrayType: () => anyArrayType,
|
|
34
|
+
anyType: () => anyType,
|
|
35
|
+
bigintArrayType: () => bigintArrayType,
|
|
36
|
+
bigintRangeArrayType: () => bigintRangeArrayType,
|
|
37
|
+
bigintRangeType: () => bigintRangeType,
|
|
38
|
+
bigintType: () => bigintType,
|
|
39
|
+
booleanArrayType: () => booleanArrayType,
|
|
40
|
+
booleanType: () => booleanType,
|
|
41
|
+
dateArrayType: () => dateArrayType,
|
|
42
|
+
dateRangeArrayType: () => dateRangeArrayType,
|
|
43
|
+
dateRangeType: () => dateRangeType,
|
|
44
|
+
dateType: () => dateType,
|
|
45
|
+
nullType: () => nullType,
|
|
46
|
+
numberArrayType: () => numberArrayType,
|
|
47
|
+
numberRangeArrayType: () => numberRangeArrayType,
|
|
48
|
+
numberRangeType: () => numberRangeType,
|
|
49
|
+
numberType: () => numberType,
|
|
50
|
+
pgCircleArrayType: () => pgCircleArrayType,
|
|
51
|
+
pgCircleType: () => pgCircleType,
|
|
52
|
+
pgIntervalArrayType: () => pgIntervalArrayType,
|
|
53
|
+
pgIntervalType: () => pgIntervalType,
|
|
54
|
+
pgPointArrayType: () => pgPointArrayType,
|
|
55
|
+
pgPointType: () => pgPointType,
|
|
56
|
+
stringArrayType: () => stringArrayType,
|
|
57
|
+
stringRangeArrayType: () => stringRangeArrayType,
|
|
58
|
+
stringRangeType: () => stringRangeType,
|
|
59
|
+
stringType: () => stringType,
|
|
60
|
+
uint8ArrayArrayType: () => uint8ArrayArrayType,
|
|
61
|
+
uint8ArrayType: () => uint8ArrayType,
|
|
62
|
+
voidType: () => voidType
|
|
63
|
+
});
|
|
64
|
+
module.exports = __toCommonJS(types_exports);
|
|
65
|
+
var import_typescript = __toESM(require("typescript"));
|
|
66
|
+
var import_helpers = require("./helpers.cjs");
|
|
67
|
+
var nullType = import_typescript.default.factory.createLiteralTypeNode(import_typescript.default.factory.createNull());
|
|
68
|
+
var voidType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.VoidKeyword);
|
|
69
|
+
var anyType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.AnyKeyword);
|
|
70
|
+
var bigintType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.BigIntKeyword);
|
|
71
|
+
var booleanType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.BooleanKeyword);
|
|
72
|
+
var numberType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.NumberKeyword);
|
|
73
|
+
var stringType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.StringKeyword);
|
|
74
|
+
var dateType = import_typescript.default.factory.createTypeReferenceNode("Date");
|
|
75
|
+
var uint8ArrayType = import_typescript.default.factory.createTypeReferenceNode("Uint8Array");
|
|
76
|
+
var anyArrayType = (0, import_helpers.makePostgresArrayType)(anyType);
|
|
77
|
+
var bigintArrayType = (0, import_helpers.makePostgresArrayType)(bigintType);
|
|
78
|
+
var booleanArrayType = (0, import_helpers.makePostgresArrayType)(booleanType);
|
|
79
|
+
var numberArrayType = (0, import_helpers.makePostgresArrayType)(numberType);
|
|
80
|
+
var stringArrayType = (0, import_helpers.makePostgresArrayType)(stringType);
|
|
81
|
+
var dateArrayType = (0, import_helpers.makePostgresArrayType)(dateType);
|
|
82
|
+
var uint8ArrayArrayType = (0, import_helpers.makePostgresArrayType)(uint8ArrayType);
|
|
83
|
+
var pgCircleType = (0, import_helpers.makeImportType)("@juit/pgproxy-types", "PGCircle");
|
|
84
|
+
var pgIntervalType = (0, import_helpers.makeImportType)("@juit/pgproxy-types", "PGInterval");
|
|
85
|
+
var pgPointType = (0, import_helpers.makeImportType)("@juit/pgproxy-types", "PGPoint");
|
|
86
|
+
var pgCircleArrayType = (0, import_helpers.makePostgresArrayType)(pgCircleType);
|
|
87
|
+
var pgIntervalArrayType = (0, import_helpers.makePostgresArrayType)(pgIntervalType);
|
|
88
|
+
var pgPointArrayType = (0, import_helpers.makePostgresArrayType)(pgPointType);
|
|
89
|
+
var bigintRangeType = (0, import_helpers.makeImportType)("@juit/pgproxy-types", "PGRange", bigintType);
|
|
90
|
+
var numberRangeType = (0, import_helpers.makeImportType)("@juit/pgproxy-types", "PGRange", numberType);
|
|
91
|
+
var stringRangeType = (0, import_helpers.makeImportType)("@juit/pgproxy-types", "PGRange", stringType);
|
|
92
|
+
var dateRangeType = (0, import_helpers.makeImportType)("@juit/pgproxy-types", "PGRange", dateType);
|
|
93
|
+
var bigintRangeArrayType = (0, import_helpers.makePostgresArrayType)(bigintRangeType);
|
|
94
|
+
var numberRangeArrayType = (0, import_helpers.makePostgresArrayType)(numberRangeType);
|
|
95
|
+
var stringRangeArrayType = (0, import_helpers.makePostgresArrayType)(stringRangeType);
|
|
96
|
+
var dateRangeArrayType = (0, import_helpers.makePostgresArrayType)(dateRangeType);
|
|
97
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
98
|
+
0 && (module.exports = {
|
|
99
|
+
anyArrayType,
|
|
100
|
+
anyType,
|
|
101
|
+
bigintArrayType,
|
|
102
|
+
bigintRangeArrayType,
|
|
103
|
+
bigintRangeType,
|
|
104
|
+
bigintType,
|
|
105
|
+
booleanArrayType,
|
|
106
|
+
booleanType,
|
|
107
|
+
dateArrayType,
|
|
108
|
+
dateRangeArrayType,
|
|
109
|
+
dateRangeType,
|
|
110
|
+
dateType,
|
|
111
|
+
nullType,
|
|
112
|
+
numberArrayType,
|
|
113
|
+
numberRangeArrayType,
|
|
114
|
+
numberRangeType,
|
|
115
|
+
numberType,
|
|
116
|
+
pgCircleArrayType,
|
|
117
|
+
pgCircleType,
|
|
118
|
+
pgIntervalArrayType,
|
|
119
|
+
pgIntervalType,
|
|
120
|
+
pgPointArrayType,
|
|
121
|
+
pgPointType,
|
|
122
|
+
stringArrayType,
|
|
123
|
+
stringRangeArrayType,
|
|
124
|
+
stringRangeType,
|
|
125
|
+
stringType,
|
|
126
|
+
uint8ArrayArrayType,
|
|
127
|
+
uint8ArrayType,
|
|
128
|
+
voidType
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=types.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/types.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAe;AAEf,qBAAsD;AAG/C,IAAM,WAAW,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,QAAQ,WAAW,CAAC;AACzE,IAAM,WAAW,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,WAAW;AAG3E,IAAM,UAAU,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,UAAU;AACzE,IAAM,aAAa,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,aAAa;AAC/E,IAAM,cAAc,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,cAAc;AACjF,IAAM,aAAa,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,aAAa;AAC/E,IAAM,aAAa,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,aAAa;AAG/E,IAAM,WAAW,kBAAAA,QAAG,QAAQ,wBAAwB,MAAM;AAC1D,IAAM,iBAAiB,kBAAAA,QAAG,QAAQ,wBAAwB,YAAY;AAGtE,IAAM,mBAAe,sCAAsB,OAAO;AAClD,IAAM,sBAAkB,sCAAsB,UAAU;AACxD,IAAM,uBAAmB,sCAAsB,WAAW;AAC1D,IAAM,sBAAkB,sCAAsB,UAAU;AACxD,IAAM,sBAAkB,sCAAsB,UAAU;AAGxD,IAAM,oBAAgB,sCAAsB,QAAQ;AACpD,IAAM,0BAAsB,sCAAsB,cAAc;AAGhE,IAAM,mBAA4B,+BAAe,uBAAuB,UAAU;AAClF,IAAM,qBAA8B,+BAAe,uBAAuB,YAAY;AACtF,IAAM,kBAA2B,+BAAe,uBAAuB,SAAS;AAGhF,IAAM,wBAAoB,sCAAsB,YAAY;AAC5D,IAAM,0BAAsB,sCAAsB,cAAc;AAChE,IAAM,uBAAmB,sCAAsB,WAAW;AAG1D,IAAM,sBAAkB,+BAAe,uBAAuB,WAAW,UAAU;AACnF,IAAM,sBAAkB,+BAAe,uBAAuB,WAAW,UAAU;AACnF,IAAM,sBAAkB,+BAAe,uBAAuB,WAAW,UAAU;AACnF,IAAM,oBAAgB,+BAAe,uBAAuB,WAAW,QAAQ;AAG/E,IAAM,2BAAuB,sCAAsB,eAAe;AAClE,IAAM,2BAAuB,sCAAsB,eAAe;AAClE,IAAM,2BAAuB,sCAAsB,eAAe;AAClE,IAAM,yBAAqB,sCAAsB,aAAa;",
|
|
5
|
+
"names": ["ts"]
|
|
6
|
+
}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
export declare const nullType: ts.LiteralTypeNode;
|
|
3
|
+
export declare const voidType: ts.KeywordTypeNode<ts.SyntaxKind.VoidKeyword>;
|
|
4
|
+
export declare const anyType: ts.KeywordTypeNode<ts.SyntaxKind.AnyKeyword>;
|
|
5
|
+
export declare const bigintType: ts.KeywordTypeNode<ts.SyntaxKind.BigIntKeyword>;
|
|
6
|
+
export declare const booleanType: ts.KeywordTypeNode<ts.SyntaxKind.BooleanKeyword>;
|
|
7
|
+
export declare const numberType: ts.KeywordTypeNode<ts.SyntaxKind.NumberKeyword>;
|
|
8
|
+
export declare const stringType: ts.KeywordTypeNode<ts.SyntaxKind.StringKeyword>;
|
|
9
|
+
export declare const dateType: ts.TypeReferenceNode;
|
|
10
|
+
export declare const uint8ArrayType: ts.TypeReferenceNode;
|
|
11
|
+
export declare const anyArrayType: ts.ArrayTypeNode;
|
|
12
|
+
export declare const bigintArrayType: ts.ArrayTypeNode;
|
|
13
|
+
export declare const booleanArrayType: ts.ArrayTypeNode;
|
|
14
|
+
export declare const numberArrayType: ts.ArrayTypeNode;
|
|
15
|
+
export declare const stringArrayType: ts.ArrayTypeNode;
|
|
16
|
+
export declare const dateArrayType: ts.ArrayTypeNode;
|
|
17
|
+
export declare const uint8ArrayArrayType: ts.ArrayTypeNode;
|
|
18
|
+
export declare const pgCircleType: ts.TypeNode;
|
|
19
|
+
export declare const pgIntervalType: ts.TypeNode;
|
|
20
|
+
export declare const pgPointType: ts.TypeNode;
|
|
21
|
+
export declare const pgCircleArrayType: ts.ArrayTypeNode;
|
|
22
|
+
export declare const pgIntervalArrayType: ts.ArrayTypeNode;
|
|
23
|
+
export declare const pgPointArrayType: ts.ArrayTypeNode;
|
|
24
|
+
export declare const bigintRangeType: ts.ImportTypeNode;
|
|
25
|
+
export declare const numberRangeType: ts.ImportTypeNode;
|
|
26
|
+
export declare const stringRangeType: ts.ImportTypeNode;
|
|
27
|
+
export declare const dateRangeType: ts.ImportTypeNode;
|
|
28
|
+
export declare const bigintRangeArrayType: ts.ArrayTypeNode;
|
|
29
|
+
export declare const numberRangeArrayType: ts.ArrayTypeNode;
|
|
30
|
+
export declare const stringRangeArrayType: ts.ArrayTypeNode;
|
|
31
|
+
export declare const dateRangeArrayType: ts.ArrayTypeNode;
|
package/dist/types.mjs
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// types.ts
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
import { makeImportType, makePostgresArrayType } from "./helpers.mjs";
|
|
4
|
+
var nullType = ts.factory.createLiteralTypeNode(ts.factory.createNull());
|
|
5
|
+
var voidType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.VoidKeyword);
|
|
6
|
+
var anyType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword);
|
|
7
|
+
var bigintType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.BigIntKeyword);
|
|
8
|
+
var booleanType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword);
|
|
9
|
+
var numberType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
|
|
10
|
+
var stringType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
|
|
11
|
+
var dateType = ts.factory.createTypeReferenceNode("Date");
|
|
12
|
+
var uint8ArrayType = ts.factory.createTypeReferenceNode("Uint8Array");
|
|
13
|
+
var anyArrayType = makePostgresArrayType(anyType);
|
|
14
|
+
var bigintArrayType = makePostgresArrayType(bigintType);
|
|
15
|
+
var booleanArrayType = makePostgresArrayType(booleanType);
|
|
16
|
+
var numberArrayType = makePostgresArrayType(numberType);
|
|
17
|
+
var stringArrayType = makePostgresArrayType(stringType);
|
|
18
|
+
var dateArrayType = makePostgresArrayType(dateType);
|
|
19
|
+
var uint8ArrayArrayType = makePostgresArrayType(uint8ArrayType);
|
|
20
|
+
var pgCircleType = makeImportType("@juit/pgproxy-types", "PGCircle");
|
|
21
|
+
var pgIntervalType = makeImportType("@juit/pgproxy-types", "PGInterval");
|
|
22
|
+
var pgPointType = makeImportType("@juit/pgproxy-types", "PGPoint");
|
|
23
|
+
var pgCircleArrayType = makePostgresArrayType(pgCircleType);
|
|
24
|
+
var pgIntervalArrayType = makePostgresArrayType(pgIntervalType);
|
|
25
|
+
var pgPointArrayType = makePostgresArrayType(pgPointType);
|
|
26
|
+
var bigintRangeType = makeImportType("@juit/pgproxy-types", "PGRange", bigintType);
|
|
27
|
+
var numberRangeType = makeImportType("@juit/pgproxy-types", "PGRange", numberType);
|
|
28
|
+
var stringRangeType = makeImportType("@juit/pgproxy-types", "PGRange", stringType);
|
|
29
|
+
var dateRangeType = makeImportType("@juit/pgproxy-types", "PGRange", dateType);
|
|
30
|
+
var bigintRangeArrayType = makePostgresArrayType(bigintRangeType);
|
|
31
|
+
var numberRangeArrayType = makePostgresArrayType(numberRangeType);
|
|
32
|
+
var stringRangeArrayType = makePostgresArrayType(stringRangeType);
|
|
33
|
+
var dateRangeArrayType = makePostgresArrayType(dateRangeType);
|
|
34
|
+
export {
|
|
35
|
+
anyArrayType,
|
|
36
|
+
anyType,
|
|
37
|
+
bigintArrayType,
|
|
38
|
+
bigintRangeArrayType,
|
|
39
|
+
bigintRangeType,
|
|
40
|
+
bigintType,
|
|
41
|
+
booleanArrayType,
|
|
42
|
+
booleanType,
|
|
43
|
+
dateArrayType,
|
|
44
|
+
dateRangeArrayType,
|
|
45
|
+
dateRangeType,
|
|
46
|
+
dateType,
|
|
47
|
+
nullType,
|
|
48
|
+
numberArrayType,
|
|
49
|
+
numberRangeArrayType,
|
|
50
|
+
numberRangeType,
|
|
51
|
+
numberType,
|
|
52
|
+
pgCircleArrayType,
|
|
53
|
+
pgCircleType,
|
|
54
|
+
pgIntervalArrayType,
|
|
55
|
+
pgIntervalType,
|
|
56
|
+
pgPointArrayType,
|
|
57
|
+
pgPointType,
|
|
58
|
+
stringArrayType,
|
|
59
|
+
stringRangeArrayType,
|
|
60
|
+
stringRangeType,
|
|
61
|
+
stringType,
|
|
62
|
+
uint8ArrayArrayType,
|
|
63
|
+
uint8ArrayType,
|
|
64
|
+
voidType
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=types.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/types.ts"],
|
|
4
|
+
"mappings": ";AAAA,OAAO,QAAQ;AAEf,SAAS,gBAAgB,6BAA6B;AAG/C,IAAM,WAAW,GAAG,QAAQ,sBAAsB,GAAG,QAAQ,WAAW,CAAC;AACzE,IAAM,WAAW,GAAG,QAAQ,sBAAsB,GAAG,WAAW,WAAW;AAG3E,IAAM,UAAU,GAAG,QAAQ,sBAAsB,GAAG,WAAW,UAAU;AACzE,IAAM,aAAa,GAAG,QAAQ,sBAAsB,GAAG,WAAW,aAAa;AAC/E,IAAM,cAAc,GAAG,QAAQ,sBAAsB,GAAG,WAAW,cAAc;AACjF,IAAM,aAAa,GAAG,QAAQ,sBAAsB,GAAG,WAAW,aAAa;AAC/E,IAAM,aAAa,GAAG,QAAQ,sBAAsB,GAAG,WAAW,aAAa;AAG/E,IAAM,WAAW,GAAG,QAAQ,wBAAwB,MAAM;AAC1D,IAAM,iBAAiB,GAAG,QAAQ,wBAAwB,YAAY;AAGtE,IAAM,eAAe,sBAAsB,OAAO;AAClD,IAAM,kBAAkB,sBAAsB,UAAU;AACxD,IAAM,mBAAmB,sBAAsB,WAAW;AAC1D,IAAM,kBAAkB,sBAAsB,UAAU;AACxD,IAAM,kBAAkB,sBAAsB,UAAU;AAGxD,IAAM,gBAAgB,sBAAsB,QAAQ;AACpD,IAAM,sBAAsB,sBAAsB,cAAc;AAGhE,IAAM,eAA4B,eAAe,uBAAuB,UAAU;AAClF,IAAM,iBAA8B,eAAe,uBAAuB,YAAY;AACtF,IAAM,cAA2B,eAAe,uBAAuB,SAAS;AAGhF,IAAM,oBAAoB,sBAAsB,YAAY;AAC5D,IAAM,sBAAsB,sBAAsB,cAAc;AAChE,IAAM,mBAAmB,sBAAsB,WAAW;AAG1D,IAAM,kBAAkB,eAAe,uBAAuB,WAAW,UAAU;AACnF,IAAM,kBAAkB,eAAe,uBAAuB,WAAW,UAAU;AACnF,IAAM,kBAAkB,eAAe,uBAAuB,WAAW,UAAU;AACnF,IAAM,gBAAgB,eAAe,uBAAuB,WAAW,QAAQ;AAG/E,IAAM,uBAAuB,sBAAsB,eAAe;AAClE,IAAM,uBAAuB,sBAAsB,eAAe;AAClE,IAAM,uBAAuB,sBAAsB,eAAe;AAClE,IAAM,qBAAqB,sBAAsB,aAAa;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@juit/pgproxy-utils",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"main": "./dist/index.cjs",
|
|
5
|
+
"module": "./dist/index.mjs",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"require": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.cjs"
|
|
12
|
+
},
|
|
13
|
+
"import": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"default": "./dist/index.mjs"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"author": "Juit Developers <developers@juit.com>",
|
|
20
|
+
"license": "Apache-2.0",
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+ssh://git@github.com/juitnow/juit-pgproxy.git"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"database",
|
|
27
|
+
"pg",
|
|
28
|
+
"pool",
|
|
29
|
+
"postgres",
|
|
30
|
+
"proxy"
|
|
31
|
+
],
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": "https://github.com/juitnow/juit-pgproxy/issues"
|
|
34
|
+
},
|
|
35
|
+
"homepage": "https://github.com/juitnow/juit-pgproxy#readme",
|
|
36
|
+
"directories": {
|
|
37
|
+
"test": "test"
|
|
38
|
+
},
|
|
39
|
+
"files": [
|
|
40
|
+
"*.md",
|
|
41
|
+
"dist/",
|
|
42
|
+
"src/"
|
|
43
|
+
],
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@juit/pgproxy-client": "1.0.0",
|
|
46
|
+
"@juit/pgproxy-persister": "1.0.0",
|
|
47
|
+
"@juit/pgproxy-types": "1.0.0",
|
|
48
|
+
"@plugjs/plug": "^0.5.18"
|
|
49
|
+
}
|
|
50
|
+
}
|
package/src/database.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Persister, escape } from '@juit/pgproxy-persister'
|
|
2
|
+
import { $ylw, log } from '@plugjs/plug'
|
|
3
|
+
|
|
4
|
+
const NAME_EXPR = /^[-\w]{4,}$/
|
|
5
|
+
|
|
6
|
+
/** Create a test database name from a prefix and some randomness */
|
|
7
|
+
export function testdb(prefix = 'test'): string {
|
|
8
|
+
if (! NAME_EXPR.test(prefix)) throw new Error(`Invalid database name prefix "${prefix}"`)
|
|
9
|
+
const random = String(Math.floor(Math.random() * 10000)).padStart(4, '0')
|
|
10
|
+
return `${prefix}-${new Date().toISOString().replace(/[^\d]/g, '')}-${random}`
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Create a database with the specified name (or a test database).
|
|
15
|
+
*
|
|
16
|
+
* The default database name to use is the result of calling {@link testdb()}.
|
|
17
|
+
*
|
|
18
|
+
* The default URL to use when creating the database is `psql:///postgres`.
|
|
19
|
+
*/
|
|
20
|
+
export async function createdb(
|
|
21
|
+
name = testdb(),
|
|
22
|
+
url: string | URL = 'psql:///postgres',
|
|
23
|
+
): Promise<string> {
|
|
24
|
+
if (! NAME_EXPR.test(name)) throw new Error(`Invalid database name "${name}"`)
|
|
25
|
+
log.notice(`Creating database ${$ylw(name)}`)
|
|
26
|
+
|
|
27
|
+
const persister = new Persister(url)
|
|
28
|
+
await persister.query(`CREATE DATABASE ${escape(name)}`)
|
|
29
|
+
await persister.destroy()
|
|
30
|
+
return name
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Drop the database with the specified name.
|
|
35
|
+
*
|
|
36
|
+
* The default URL to use when creating the database is `psql:///postgres`.
|
|
37
|
+
*/
|
|
38
|
+
export async function dropdb(
|
|
39
|
+
name: string,
|
|
40
|
+
url: string | URL = 'psql:///postgres',
|
|
41
|
+
): Promise<void> {
|
|
42
|
+
if (! NAME_EXPR.test(name)) throw new Error(`Invalid database name "${name}"`)
|
|
43
|
+
log.notice(`Dropping database ${$ylw(name)}`)
|
|
44
|
+
|
|
45
|
+
const persister = new Persister(url)
|
|
46
|
+
await persister.query(`DROP DATABASE IF EXISTS ${escape(name)}`)
|
|
47
|
+
await persister.destroy()
|
|
48
|
+
}
|