longcelot-sheet-db 0.1.5 → 0.1.8
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/CHANGELOG.md +93 -1
- package/LICENSE +1 -1
- package/README.md +167 -6
- package/dist/adapter/crud.d.ts +5 -3
- package/dist/adapter/crud.d.ts.map +1 -1
- package/dist/adapter/crud.js +41 -4
- package/dist/adapter/crud.js.map +1 -1
- package/dist/adapter/sheetAdapter.d.ts +2 -0
- package/dist/adapter/sheetAdapter.d.ts.map +1 -1
- package/dist/adapter/sheetAdapter.js +54 -1
- package/dist/adapter/sheetAdapter.js.map +1 -1
- package/dist/cli/commands/export.d.ts +8 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +165 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +27 -5
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mock-users.d.ts +3 -0
- package/dist/cli/commands/mock-users.d.ts.map +1 -0
- package/dist/cli/commands/mock-users.js +101 -0
- package/dist/cli/commands/mock-users.js.map +1 -0
- package/dist/cli/commands/seed.d.ts +1 -1
- package/dist/cli/commands/seed.d.ts.map +1 -1
- package/dist/cli/commands/seed.js +42 -1
- package/dist/cli/commands/seed.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +3 -1
- package/dist/cli/commands/sync.d.ts.map +1 -1
- package/dist/cli/commands/sync.js +43 -2
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/index.js +17 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/schema/columnBuilder.d.ts.map +1 -1
- package/dist/schema/columnBuilder.js +1 -0
- package/dist/schema/columnBuilder.js.map +1 -1
- package/dist/schema/defineTable.d.ts.map +1 -1
- package/dist/schema/defineTable.js +8 -0
- package/dist/schema/defineTable.js.map +1 -1
- package/dist/schema/types.d.ts +6 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/package.json +7 -3
- package/skills/auth/SKILL.md +142 -0
- package/skills/cli/SKILL.md +150 -0
- package/skills/core/SKILL.md +115 -0
- package/skills/crud/SKILL.md +185 -0
- package/skills/schema/SKILL.md +129 -0
package/CHANGELOG.md
CHANGED
|
@@ -1 +1,93 @@
|
|
|
1
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
> **How to read this file**
|
|
4
|
+
>
|
|
5
|
+
> Every time a new version is released, a new section is added here at the top.
|
|
6
|
+
> Changes are grouped by type:
|
|
7
|
+
> - **Added** – new features
|
|
8
|
+
> - **Changed** – changes to existing behaviour
|
|
9
|
+
> - **Fixed** – bug fixes
|
|
10
|
+
> - **Removed** – removed features
|
|
11
|
+
> - **Security** – security fixes
|
|
12
|
+
>
|
|
13
|
+
> The `[Unreleased]` section collects changes that are merged but not yet published to npm.
|
|
14
|
+
> When you run `npm publish`, rename `[Unreleased]` to the new version number and date.
|
|
15
|
+
|
|
16
|
+
All notable changes to this project will be documented in this file.
|
|
17
|
+
This project follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and [Semantic Versioning](https://semver.org/).
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## [Unreleased]
|
|
22
|
+
|
|
23
|
+
### Planned (Phase 2 & 3 Roadmap)
|
|
24
|
+
- **Added**: `init --integrate` CLI command to integrate `longcelot-sheet-db` into an existing Node.js project without destroying existing configuration.
|
|
25
|
+
- **Added**: `sync --all-users` CLI command to bulk-update Google Sheets schemas across all initialized user endpoints.
|
|
26
|
+
- **Added**: Developer sandbox CLI tools (`sheet-db mock-users`).
|
|
27
|
+
- **Added**: Prisma/SQL DDL automated migration script (`sheet-db export`).
|
|
28
|
+
- **Changed**: Improved documentation for integrating with existing backends and planning forward migration to SQL.
|
|
29
|
+
- **Removed**: Redundant `Docs/apiReference.md` file layout to consolidate into root `API.md`.
|
|
30
|
+
|
|
31
|
+
### New Documentation (Q1-Q9)
|
|
32
|
+
- **Added**: Clarified OAuth requirement — cannot be skipped, required for backend-to-Sheets communication.
|
|
33
|
+
- **Added**: Integration workflow for existing projects — mapping user auth to sheet-db context.
|
|
34
|
+
- **Added**: Development workflow documentation — how to test with multiple actor sheets.
|
|
35
|
+
- **Added**: Migration path documentation — `user_id` vs `sheet_id` purpose.
|
|
36
|
+
- **Added**: Cross-actor operations documentation — join APIs and permission models (roadmap).
|
|
37
|
+
- **Added**: Export CLI (`sheet-db export`) for generating Prisma schemas and SQL DDL.
|
|
38
|
+
- **Added**: Sync `--all-users` for pushing schema changes to all registered users.
|
|
39
|
+
|
|
40
|
+
_Nothing yet — add your in-progress changes here before the next release._
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## [0.1.5] - 2026-03-09
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
- Download count badge in `README.md`
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
- Updated `LICENSE` copyright year to 2026
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## [0.1.0] - 2026-03-09
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
- Initial public release of `longcelot-sheet-db`
|
|
58
|
+
- `defineTable()` schema DSL with fluent column builders (`string()`, `number()`, `boolean()`, `date()`, `json()`)
|
|
59
|
+
- Column modifiers: `required`, `unique`, `default`, `min`, `max`, `enum`, `pattern`, `readonly`, `primary`, `ref`, `index`
|
|
60
|
+
- Auto-generated fields: `_id` (nanoid), `_created_at`, `_updated_at`, `_deleted_at`
|
|
61
|
+
- `SheetAdapter` — main adapter with actor-based sheet routing and permission enforcement
|
|
62
|
+
- `SheetClient` — low-level Google Sheets API wrapper
|
|
63
|
+
- `CRUDOperations` — `create`, `findMany`, `findOne`, `update`, `delete` with where/orderBy/limit/offset
|
|
64
|
+
- Uniqueness constraint enforcement via `checkUniqueness()` in `create()` and `update()`
|
|
65
|
+
- Soft delete support via `_deleted_at` column
|
|
66
|
+
- `OAuthManager` — full Google OAuth2 flow (auth URL, token exchange, refresh, verify)
|
|
67
|
+
- Password utilities: `hashPassword()`, `comparePassword()`, `validatePasswordStrength()` (bcrypt)
|
|
68
|
+
- CLI binary `sheet-db` with commands:
|
|
69
|
+
- `init` — interactive project scaffolding
|
|
70
|
+
- `generate` — interactive schema builder
|
|
71
|
+
- `validate` — schema validation
|
|
72
|
+
- `sync` — sync schemas to Google Sheets with OAuth token storage/refresh
|
|
73
|
+
- `seed` — load initial/test data into sheets
|
|
74
|
+
- `doctor` — diagnostics and environment health checks
|
|
75
|
+
- `status` — show tables, actors, and sheet IDs
|
|
76
|
+
- Custom error classes: `ValidationError`, `PermissionError`, `SchemaError`
|
|
77
|
+
- Structured logger (`src/utils/logger.ts`) using chalk
|
|
78
|
+
- Environment variable validator (`src/utils/env.ts`)
|
|
79
|
+
- Jest test suite — 28 tests passing (unit + integration with `MockSheetClient`)
|
|
80
|
+
- CI/CD pipeline via `.github/workflows/ci.yml` (Node 18 & 20, build + test + lint)
|
|
81
|
+
- `SECURITY.md` — vulnerability reporting policy
|
|
82
|
+
- `CONTRIBUTING.md` — contribution guide
|
|
83
|
+
- `LICENSE` — MIT
|
|
84
|
+
|
|
85
|
+
### Changed
|
|
86
|
+
- `dist/` removed from version control and added to `.gitignore`
|
|
87
|
+
- `package.json` updated with `files`, `repository`, `engines`, `publishConfig` for npm publish readiness
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
[Unreleased]: https://github.com/vannseavlong/longcelot-sheet-staging/compare/v0.1.5...HEAD
|
|
92
|
+
[0.1.5]: https://github.com/vannseavlong/longcelot-sheet-staging/compare/v0.1.0...v0.1.5
|
|
93
|
+
[0.1.0]: https://github.com/vannseavlong/longcelot-sheet-staging/releases/tag/v0.1.0
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/vannseavlong/longcelot-sheet-staging/actions/workflows/ci.yml)
|
|
4
4
|
[](https://www.npmjs.com/package/longcelot-sheet-db)
|
|
5
|
+
[](https://www.npmjs.com/package/longcelot-sheet-db)
|
|
5
6
|
[](LICENSE)
|
|
6
7
|
|
|
7
8
|
**Google Sheets-backed Staging Database for Node.js**
|
|
@@ -32,15 +33,33 @@ Instead of running MySQL, PostgreSQL, or MongoDB for staging:
|
|
|
32
33
|
### Installation
|
|
33
34
|
|
|
34
35
|
```bash
|
|
36
|
+
# npm
|
|
35
37
|
npm install longcelot-sheet-db
|
|
36
|
-
|
|
38
|
+
|
|
39
|
+
# pnpm
|
|
37
40
|
pnpm add longcelot-sheet-db
|
|
41
|
+
|
|
42
|
+
# yarn
|
|
43
|
+
yarn add longcelot-sheet-db
|
|
44
|
+
|
|
45
|
+
# bun
|
|
46
|
+
bun add longcelot-sheet-db
|
|
38
47
|
```
|
|
39
48
|
|
|
40
49
|
### Initialize Project
|
|
41
50
|
|
|
42
51
|
```bash
|
|
43
|
-
|
|
52
|
+
# npm
|
|
53
|
+
npx sheet-db init
|
|
54
|
+
|
|
55
|
+
# pnpm
|
|
56
|
+
pnpm dlx sheet-db init
|
|
57
|
+
|
|
58
|
+
# yarn
|
|
59
|
+
yarn dlx sheet-db init
|
|
60
|
+
|
|
61
|
+
# bun
|
|
62
|
+
bunx sheet-db init
|
|
44
63
|
```
|
|
45
64
|
|
|
46
65
|
This creates:
|
|
@@ -48,6 +67,28 @@ This creates:
|
|
|
48
67
|
- `.env` - Environment variables
|
|
49
68
|
- `schemas/` - Schema directory
|
|
50
69
|
|
|
70
|
+
### Set Up Google OAuth
|
|
71
|
+
|
|
72
|
+
This package **requires Google OAuth2** to function — there is no way to skip it. OAuth is used for the backend to communicate with Google Sheets API.
|
|
73
|
+
|
|
74
|
+
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
|
|
75
|
+
2. Create a project and enable Google Sheets API and Google Drive API
|
|
76
|
+
3. Create OAuth 2.0 credentials (Client ID and Client Secret)
|
|
77
|
+
4. Set redirect URI (e.g., `http://localhost:3000/auth/callback`)
|
|
78
|
+
5. Add your credentials to `.env`:
|
|
79
|
+
|
|
80
|
+
```env
|
|
81
|
+
GOOGLE_CLIENT_ID=your_client_id
|
|
82
|
+
GOOGLE_CLIENT_SECRET=your_client_secret
|
|
83
|
+
GOOGLE_REDIRECT_URI=http://localhost:3000/auth/callback
|
|
84
|
+
ADMIN_SHEET_ID=your_admin_sheet_id
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**What if you have your own authentication?**
|
|
88
|
+
- OAuth is strictly for **backend-to-Google-Sheets** communication
|
|
89
|
+
- Your app's existing authentication (JWT, sessions, etc.) remains untouched
|
|
90
|
+
- You map your user identity to sheet-db context (see "Integrating into an Existing Project" below)
|
|
91
|
+
|
|
51
92
|
### Define a Schema
|
|
52
93
|
|
|
53
94
|
```typescript
|
|
@@ -187,12 +228,72 @@ Permissions are enforced automatically:
|
|
|
187
228
|
- Admin can access admin tables
|
|
188
229
|
- Cross-actor access is blocked
|
|
189
230
|
|
|
231
|
+
### Integrating into an Existing Project
|
|
232
|
+
If you already have a working backend (e.g., Express, NestJS), you can safely inject `longcelot-sheet-db` without ripping out your framework:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# 1. Add the package
|
|
236
|
+
pnpm add longcelot-sheet-db
|
|
237
|
+
|
|
238
|
+
# 2. Initialize project (creates config and schemas directory)
|
|
239
|
+
npx sheet-db init
|
|
240
|
+
|
|
241
|
+
# 3. Update your .env with Google OAuth credentials
|
|
242
|
+
|
|
243
|
+
# 4. Define your schemas in schemas/ directory
|
|
244
|
+
|
|
245
|
+
# 5. Sync schemas to Google Sheets
|
|
246
|
+
npx sheet-db sync
|
|
247
|
+
|
|
248
|
+
# 6. Use in your backend code
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**How it works with your existing auth**:
|
|
252
|
+
- Your app continues to use your existing authentication (JWT, sessions, cookies)
|
|
253
|
+
- When you need to access data, map your authenticated user to sheet-db context:
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
// Your Express/NestJS route handler
|
|
257
|
+
app.get('/bookings', async (req, res) => {
|
|
258
|
+
// Your existing auth provides user info
|
|
259
|
+
const developerUser = req.user; // From your JWT/session
|
|
260
|
+
|
|
261
|
+
// Map to sheet-db context
|
|
262
|
+
const userContext = adapter.withContext({
|
|
263
|
+
userId: developerUser.id, // Your app's user ID
|
|
264
|
+
role: developerUser.role, // 'student', 'teacher', etc.
|
|
265
|
+
actorSheetId: developerUser.sheetId, // From sheet-db user registry
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
const bookings = await userContext.table('bookings').findMany();
|
|
269
|
+
res.json(bookings);
|
|
270
|
+
});
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Why do we need `user_id` if we have `sheet_id`?
|
|
274
|
+
|
|
275
|
+
The `sheet_id` dictates the **physical storage location** on Google Drive — it exists only in the sheet-db world. When you eventually graduate from Google Sheets to a production SQL database (MySQL, PostgreSQL), the `sheet_id` goes away entirely.
|
|
276
|
+
|
|
277
|
+
The `user_id` dictates the **logical domain identity** — it persists across all databases. This is your app's true primary key that ties your entire system together.
|
|
278
|
+
|
|
279
|
+
| Field | Purpose | Persists after migration |
|
|
280
|
+
|-------|---------|--------------------------|
|
|
281
|
+
| `sheet_id` | Physical location in Google Drive | No — Google Sheets only |
|
|
282
|
+
| `user_id` | Logical user identity | Yes — becomes PK in SQL |
|
|
283
|
+
|
|
284
|
+
**Migration example**: When you export to Prisma, `user_id` becomes your primary key, while `sheet_id` is simply not included in the export.
|
|
285
|
+
|
|
190
286
|
## 🛠️ CLI Commands
|
|
191
287
|
|
|
288
|
+
> All commands can be run with `npx`, `pnpm dlx`, `yarn dlx`, or `bunx` — or directly as `sheet-db <command>` if installed globally.
|
|
289
|
+
|
|
192
290
|
### Initialize Project
|
|
193
291
|
|
|
194
292
|
```bash
|
|
195
|
-
|
|
293
|
+
npx sheet-db init
|
|
294
|
+
# pnpm dlx sheet-db init
|
|
295
|
+
# yarn dlx sheet-db init
|
|
296
|
+
# bunx sheet-db init
|
|
196
297
|
```
|
|
197
298
|
|
|
198
299
|
Creates project structure and configuration files.
|
|
@@ -200,7 +301,10 @@ Creates project structure and configuration files.
|
|
|
200
301
|
### Generate Schema
|
|
201
302
|
|
|
202
303
|
```bash
|
|
203
|
-
|
|
304
|
+
npx sheet-db generate bookings
|
|
305
|
+
# pnpm dlx sheet-db generate bookings
|
|
306
|
+
# yarn dlx sheet-db generate bookings
|
|
307
|
+
# bunx sheet-db generate bookings
|
|
204
308
|
```
|
|
205
309
|
|
|
206
310
|
Interactive schema generator with prompts for columns and types.
|
|
@@ -208,7 +312,10 @@ Interactive schema generator with prompts for columns and types.
|
|
|
208
312
|
### Sync Schemas
|
|
209
313
|
|
|
210
314
|
```bash
|
|
211
|
-
|
|
315
|
+
npx sheet-db sync
|
|
316
|
+
# pnpm dlx sheet-db sync
|
|
317
|
+
# yarn dlx sheet-db sync
|
|
318
|
+
# bunx sheet-db sync
|
|
212
319
|
```
|
|
213
320
|
|
|
214
321
|
Creates missing sheets and adds missing columns (never deletes data).
|
|
@@ -216,7 +323,10 @@ Creates missing sheets and adds missing columns (never deletes data).
|
|
|
216
323
|
### Validate Schemas
|
|
217
324
|
|
|
218
325
|
```bash
|
|
219
|
-
|
|
326
|
+
npx sheet-db validate
|
|
327
|
+
# pnpm dlx sheet-db validate
|
|
328
|
+
# yarn dlx sheet-db validate
|
|
329
|
+
# bunx sheet-db validate
|
|
220
330
|
```
|
|
221
331
|
|
|
222
332
|
Checks for:
|
|
@@ -225,6 +335,39 @@ Checks for:
|
|
|
225
335
|
- Unknown actors
|
|
226
336
|
- Missing required fields
|
|
227
337
|
|
|
338
|
+
### Seed Data
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
npx sheet-db seed
|
|
342
|
+
# pnpm dlx sheet-db seed
|
|
343
|
+
# yarn dlx sheet-db seed
|
|
344
|
+
# bunx sheet-db seed
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Load initial or test data into your sheets.
|
|
348
|
+
|
|
349
|
+
### Doctor
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
npx sheet-db doctor
|
|
353
|
+
# pnpm dlx sheet-db doctor
|
|
354
|
+
# yarn dlx sheet-db doctor
|
|
355
|
+
# bunx sheet-db doctor
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
Runs environment and configuration health checks.
|
|
359
|
+
|
|
360
|
+
### Status
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
npx sheet-db status
|
|
364
|
+
# pnpm dlx sheet-db status
|
|
365
|
+
# yarn dlx sheet-db status
|
|
366
|
+
# bunx sheet-db status
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
Shows all registered tables, actors, and their sheet IDs.
|
|
370
|
+
|
|
228
371
|
## 🔐 Authentication
|
|
229
372
|
|
|
230
373
|
### Google OAuth
|
|
@@ -291,6 +434,18 @@ When you're ready for production:
|
|
|
291
434
|
3. Update CRUD calls (minimal changes)
|
|
292
435
|
4. No logic trapped in Sheets
|
|
293
436
|
|
|
437
|
+
We are building this adapter with a strict schema constraint so that graduating to production is effortless. By keeping logic in JS and using standard Data Types, your TS definitions can be directly ported over to a Prisma `schema.prisma` file later.
|
|
438
|
+
|
|
439
|
+
**Upcoming CLI for migration**:
|
|
440
|
+
|
|
441
|
+
```bash
|
|
442
|
+
# Export schemas to Prisma (coming soon)
|
|
443
|
+
npx sheet-db export --prisma --output ./prisma
|
|
444
|
+
|
|
445
|
+
# Export schemas to SQL DDL (coming soon)
|
|
446
|
+
npx sheet-db export --sql --output ./migrations
|
|
447
|
+
```
|
|
448
|
+
|
|
294
449
|
```typescript
|
|
295
450
|
// Development (Sheets)
|
|
296
451
|
const adapter = createSheetAdapter({ ... });
|
|
@@ -299,6 +454,12 @@ const adapter = createSheetAdapter({ ... });
|
|
|
299
454
|
const adapter = createSQLAdapter({ ... });
|
|
300
455
|
```
|
|
301
456
|
|
|
457
|
+
**Data migration workflow**:
|
|
458
|
+
1. Export your schemas using `sheet-db export` (coming soon)
|
|
459
|
+
2. Fetch all data from Sheets using the adapter: `await adapter.table('x').findMany()`
|
|
460
|
+
3. Insert data into your production database
|
|
461
|
+
4. Swap the adapter in your code
|
|
462
|
+
|
|
302
463
|
## ⚡ Performance
|
|
303
464
|
|
|
304
465
|
- Suitable for **hundreds to low thousands** of rows
|
package/dist/adapter/crud.d.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { SheetClient } from './sheetClient';
|
|
2
|
-
import { TableSchema, FindOptions, UpdateOptions, DeleteOptions } from '../schema/types';
|
|
2
|
+
import { TableSchema, FindOptions, UpdateOptions, DeleteOptions, CreateOptions, FKResolver } from '../schema/types';
|
|
3
3
|
export declare class CRUDOperations {
|
|
4
4
|
private client;
|
|
5
5
|
private spreadsheetId;
|
|
6
6
|
private schema;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
private fkResolver?;
|
|
8
|
+
constructor(client: SheetClient, spreadsheetId: string, schema: TableSchema, fkResolver?: FKResolver | undefined);
|
|
9
|
+
create(data: Record<string, any>, options?: CreateOptions): Promise<Record<string, any>>;
|
|
9
10
|
findMany(options?: FindOptions): Promise<Record<string, any>[]>;
|
|
10
11
|
findOne(options?: FindOptions): Promise<Record<string, any> | null>;
|
|
11
12
|
update(options: UpdateOptions): Promise<number>;
|
|
12
13
|
delete(options: DeleteOptions): Promise<number>;
|
|
13
14
|
private getHeaders;
|
|
14
15
|
private validateAndApplyDefaults;
|
|
16
|
+
private validateForeignKeys;
|
|
15
17
|
private serializeValue;
|
|
16
18
|
private deserializeRow;
|
|
17
19
|
private checkUniqueness;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/adapter/crud.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/adapter/crud.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACX,MAAM,iBAAiB,CAAC;AAGzB,qBAAa,cAAc;IAEvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;gBAHX,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,WAAW,EACnB,UAAU,CAAC,EAAE,UAAU,YAAA;IAG3B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAmC5F,QAAQ,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAmCnE,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAKvE,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA2C/C,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;YA8BvC,UAAU;IAYxB,OAAO,CAAC,wBAAwB;YAiDlB,mBAAmB;IAmBjC,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;YAuCR,eAAe;IAgB7B,OAAO,CAAC,YAAY;CAQrB"}
|
package/dist/adapter/crud.js
CHANGED
|
@@ -4,15 +4,27 @@ exports.CRUDOperations = void 0;
|
|
|
4
4
|
const nanoid_1 = require("nanoid");
|
|
5
5
|
const ValidationError_1 = require("../errors/ValidationError");
|
|
6
6
|
class CRUDOperations {
|
|
7
|
-
constructor(client, spreadsheetId, schema) {
|
|
7
|
+
constructor(client, spreadsheetId, schema, fkResolver) {
|
|
8
8
|
this.client = client;
|
|
9
9
|
this.spreadsheetId = spreadsheetId;
|
|
10
10
|
this.schema = schema;
|
|
11
|
+
this.fkResolver = fkResolver;
|
|
11
12
|
}
|
|
12
|
-
async create(data) {
|
|
13
|
+
async create(data, options = {}) {
|
|
14
|
+
let incoming = { ...data };
|
|
15
|
+
// Auto-generate string PK if not supplied
|
|
16
|
+
if (this.schema.pkColumn) {
|
|
17
|
+
const pkDef = this.schema.columns[this.schema.pkColumn];
|
|
18
|
+
if (pkDef?.type === 'string' && (incoming[this.schema.pkColumn] === undefined || incoming[this.schema.pkColumn] === null)) {
|
|
19
|
+
incoming[this.schema.pkColumn] = (0, nanoid_1.nanoid)();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
13
22
|
// Generate _id before validation so the required-_id check always passes
|
|
14
|
-
const dataWithId = { _id: (0, nanoid_1.nanoid)(), ...
|
|
23
|
+
const dataWithId = { _id: (0, nanoid_1.nanoid)(), ...incoming };
|
|
15
24
|
const validated = this.validateAndApplyDefaults(dataWithId, 'create');
|
|
25
|
+
if (!options.skipFKValidation) {
|
|
26
|
+
await this.validateForeignKeys(validated);
|
|
27
|
+
}
|
|
16
28
|
await this.checkUniqueness(validated, null);
|
|
17
29
|
if (this.schema.timestamps) {
|
|
18
30
|
const now = new Date().toISOString();
|
|
@@ -65,7 +77,15 @@ class CRUDOperations {
|
|
|
65
77
|
for (let i = 0; i < dataRows.length; i++) {
|
|
66
78
|
const item = this.deserializeRow(headers, dataRows[i]);
|
|
67
79
|
if (this.matchesWhere(item, options.where)) {
|
|
68
|
-
|
|
80
|
+
// Strip pkColumn silently — PK is readonly on update
|
|
81
|
+
const updateData = { ...options.data };
|
|
82
|
+
if (this.schema.pkColumn && this.schema.pkColumn in updateData) {
|
|
83
|
+
delete updateData[this.schema.pkColumn];
|
|
84
|
+
}
|
|
85
|
+
const validated = this.validateAndApplyDefaults(updateData, 'update');
|
|
86
|
+
if (!options.skipFKValidation) {
|
|
87
|
+
await this.validateForeignKeys(validated);
|
|
88
|
+
}
|
|
69
89
|
await this.checkUniqueness(validated, item._id);
|
|
70
90
|
if (this.schema.timestamps) {
|
|
71
91
|
validated._updated_at = new Date().toISOString();
|
|
@@ -83,6 +103,7 @@ class CRUDOperations {
|
|
|
83
103
|
return await this.update({
|
|
84
104
|
where: options.where,
|
|
85
105
|
data: { _deleted_at: new Date().toISOString() },
|
|
106
|
+
skipFKValidation: true,
|
|
86
107
|
});
|
|
87
108
|
}
|
|
88
109
|
const rows = await this.client.getAllRows(this.spreadsheetId, this.schema.name);
|
|
@@ -150,6 +171,22 @@ class CRUDOperations {
|
|
|
150
171
|
}
|
|
151
172
|
return result;
|
|
152
173
|
}
|
|
174
|
+
async validateForeignKeys(data) {
|
|
175
|
+
if (!this.fkResolver)
|
|
176
|
+
return;
|
|
177
|
+
for (const [columnName, column] of Object.entries(this.schema.columns)) {
|
|
178
|
+
if (!column.ref)
|
|
179
|
+
continue;
|
|
180
|
+
const value = data[columnName];
|
|
181
|
+
if (value === undefined || value === null)
|
|
182
|
+
continue;
|
|
183
|
+
const [refTable, refColumn] = column.ref.split('.');
|
|
184
|
+
const exists = await this.fkResolver(refTable, refColumn, value);
|
|
185
|
+
if (!exists) {
|
|
186
|
+
throw new ValidationError_1.ValidationError(`FK violation: ${refTable}.${refColumn} '${value}' does not exist`, columnName);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
153
190
|
serializeValue(value) {
|
|
154
191
|
if (value === null || value === undefined)
|
|
155
192
|
return '';
|
package/dist/adapter/crud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/adapter/crud.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/adapter/crud.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,8 @@ export declare class SheetAdapter {
|
|
|
22
22
|
table(tableName: string): CRUDOperations;
|
|
23
23
|
createUserSheet(userId: string, role: string, email: string): Promise<string>;
|
|
24
24
|
syncSchema(schema: TableSchema): Promise<void>;
|
|
25
|
+
private createFKResolver;
|
|
26
|
+
private detectCircularRefs;
|
|
25
27
|
private resolveSpreadsheetId;
|
|
26
28
|
private hasPermission;
|
|
27
29
|
private sheetExists;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheetAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/sheetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"sheetAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/sheetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAc,MAAM,iBAAiB,CAAC;AAIvE,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,GAAG,CAAC;CACb;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,OAAO,CAAC,CAAc;gBAElB,MAAM,EAAE,kBAAkB;IAKtC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKzC,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAI7C,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,YAAY;IAM/C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAiBlC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B7E,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpD,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,aAAa;YAoBP,WAAW;IAMzB,SAAS,IAAI,WAAW;CAGzB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAE3E"}
|
|
@@ -14,6 +14,7 @@ class SheetAdapter {
|
|
|
14
14
|
}
|
|
15
15
|
registerSchema(schema) {
|
|
16
16
|
this.schemas.set(schema.name, schema);
|
|
17
|
+
this.detectCircularRefs();
|
|
17
18
|
}
|
|
18
19
|
registerSchemas(schemas) {
|
|
19
20
|
schemas.forEach((schema) => this.registerSchema(schema));
|
|
@@ -32,7 +33,8 @@ class SheetAdapter {
|
|
|
32
33
|
if (!this.hasPermission(schema)) {
|
|
33
34
|
throw new PermissionError_1.PermissionError(`User does not have permission to access ${tableName}`, this.context?.role);
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
+
const fkResolver = this.createFKResolver();
|
|
37
|
+
return new crud_1.CRUDOperations(this.client, spreadsheetId, schema, fkResolver);
|
|
36
38
|
}
|
|
37
39
|
async createUserSheet(userId, role, email) {
|
|
38
40
|
const sheetId = await this.client.createSpreadsheet(`${role}-${userId}`);
|
|
@@ -70,6 +72,57 @@ class SheetAdapter {
|
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
}
|
|
75
|
+
createFKResolver() {
|
|
76
|
+
return async (tableName, columnName, value) => {
|
|
77
|
+
const refSchema = this.schemas.get(tableName);
|
|
78
|
+
if (!refSchema) {
|
|
79
|
+
throw new SchemaError_1.SchemaError(`Referenced table '${tableName}' is not registered`, tableName);
|
|
80
|
+
}
|
|
81
|
+
const refSpreadsheetId = this.resolveSpreadsheetId(refSchema);
|
|
82
|
+
const refCrud = new crud_1.CRUDOperations(this.client, refSpreadsheetId, refSchema);
|
|
83
|
+
const row = await refCrud.findOne({ where: { [columnName]: value } });
|
|
84
|
+
return row !== null;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
detectCircularRefs() {
|
|
88
|
+
const adj = new Map();
|
|
89
|
+
for (const [name, schema] of this.schemas) {
|
|
90
|
+
const deps = new Set();
|
|
91
|
+
for (const col of Object.values(schema.columns)) {
|
|
92
|
+
if (col.ref) {
|
|
93
|
+
const [refTable] = col.ref.split('.');
|
|
94
|
+
deps.add(refTable);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
adj.set(name, deps);
|
|
98
|
+
}
|
|
99
|
+
const visited = new Set();
|
|
100
|
+
const inStack = new Set();
|
|
101
|
+
const dfs = (node) => {
|
|
102
|
+
visited.add(node);
|
|
103
|
+
inStack.add(node);
|
|
104
|
+
for (const neighbor of adj.get(node) ?? new Set()) {
|
|
105
|
+
if (!adj.has(neighbor))
|
|
106
|
+
continue;
|
|
107
|
+
if (!visited.has(neighbor)) {
|
|
108
|
+
if (dfs(neighbor))
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
else if (inStack.has(neighbor)) {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
inStack.delete(node);
|
|
116
|
+
return false;
|
|
117
|
+
};
|
|
118
|
+
for (const name of adj.keys()) {
|
|
119
|
+
if (!visited.has(name)) {
|
|
120
|
+
if (dfs(name)) {
|
|
121
|
+
throw new SchemaError_1.SchemaError('Circular reference detected in schema definitions');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
73
126
|
resolveSpreadsheetId(schema) {
|
|
74
127
|
if (schema.actor === 'admin') {
|
|
75
128
|
return this.adminSheetId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheetAdapter.js","sourceRoot":"","sources":["../../src/adapter/sheetAdapter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sheetAdapter.js","sourceRoot":"","sources":["../../src/adapter/sheetAdapter.ts"],"names":[],"mappings":";;;AA2MA,gDAEC;AA7MD,+CAA4C;AAC5C,iCAAwC;AAExC,+DAA4D;AAC5D,uDAAoD;AAYpD,MAAa,YAAY;IAMvB,YAAY,MAA0B;QAH9B,YAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;QAIpD,IAAI,CAAC,MAAM,GAAG,IAAI,yBAAW,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAC1C,CAAC;IAED,cAAc,CAAC,MAAmB;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,eAAe,CAAC,OAAsB;QACpC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,WAAW,CAAC,OAAoB;QAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,SAAiB;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,yBAAW,CAAC,SAAS,SAAS,oBAAoB,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAExD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,iCAAe,CAAC,2CAA2C,SAAS,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxG,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3C,OAAO,IAAI,qBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,IAAY,EAAE,KAAa;QAC/D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;QAEzE,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAkB,EAAE,QAAQ,CAAC,CAAC;QACnF,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE1D,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QAErF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,UAAU,CAAC,MAAM,CAAC;YACtB,OAAO,EAAE,MAAM;YACf,IAAI;YACJ,KAAK;YACL,cAAc,EAAE,OAAO;YACvB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAmB;QAClC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEnD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAEtE,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACtE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,OAAO,KAAK,EAAE,SAAiB,EAAE,UAAkB,EAAE,KAAc,EAAoB,EAAE;YACvF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,yBAAW,CAAC,qBAAqB,SAAS,qBAAqB,EAAE,SAAS,CAAC,CAAC;YACxF,CAAC;YACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,IAAI,qBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;YAC7E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACtE,OAAO,GAAG,KAAK,IAAI,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC;IAEO,kBAAkB;QACxB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChD,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAW,EAAE;YACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAElB,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;gBAClD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,IAAI,GAAG,CAAC,QAAQ,CAAC;wBAAE,OAAO,IAAI,CAAC;gBACjC,CAAC;qBAAM,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACd,MAAM,IAAI,yBAAW,CAAC,mDAAmD,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,MAAmB;QAC9C,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACnC,CAAC;QAED,MAAM,IAAI,iCAAe,CAAC,wCAAwC,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAEO,aAAa,CAAC,MAAmB;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAmB;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAClE,OAAO,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAzLD,oCAyLC;AAED,SAAgB,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAsHD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBAmEzD"}
|