@rawsql-ts/ztd-cli 0.13.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/LICENSE +21 -0
- package/README.md +178 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/commands/ddl.d.ts +7 -0
- package/dist/commands/ddl.js +118 -0
- package/dist/commands/ddl.js.map +1 -0
- package/dist/commands/diff.d.ts +10 -0
- package/dist/commands/diff.js +38 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/genConfigCommand.d.ts +2 -0
- package/dist/commands/genConfigCommand.js +36 -0
- package/dist/commands/genConfigCommand.js.map +1 -0
- package/dist/commands/genEntities.d.ts +6 -0
- package/dist/commands/genEntities.js +50 -0
- package/dist/commands/genEntities.js.map +1 -0
- package/dist/commands/init.d.ts +34 -0
- package/dist/commands/init.js +467 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/options.d.ts +9 -0
- package/dist/commands/options.js +48 -0
- package/dist/commands/options.js.map +1 -0
- package/dist/commands/pull.d.ts +10 -0
- package/dist/commands/pull.js +105 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/ztdConfig.d.ts +22 -0
- package/dist/commands/ztdConfig.js +190 -0
- package/dist/commands/ztdConfig.js.map +1 -0
- package/dist/commands/ztdConfigCommand.d.ts +5 -0
- package/dist/commands/ztdConfigCommand.js +146 -0
- package/dist/commands/ztdConfigCommand.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/agents.d.ts +1 -0
- package/dist/utils/agents.js +31 -0
- package/dist/utils/agents.js.map +1 -0
- package/dist/utils/collectSqlFiles.d.ts +9 -0
- package/dist/utils/collectSqlFiles.js +58 -0
- package/dist/utils/collectSqlFiles.js.map +1 -0
- package/dist/utils/connectionSummary.d.ts +3 -0
- package/dist/utils/connectionSummary.js +29 -0
- package/dist/utils/connectionSummary.js.map +1 -0
- package/dist/utils/dbConnection.d.ts +29 -0
- package/dist/utils/dbConnection.js +210 -0
- package/dist/utils/dbConnection.js.map +1 -0
- package/dist/utils/fs.d.ts +1 -0
- package/dist/utils/fs.js +12 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/normalizePulledSchema.d.ts +12 -0
- package/dist/utils/normalizePulledSchema.js +201 -0
- package/dist/utils/normalizePulledSchema.js.map +1 -0
- package/dist/utils/pgDump.d.ts +11 -0
- package/dist/utils/pgDump.js +55 -0
- package/dist/utils/pgDump.js.map +1 -0
- package/dist/utils/sqliteAffinity.d.ts +5 -0
- package/dist/utils/sqliteAffinity.js +39 -0
- package/dist/utils/sqliteAffinity.js.map +1 -0
- package/dist/utils/typeMapper.d.ts +4 -0
- package/dist/utils/typeMapper.js +76 -0
- package/dist/utils/typeMapper.js.map +1 -0
- package/dist/utils/ztdProjectConfig.d.ts +37 -0
- package/dist/utils/ztdProjectConfig.js +161 -0
- package/dist/utils/ztdProjectConfig.js.map +1 -0
- package/package.json +45 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 MSugiura
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# @rawsql-ts/ztd-cli
|
|
2
|
+
|
|
3
|
+
Scaffold **Zero Table Dependency (ZTD)** projects and keep DDL-derived test types in sync.
|
|
4
|
+
|
|
5
|
+
`@rawsql-ts/ztd-cli` does **not** execute SQL. To run queries in tests, install a driver such as `@rawsql-ts/pg-testkit` (Postgres).
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm add -D @rawsql-ts/ztd-cli
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
For actual test execution:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm add -D @rawsql-ts/pg-testkit
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Then use the CLI through `npx ztd` or the installed `ztd` bin.
|
|
20
|
+
|
|
21
|
+
## Getting Started (Fast Path)
|
|
22
|
+
|
|
23
|
+
1. Initialize a ZTD layout:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx ztd init
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
2. Put your schema into `ztd/ddl/`:
|
|
30
|
+
|
|
31
|
+
- Edit the starter file (default): `ztd/ddl/public.sql`, or
|
|
32
|
+
- Pull from a live Postgres database: `npx ztd ddl pull` (Postgres only; uses `pg_dump`)
|
|
33
|
+
|
|
34
|
+
3. Generate test types (`TestRowMap`) from DDL:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx ztd ztd-config
|
|
38
|
+
# or keep it updated while you edit SQL:
|
|
39
|
+
npx ztd ztd-config --watch
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This step writes files under `tests/generated/`. Treat everything in that directory as generated output: never edit it and never commit it. If you clone the repo into a clean environment and TypeScript reports missing modules under `tests/generated/`, rerun `npx ztd ztd-config`.
|
|
43
|
+
|
|
44
|
+
4. Write tests using the generated test types + the driver wiring:
|
|
45
|
+
|
|
46
|
+
- `tests/generated/ztd-row-map.generated.ts` (generated test types; authoritative `TestRowMap`)
|
|
47
|
+
- `tests/support/testkit-client.ts` (driver wiring helper)
|
|
48
|
+
|
|
49
|
+
If you already have a database, the most common loop is:
|
|
50
|
+
`ztd ddl pull` -> edit `ztd/ddl/*.sql` -> `ztd ztd-config --watch` -> write tests.
|
|
51
|
+
|
|
52
|
+
At this point, you can write deterministic DB tests without creating tables or running migrations.
|
|
53
|
+
|
|
54
|
+
You can introduce ZTD incrementally; existing tests and ORMs can remain untouched.
|
|
55
|
+
|
|
56
|
+
## What `ztd init` Generates
|
|
57
|
+
|
|
58
|
+
- `ztd/ddl/<schema>.sql` (starter schema files you can edit or replace; the default schema is `public.sql`)
|
|
59
|
+
- `tests/generated/ztd-row-map.generated.ts` (auto-generated `TestRowMap`, the canonical test type contract; do not commit)
|
|
60
|
+
- `tests/support/testkit-client.ts` (auto-generated helper that boots a database client, wires a driver, and shares fixtures across the suite)
|
|
61
|
+
- `ztd.config.json` (CLI defaults and resolver hints: `dialect`, `ddlDir`, `testsDir`, plus `ddl.defaultSchema`/`ddl.searchPath` for resolving unqualified tables)
|
|
62
|
+
- `tests/generated/ztd-layout.generated.ts` (generated layout snapshot; do not commit)
|
|
63
|
+
- `tests/support/global-setup.ts` (shared test setup used by the generated testkit client)
|
|
64
|
+
- `README.md` describing the workflow and commands
|
|
65
|
+
- `AGENTS.md` (copied from the package template unless the project already has one)
|
|
66
|
+
- `ztd/AGENTS.md` and `ztd/README.md` (folder-specific instructions that describe the new schema/domain layout)
|
|
67
|
+
- Optional guide stubs under `src/` and `tests/` if requested
|
|
68
|
+
|
|
69
|
+
The resulting project follows the "DDL -> ztd-config -> tests" flow so you can regenerate everything from SQL-first artifacts.
|
|
70
|
+
|
|
71
|
+
## Commands
|
|
72
|
+
|
|
73
|
+
### `ztd init`
|
|
74
|
+
|
|
75
|
+
Creates a ZTD-ready project layout (DDL folder, config, generated layout, and test support stubs). It does not connect to your database.
|
|
76
|
+
|
|
77
|
+
### `ztd ztd-config`
|
|
78
|
+
|
|
79
|
+
Reads every `.sql` file under the configured DDL directory and produces the generated artifacts under `tests/generated/`:
|
|
80
|
+
- `tests/generated/ztd-row-map.generated.ts`
|
|
81
|
+
- `tests/generated/ztd-layout.generated.ts`
|
|
82
|
+
|
|
83
|
+
- The row map exports `TestRowMap` plus table-specific test-row interfaces.
|
|
84
|
+
- `--watch` overwrites only the `tests/generated/` outputs (no other folders are touched during the watch cycle).
|
|
85
|
+
- Pass `--default-schema` or `--search-path` to update the `ddl.defaultSchema`/`ddl.searchPath` block in `ztd.config.json` so the CLI and drivers resolve unqualified tables the same way.
|
|
86
|
+
- Never edit `tests/generated/` by hand. Rerun `npx ztd ztd-config` whenever schema/layout inputs change.
|
|
87
|
+
|
|
88
|
+
### `ztd ddl ...`
|
|
89
|
+
|
|
90
|
+
Every `ztd ddl` subcommand targets the shared DDL directory defined in `ztd.config.json` (default `ztd/ddl/`).
|
|
91
|
+
|
|
92
|
+
### `ztd ddl pull`
|
|
93
|
+
|
|
94
|
+
Fetches the schema via `pg_dump`, normalizes the DDL, and writes one file per schema under `ztd/ddl/<schema>.sql` (no `schemas/` subdirectory so each namespace lives at the DDL root).
|
|
95
|
+
|
|
96
|
+
- Output is deterministic: it drops headers/`SET` statements, sorts objects, and ensures each schema file ends with a clean newline so diffs stay stable.
|
|
97
|
+
- You can scope the pull with `--schema <name>` (repeatable) or `--table <schema.table>` (repeatable).
|
|
98
|
+
|
|
99
|
+
Connection resolution (in order):
|
|
100
|
+
|
|
101
|
+
1. `DATABASE_URL`
|
|
102
|
+
2. CLI overrides (`--url` / `--db-*` flags)
|
|
103
|
+
3. A `connection` block in `ztd.config.json`
|
|
104
|
+
|
|
105
|
+
A sample `connection` block looks like:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"connection": {
|
|
110
|
+
"host": "db.example",
|
|
111
|
+
"port": 5432,
|
|
112
|
+
"user": "app",
|
|
113
|
+
"password": "secret",
|
|
114
|
+
"database": "app_db"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Unqualified table references are treated as belonging to the `public` schema by default, so `users` is interpreted as `public.users`. If your project relies on a different namespace, update the `ddl.defaultSchema`/`ddl.searchPath` block in `ztd.config.json` so the CLI and downstream tests agree on how unqualified names are resolved.
|
|
120
|
+
|
|
121
|
+
> **Note:** `ztd ddl` commands that contact your database depend on the `pg_dump` executable. Ensure `pg_dump` is installed and reachable via your `PATH` (Windows users can add `C:\Program Files\PostgreSQL\<version>\bin` or open a shell that already exposes `pg_dump`), or pass `--pg-dump-path <path>` / set `PG_DUMP_PATH` to the absolute path before running the command. When authentication fails the CLI echoes the target host/port/database/user so you know what credential set to double-check.
|
|
122
|
+
|
|
123
|
+
On Windows, register the executable for future PowerShell sessions:
|
|
124
|
+
|
|
125
|
+
```powershell
|
|
126
|
+
setx PG_DUMP_PATH "C:\Program Files\PostgreSQL\18\bin\pg_dump.exe"
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Open a new PowerShell window after running this command so the updated environment variable is available to `ztd` commands.
|
|
130
|
+
|
|
131
|
+
### `ztd ddl gen-entities`
|
|
132
|
+
|
|
133
|
+
Reads the DDL directory and generates `entities.ts` (optional reference for helpers). Use it when you want TypeScript helpers for ad-hoc schema inspection without replacing `TestRowMap` as the source of truth.
|
|
134
|
+
|
|
135
|
+
### `ztd ddl diff`
|
|
136
|
+
|
|
137
|
+
Diffs the local DDL snapshot against a live Postgres database. It uses the shared DDL directory, respects configured extensions, and outputs a human-readable plan with `pg_dump`.
|
|
138
|
+
|
|
139
|
+
## ZTD Testing
|
|
140
|
+
|
|
141
|
+
Driver responsibilities live in companion packages such as `@rawsql-ts/pg-testkit` for Postgres.
|
|
142
|
+
|
|
143
|
+
The driver sits downstream of `testkit-core` and applies the rewrite + fixture pipeline before running any database interaction. Install the driver, configure it in your tests, and point it at the row map from `tests/generated/ztd-row-map.generated.ts`.
|
|
144
|
+
|
|
145
|
+
## Concepts (Why ZTD?)
|
|
146
|
+
|
|
147
|
+
### What is ZTD?
|
|
148
|
+
|
|
149
|
+
Zero Table Dependency (ZTD) keeps your tests aligned with a real database engine without ever creating or mutating physical tables during the test run.
|
|
150
|
+
|
|
151
|
+
- Application CRUD statements are rewritten into fixture-backed `SELECT` queries.
|
|
152
|
+
- Schema changes are expressed via SQL files (DDL) and their generated row map.
|
|
153
|
+
- Tests consume fixtures + types, not a live mutable schema, which keeps the suite deterministic and safe for automated code generation.
|
|
154
|
+
|
|
155
|
+
### Schema resolution (`defaultSchema` / `searchPath`)
|
|
156
|
+
|
|
157
|
+
Application SQL can omit schema qualifiers (for example, `SELECT ... FROM users`). Drivers resolve those references using the `ddl.defaultSchema` and `ddl.searchPath` settings in `ztd.config.json` before matching fixtures / DDL metadata.
|
|
158
|
+
|
|
159
|
+
## Glossary
|
|
160
|
+
|
|
161
|
+
- **DDL**: SQL files that define schema objects (tables, enums, indexes, etc.).
|
|
162
|
+
- **Row map (`TestRowMap`)**: Generated TypeScript types describing test rows for each table from DDL.
|
|
163
|
+
- **Fixture**: Static rows used by the driver to answer queries deterministically.
|
|
164
|
+
- **Driver**: The package that connects to your database engine and runs the rewrite + fixture pipeline (for example, `@rawsql-ts/pg-testkit`).
|
|
165
|
+
|
|
166
|
+
## AI Coding Workflow (Optional)
|
|
167
|
+
|
|
168
|
+
1. Update the relevant `ztd/ddl/<schema>.sql` file (for example, `ztd/ddl/public.sql`) with the desired schema.
|
|
169
|
+
2. Run `npx ztd ztd-config` (or `--watch`) to regenerate the generated outputs under `tests/generated/`.
|
|
170
|
+
3. Use the row map + fixtures to write repositories, tests, and fixtures.
|
|
171
|
+
4. Run tests through `pg-testkit` (or another driver) since `ztd-cli` itself never executes SQL.
|
|
172
|
+
5. When generating code with an AI tool, feed it `tests/generated/ztd-row-map.generated.ts`, `tests/generated/ztd-layout.generated.ts`, `ztd.config.json`, and any AGENTS guidance so it can respect the ZTD contract.
|
|
173
|
+
|
|
174
|
+
## AGENTS.md
|
|
175
|
+
|
|
176
|
+
`ztd init` copies the AGENTS template from this package into the project root, preferring `AGENTS.md` unless a file already exists (then it falls back to `AGENTS_ztd.md`). The template explains the conventions for AI agents, including which testkit to use, how to treat `tests/generated/ztd-row-map.generated.ts`, and how to avoid mutating schema files. Keep the generated AGENTS file in version control so every future AI assistant receives the same guidance.
|
|
177
|
+
|
|
178
|
+
`ztd init` also creates `ztd/AGENTS.md` and `ztd/README.md` so contributors always see the canonical DDL, enum, and domain-spec guidance inside the new layout.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/typings/index.d.ts","../../../node_modules/.pnpm/@types+diff@5.2.3/node_modules/@types/diff/index.d.ts","../src/utils/collectsqlfiles.ts","../src/utils/fs.ts","../src/utils/ztdprojectconfig.ts","../src/utils/dbconnection.ts","../src/utils/connectionsummary.ts","../src/utils/pgdump.ts","../src/commands/diff.ts","../src/utils/typemapper.ts","../../core/dist/src/types/formatting.d.ts","../../core/dist/src/models/sqlcomponent.d.ts","../../core/dist/src/models/valuecomponent.d.ts","../../core/dist/src/models/hintclause.d.ts","../../core/dist/src/models/clause.d.ts","../../core/dist/src/models/insertquery.d.ts","../../core/dist/src/models/updatequery.d.ts","../../core/dist/src/models/deletequery.d.ts","../../core/dist/src/models/mergequery.d.ts","../../core/dist/src/models/binaryselectquery.d.ts","../../core/dist/src/transformers/tablecolumnresolver.d.ts","../../core/dist/src/models/simpleselectquery.d.ts","../../core/dist/src/models/valuesquery.d.ts","../../core/dist/src/models/cteerror.d.ts","../../core/dist/src/models/selectquery.d.ts","../../core/dist/src/models/createtablequery.d.ts","../../core/dist/src/models/ddlstatements.d.ts","../../core/dist/src/parsers/sqlparser.d.ts","../../core/dist/src/models/lexeme.d.ts","../../core/dist/src/parsers/selectqueryparser.d.ts","../../core/dist/src/parsers/insertqueryparser.d.ts","../../core/dist/src/parsers/updatequeryparser.d.ts","../../core/dist/src/parsers/deletequeryparser.d.ts","../../core/dist/src/parsers/withclauseparser.d.ts","../../core/dist/src/parsers/createtableparser.d.ts","../../core/dist/src/parsers/mergequeryparser.d.ts","../../core/dist/src/parsers/createindexparser.d.ts","../../core/dist/src/parsers/droptableparser.d.ts","../../core/dist/src/parsers/dropindexparser.d.ts","../../core/dist/src/parsers/altertableparser.d.ts","../../core/dist/src/parsers/dropconstraintparser.d.ts","../../core/dist/src/models/formattinglexeme.d.ts","../../core/dist/src/transformers/sqlsortinjector.d.ts","../../core/dist/src/transformers/sqlpaginationinjector.d.ts","../../core/dist/src/transformers/dynamicquerybuilder.d.ts","../../core/dist/src/transformers/postgresjsonquerybuilder.d.ts","../../core/dist/src/utils/schemamanager.d.ts","../../core/dist/src/models/tabledefinitionmodel.d.ts","../../core/dist/src/transformers/ctecollector.d.ts","../../core/dist/src/transformers/ctenormalizer.d.ts","../../core/dist/src/transformers/ctedisabler.d.ts","../../core/dist/src/transformers/ctedependencyanalyzer.d.ts","../../core/dist/src/transformers/ctetablereferencecollector.d.ts","../../core/dist/src/models/sqlprinttoken.d.ts","../../core/dist/src/parsers/identifierdecorator.d.ts","../../core/dist/src/parsers/parameterdecorator.d.ts","../../core/dist/src/parsers/sqlprinttokenparser.d.ts","../../core/dist/src/transformers/lineprinter.d.ts","../../core/dist/src/transformers/onelineformattinghelper.d.ts","../../core/dist/src/transformers/sqlprinter.d.ts","../../core/dist/src/transformers/formatoptionresolver.d.ts","../../core/dist/src/transformers/sqlformatter.d.ts","../../core/dist/src/transformers/ctequerydecomposer.d.ts","../../core/dist/src/transformers/ctecomposer.d.ts","../../core/dist/src/utils/lexemecursor.d.ts","../../core/dist/src/transformers/cterenamer.d.ts","../../core/dist/src/transformers/aliasrenamer.d.ts","../../core/dist/src/transformers/smartrenamer.d.ts","../../core/dist/src/formatters/originalformatrestorer.d.ts","../../core/dist/src/transformers/sqlidentifierrenamer.d.ts","../../core/dist/src/transformers/columnreferencecollector.d.ts","../../core/dist/src/transformers/formatter.d.ts","../../core/dist/src/transformers/fixturectebuilder.d.ts","../../core/dist/src/transformers/insertresultselectconverter.d.ts","../../core/dist/src/transformers/updateresultselectconverter.d.ts","../../core/dist/src/transformers/deleteresultselectconverter.d.ts","../../core/dist/src/transformers/mergeresultselectconverter.d.ts","../../core/dist/src/transformers/querybuilder.d.ts","../../core/dist/src/transformers/insertqueryselectvaluesconverter.d.ts","../../core/dist/src/transformers/selectresultselectconverter.d.ts","../../core/dist/src/transformers/simulatedselectconverter.d.ts","../../core/dist/src/transformers/ddltofixtureconverter.d.ts","../../core/dist/src/transformers/ddlgeneralizer.d.ts","../../core/dist/src/transformers/ddldiffgenerator.d.ts","../../core/dist/src/transformers/selectvaluecollector.d.ts","../../core/dist/src/transformers/selectablecolumncollector.d.ts","../../core/dist/src/transformers/filterableitemcollector.d.ts","../../core/dist/src/transformers/tablesourcecollector.d.ts","../../core/dist/src/transformers/modeldrivenjsonmapping.d.ts","../../core/dist/src/transformers/enhancedjsonmapping.d.ts","../../core/dist/src/transformers/jsonmappingconverter.d.ts","../../core/dist/src/transformers/jsonmappingunifier.d.ts","../../core/dist/src/transformers/upstreamselectqueryfinder.d.ts","../../core/dist/src/transformers/typetransformationpostprocessor.d.ts","../../core/dist/src/transformers/schemacollector.d.ts","../../core/dist/src/transformers/queryflowdiagramgenerator.d.ts","../../core/dist/src/transformers/sqlparaminjector.d.ts","../../core/dist/src/utils/sqlschemavalidator.d.ts","../../core/dist/src/utils/jsonschemavalidator.d.ts","../../core/dist/src/utils/commenteditor.d.ts","../../core/dist/src/utils/cteregiondetector.d.ts","../../core/dist/src/utils/cursorcontextanalyzer.d.ts","../../core/dist/src/utils/scoperesolver.d.ts","../../core/dist/src/utils/positionawareparser.d.ts","../../core/dist/src/utils/multiquerysplitter.d.ts","../../core/dist/src/utils/tablenameutils.d.ts","../../core/dist/src/types/genericfixture.d.ts","../../core/dist/src/utils/intellisenseapi.d.ts","../../core/dist/src/index.d.ts","../../../node_modules/.pnpm/rawsql-ts@0.12.1/node_modules/rawsql-ts/dist/src/index.d.ts","../../testkit-core/dist/fixtures/tablenameresolver.d.ts","../../testkit-core/dist/types/index.d.ts","../../testkit-core/dist/errors/index.d.ts","../../testkit-core/dist/fixtures/columnaffinity.d.ts","../../testkit-core/dist/fixtures/fixturestore.d.ts","../../testkit-core/dist/fixtures/ddlfixtureloader.d.ts","../../testkit-core/dist/fixtures/fixtureprovider.d.ts","../../testkit-core/dist/rewriter/selectfixturerewriter.d.ts","../../testkit-core/dist/rewriter/selectanalyzer.d.ts","../../testkit-core/dist/fixtures/tabledefinitionschemaregistry.d.ts","../../testkit-core/dist/rewriter/resultselectrewriter.d.ts","../../testkit-core/dist/utils/queryhelpers.d.ts","../../testkit-core/dist/index.d.ts","../src/commands/ztdconfig.ts","../src/commands/genentities.ts","../src/utils/normalizepulledschema.ts","../src/commands/pull.ts","../src/commands/options.ts","../src/commands/ddl.ts","../src/utils/agents.ts","../src/commands/init.ts","../../../node_modules/.pnpm/readdirp@5.0.0/node_modules/readdirp/index.d.ts","../../../node_modules/.pnpm/chokidar@5.0.0/node_modules/chokidar/handler.d.ts","../../../node_modules/.pnpm/chokidar@5.0.0/node_modules/chokidar/index.d.ts","../src/commands/ztdconfigcommand.ts","../src/index.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.18.7/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/@types+benchmark@2.1.5/node_modules/@types/benchmark/index.d.ts","../../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/index.d.ts","../../../node_modules/.pnpm/pg-protocol@1.10.3/node_modules/pg-protocol/dist/messages.d.ts","../../../node_modules/.pnpm/pg-protocol@1.10.3/node_modules/pg-protocol/dist/serializer.d.ts","../../../node_modules/.pnpm/pg-protocol@1.10.3/node_modules/pg-protocol/dist/parser.d.ts","../../../node_modules/.pnpm/pg-protocol@1.10.3/node_modules/pg-protocol/dist/index.d.ts","../../../node_modules/.pnpm/@types+pg@8.15.6/node_modules/@types/pg/lib/type-overrides.d.ts","../../../node_modules/.pnpm/@types+pg@8.15.6/node_modules/@types/pg/index.d.ts"],"fileIdsList":[[187,236],[187,233,236],[187,235,236],[236],[187,236,241,270],[187,236,237,242,247,255,267,278],[187,236,237,238,247,255],[182,183,184,187,236],[187,236,239,279],[187,236,240,241,248,256],[187,236,241,267,275],[187,236,242,244,247,255],[187,235,236,243],[187,236,244,245],[187,236,246,247],[187,235,236,247],[187,236,247,248,249,267,278],[187,236,247,248,249,262,267,270],[187,229,236,244,247,250,255,267,278],[187,236,247,248,250,251,255,267,275,278],[187,236,250,252,267,275,278],[185,186,187,188,189,190,191,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284],[187,236,247,253],[187,236,254,278],[187,236,244,247,255,267],[187,236,256],[187,236,257],[187,235,236,258],[187,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284],[187,236,260],[187,236,261],[187,236,247,262,263],[187,236,262,264,279,281],[187,236,247,267,268,270],[187,236,269,270],[187,236,267,268],[187,236,270],[187,236,271],[187,233,236,267,272],[187,236,247,273,274],[187,236,273,274],[187,236,241,255,267,275],[187,236,276],[187,236,255,277],[187,236,250,261,278],[187,236,241,279],[187,236,267,280],[187,236,254,281],[187,236,282],[187,229,236],[187,229,236,247,249,258,267,270,278,280,281,283],[187,236,267,284],[187,236,247,267,275,285,287,288,291,292,293],[187,236,293],[177,179,187,236,248],[177,178,187,236,247,248],[187,236,285,288,289,290],[187,236,285],[187,236,267,285,288],[56,57,58,60,61,62,63,64,65,66,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,187,236],[187,236,248,267],[187,201,205,236,278],[187,201,236,267,278],[187,196,236],[187,198,201,236,275,278],[187,236,255,275],[187,196,236,285],[187,198,201,236,255,278],[187,193,194,197,200,236,247,267,278],[187,201,208,236],[187,193,199,236],[187,201,222,223,236],[187,197,201,236,270,278,285],[187,222,236,285],[187,195,196,236,285],[187,201,236],[187,195,196,197,198,199,200,201,202,203,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,223,224,225,226,227,228,236],[187,201,216,236],[187,201,208,209,236],[187,199,201,209,210,236],[187,200,236],[187,193,196,201,236],[187,201,205,209,210,236],[187,205,236],[187,199,201,204,236,278],[187,193,198,201,208,236],[187,236,267],[187,196,201,222,236,283,285],[87,187,236],[57,58,60,61,62,63,64,67,70,187,236],[57,58,59,70,187,236],[57,58,67,70,187,236],[57,58,71,187,236],[57,60,187,236],[74,187,236],[57,187,236],[57,60,70,187,236],[57,58,60,187,236],[57,58,61,62,63,64,65,67,68,69,187,236],[57,58,60,61,62,63,64,65,66,70,187,236],[56,187,236],[58,71,92,187,236],[72,74,187,236],[71,74,187,236],[63,74,187,236],[61,74,187,236],[64,74,187,236],[70,74,187,236],[61,62,63,64,70,71,72,187,236],[57,58,60,70,71,99,100,101,187,236],[62,74,187,236],[60,74,187,236],[70,74,110,187,236],[57,58,187,236],[57,58,60,70,187,236],[107,187,236],[60,67,187,236],[70,187,236],[67,107,187,236],[70,110,187,236],[63,70,93,118,119,187,236],[58,70,88,89,91,187,236],[66,70,187,236],[60,187,236],[103,187,236],[57,102,107,187,236],[61,187,236],[61,70,93,118,187,236],[91,134,135,187,236],[91,134,187,236],[64,70,118,119,187,236],[91,187,236],[99,107,187,236],[67,70,90,187,236],[61,62,63,64,70,71,119,120,121,122,187,236],[57,66,187,236],[57,58,66,187,236],[70,118,119,187,236],[57,58,60,66,187,236],[57,119,120,121,122,125,187,236],[110,187,236],[56,57,102,103,105,106,187,236],[58,70,187,236],[56,99,103,104,107,187,236],[62,70,93,118,119,187,236],[74,110,187,236],[110,147,148,149,150,187,236],[70,74,75,110,187,236],[57,66,140,187,236],[157,187,236],[154,156,157,187,236],[156,157,159,187,236],[156,157,158,160,161,162,163,164,165,166,167,187,236],[154,156,187,236],[46,50,51,54,170,172,173,187,236,257],[47,48,49,51,52,53,187,236,248,257],[48,49,55,169,187,236,248,257],[46,49,50,169,172,173,175,187,236,237,248,257,263],[49,51,53,171,187,236,248,257],[48,49,55,154,168,187,236,248,257],[46,50,169,173,179,187,236,257],[46,174,176,180,187,236],[49,187,236,248,257],[187,236,248,257],[51,187,236],[50,187,236],[187,236,248],[154,187,236],[51,52,187,236,237,256]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a722a71d8f3cb0028857b12579c7eca55acc76bf34e5db7eaf6fe817b985f9c3","impliedFormat":1},{"version":"e331054a02adcad184373c783d4b7e087545fd6ef381fd9d7646f53f38aba01d","impliedFormat":1},{"version":"370fe6ead7c000cfcc3769ffaa171d2d764f96db5ba17d2f88005d9b4de34b40","signature":"cdeee6496c8a24cb23ba083dcc0888615de13e1d808bbee56b76f63c9536f18d"},{"version":"07835cbcf178ee5cb56c79dedb19aa9098452a57a2fe7ff38e7ae7d4e1cd293d","signature":"0b37d9911c78b888b48ce166c8771313f3e494bce4bcd990a0f47bba7077fbb1"},{"version":"e574d24791ea5b1e3c4afc177273974ac111ac1c590a947fa63ddc14804ec77e","signature":"a4265dc5bdbc7cea2f96a25931ce6fc686e1261ff66fb5e90d4ec3adbebc2945"},{"version":"3aa1fcc11abc874abdb71c7589b02b8d60867b8d7d087aee79ac78acd32cdeb9","signature":"ec2936cbd83f32dbbc511813a6eab7710ae8dfb685a102e889d1cad7500f5694"},{"version":"a4041d9f2a066ea728885de63e9c871c5c592f0eb6dad9c3d9fb2834688c868f","signature":"043d20253a03e4afb2da62ebfe5243aa99cf87b532f9f51ff099eb2df9c8c28b"},{"version":"2453d28e9351103d82881252190d0feff5b781d8ef5bf2f85819941acd44cbf9","signature":"e5ae0d6ea272ae4cad6baa33d8f77b4533c2effa4e307a2fd67bb704afb1757b"},{"version":"f52cf584eec034fb2b5a2a15a189ceb3d00f4c1c85cfc657a8855d2d379c2960","signature":"97c904c055a466b3d23aa6fd1e7f5f20f5747c979bf1f893532db46f0adab3cc"},{"version":"436278e5ea2b475d3ad68ad571d212874a40ec69fe470ce4808a727ab5e3efed","signature":"c1eec6766245bf9d9dbd06726460d28baa511f250cb23fd01cc92101695afe1b"},"17ecd4b9fb89fbfae1c9c149dc88f9345639a818596d9034099eb7cf7ca43a1e","bb15944d17297985d81eb85d5c31c22802baefec033f4403761e7bd21418ac8c","0951fbfbad4735cd22784b015af80309b18645f4351ef9b63fb448963dd88c13","cfe5248db194fd8a4e08472aa278953495f63a89c2454e27778b66ca7189364d","55a433d6b4209b60416529eca07b218fc741917ef349694bf25ad07a21765d08","6968b1cbf8bfdad37d0216e1b48cf6bfce587a21b312131b0c65262e78cebb1a","68641d3acf8e951f53622c7b15b3ec66bb0080e765550e2dccd5522ac938eeff","86679012b3d90c032fb9fc259b1d9fb28a7a895b4de6f21cc20e4a95bb9a9724","801007f9952a17d91a9b2216ca79f45b2196cad4c18af38f386ff8e5d7f17710","0b8339d0b3357e04ae7eb89f8a519a3ffef1016213456188d03627356d4b724c","f7e59d4052fc1f983b5e62c1b3f31462b2cc34e9d7a9a3569ef3649789e53e1e","4418707d96cab27abd4149cf94ec39387e229ab079319c8f5510c89a1a6e715f","e2101d131f5d93e8b9f32e449dcfb3862a3910b42336db3c4477500ca616c4d4","5c18d30b7150cda0099eb30483a189a7644f565f8f82ebc9ca631f6f6a0ea8b2","7dea205cddfa9e00c3d307a3d74292e664aaa8808f7e71b3a5ac5c4c0cf71876","35261942f83c68cb99dc65cff3f8d9fab0fe878f9a5d4fa5bf94ed33ec6ac0a6","6be14e7a02e7bed40503ccfa21c78cf27feeffbbafa2511a5f1c672e78ad2b6e","9bedcfa50a598047ac72ec5aef1c2d19948e242ca15bc3a784bd061cffe9a556","c36e17e42cccf9b0c8df95f0d49b7ff15430d55c99359dd2f1cb4f75835389ff","bcd7d2217f2ba4106f64b48b8dc6e0d104898b3589f9e6a140abd9c95d06d6c7","bf3f658a0baa1f178b2ca8a658efe19025850fc837807d2e63316e965db8f831","480b248ec8fb4c8194375f087fafd418e0fdb0cbe1fd09a88f8595060c4b9fbd","924cfd063c5aab135ae5288e56b566ab37cfdeb4702742e1bf8021925ed2a095","42d05ab1619fede0d1287b2ddbf72b820c54a41aed4ca65e646793693236fe6e","4681179b6dde44950aaf0e35a9ee8574c5641edc4c5936cb238e91459244e725","d5455904f1d9c6681802eab3cef2c4f37373b895a407914edf842c05dd546b6e","0a2cc847e87c9027057140f3a0118ae89308eb708ded618e4d992c5876b958a0","7be38998a7a6ac8d2a331249f04388c4d9b5bd0cf502c338e3b54e75583ddba0","71471239e9e80d6e20df9d1bd93c1a88020bce805dda663e468914999564901b","e0fbc836da891ae8fd62e6644ac4464063df67520869c3a4c86fcd5f90c44d1f","e3dbb7339272e570cdf001e87c46c8bbbbfd1cb59dee68883780643351969512","205cae9a849cab92ccee886fd12209fecf984d6f78f899e207f4d6e9645a0160","6fadf923b3fd5df619b317bd6b4cd35435a206d75ececdbe60b623550e28e377","23396881a8d5badaa8c79e60ef80e8d9f3ecef6e6e5693c5d57bb47a8ddb947c","48550f786a796fe30d45b5aaddc668ba2af6b76a95a4e9ffd20c82d0625897f4","b4c534983fdd2da7b8d4c5abafd5b9b7cd4f443e680be5341d533ddbb692a238","2cfd221b6aa634668d2566bcb604f43f5001e9234047a7a3ed65fd12879a5015","72103cbe93b721f0e28e080e2fd777f02d830cce408f45a76c2be5a8d0d06a8c","3da2cc8069400a04bf3ac7d1ef239f27c0ac04b400545c6523754c8d870dfe8d","6d50fe1d9066eea787150292f996f55396c5276473909af1d4fe235c40874ea0","ec78229f7ce7b529d2f103553207aea696893d4dcc0b1a21055d1205286d9d7c","57334fb306588b68dca043d005b7bd10e0262e1f05e703eb718f01a427f927d3","827eac596384337fd0e74a777f1a277e75de3f3578db319689d960a7c089b802","603d1ecbcb3311e3d949e3113c5c9fe1b806e8122341e79f6ce29c1f530ec310","5b75cf1db5ba865bcfa86f33534521fa81ba5abb9ac87854cb1ee49a7aab93f5","0dc5ffddd8021cf4a816656b54dd4fa85a93d6050ff6e085aa0a5f1f798474bc","f5704f1cfd885e1bfaa451ea6dd5bbbec123debd22827563bf5fad0583b036a2","ca68d0220cf1f5c6c6caddf1a5d0fc3d5c36eb320995461a6ee76f483e3de05e","659b8156686e69a88eae4ff3cd73bda88ea4e7823d9c82243bb6f2498c88430b","094c2dffc479db49183573b54765704d3a093beec08f9ecf27b352a7f3851fa5","b99b1e8944b3ca29a6b67ecc013a8cbb693c46562070efffa9a7f945b4770da6","2edf47ec8bc34cbf0ae9f17cfc2903ff6ae7d88760730d41720fbc9cec486e73","8650fe0d15c0c7a99043f4b5063a0f840dd36bb0bef4bd703613b9dcfdfc8d7b","40c22582bddc136f18e16bc75f08be847a698e4a00ee7f6efe799455b50d6bba","45e413d523aae37a79b61216617edc96773a18f39eeece24b81131db78bf2e60","5c6e798c432eb67f767e65d44db04fc86bd84adf85eddaefc2c254e097afca00","fdf538542b79d8be5400d6c682e044c63043c98a64533edeb85aa563d658b3c6","4ef2776bbed51ec1d42f4237e6fad805e1b0fd465e617eb285cc2adb7b318b31","4852af87512f633542fb339cd7c353b596c833928fccfec06ef172fd1b5f8044","f320db82184e305ccc9610b2f1e0a2499e21f3b26749a744c90a002580747a22","799c23f17829baaf9fc621c5583a5ec5d1e691672f123e6092263d263e5213ce","571d403ebc8e3dd36133a398285d14f74e146138bb0742071e7b58a487352628","da2513937454f128d1ac297c43c4371f9a8dfda7e0d240835ba5f9a8a0d2fd0f","e8cb5f22659f535780c9a93a7161cd85976e3c39259e5087259f14c74f44061e","d159a650f688005e8b5d90f242cf1abd05973c16b2bfccd2b6ace9b9ec0b36b9","bd65057416ed62c2c197d9cf13ec932d64b003c549076bee0c2e0976adc7cb06","5fbd545decf75c498ee11e3bcbf4b75b1853b0b09766bb4d4b79ab8768cb49e4","6ced434236522bf7f9b7186a792e14f809d1ad1c5ec17d949a4a5b8cc86553e8","ae02084313345fc494daf10fc52b8505c63067d14dec0363e0628522c765de91","528d5bf4fb5f374de0f5da6ec399af75f63763d2410f5f32f2d607dcd246b457","0e6040ee03029d0576c376bf4658139bc72dd0f0e73c5376f242ab79b1be1b0f","7afdc51d9b8fa7ff6e72306744637ed38ca7113dc69670dafa055a5e61711bc4","6e21bda85da180d7bc80143b5c35c5dbdeea2d7d73ac9ceb0fbd4944a2c626ec","d6caf7931fdc33d113f57d8a1cae8eae37aaf4da63a4681d26782c1e583a709e","931666704f5febeaf5840e7f4af09df4bb359e166739ba71ed53afe825179e33","c14bf70634e5aa38788b13eee838ec455ae23a400b8940618de956a14495a605","06e05da7e19acfa2e3b8d3f700afd051a58eba7e2075a9e2906a51f38215e3e0","222b57f81f0431465b7cfd7f73686124fb9eb7c5d6a9d3943b983038ef82b0d3","9510a3e0de76ce9cf67723559b7f6ded7460aa0ceab132cc21bce5109a1ef3f3","11ee21a7a3bf90f275d82903b9ddde581f5371ac7fe87e04d9ca23ebe92980b6","3baf8c08f44a2a5b9f73100642a3048e61b5a27970e45ec42b00aa2fe65de057","5095c4ae654ee1ed4be023ee74d89524f2e946bb37636d8923dbf7476805a33c","cf7b8f53785feb988874b35016b273efe8962209e74c76567598dc2c9c13d732","aee8958ed94c0c6fe7ac3df0cef81290585d0d90b01141e45f3b14e94d6ffa6d","e7baa57574af02910d585c2651087b731aebf71748c4afc2a588e0f9086ffb34","467ea8cf4019654cddd4eabafe76aaf096d45130c347738cf3b94fca656a71b5","4e7a8e28d3dae9155b2a18e89fc2c96d93468e6e98c5390d51f557a564663b05","9966057ad5ef55f0980839b2cc938d7c0dd424bcd886089514c876a9f9ab431f","ae90065ea9bb62e157ae7745ee6b6196f48b2f6e7a663b3f10d570866c1bfcb2","0cb1b2aed9f245d3562702d011d54dfdacd150a972e7c9e1031a4d658bfe7926","9576fa40e2584f196e857c69b9abb5353144fffd649631f4903748a9926c5fba","6666d7eaf3f9e31e43dafec2856dd5b8555d2b01e6c04ef78dde1bb88be6ec10","d062d18e4cab5049413a11ce28feac9100fafc4ccbbc65aa04ea163f8a6dddf1","d34baada410a60942107946733d687cf628bb84d6d294e67ea58fb33e3bf756d","e6a242c096a3492f99a014bfb3ed3ead38b30e3decdc0223bbb337c46186fbd9","be048ba8210120398b065b90c7cb8b38051afc8cd5c61dd0ed270e8effca8f71","b89001df1adf04e2e73163fa584076ff26bad61af707368eb6cb7576a2a6dd74","f3b0dc605f40199b47d82ed316b2bf0be92ad33628a8bcf9c9a2d00e45ffecca","8ee602ef7e001b900bea409655b89e0368cb8676981e6fa3abac7042d1aa9b8b","8ee602ef7e001b900bea409655b89e0368cb8676981e6fa3abac7042d1aa9b8b","bab09d024265b82e7f10768e4ce54d63014873bb3e661e4490ee1c93bfe6696e","024c116d74b0fb415e94c9f061c1df2144689ad9a8666de76688a7caaaf87230","c8e303767ed9f4bbcf0d3f57670a4f8379ba98229b79b9f1a6e406b6809c118c","e138f5bdfcaf066ca8cabe8be38258ed8d8bb67d156e3d89f980139535a2be40","3f8b69a43df549c4cca90479cad949ed6e0bf400ed3c5aeb8d7e018030000e43","fa176e36eb6e672b0f9f154c817c5ab7a164507270611fe35b853b1c08feeb7e","2bb6561bfab728c7d54af12e95b7561c9a45f1b014d4612c691125a6ac710559","12348c786e2659020a25c45e5ea6e0794e88fcbc12634fbd8939ba4cd186e523","742642f93cbde52f66cef0c429f91f651e3a705c93c7ac87a1b97b7c4031cdbb","5e55907dbb289187fcfbab6af692486b3047d8d52045a79197677b1585498b7e","74c81b5531ae1d2792533e5af74937891bcccc896f524524ab2fbe40080fee10","4c0f02c5adadf99538f1c6dc636d5dd789a16c0b5a0c873edec56f59161a9941","24023676ee56d3025815f29a498d679ed8e6c120bf4fc9be6364673fc785db97",{"version":"df0f462e72406a6fedea76d3f3cdc1388da91a85d5a7e52a2c33d00f3aef76d0","signature":"00f454aa17ae29de8d713571df8d35edb3b205d04ecb27bf70dc02c8bf2f7f5a"},{"version":"8535b679f2ddafde88f6098c68e0fa19baced8ced2ba6189097c1fb4ae53c81e","signature":"3fb2dbc12f492a019658810d251f5eeeb4d2273918f20098f698b5fe87bde6da"},{"version":"be0e4f6c0b7f6185e05855bff1166e6d0ec98978957e8fbfacf7a8ad875cfb16","signature":"4399f108fc032a7616b437813507eac3cb8392dc9b8ba8a8c43b6be266e4d08c"},{"version":"f9f604f96e8098080a67c9c2391325406efe89e7d04a3072903f06d2312b8657","signature":"ba1d882b1ab0885d6822a7ea9dd065cd96b9a3535d20b24bbb0b145f5916fd67"},{"version":"1fb86dd1c5c443e371b60b8a7760b68c9bed45ac58a0028246c19bc5d28b26b0","signature":"a47492478c11fd36faeea3f5e4dbe6373aacceb34a2368625c9fad2ed15f8ee0"},{"version":"c819325f41fe05f8d6f4d7bbf9b01ca57aae8d157fa3b33f2b19c78b64ec3085","signature":"8f6297f0540355c505320789a5535fc332b18d891045230cbd7a812901f1d89e"},{"version":"cb97b73c1914e1f09d8e9b30b85be99426a22021c6ec7b5931206052696859c9","signature":"705d5ec5b5c2eaa0790690a7191eeca7d72200ee4d850868187afbe8c27dea7e"},{"version":"6e2c614b0ef44981664da022a813c7540803b262bd7e94c9afe4eade3c73e6e1","signature":"529d9dad7a647b9e8e139436d64fd93e1e7152c904bed043fb6c92c71b088d2a"},{"version":"4b19a27eaccfc0549e5a68d2012546bfc62064842d923c30699381460d32b472","impliedFormat":99},{"version":"97a50b01aa5289ea4e360a4d86f2dd8fed81a03ad657439b369dcace978feca2","impliedFormat":99},{"version":"7c06703b5cba08462692c2df83b4ec2faedac46ecd3a6a83240db8729f0efa71","impliedFormat":99},{"version":"0d84f43633275baf539bbc4f9258318fbc07df81995a804776ef99c2740f5496","signature":"5a4bb5076f4944b29f3f79a2291e396e9def0725523562af0f121b1ffa711c1a"},{"version":"6a26ece3f5f64fe817e19eca2a410525ec0d7fb90912a3c5f31e8489b3a66171","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012"},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bb4105d0ea2ab2bfcb4f77ff8585691d5569c90ae15f4fa8d5ff9fb42b910b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"df48adbf5b82b79ed989ec3bef2979d988b94978907fd86b4f30ba2b668e49de","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"7b988bc259155186e6b09dd8b32856d9e45c8d261e63c19abaf590bb6550f922","affectsGlobalScope":true,"impliedFormat":1},{"version":"fe7b52f993f9336b595190f3c1fcc259bb2cf6dcb4ac8fdb1e0454cc5df7301e","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"81711af669f63d43ccb4c08e15beda796656dd46673d0def001c7055db53852d","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"bdba81959361810be44bcfdd283f4d601e406ab5ad1d2bdff0ed480cf983c9d7","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"a912401ec6f333808ae72660e6860ba4e72185ffd7dbb658cd41064936e34b62","affectsGlobalScope":true,"impliedFormat":1},{"version":"c8420c7c2b778b334587a4c0311833b5212ff2f684ea37b2f0e2b117f1d7210d","impliedFormat":1},{"version":"b6b08215821c9833b0e8e30ea1ed178009f2f3ff5d7fae3865ee42f97cc87784","impliedFormat":1},{"version":"3f735210f444dc3fd2d4d2f020d195fe827dad5e30a6d743807c5d1de3a2be73","impliedFormat":1},{"version":"73cf6cc19f16c0191e4e9d497ab0c11c7b38f1ca3f01ad0f09a3a5a971aac4b8","impliedFormat":1},{"version":"3e81d8b837057db6f9c82263e0ef7e5b9a55437342e7028eb8003199ccc69604","impliedFormat":1},{"version":"ed58b9974bb3114f39806c9c2c6258c4ffa6a255921976a7c53dfa94bf178f42","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9727a118ce60808e62457c89762fe5a4e2be8e9fd0112d12432d1bafdba942f","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"3a90b9beac4c2bfdf6517faae0940a042b81652badf747df0a7c7593456f6ebe","impliedFormat":1},{"version":"8302157cd431b3943eed09ad439b4441826c673d9f870dcb0e1f48e891a4211e","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"c959a391a75be9789b43c8468f71e3fa06488b4d691d5729dde1416dcd38225b","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"cee74f5970ffc01041e5bffc3f324c20450534af4054d2c043cb49dbbd4ec8f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a654e0d950353614ba4637a8de4f9d367903a0692b748e11fccf8c880c99735","affectsGlobalScope":true,"impliedFormat":1},{"version":"42da246c46ca3fd421b6fd88bb4466cda7137cf33e87ba5ceeded30219c428bd","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"c760027bae5a6188fee611641e37bede79caae3f3f7cc78ca5ce8ac1083e01bb","affectsGlobalScope":true,"impliedFormat":1},{"version":"db3d77167a7da6c5ba0c51c5b654820e3464093f21724ccd774c0b9bc3f81bc0","impliedFormat":1},{"version":"bdf1feb266c87edbee61f12ceaaef60ab0e2e5dba70ca19360b6448911c53d52","impliedFormat":1},{"version":"d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","impliedFormat":1},{"version":"f60e3e3060207ac982da13363181fd7ee4beecc19a7c569f0d6bb034331066c2","impliedFormat":1},{"version":"17230b34bb564a3a2e36f9d3985372ccab4ad1722df2c43f7c5c2b553f68e5db","impliedFormat":1},{"version":"6e5c9272f6b3783be7bdddaf207cccdb8e033be3d14c5beacc03ae9d27d50929","impliedFormat":1},{"version":"9b4f7ff9681448c72abe38ea8eefd7ffe0c3aefe495137f02012a08801373f71","impliedFormat":1},{"version":"0dfe35191a04e8f9dc7caeb9f52f2ee07402736563d12cbccd15fb5f31ac877f","impliedFormat":1},{"version":"798367363a3274220cbed839b883fe2f52ba7197b25e8cb2ac59c1e1fd8af6b7","impliedFormat":1},{"version":"6ded4be4f8a693d0c1646dfa2f1b6582e34b73c66ce334cb5e86c7bf8c2e52b7","impliedFormat":1}],"root":[[48,55],[169,176],180,181],"options":{"composite":true,"declaration":true,"declarationDir":"./","esModuleInterop":true,"module":1,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":6,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[286,1],[47,1],[233,2],[234,2],[235,3],[187,4],[236,5],[237,6],[238,7],[182,1],[185,8],[183,1],[184,1],[239,9],[240,10],[241,11],[242,12],[243,13],[244,14],[245,14],[246,15],[247,16],[248,17],[249,18],[188,1],[186,1],[250,19],[251,20],[252,21],[285,22],[253,23],[254,24],[255,25],[256,26],[257,27],[258,28],[259,29],[260,30],[261,31],[262,32],[263,32],[264,33],[265,1],[266,1],[267,34],[269,35],[268,36],[270,37],[271,38],[272,39],[273,40],[274,41],[275,42],[276,43],[277,44],[278,45],[279,46],[280,47],[281,48],[282,49],[189,1],[190,1],[191,1],[230,50],[231,1],[232,1],[283,51],[284,52],[293,53],[292,54],[192,1],[178,55],[179,56],[46,1],[291,57],[288,58],[290,59],[289,1],[287,1],[155,60],[177,61],[44,1],[45,1],[9,1],[8,1],[2,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[3,1],[18,1],[19,1],[4,1],[20,1],[24,1],[21,1],[22,1],[23,1],[25,1],[26,1],[27,1],[5,1],[28,1],[29,1],[30,1],[31,1],[6,1],[35,1],[32,1],[33,1],[34,1],[36,1],[7,1],[37,1],[42,1],[43,1],[38,1],[39,1],[40,1],[41,1],[1,1],[208,62],[218,63],[207,62],[228,64],[199,65],[198,66],[227,58],[221,67],[226,68],[201,69],[215,70],[200,71],[224,72],[196,73],[195,58],[225,74],[197,75],[202,76],[203,1],[206,76],[193,1],[229,77],[219,78],[210,79],[211,80],[213,81],[209,82],[212,83],[222,58],[204,84],[205,85],[214,86],[194,87],[217,78],[216,76],[220,1],[223,88],[114,89],[154,60],[65,90],[60,91],[71,92],[69,1],[72,93],[63,94],[87,95],[59,96],[61,97],[74,1],[64,98],[70,99],[67,100],[57,101],[99,1],[93,102],[62,98],[58,97],[68,90],[85,103],[82,103],[80,104],[78,105],[86,103],[84,103],[83,103],[100,1],[76,106],[81,107],[101,1],[75,108],[73,109],[102,110],[77,111],[79,112],[112,113],[116,114],[94,115],[109,116],[97,117],[96,115],[95,118],[108,119],[111,120],[98,94],[129,116],[128,96],[127,1],[121,121],[90,122],[135,1],[132,123],[118,124],[106,125],[117,126],[124,127],[119,128],[136,129],[137,130],[103,1],[122,131],[134,132],[104,133],[91,134],[123,135],[141,118],[140,136],[131,137],[125,138],[130,139],[126,140],[113,141],[107,142],[115,1],[89,118],[142,143],[105,144],[88,118],[66,1],[133,94],[139,1],[120,145],[138,118],[56,1],[152,1],[145,96],[146,1],[147,146],[153,147],[144,132],[110,95],[150,141],[149,148],[92,132],[148,118],[143,149],[151,1],[158,150],[159,1],[161,151],[162,151],[160,152],[165,151],[156,1],[168,153],[166,151],[164,1],[163,150],[157,154],[167,1],[174,155],[54,156],[170,157],[176,158],[173,1],[172,159],[169,160],[180,161],[181,162],[175,163],[48,164],[52,165],[51,166],[49,167],[171,168],[53,169],[55,1],[50,164]],"latestChangedDtsFile":"./utils/dbConnection.d.ts","errors":true,"version":"5.9.2"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Registers all DDL-related commands (`pull`, `gen-entities`, `diff`) on the top-level CLI program.
|
|
4
|
+
* @param program - The Commander program instance to extend.
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerDdlCommands(program: Command): void;
|
|
7
|
+
export { collectDirectories, parseExtensions, DEFAULT_EXTENSIONS, DEFAULT_DDL_DIRECTORY } from './options';
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULT_DDL_DIRECTORY = exports.DEFAULT_EXTENSIONS = exports.parseExtensions = exports.collectDirectories = void 0;
|
|
7
|
+
exports.registerDdlCommands = registerDdlCommands;
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const diff_1 = require("./diff");
|
|
10
|
+
const genEntities_1 = require("./genEntities");
|
|
11
|
+
const pull_1 = require("./pull");
|
|
12
|
+
const ztdProjectConfig_1 = require("../utils/ztdProjectConfig");
|
|
13
|
+
const dbConnection_1 = require("../utils/dbConnection");
|
|
14
|
+
const options_1 = require("./options");
|
|
15
|
+
/**
|
|
16
|
+
* Registers all DDL-related commands (`pull`, `gen-entities`, `diff`) on the top-level CLI program.
|
|
17
|
+
* @param program - The Commander program instance to extend.
|
|
18
|
+
*/
|
|
19
|
+
function registerDdlCommands(program) {
|
|
20
|
+
const ddl = program.command('ddl').description('DDL-focused workflows');
|
|
21
|
+
ddl
|
|
22
|
+
.command('pull')
|
|
23
|
+
.description('Retrieve the current schema DDL from a PostgreSQL database')
|
|
24
|
+
.option('--url <databaseUrl>', 'Connection string to use for pg_dump (optional; fallback to env/config)')
|
|
25
|
+
.option('--out <directory>', 'Destination directory for the pulled DDL', options_1.DEFAULT_DDL_DIRECTORY)
|
|
26
|
+
.option('--db-host <host>', 'Database host to use instead of DATABASE_URL')
|
|
27
|
+
.option('--db-port <port>', 'Database port (defaults to 5432)')
|
|
28
|
+
.option('--db-user <user>', 'Database user to connect as')
|
|
29
|
+
.option('--db-password <password>', 'Database password')
|
|
30
|
+
.option('--db-name <name>', 'Database name to connect to')
|
|
31
|
+
.option('--pg-dump-path <path>', 'Custom pg_dump executable path')
|
|
32
|
+
.option('--schema <schema>', 'Schema name to include (repeatable)', options_1.collectValues, [])
|
|
33
|
+
.option('--table <table>', 'Table spec (schema.table) to include (repeatable)', options_1.collectValues, [])
|
|
34
|
+
.action(async (options) => {
|
|
35
|
+
var _a, _b, _c;
|
|
36
|
+
const connection = resolveCliConnection(options);
|
|
37
|
+
await (0, pull_1.runPullSchema)({
|
|
38
|
+
url: connection.url,
|
|
39
|
+
out: (_a = options.out) !== null && _a !== void 0 ? _a : options_1.DEFAULT_DDL_DIRECTORY,
|
|
40
|
+
pgDumpPath: options.pgDumpPath,
|
|
41
|
+
schemas: (_b = options.schema) !== null && _b !== void 0 ? _b : [],
|
|
42
|
+
tables: (_c = options.table) !== null && _c !== void 0 ? _c : [],
|
|
43
|
+
connectionContext: connection.context
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
ddl
|
|
47
|
+
.command('gen-entities')
|
|
48
|
+
.description('Generate optional entities.ts helpers from the DDL snapshot')
|
|
49
|
+
.option('--ddl-dir <directory>', 'DDL directory to scan (repeatable)', options_1.collectDirectories, [])
|
|
50
|
+
.option('--extensions <list>', 'Comma-separated extensions to include', options_1.parseExtensions, options_1.DEFAULT_EXTENSIONS)
|
|
51
|
+
.option('--out <file>', 'Destination TypeScript file', node_path_1.default.join('src', 'entities.ts'))
|
|
52
|
+
.action(async (options) => {
|
|
53
|
+
var _a;
|
|
54
|
+
const directories = (0, options_1.normalizeDirectoryList)(options.ddlDir, options_1.DEFAULT_DDL_DIRECTORY);
|
|
55
|
+
const extensions = (0, options_1.resolveExtensions)(options.extensions, options_1.DEFAULT_EXTENSIONS);
|
|
56
|
+
await (0, genEntities_1.runGenerateEntities)({
|
|
57
|
+
directories,
|
|
58
|
+
extensions,
|
|
59
|
+
out: (_a = options.out) !== null && _a !== void 0 ? _a : node_path_1.default.join('src', 'entities.ts')
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
ddl
|
|
63
|
+
.command('diff')
|
|
64
|
+
.description('Compare local DDL against a live PostgreSQL database and emit a plan')
|
|
65
|
+
.option('--ddl-dir <directory>', 'DDL directory to scan (repeatable)', options_1.collectDirectories, [])
|
|
66
|
+
.option('--extensions <list>', 'Comma-separated extensions to include', options_1.parseExtensions, options_1.DEFAULT_EXTENSIONS)
|
|
67
|
+
.option('--url <databaseUrl>', 'Connection string to use for pg_dump (optional; fallback to env/config)')
|
|
68
|
+
.requiredOption('--out <file>', 'Output path for the generated plan file')
|
|
69
|
+
.option('--db-host <host>', 'Database host to use instead of DATABASE_URL')
|
|
70
|
+
.option('--db-port <port>', 'Database port (defaults to 5432)')
|
|
71
|
+
.option('--db-user <user>', 'Database user to connect as')
|
|
72
|
+
.option('--db-password <password>', 'Database password')
|
|
73
|
+
.option('--db-name <name>', 'Database name to connect to')
|
|
74
|
+
.option('--pg-dump-path <path>', 'Custom pg_dump executable path')
|
|
75
|
+
.action(async (options) => {
|
|
76
|
+
var _a;
|
|
77
|
+
const directories = (0, options_1.normalizeDirectoryList)((_a = options.ddlDir) !== null && _a !== void 0 ? _a : [], options_1.DEFAULT_DDL_DIRECTORY);
|
|
78
|
+
const extensions = (0, options_1.resolveExtensions)(options.extensions, options_1.DEFAULT_EXTENSIONS);
|
|
79
|
+
const connection = resolveCliConnection(options);
|
|
80
|
+
await (0, diff_1.runDiffSchema)({
|
|
81
|
+
directories,
|
|
82
|
+
extensions,
|
|
83
|
+
url: connection.url,
|
|
84
|
+
out: options.out,
|
|
85
|
+
pgDumpPath: options.pgDumpPath,
|
|
86
|
+
connectionContext: connection.context
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolves connection metadata for CLI commands using flags, environment, and project config.
|
|
92
|
+
* @param options - CLI options containing optional overrides.
|
|
93
|
+
* @returns The resolved connection and context.
|
|
94
|
+
*/
|
|
95
|
+
function resolveCliConnection(options) {
|
|
96
|
+
// Gather configuration once per command so overrides and defaults stay synchronized.
|
|
97
|
+
return (0, dbConnection_1.resolveDatabaseConnection)(buildFlagSet(options), (0, ztdProjectConfig_1.loadZtdProjectConfig)(), options.url);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Normalizes the incoming CLI flag values into the shared DbConnectionFlags shape.
|
|
101
|
+
* @param options - CLI options exposing partial connection pieces.
|
|
102
|
+
* @returns Flag object consumed by the `resolveDatabaseConnection` helper.
|
|
103
|
+
*/
|
|
104
|
+
function buildFlagSet(options) {
|
|
105
|
+
return {
|
|
106
|
+
host: options.dbHost,
|
|
107
|
+
port: options.dbPort,
|
|
108
|
+
user: options.dbUser,
|
|
109
|
+
password: options.dbPassword,
|
|
110
|
+
database: options.dbName
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
var options_2 = require("./options");
|
|
114
|
+
Object.defineProperty(exports, "collectDirectories", { enumerable: true, get: function () { return options_2.collectDirectories; } });
|
|
115
|
+
Object.defineProperty(exports, "parseExtensions", { enumerable: true, get: function () { return options_2.parseExtensions; } });
|
|
116
|
+
Object.defineProperty(exports, "DEFAULT_EXTENSIONS", { enumerable: true, get: function () { return options_2.DEFAULT_EXTENSIONS; } });
|
|
117
|
+
Object.defineProperty(exports, "DEFAULT_DDL_DIRECTORY", { enumerable: true, get: function () { return options_2.DEFAULT_DDL_DIRECTORY; } });
|
|
118
|
+
//# sourceMappingURL=ddl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddl.js","sourceRoot":"","sources":["../../src/commands/ddl.ts"],"names":[],"mappings":";;;;;;AA4CA,kDAsEC;AAlHD,0DAA6B;AAE7B,iCAAuC;AACvC,+CAAoD;AACpD,iCAAuC;AACvC,gEAAiE;AACjE,wDAAkE;AAElE,uCAQmB;AAwBnB;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAExE,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACb,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,qBAAqB,EAAE,yEAAyE,CAAC;SACxG,MAAM,CAAC,mBAAmB,EAAE,0CAA0C,EAAE,+BAAqB,CAAC;SAC9F,MAAM,CAAC,kBAAkB,EAAE,8CAA8C,CAAC;SAC1E,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,CAAC;SAC9D,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;SACzD,MAAM,CAAC,0BAA0B,EAAE,mBAAmB,CAAC;SACvD,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;SACzD,MAAM,CAAC,uBAAuB,EAAE,gCAAgC,CAAC;SACjE,MAAM,CAAC,mBAAmB,EAAE,qCAAqC,EAAE,uBAAa,EAAE,EAAE,CAAC;SACrF,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,EAAE,uBAAa,EAAE,EAAE,CAAC;SACjG,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;;QAC5C,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,IAAA,oBAAa,EAAC;YAClB,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,GAAG,EAAE,MAAA,OAAO,CAAC,GAAG,mCAAI,+BAAqB;YACzC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,EAAE;YAC7B,MAAM,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,EAAE;YAC3B,iBAAiB,EAAE,UAAU,CAAC,OAAO;SACtC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEP,GAAG;SACA,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,6DAA6D,CAAC;SAC1E,MAAM,CAAC,uBAAuB,EAAE,oCAAoC,EAAE,4BAAkB,EAAE,EAAE,CAAC;SAC7F,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,EAAE,yBAAe,EAAE,4BAAkB,CAAC;SAC3G,MAAM,CAAC,cAAc,EAAE,6BAA6B,EAAE,mBAAI,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;SACtF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;;QACxB,MAAM,WAAW,GAAG,IAAA,gCAAsB,EAAC,OAAO,CAAC,MAAkB,EAAE,+BAAqB,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAG,IAAA,2BAAiB,EAAC,OAAO,CAAC,UAAsB,EAAE,4BAAkB,CAAC,CAAC;QACzF,MAAM,IAAA,iCAAmB,EAAC;YACxB,WAAW;YACX,UAAU;YACV,GAAG,EAAE,MAAA,OAAO,CAAC,GAAG,mCAAI,mBAAI,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC;SACpD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACb,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,uBAAuB,EAAE,oCAAoC,EAAE,4BAAkB,EAAE,EAAE,CAAC;SAC7F,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,EAAE,yBAAe,EAAE,4BAAkB,CAAC;SAC3G,MAAM,CAAC,qBAAqB,EAAE,yEAAyE,CAAC;SACxG,cAAc,CAAC,cAAc,EAAE,yCAAyC,CAAC;SACzE,MAAM,CAAC,kBAAkB,EAAE,8CAA8C,CAAC;SAC1E,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,CAAC;SAC9D,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;SACzD,MAAM,CAAC,0BAA0B,EAAE,mBAAmB,CAAC;SACvD,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;SACzD,MAAM,CAAC,uBAAuB,EAAE,gCAAgC,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;;QAC5C,MAAM,WAAW,GAAG,IAAA,gCAAsB,EAAC,MAAA,OAAO,CAAC,MAAM,mCAAI,EAAE,EAAE,+BAAqB,CAAC,CAAC;QACxF,MAAM,UAAU,GAAG,IAAA,2BAAiB,EAAC,OAAO,CAAC,UAAU,EAAE,4BAAkB,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,IAAA,oBAAa,EAAC;YAClB,WAAW;YACX,UAAU;YACV,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,GAAG,EAAE,OAAO,CAAC,GAAI;YACjB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,iBAAiB,EAAE,UAAU,CAAC,OAAO;SACtC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACT,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,OAA6B;IACzD,qFAAqF;IACrF,OAAO,IAAA,wCAAyB,EAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAA,uCAAoB,GAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/F,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,OAA6B;IACjD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,MAAM;QACpB,IAAI,EAAE,OAAO,CAAC,MAAM;QACpB,IAAI,EAAE,OAAO,CAAC,MAAM;QACpB,QAAQ,EAAE,OAAO,CAAC,UAAU;QAC5B,QAAQ,EAAE,OAAO,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC;AAED,qCAA2G;AAAlG,6GAAA,kBAAkB,OAAA;AAAE,0GAAA,eAAe,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAAE,gHAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DbConnectionContext } from '../utils/dbConnection';
|
|
2
|
+
export interface DiffSchemaOptions {
|
|
3
|
+
directories: string[];
|
|
4
|
+
extensions: string[];
|
|
5
|
+
url: string;
|
|
6
|
+
out: string;
|
|
7
|
+
pgDumpPath?: string;
|
|
8
|
+
connectionContext?: DbConnectionContext;
|
|
9
|
+
}
|
|
10
|
+
export declare function runDiffSchema(options: DiffSchemaOptions): void;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runDiffSchema = runDiffSchema;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const diff_1 = require("diff");
|
|
10
|
+
const collectSqlFiles_1 = require("../utils/collectSqlFiles");
|
|
11
|
+
const fs_1 = require("../utils/fs");
|
|
12
|
+
const pgDump_1 = require("../utils/pgDump");
|
|
13
|
+
const connectionSummary_1 = require("../utils/connectionSummary");
|
|
14
|
+
function runDiffSchema(options) {
|
|
15
|
+
const localSources = (0, collectSqlFiles_1.collectSqlFiles)(options.directories, options.extensions);
|
|
16
|
+
if (localSources.length === 0) {
|
|
17
|
+
throw new Error(`No SQL files were discovered under ${options.directories.join(', ')}`);
|
|
18
|
+
}
|
|
19
|
+
// Concatenate the local DDL files in a stable order for deterministic diff outputs.
|
|
20
|
+
const localSql = localSources.map((source) => source.sql).join('\n\n');
|
|
21
|
+
const remoteSql = (0, pgDump_1.runPgDump)({
|
|
22
|
+
url: options.url,
|
|
23
|
+
pgDumpPath: options.pgDumpPath,
|
|
24
|
+
connectionContext: options.connectionContext
|
|
25
|
+
});
|
|
26
|
+
const hasChanges = localSql !== remoteSql;
|
|
27
|
+
// Create a unified diff patch only when there are material differences to report.
|
|
28
|
+
const patch = hasChanges
|
|
29
|
+
? (0, diff_1.createTwoFilesPatch)('local', 'database', localSql, remoteSql, '', '', { context: 3 })
|
|
30
|
+
: '-- No schema differences detected.';
|
|
31
|
+
const databaseTarget = (0, connectionSummary_1.formatConnectionTarget)(options.connectionContext) || 'target: unknown';
|
|
32
|
+
const header = `-- ztd ddl diff plan\n-- Local DDL: ${options.directories.join(', ')}\n-- Database: ${databaseTarget}\n-- Generated: ${new Date().toISOString()}\n\n`;
|
|
33
|
+
// Guarantee the target path exists before emitting the plan file.
|
|
34
|
+
(0, fs_1.ensureDirectory)(node_path_1.default.dirname(options.out));
|
|
35
|
+
(0, node_fs_1.writeFileSync)(options.out, `${header}${patch}\n`, 'utf8');
|
|
36
|
+
console.log(`DDL diff plan written to ${options.out}`);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":";;;;;AAkBA,sCA2BC;AA7CD,qCAAwC;AACxC,0DAA6B;AAC7B,+BAA2C;AAC3C,8DAA2D;AAC3D,oCAA8C;AAC9C,4CAA4C;AAC5C,kEAAoE;AAYpE,SAAgB,aAAa,CAAC,OAA0B;IACtD,MAAM,YAAY,GAAG,IAAA,iCAAe,EAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,oFAAoF;IACpF,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,IAAA,kBAAS,EAAC;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,QAAQ,KAAK,SAAS,CAAC;IAC1C,kFAAkF;IAClF,MAAM,KAAK,GAAG,UAAU;QACtB,CAAC,CAAC,IAAA,0BAAmB,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACvF,CAAC,CAAC,oCAAoC,CAAC;IAEzC,MAAM,cAAc,GAAG,IAAA,0CAAsB,EAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC;IAC9F,MAAM,MAAM,GAAG,uCAAuC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,cAAc,mBAAmB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtK,kEAAkE;IAClE,IAAA,oBAAe,EAAC,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,IAAA,uBAAa,EAAC,OAAO,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,KAAK,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerGenConfigCommand = registerGenConfigCommand;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const options_1 = require("./options");
|
|
9
|
+
const ztdConfig_1 = require("./ztdConfig");
|
|
10
|
+
const DEFAULT_GEN_CONFIG_DDL_DIRECTORY = node_path_1.default.join('ddl', 'schemas');
|
|
11
|
+
const DEFAULT_GEN_CONFIG_OUTPUT = node_path_1.default.join(options_1.DEFAULT_TESTS_DIRECTORY, 'ztd-config.ts');
|
|
12
|
+
function registerGenConfigCommand(program) {
|
|
13
|
+
program
|
|
14
|
+
.command('gen-config')
|
|
15
|
+
.description('Generate the canonical ztd-config.ts row map for playground projects')
|
|
16
|
+
.option('--ddl-dir <directory>', 'DDL directory to scan (repeatable)', options_1.collectDirectories, [])
|
|
17
|
+
.option('--extensions <list>', 'Comma-separated extensions to include', options_1.parseExtensions, options_1.DEFAULT_EXTENSIONS)
|
|
18
|
+
.option('--out <file>', 'Destination TypeScript file', DEFAULT_GEN_CONFIG_OUTPUT)
|
|
19
|
+
.option('--default-schema <schema>', 'Default schema used when resolving unqualified tables')
|
|
20
|
+
.option('--search-path <list>', 'Comma-separated schema search path entries', options_1.parseCsvList)
|
|
21
|
+
.action((options) => {
|
|
22
|
+
var _a;
|
|
23
|
+
// Normalize input directories while defaulting to the playground layout when none are provided.
|
|
24
|
+
const directories = (0, options_1.normalizeDirectoryList)(options.ddlDir, DEFAULT_GEN_CONFIG_DDL_DIRECTORY);
|
|
25
|
+
const extensions = (0, options_1.resolveExtensions)(options.extensions, options_1.DEFAULT_EXTENSIONS);
|
|
26
|
+
const output = (_a = options.out) !== null && _a !== void 0 ? _a : DEFAULT_GEN_CONFIG_OUTPUT;
|
|
27
|
+
(0, ztdConfig_1.runGenerateZtdConfig)({
|
|
28
|
+
directories,
|
|
29
|
+
extensions,
|
|
30
|
+
out: output,
|
|
31
|
+
defaultSchema: options.defaultSchema,
|
|
32
|
+
searchPath: options.searchPath
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=genConfigCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genConfigCommand.js","sourceRoot":"","sources":["../../src/commands/genConfigCommand.ts"],"names":[],"mappings":";;;;;AAgBA,4DA0BC;AA1CD,0DAA6B;AAE7B,uCAQmB;AACnB,2CAAmD;AAEnD,MAAM,gCAAgC,GAAG,mBAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACrE,MAAM,yBAAyB,GAAG,mBAAI,CAAC,IAAI,CAAC,iCAAuB,EAAE,eAAe,CAAC,CAAC;AAEtF,SAAgB,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,uBAAuB,EAAE,oCAAoC,EAAE,4BAAkB,EAAE,EAAE,CAAC;SAC7F,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,EAAE,yBAAe,EAAE,4BAAkB,CAAC;SAC3G,MAAM,CAAC,cAAc,EAAE,6BAA6B,EAAE,yBAAyB,CAAC;SAChF,MAAM,CAAC,2BAA2B,EAAE,uDAAuD,CAAC;SAC5F,MAAM,CAAC,sBAAsB,EAAE,4CAA4C,EAAE,sBAAY,CAAC;SAC1F,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;;QAClB,gGAAgG;QAChG,MAAM,WAAW,GAAG,IAAA,gCAAsB,EACxC,OAAO,CAAC,MAAkB,EAC1B,gCAAgC,CACjC,CAAC;QACF,MAAM,UAAU,GAAG,IAAA,2BAAiB,EAAC,OAAO,CAAC,UAAsB,EAAE,4BAAkB,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,GAAG,mCAAI,yBAAyB,CAAC;QAExD,IAAA,gCAAoB,EAAC;YACnB,WAAW;YACX,UAAU;YACV,GAAG,EAAE,MAAM;YACX,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|