@take-out/postgres 0.0.28
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/LICENSE +21 -0
- package/README.md +242 -0
- package/cli.cjs +3 -0
- package/dist/cjs/build.cjs +26 -0
- package/dist/cjs/build.js +21 -0
- package/dist/cjs/build.js.map +6 -0
- package/dist/cjs/build.native.js +29 -0
- package/dist/cjs/build.native.js.map +1 -0
- package/dist/cjs/cli.cjs +156 -0
- package/dist/cjs/cli.js +128 -0
- package/dist/cjs/cli.js.map +6 -0
- package/dist/cjs/cli.native.js +164 -0
- package/dist/cjs/cli.native.js.map +1 -0
- package/dist/cjs/createServerHelpers.cjs +37 -0
- package/dist/cjs/createServerHelpers.js +28 -0
- package/dist/cjs/createServerHelpers.js.map +6 -0
- package/dist/cjs/createServerHelpers.native.js +43 -0
- package/dist/cjs/createServerHelpers.native.js.map +1 -0
- package/dist/cjs/helpers/chunkedQuery.cjs +60 -0
- package/dist/cjs/helpers/chunkedQuery.js +51 -0
- package/dist/cjs/helpers/chunkedQuery.js.map +6 -0
- package/dist/cjs/helpers/chunkedQuery.native.js +73 -0
- package/dist/cjs/helpers/chunkedQuery.native.js.map +1 -0
- package/dist/cjs/helpers/getDBClient.cjs +172 -0
- package/dist/cjs/helpers/getDBClient.js +179 -0
- package/dist/cjs/helpers/getDBClient.js.map +6 -0
- package/dist/cjs/helpers/getDBClient.native.js +189 -0
- package/dist/cjs/helpers/getDBClient.native.js.map +1 -0
- package/dist/cjs/index.cjs +59 -0
- package/dist/cjs/index.js +45 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/index.native.js +64 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/migrate.cjs +117 -0
- package/dist/cjs/migrate.js +106 -0
- package/dist/cjs/migrate.js.map +6 -0
- package/dist/cjs/migrate.native.js +185 -0
- package/dist/cjs/migrate.native.js.map +1 -0
- package/dist/cjs/scripts/build-migrations.cjs +81 -0
- package/dist/cjs/scripts/build-migrations.js +69 -0
- package/dist/cjs/scripts/build-migrations.js.map +6 -0
- package/dist/cjs/scripts/build-migrations.native.js +86 -0
- package/dist/cjs/scripts/build-migrations.native.js.map +1 -0
- package/dist/cjs/scripts/drizzle-migrations-sync.cjs +111 -0
- package/dist/cjs/scripts/drizzle-migrations-sync.js +101 -0
- package/dist/cjs/scripts/drizzle-migrations-sync.js.map +6 -0
- package/dist/cjs/scripts/drizzle-migrations-sync.native.js +209 -0
- package/dist/cjs/scripts/drizzle-migrations-sync.native.js.map +1 -0
- package/dist/cjs/scripts/migration-add.cjs +53 -0
- package/dist/cjs/scripts/migration-add.js +40 -0
- package/dist/cjs/scripts/migration-add.js.map +6 -0
- package/dist/cjs/scripts/migration-add.native.js +72 -0
- package/dist/cjs/scripts/migration-add.native.js.map +1 -0
- package/dist/cjs/scripts/pg_dump.cjs +49 -0
- package/dist/cjs/scripts/pg_dump.js +36 -0
- package/dist/cjs/scripts/pg_dump.js.map +6 -0
- package/dist/cjs/scripts/pg_dump.native.js +55 -0
- package/dist/cjs/scripts/pg_dump.native.js.map +1 -0
- package/dist/cjs/scripts/psql.cjs +50 -0
- package/dist/cjs/scripts/psql.js +37 -0
- package/dist/cjs/scripts/psql.js.map +6 -0
- package/dist/cjs/scripts/psql.native.js +56 -0
- package/dist/cjs/scripts/psql.native.js.map +1 -0
- package/dist/cjs/sql.cjs +40 -0
- package/dist/cjs/sql.js +35 -0
- package/dist/cjs/sql.js.map +6 -0
- package/dist/cjs/sql.native.js +49 -0
- package/dist/cjs/sql.native.js.map +1 -0
- package/dist/esm/build.js +5 -0
- package/dist/esm/build.js.map +6 -0
- package/dist/esm/build.mjs +3 -0
- package/dist/esm/build.mjs.map +1 -0
- package/dist/esm/build.native.js +3 -0
- package/dist/esm/build.native.js.map +1 -0
- package/dist/esm/cli.js +134 -0
- package/dist/esm/cli.js.map +6 -0
- package/dist/esm/cli.mjs +157 -0
- package/dist/esm/cli.mjs.map +1 -0
- package/dist/esm/cli.native.js +162 -0
- package/dist/esm/cli.native.js.map +1 -0
- package/dist/esm/createServerHelpers.js +13 -0
- package/dist/esm/createServerHelpers.js.map +6 -0
- package/dist/esm/createServerHelpers.mjs +14 -0
- package/dist/esm/createServerHelpers.mjs.map +1 -0
- package/dist/esm/createServerHelpers.native.js +17 -0
- package/dist/esm/createServerHelpers.native.js.map +1 -0
- package/dist/esm/helpers/chunkedQuery.js +35 -0
- package/dist/esm/helpers/chunkedQuery.js.map +6 -0
- package/dist/esm/helpers/chunkedQuery.mjs +36 -0
- package/dist/esm/helpers/chunkedQuery.mjs.map +1 -0
- package/dist/esm/helpers/chunkedQuery.native.js +46 -0
- package/dist/esm/helpers/chunkedQuery.native.js.map +1 -0
- package/dist/esm/helpers/getDBClient.js +155 -0
- package/dist/esm/helpers/getDBClient.js.map +6 -0
- package/dist/esm/helpers/getDBClient.mjs +136 -0
- package/dist/esm/helpers/getDBClient.mjs.map +1 -0
- package/dist/esm/helpers/getDBClient.native.js +150 -0
- package/dist/esm/helpers/getDBClient.native.js.map +1 -0
- package/dist/esm/index.js +29 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/index.mjs +18 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +20 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/migrate.js +91 -0
- package/dist/esm/migrate.js.map +6 -0
- package/dist/esm/migrate.mjs +94 -0
- package/dist/esm/migrate.mjs.map +1 -0
- package/dist/esm/migrate.native.js +159 -0
- package/dist/esm/migrate.native.js.map +1 -0
- package/dist/esm/scripts/build-migrations.js +46 -0
- package/dist/esm/scripts/build-migrations.js.map +6 -0
- package/dist/esm/scripts/build-migrations.mjs +47 -0
- package/dist/esm/scripts/build-migrations.mjs.map +1 -0
- package/dist/esm/scripts/build-migrations.native.js +49 -0
- package/dist/esm/scripts/build-migrations.native.js.map +1 -0
- package/dist/esm/scripts/drizzle-migrations-sync.js +87 -0
- package/dist/esm/scripts/drizzle-migrations-sync.js.map +6 -0
- package/dist/esm/scripts/drizzle-migrations-sync.mjs +88 -0
- package/dist/esm/scripts/drizzle-migrations-sync.mjs.map +1 -0
- package/dist/esm/scripts/drizzle-migrations-sync.native.js +183 -0
- package/dist/esm/scripts/drizzle-migrations-sync.native.js.map +1 -0
- package/dist/esm/scripts/migration-add.js +25 -0
- package/dist/esm/scripts/migration-add.js.map +6 -0
- package/dist/esm/scripts/migration-add.mjs +30 -0
- package/dist/esm/scripts/migration-add.mjs.map +1 -0
- package/dist/esm/scripts/migration-add.native.js +46 -0
- package/dist/esm/scripts/migration-add.native.js.map +1 -0
- package/dist/esm/scripts/pg_dump.js +20 -0
- package/dist/esm/scripts/pg_dump.js.map +6 -0
- package/dist/esm/scripts/pg_dump.mjs +26 -0
- package/dist/esm/scripts/pg_dump.mjs.map +1 -0
- package/dist/esm/scripts/pg_dump.native.js +29 -0
- package/dist/esm/scripts/pg_dump.native.js.map +1 -0
- package/dist/esm/scripts/psql.js +21 -0
- package/dist/esm/scripts/psql.js.map +6 -0
- package/dist/esm/scripts/psql.mjs +27 -0
- package/dist/esm/scripts/psql.mjs.map +1 -0
- package/dist/esm/scripts/psql.native.js +30 -0
- package/dist/esm/scripts/psql.native.js.map +1 -0
- package/dist/esm/sql.js +19 -0
- package/dist/esm/sql.js.map +6 -0
- package/dist/esm/sql.mjs +15 -0
- package/dist/esm/sql.mjs.map +1 -0
- package/dist/esm/sql.native.js +21 -0
- package/dist/esm/sql.native.js.map +1 -0
- package/package.json +67 -0
- package/src/build.ts +2 -0
- package/src/cli.ts +153 -0
- package/src/createServerHelpers.ts +20 -0
- package/src/helpers/chunkedQuery.ts +91 -0
- package/src/helpers/getDBClient.ts +264 -0
- package/src/index.ts +36 -0
- package/src/migrate.ts +192 -0
- package/src/scripts/build-migrations.ts +66 -0
- package/src/scripts/drizzle-migrations-sync.ts +179 -0
- package/src/scripts/migration-add.ts +54 -0
- package/src/scripts/pg_dump.ts +46 -0
- package/src/scripts/psql.ts +51 -0
- package/src/sql.ts +36 -0
- package/types/build.d.ts +2 -0
- package/types/build.d.ts.map +1 -0
- package/types/cli.d.ts +3 -0
- package/types/cli.d.ts.map +1 -0
- package/types/createServerHelpers.d.ts +9 -0
- package/types/createServerHelpers.d.ts.map +1 -0
- package/types/helpers/chunkedQuery.d.ts +17 -0
- package/types/helpers/chunkedQuery.d.ts.map +1 -0
- package/types/helpers/getDBClient.d.ts +11 -0
- package/types/helpers/getDBClient.d.ts.map +1 -0
- package/types/index.d.ts +10 -0
- package/types/index.d.ts.map +1 -0
- package/types/migrate.d.ts +25 -0
- package/types/migrate.d.ts.map +1 -0
- package/types/scripts/build-migrations.d.ts +8 -0
- package/types/scripts/build-migrations.d.ts.map +1 -0
- package/types/scripts/drizzle-migrations-sync.d.ts +11 -0
- package/types/scripts/drizzle-migrations-sync.d.ts.map +1 -0
- package/types/scripts/migration-add.d.ts +6 -0
- package/types/scripts/migration-add.d.ts.map +1 -0
- package/types/scripts/pg_dump.d.ts +11 -0
- package/types/scripts/pg_dump.d.ts.map +1 -0
- package/types/scripts/psql.d.ts +11 -0
- package/types/scripts/psql.d.ts.map +1 -0
- package/types/sql.d.ts +9 -0
- package/types/sql.d.ts.map +1 -0
package/dist/esm/cli.mjs
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { defineCommand, runMain } from "citty";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { buildMigrations as buildMigrationsRun } from "./scripts/build-migrations.mjs";
|
|
5
|
+
import { syncDrizzleMigrations } from "./scripts/drizzle-migrations-sync.mjs";
|
|
6
|
+
import { addMigration } from "./scripts/migration-add.mjs";
|
|
7
|
+
import { runPgDump } from "./scripts/pg_dump.mjs";
|
|
8
|
+
import { runPsql } from "./scripts/psql.mjs";
|
|
9
|
+
const syncDrizzle = defineCommand({
|
|
10
|
+
meta: {
|
|
11
|
+
name: "sync-drizzle",
|
|
12
|
+
description: "Sync Drizzle SQL migrations to TypeScript wrappers"
|
|
13
|
+
},
|
|
14
|
+
args: {
|
|
15
|
+
dir: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "Migrations directory",
|
|
18
|
+
required: !1,
|
|
19
|
+
default: "./src/database/migrations"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
async run({
|
|
23
|
+
args
|
|
24
|
+
}) {
|
|
25
|
+
const migrationsDir = join(process.cwd(), args.dir);
|
|
26
|
+
console.info(`Syncing migrations in ${migrationsDir}`), await syncDrizzleMigrations({
|
|
27
|
+
migrationsDir
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}),
|
|
31
|
+
buildMigrations = defineCommand({
|
|
32
|
+
meta: {
|
|
33
|
+
name: "build-migrations",
|
|
34
|
+
description: "Build migration bundle for deployment"
|
|
35
|
+
},
|
|
36
|
+
args: {
|
|
37
|
+
dir: {
|
|
38
|
+
type: "string",
|
|
39
|
+
description: "Migrations directory",
|
|
40
|
+
required: !1,
|
|
41
|
+
default: "./src/database/migrations"
|
|
42
|
+
},
|
|
43
|
+
out: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "Output file name",
|
|
46
|
+
required: !1,
|
|
47
|
+
default: "migrate-dist.js"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
async run({
|
|
51
|
+
args
|
|
52
|
+
}) {
|
|
53
|
+
const migrationsDir = join(process.cwd(), args.dir);
|
|
54
|
+
await buildMigrationsRun({
|
|
55
|
+
migrationsDir,
|
|
56
|
+
outFile: args.out
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}),
|
|
60
|
+
migrationAdd = defineCommand({
|
|
61
|
+
meta: {
|
|
62
|
+
name: "migrate:add",
|
|
63
|
+
description: "Create a new custom TypeScript migration"
|
|
64
|
+
},
|
|
65
|
+
args: {
|
|
66
|
+
name: {
|
|
67
|
+
type: "positional",
|
|
68
|
+
description: "Migration name",
|
|
69
|
+
required: !1
|
|
70
|
+
},
|
|
71
|
+
dir: {
|
|
72
|
+
type: "string",
|
|
73
|
+
description: "Migrations directory",
|
|
74
|
+
required: !1,
|
|
75
|
+
default: "./src/database/migrations"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
async run({
|
|
79
|
+
args
|
|
80
|
+
}) {
|
|
81
|
+
const migrationsDir = join(process.cwd(), args.dir);
|
|
82
|
+
addMigration({
|
|
83
|
+
migrationsDir,
|
|
84
|
+
name: args.name
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}),
|
|
88
|
+
psql = defineCommand({
|
|
89
|
+
meta: {
|
|
90
|
+
name: "psql",
|
|
91
|
+
description: "Connect to PostgreSQL database with psql"
|
|
92
|
+
},
|
|
93
|
+
args: {
|
|
94
|
+
connectionString: {
|
|
95
|
+
type: "string",
|
|
96
|
+
description: "PostgreSQL connection string",
|
|
97
|
+
required: !1
|
|
98
|
+
},
|
|
99
|
+
query: {
|
|
100
|
+
type: "string",
|
|
101
|
+
description: "Query to execute",
|
|
102
|
+
required: !1
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
async run({
|
|
106
|
+
args
|
|
107
|
+
}) {
|
|
108
|
+
const connectionString = args.connectionString || process.env.ZERO_UPSTREAM_DB;
|
|
109
|
+
connectionString || (console.error("No connection string provided. Set ZERO_UPSTREAM_DB or pass --connectionString"), process.exit(1));
|
|
110
|
+
const exitCode = runPsql({
|
|
111
|
+
connectionString,
|
|
112
|
+
query: args.query
|
|
113
|
+
});
|
|
114
|
+
process.exit(exitCode || 0);
|
|
115
|
+
}
|
|
116
|
+
}),
|
|
117
|
+
pgDump = defineCommand({
|
|
118
|
+
meta: {
|
|
119
|
+
name: "pg_dump",
|
|
120
|
+
description: "Dump PostgreSQL database using pg_dump"
|
|
121
|
+
},
|
|
122
|
+
args: {
|
|
123
|
+
connectionString: {
|
|
124
|
+
type: "string",
|
|
125
|
+
description: "PostgreSQL connection string",
|
|
126
|
+
required: !1
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
async run({
|
|
130
|
+
args
|
|
131
|
+
}) {
|
|
132
|
+
const connectionString = args.connectionString || process.env.ZERO_UPSTREAM_DB;
|
|
133
|
+
connectionString || (console.error("No connection string provided. Set ZERO_UPSTREAM_DB or pass --connectionString"), process.exit(1));
|
|
134
|
+
const cliArgs = process.argv.slice(3),
|
|
135
|
+
exitCode = runPgDump({
|
|
136
|
+
connectionString,
|
|
137
|
+
args: cliArgs
|
|
138
|
+
});
|
|
139
|
+
process.exit(exitCode || 0);
|
|
140
|
+
}
|
|
141
|
+
}),
|
|
142
|
+
main = defineCommand({
|
|
143
|
+
meta: {
|
|
144
|
+
name: "postgres",
|
|
145
|
+
description: "PostgreSQL database utilities and migration tools",
|
|
146
|
+
version: "0.0.1"
|
|
147
|
+
},
|
|
148
|
+
subCommands: {
|
|
149
|
+
"sync-drizzle": syncDrizzle,
|
|
150
|
+
"build-migrations": buildMigrations,
|
|
151
|
+
"migrate:add": migrationAdd,
|
|
152
|
+
psql,
|
|
153
|
+
pg_dump: pgDump
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
runMain(main);
|
|
157
|
+
//# sourceMappingURL=cli.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["defineCommand","runMain","join","buildMigrations","buildMigrationsRun","syncDrizzleMigrations","addMigration","runPgDump","runPsql","syncDrizzle","meta","name","description","args","dir","type","required","default","run","migrationsDir","process","cwd","console","info","out","outFile","migrationAdd","psql","connectionString","query","env","ZERO_UPSTREAM_DB","error","exit","exitCode","pgDump","cliArgs","argv","slice","main","version","subCommands","pg_dump"],"sources":["../../src/cli.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { defineCommand, runMain } from "citty";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { buildMigrations as buildMigrationsRun } from "./scripts/build-migrations.native.js";
|
|
5
|
+
import { syncDrizzleMigrations } from "./scripts/drizzle-migrations-sync.native.js";
|
|
6
|
+
import { addMigration } from "./scripts/migration-add.native.js";
|
|
7
|
+
import { runPgDump } from "./scripts/pg_dump.native.js";
|
|
8
|
+
import { runPsql } from "./scripts/psql.native.js";
|
|
9
|
+
var syncDrizzle = defineCommand({
|
|
10
|
+
meta: {
|
|
11
|
+
name: "sync-drizzle",
|
|
12
|
+
description: "Sync Drizzle SQL migrations to TypeScript wrappers"
|
|
13
|
+
},
|
|
14
|
+
args: {
|
|
15
|
+
dir: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "Migrations directory",
|
|
18
|
+
required: !1,
|
|
19
|
+
default: "./src/database/migrations"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
async run(param) {
|
|
23
|
+
var {
|
|
24
|
+
args
|
|
25
|
+
} = param,
|
|
26
|
+
migrationsDir = join(process.cwd(), args.dir);
|
|
27
|
+
console.info(`Syncing migrations in ${migrationsDir}`), await syncDrizzleMigrations({
|
|
28
|
+
migrationsDir
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}),
|
|
32
|
+
buildMigrations = defineCommand({
|
|
33
|
+
meta: {
|
|
34
|
+
name: "build-migrations",
|
|
35
|
+
description: "Build migration bundle for deployment"
|
|
36
|
+
},
|
|
37
|
+
args: {
|
|
38
|
+
dir: {
|
|
39
|
+
type: "string",
|
|
40
|
+
description: "Migrations directory",
|
|
41
|
+
required: !1,
|
|
42
|
+
default: "./src/database/migrations"
|
|
43
|
+
},
|
|
44
|
+
out: {
|
|
45
|
+
type: "string",
|
|
46
|
+
description: "Output file name",
|
|
47
|
+
required: !1,
|
|
48
|
+
default: "migrate-dist.js"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
async run(param) {
|
|
52
|
+
var {
|
|
53
|
+
args
|
|
54
|
+
} = param,
|
|
55
|
+
migrationsDir = join(process.cwd(), args.dir);
|
|
56
|
+
await buildMigrationsRun({
|
|
57
|
+
migrationsDir,
|
|
58
|
+
outFile: args.out
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}),
|
|
62
|
+
migrationAdd = defineCommand({
|
|
63
|
+
meta: {
|
|
64
|
+
name: "migrate:add",
|
|
65
|
+
description: "Create a new custom TypeScript migration"
|
|
66
|
+
},
|
|
67
|
+
args: {
|
|
68
|
+
name: {
|
|
69
|
+
type: "positional",
|
|
70
|
+
description: "Migration name",
|
|
71
|
+
required: !1
|
|
72
|
+
},
|
|
73
|
+
dir: {
|
|
74
|
+
type: "string",
|
|
75
|
+
description: "Migrations directory",
|
|
76
|
+
required: !1,
|
|
77
|
+
default: "./src/database/migrations"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
async run(param) {
|
|
81
|
+
var {
|
|
82
|
+
args
|
|
83
|
+
} = param,
|
|
84
|
+
migrationsDir = join(process.cwd(), args.dir);
|
|
85
|
+
addMigration({
|
|
86
|
+
migrationsDir,
|
|
87
|
+
name: args.name
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}),
|
|
91
|
+
psql = defineCommand({
|
|
92
|
+
meta: {
|
|
93
|
+
name: "psql",
|
|
94
|
+
description: "Connect to PostgreSQL database with psql"
|
|
95
|
+
},
|
|
96
|
+
args: {
|
|
97
|
+
connectionString: {
|
|
98
|
+
type: "string",
|
|
99
|
+
description: "PostgreSQL connection string",
|
|
100
|
+
required: !1
|
|
101
|
+
},
|
|
102
|
+
query: {
|
|
103
|
+
type: "string",
|
|
104
|
+
description: "Query to execute",
|
|
105
|
+
required: !1
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
async run(param) {
|
|
109
|
+
var {
|
|
110
|
+
args
|
|
111
|
+
} = param,
|
|
112
|
+
connectionString = args.connectionString || process.env.ZERO_UPSTREAM_DB;
|
|
113
|
+
connectionString || (console.error("No connection string provided. Set ZERO_UPSTREAM_DB or pass --connectionString"), process.exit(1));
|
|
114
|
+
var exitCode = runPsql({
|
|
115
|
+
connectionString,
|
|
116
|
+
query: args.query
|
|
117
|
+
});
|
|
118
|
+
process.exit(exitCode || 0);
|
|
119
|
+
}
|
|
120
|
+
}),
|
|
121
|
+
pgDump = defineCommand({
|
|
122
|
+
meta: {
|
|
123
|
+
name: "pg_dump",
|
|
124
|
+
description: "Dump PostgreSQL database using pg_dump"
|
|
125
|
+
},
|
|
126
|
+
args: {
|
|
127
|
+
connectionString: {
|
|
128
|
+
type: "string",
|
|
129
|
+
description: "PostgreSQL connection string",
|
|
130
|
+
required: !1
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
async run(param) {
|
|
134
|
+
var {
|
|
135
|
+
args
|
|
136
|
+
} = param,
|
|
137
|
+
connectionString = args.connectionString || process.env.ZERO_UPSTREAM_DB;
|
|
138
|
+
connectionString || (console.error("No connection string provided. Set ZERO_UPSTREAM_DB or pass --connectionString"), process.exit(1));
|
|
139
|
+
var cliArgs = process.argv.slice(3),
|
|
140
|
+
exitCode = runPgDump({
|
|
141
|
+
connectionString,
|
|
142
|
+
args: cliArgs
|
|
143
|
+
});
|
|
144
|
+
process.exit(exitCode || 0);
|
|
145
|
+
}
|
|
146
|
+
}),
|
|
147
|
+
main = defineCommand({
|
|
148
|
+
meta: {
|
|
149
|
+
name: "postgres",
|
|
150
|
+
description: "PostgreSQL database utilities and migration tools",
|
|
151
|
+
version: "0.0.1"
|
|
152
|
+
},
|
|
153
|
+
subCommands: {
|
|
154
|
+
"sync-drizzle": syncDrizzle,
|
|
155
|
+
"build-migrations": buildMigrations,
|
|
156
|
+
"migrate:add": migrationAdd,
|
|
157
|
+
psql,
|
|
158
|
+
pg_dump: pgDump
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
runMain(main);
|
|
162
|
+
//# sourceMappingURL=cli.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["defineCommand","runMain","join","buildMigrations","buildMigrationsRun","syncDrizzleMigrations","addMigration","runPgDump","runPsql","syncDrizzle","meta","name","description","args","dir","type","required","default","run","param","migrationsDir","process","cwd","console","info","out","outFile","migrationAdd","psql","connectionString","query","env","ZERO_UPSTREAM_DB","error","exit","exitCode","pgDump","cliArgs","argv","slice","main","version","subCommands"],"sources":["../../src/cli.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createSql, setDefaultPool } from "./sql";
|
|
2
|
+
import { getDBClient } from "./helpers/getDBClient";
|
|
3
|
+
function createServerHelpers(pool) {
|
|
4
|
+
const sql = createSql(pool);
|
|
5
|
+
return setDefaultPool(pool), {
|
|
6
|
+
sql,
|
|
7
|
+
getDBClient: (options = {}) => getDBClient({ pool, ...options })
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
createServerHelpers
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=createServerHelpers.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/createServerHelpers.ts"],
|
|
4
|
+
"mappings": "AACA,SAAS,WAAW,sBAAsB;AAC1C,SAAS,mBAA4C;AAS9C,SAAS,oBAAoB,MAA2B;AAC7D,QAAM,MAAM,UAAU,IAAI;AAC1B,wBAAe,IAAI,GAEZ;AAAA,IACL;AAAA,IACA,aAAa,CAAC,UAAU,CAAC,MAAM,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC;AAAA,EACjE;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createSql, setDefaultPool } from "./sql.mjs";
|
|
2
|
+
import { getDBClient } from "./helpers/getDBClient.mjs";
|
|
3
|
+
function createServerHelpers(pool) {
|
|
4
|
+
const sql = createSql(pool);
|
|
5
|
+
return setDefaultPool(pool), {
|
|
6
|
+
sql,
|
|
7
|
+
getDBClient: (options = {}) => getDBClient({
|
|
8
|
+
pool,
|
|
9
|
+
...options
|
|
10
|
+
})
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export { createServerHelpers };
|
|
14
|
+
//# sourceMappingURL=createServerHelpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSql","setDefaultPool","getDBClient","createServerHelpers","pool","sql","options"],"sources":["../../src/createServerHelpers.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,SAAA,EAAWC,cAAA,QAAsB;AAC1C,SAASC,WAAA,QAA4C;AAS9C,SAASC,oBAAoBC,IAAA,EAA2B;EAC7D,MAAMC,GAAA,GAAML,SAAA,CAAUI,IAAI;EAC1B,OAAAH,cAAA,CAAeG,IAAI,GAEZ;IACLC,GAAA;IACAH,WAAA,EAAaA,CAACI,OAAA,GAAU,CAAC,MAAMJ,WAAA,CAAY;MAAEE,IAAA;MAAM,GAAGE;IAAQ,CAAC;EACjE;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createSql, setDefaultPool } from "./sql.native.js";
|
|
2
|
+
import { getDBClient } from "./helpers/getDBClient.native.js";
|
|
3
|
+
function createServerHelpers(pool) {
|
|
4
|
+
var sql = createSql(pool);
|
|
5
|
+
return setDefaultPool(pool), {
|
|
6
|
+
sql,
|
|
7
|
+
getDBClient: function () {
|
|
8
|
+
var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
9
|
+
return getDBClient({
|
|
10
|
+
pool,
|
|
11
|
+
...options
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export { createServerHelpers };
|
|
17
|
+
//# sourceMappingURL=createServerHelpers.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSql","setDefaultPool","getDBClient","createServerHelpers","pool","sql","options","arguments","length"],"sources":["../../src/createServerHelpers.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,SAAA,EAAWC,cAAA,QAAsB;AAC1C,SAASC,WAAA,QAA4C;AAS9C,SAASC,oBAAoBC,IAAA,EAA2B;EAC7D,IAAAC,GAAM,GAAAL,SAAM,CAAAI,IAAU;EACtB,OAAAH,cAAA,CAAeG,IAAI,GAEZ;IACLC,GAAA;IACAH,WAAA,EAAa,SAAAA,CAAA,EAAW;MAC1B,IAAAI,OAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;MACF,OAAAL,WAAA","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
async function processInChunks(client, query, processor, options = {}) {
|
|
2
|
+
const { chunkSize = 1e3, onProgress } = options;
|
|
3
|
+
let offset = 0, hasMore = !0, totalProcessed = 0;
|
|
4
|
+
const countQuery = query.replace(/SELECT .+ FROM/, "SELECT COUNT(*) FROM").replace(/ORDER BY .+/, ""), countResult = await client.query(countQuery), totalCount = Number.parseInt(countResult.rows[0].count, 10);
|
|
5
|
+
for (; hasMore; ) {
|
|
6
|
+
const paginatedQuery = `${query} LIMIT ${chunkSize} OFFSET ${offset}`, result = await client.query(paginatedQuery);
|
|
7
|
+
if (result.rows.length === 0) {
|
|
8
|
+
hasMore = !1;
|
|
9
|
+
break;
|
|
10
|
+
}
|
|
11
|
+
await processor(result.rows), totalProcessed += result.rows.length, offset += chunkSize, onProgress && onProgress(totalProcessed, totalCount), result.rows.length < chunkSize && (hasMore = !1);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
async function updateInChunks(client, tableName, selectQuery, transformer, options = {}) {
|
|
15
|
+
let totalUpdated = 0;
|
|
16
|
+
return await processInChunks(
|
|
17
|
+
client,
|
|
18
|
+
selectQuery,
|
|
19
|
+
async (rows) => {
|
|
20
|
+
for (const row of rows) {
|
|
21
|
+
const updates = await transformer(row);
|
|
22
|
+
if (updates && Object.keys(updates).length > 0) {
|
|
23
|
+
const setClause = Object.keys(updates).map((key, index) => `${key} = $${index + 2}`).join(", "), values = [row.id, ...Object.values(updates)];
|
|
24
|
+
await client.query(`UPDATE ${tableName} SET ${setClause} WHERE id = $1`, values), totalUpdated++;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
options
|
|
29
|
+
), totalUpdated;
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
processInChunks,
|
|
33
|
+
updateInChunks
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=chunkedQuery.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/helpers/chunkedQuery.ts"],
|
|
4
|
+
"mappings": "AAUA,eAAsB,gBACpB,QACA,OACA,WACA,UAA+B,CAAC,GACjB;AACf,QAAM,EAAE,YAAY,KAAM,WAAW,IAAI;AACzC,MAAI,SAAS,GACT,UAAU,IACV,iBAAiB;AAGrB,QAAM,aAAa,MAChB,QAAQ,kBAAkB,sBAAsB,EAChD,QAAQ,eAAe,EAAE,GACtB,cAAc,MAAM,OAAO,MAAM,UAAU,GAC3C,aAAa,OAAO,SAAS,YAAY,KAAK,CAAC,EAAE,OAAO,EAAE;AAEhE,SAAO,WAAS;AACd,UAAM,iBAAiB,GAAG,KAAK,UAAU,SAAS,WAAW,MAAM,IAC7D,SAAS,MAAM,OAAO,MAAS,cAAc;AAEnD,QAAI,OAAO,KAAK,WAAW,GAAG;AAC5B,gBAAU;AACV;AAAA,IACF;AAEA,UAAM,UAAU,OAAO,IAAI,GAE3B,kBAAkB,OAAO,KAAK,QAC9B,UAAU,WAEN,cACF,WAAW,gBAAgB,UAAU,GAInC,OAAO,KAAK,SAAS,cACvB,UAAU;AAAA,EAEd;AACF;AAKA,eAAsB,eACpB,QACA,WACA,aACA,aACA,UAA+B,CAAC,GACf;AACjB,MAAI,eAAe;AAEnB,eAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,SAAS;AACd,iBAAW,OAAO,MAAM;AACtB,cAAM,UAAU,MAAM,YAAY,GAAG;AAErC,YAAI,WAAW,OAAO,KAAK,OAAO,EAAE,SAAS,GAAG;AAE9C,gBAAM,YAAY,OAAO,KAAK,OAAO,EAClC,IAAI,CAAC,KAAK,UAAU,GAAG,GAAG,OAAO,QAAQ,CAAC,EAAE,EAC5C,KAAK,IAAI,GAEN,SAAS,CAAC,IAAI,IAAI,GAAG,OAAO,OAAO,OAAO,CAAC;AAEjD,gBAAM,OAAO,MAAM,UAAU,SAAS,QAAQ,SAAS,kBAAkB,MAAM,GAE/E;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,EACF,GAEO;AACT;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
async function processInChunks(client, query, processor, options = {}) {
|
|
2
|
+
const {
|
|
3
|
+
chunkSize = 1e3,
|
|
4
|
+
onProgress
|
|
5
|
+
} = options;
|
|
6
|
+
let offset = 0,
|
|
7
|
+
hasMore = !0,
|
|
8
|
+
totalProcessed = 0;
|
|
9
|
+
const countQuery = query.replace(/SELECT .+ FROM/, "SELECT COUNT(*) FROM").replace(/ORDER BY .+/, ""),
|
|
10
|
+
countResult = await client.query(countQuery),
|
|
11
|
+
totalCount = Number.parseInt(countResult.rows[0].count, 10);
|
|
12
|
+
for (; hasMore;) {
|
|
13
|
+
const paginatedQuery = `${query} LIMIT ${chunkSize} OFFSET ${offset}`,
|
|
14
|
+
result = await client.query(paginatedQuery);
|
|
15
|
+
if (result.rows.length === 0) {
|
|
16
|
+
hasMore = !1;
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
await processor(result.rows), totalProcessed += result.rows.length, offset += chunkSize, onProgress && onProgress(totalProcessed, totalCount), result.rows.length < chunkSize && (hasMore = !1);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function updateInChunks(client, tableName, selectQuery, transformer, options = {}) {
|
|
23
|
+
let totalUpdated = 0;
|
|
24
|
+
return await processInChunks(client, selectQuery, async rows => {
|
|
25
|
+
for (const row of rows) {
|
|
26
|
+
const updates = await transformer(row);
|
|
27
|
+
if (updates && Object.keys(updates).length > 0) {
|
|
28
|
+
const setClause = Object.keys(updates).map((key, index) => `${key} = $${index + 2}`).join(", "),
|
|
29
|
+
values = [row.id, ...Object.values(updates)];
|
|
30
|
+
await client.query(`UPDATE ${tableName} SET ${setClause} WHERE id = $1`, values), totalUpdated++;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}, options), totalUpdated;
|
|
34
|
+
}
|
|
35
|
+
export { processInChunks, updateInChunks };
|
|
36
|
+
//# sourceMappingURL=chunkedQuery.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["processInChunks","client","query","processor","options","chunkSize","onProgress","offset","hasMore","totalProcessed","countQuery","replace","countResult","totalCount","Number","parseInt","rows","count","paginatedQuery","result","length","updateInChunks","tableName","selectQuery","transformer","totalUpdated","row","updates","Object","keys","setClause","map","key","index","join","values","id"],"sources":["../../../src/helpers/chunkedQuery.ts"],"sourcesContent":[null],"mappings":"AAUA,eAAsBA,gBACpBC,MAAA,EACAC,KAAA,EACAC,SAAA,EACAC,OAAA,GAA+B,CAAC,GACjB;EACf,MAAM;IAAEC,SAAA,GAAY;IAAMC;EAAW,IAAIF,OAAA;EACzC,IAAIG,MAAA,GAAS;IACTC,OAAA,GAAU;IACVC,cAAA,GAAiB;EAGrB,MAAMC,UAAA,GAAaR,KAAA,CAChBS,OAAA,CAAQ,kBAAkB,sBAAsB,EAChDA,OAAA,CAAQ,eAAe,EAAE;IACtBC,WAAA,GAAc,MAAMX,MAAA,CAAOC,KAAA,CAAMQ,UAAU;IAC3CG,UAAA,GAAaC,MAAA,CAAOC,QAAA,CAASH,WAAA,CAAYI,IAAA,CAAK,CAAC,EAAEC,KAAA,EAAO,EAAE;EAEhE,OAAOT,OAAA,GAAS;IACd,MAAMU,cAAA,GAAiB,GAAGhB,KAAK,UAAUG,SAAS,WAAWE,MAAM;MAC7DY,MAAA,GAAS,MAAMlB,MAAA,CAAOC,KAAA,CAASgB,cAAc;IAEnD,IAAIC,MAAA,CAAOH,IAAA,CAAKI,MAAA,KAAW,GAAG;MAC5BZ,OAAA,GAAU;MACV;IACF;IAEA,MAAML,SAAA,CAAUgB,MAAA,CAAOH,IAAI,GAE3BP,cAAA,IAAkBU,MAAA,CAAOH,IAAA,CAAKI,MAAA,EAC9Bb,MAAA,IAAUF,SAAA,EAENC,UAAA,IACFA,UAAA,CAAWG,cAAA,EAAgBI,UAAU,GAInCM,MAAA,CAAOH,IAAA,CAAKI,MAAA,GAASf,SAAA,KACvBG,OAAA,GAAU;EAEd;AACF;AAKA,eAAsBa,eACpBpB,MAAA,EACAqB,SAAA,EACAC,WAAA,EACAC,WAAA,EACApB,OAAA,GAA+B,CAAC,GACf;EACjB,IAAIqB,YAAA,GAAe;EAEnB,aAAMzB,eAAA,CACJC,MAAA,EACAsB,WAAA,EACA,MAAOP,IAAA,IAAS;IACd,WAAWU,GAAA,IAAOV,IAAA,EAAM;MACtB,MAAMW,OAAA,GAAU,MAAMH,WAAA,CAAYE,GAAG;MAErC,IAAIC,OAAA,IAAWC,MAAA,CAAOC,IAAA,CAAKF,OAAO,EAAEP,MAAA,GAAS,GAAG;QAE9C,MAAMU,SAAA,GAAYF,MAAA,CAAOC,IAAA,CAAKF,OAAO,EAClCI,GAAA,CAAI,CAACC,GAAA,EAAKC,KAAA,KAAU,GAAGD,GAAG,OAAOC,KAAA,GAAQ,CAAC,EAAE,EAC5CC,IAAA,CAAK,IAAI;UAENC,MAAA,GAAS,CAACT,GAAA,CAAIU,EAAA,EAAI,GAAGR,MAAA,CAAOO,MAAA,CAAOR,OAAO,CAAC;QAEjD,MAAM1B,MAAA,CAAOC,KAAA,CAAM,UAAUoB,SAAS,QAAQQ,SAAS,kBAAkBK,MAAM,GAE/EV,YAAA;MACF;IACF;EACF,GACArB,OACF,GAEOqB,YAAA;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
async function processInChunks(client, query, processor) {
|
|
2
|
+
for (var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, {
|
|
3
|
+
chunkSize = 1e3,
|
|
4
|
+
onProgress
|
|
5
|
+
} = options, offset = 0, hasMore = !0, totalProcessed = 0, countQuery = query.replace(/SELECT .+ FROM/, "SELECT COUNT(*) FROM").replace(/ORDER BY .+/, ""), countResult = await client.query(countQuery), totalCount = Number.parseInt(countResult.rows[0].count, 10); hasMore;) {
|
|
6
|
+
var paginatedQuery = `${query} LIMIT ${chunkSize} OFFSET ${offset}`,
|
|
7
|
+
result = await client.query(paginatedQuery);
|
|
8
|
+
if (result.rows.length === 0) {
|
|
9
|
+
hasMore = !1;
|
|
10
|
+
break;
|
|
11
|
+
}
|
|
12
|
+
await processor(result.rows), totalProcessed += result.rows.length, offset += chunkSize, onProgress && onProgress(totalProcessed, totalCount), result.rows.length < chunkSize && (hasMore = !1);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
async function updateInChunks(client, tableName, selectQuery, transformer) {
|
|
16
|
+
var options = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : {},
|
|
17
|
+
totalUpdated = 0;
|
|
18
|
+
return await processInChunks(client, selectQuery, async function (rows) {
|
|
19
|
+
var _iteratorNormalCompletion = !0,
|
|
20
|
+
_didIteratorError = !1,
|
|
21
|
+
_iteratorError = void 0;
|
|
22
|
+
try {
|
|
23
|
+
for (var _iterator = rows[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
24
|
+
var row = _step.value,
|
|
25
|
+
updates = await transformer(row);
|
|
26
|
+
if (updates && Object.keys(updates).length > 0) {
|
|
27
|
+
var setClause = Object.keys(updates).map(function (key, index) {
|
|
28
|
+
return `${key} = $${index + 2}`;
|
|
29
|
+
}).join(", "),
|
|
30
|
+
values = [row.id, ...Object.values(updates)];
|
|
31
|
+
await client.query(`UPDATE ${tableName} SET ${setClause} WHERE id = $1`, values), totalUpdated++;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
} catch (err) {
|
|
35
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
36
|
+
} finally {
|
|
37
|
+
try {
|
|
38
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
39
|
+
} finally {
|
|
40
|
+
if (_didIteratorError) throw _iteratorError;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}, options), totalUpdated;
|
|
44
|
+
}
|
|
45
|
+
export { processInChunks, updateInChunks };
|
|
46
|
+
//# sourceMappingURL=chunkedQuery.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["processInChunks","client","query","processor","options","arguments","length","chunkSize","onProgress","offset","hasMore","totalProcessed","countQuery","replace","countResult","totalCount","Number","parseInt","rows","count","paginatedQuery","result","updateInChunks","tableName","selectQuery","transformer","totalUpdated","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","row","value","updates","Object","keys","setClause","map","key","index","join","values","id","err"],"sources":["../../../src/helpers/chunkedQuery.ts"],"sourcesContent":[null],"mappings":"AAUA,eAAsBA,gBACpBC,MAAA,EACAC,KAAA,EACAC,SAAA,EACA;EAEA,SAAQC,OAAA,GAAAC,SAAkB,CAAAC,MAAA,GAAW,KAAID,SAAA,iBAAAA,SAAA;MAAAE,SAAA;MAAAC;IAAA,IAAAJ,OAAA,EAAAK,MAAA,MAAAC,OAAA,OAAAC,cAAA,MAAAC,UAAA,GAAAV,KAAA,CAAAW,OAAA,2CAAAA,OAAA,qBAAAC,WAAA,SAAAb,MAAA,CAAAC,KAAA,CAAAU,UAAA,GAAAG,UAAA,GAAAC,MAAA,CAAAC,QAAA,CAAAH,WAAA,CAAAI,IAAA,IAAAC,KAAA,OAAAT,OAAA;IACzC,IAAIU,cACA,MAAUlB,KACV,UAAAK,SAAiB,WAAAE,MAAA;MAAAY,MAAA,SAAApB,MAAA,CAAAC,KAAA,CAAAkB,cAAA;IAGrB,IAAMC,MAAA,CAAAH,IAAA,CAAAZ,MAAa,KAChB;MAKHI,OAAO;MACL;IAGA;IACE,MAAAP,SAAU,CAAAkB,MAAA,CAAAH,IAAA,GAAAP,cAAA,IAAAU,MAAA,CAAAH,IAAA,CAAAZ,MAAA,EAAAG,MAAA,IAAAF,SAAA,EAAAC,UAAA,IAAAA,UAAA,CAAAG,cAAA,EAAAI,UAAA,GAAAM,MAAA,CAAAH,IAAA,CAAAZ,MAAA,GAAAC,SAAA,KAAAG,OAAA;EACV;AAAA;AAGF,eAAMY,cAAiBA,CAAArB,MAEvB,EAAAsB,SAAA,EAAAC,WAAyB,EAAAC,WACzB;EAUF,IAAArB,OAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IAAAqB,YAAA;EACF,aAAA1B,eAAA,CAAAC,MAAA,EAAAuB,WAAA,kBAAAN,IAAA;IAKA,IAAAS,yBACE,KACA;MAAAC,iBACA,KACA;MAAAC,cACA,QAAgC;IAEhC,IAAI;MAEJ,SAAMC,SAAA,GAAAZ,IAAA,CAAAa,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;QACJ,IAAAS,GAAA,GAAAH,KAAA,CAAAI,KAAA;UAAAC,OAAA,SAAAb,WAAA,CAAAW,GAAA;QACA,IAAAE,OAAA,IAAAC,MAAA,CAAAC,IAAA,CAAAF,OAAA,EAAAhC,MAAA;UACA,IAAOmC,SAAS,GAAAF,MAAA,CAAAC,IAAA,CAAAF,OAAA,EAAAI,GAAA,WAAAC,GAAA,EAAAC,KAAA;cACd,OAAW,GAAAD,GAAO,OAAMC,KAAA;YACtB,GAAAC,IAAM;YAAUC,MAAM,IAElBV,GAAA,CAAAW,EAAA,EAEF,GAAAR,MAAM,CAAAO,MAAY,CAAAR,OAAO,EAMzB;UAGF,MAAArC,MAAA,CAAAC,KAAA,WAAAqB,SAAA,QAAAkB,SAAA,kBAAAK,MAAA,GAAApB,YAAA;QACF;MACF;IACA,SAAAsB,GAAA;MAGKpB,iBAAA,OAAAC,cAAA,GAAAmB,GAAA;IACT","ignoreList":[]}
|