@rawsql-ts/sql-contract-zod 0.1.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 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,387 @@
1
+ # @rawsql-ts/sql-contract-zod
2
+
3
+ ## Overview
4
+
5
+ @rawsql-ts/sql-contract-zod maps SQL results to DTOs and validates them with Zod.
6
+
7
+ Read (R) looks like this:
8
+
9
+ ```ts
10
+ // Create a reader (defaults to the appLike preset so snake_case -> camelCase works out of the box).
11
+ const reader = createReader(executor)
12
+
13
+ const customer = await reader.zod(CustomerSchema).one(
14
+ 'SELECT customer_id, customer_name FROM customers WHERE customer_id = $1',
15
+ [42],
16
+ )
17
+ ```
18
+
19
+ Create (C) / Update (U) / Delete (D) look like this:
20
+
21
+ ```ts
22
+ // Create a writer for executing simple INSERT / UPDATE / DELETE statements.
23
+ const writer = createWriter(executor)
24
+
25
+ await writer.insert('customers', { name: 'alice', status: 'active' })
26
+ await writer.update('customers', { status: 'active' }, { id: 42 })
27
+ await writer.remove('customers', { id: 17 })
28
+ ```
29
+
30
+ ---
31
+
32
+ ## Getting Started
33
+
34
+ ### Installation
35
+
36
+ ```sh
37
+ pnpm add @rawsql-ts/sql-contract-zod zod
38
+ ```
39
+
40
+ @rawsql-ts/sql-contract-zod depends on `@rawsql-ts/sql-contract` for the mapper helper primitives and adds runtime validation through Zod.
41
+
42
+ ### Minimal CRUD sample
43
+
44
+ ```ts
45
+ import { Pool } from 'pg'
46
+ import { createWriter } from '@rawsql-ts/sql-contract/writer'
47
+ import { createReader, type QueryParams } from '@rawsql-ts/sql-contract/mapper'
48
+ import { zNumberFromString, zDateFromString } from '@rawsql-ts/sql-contract-zod'
49
+ import { z } from 'zod'
50
+
51
+ const CustomerSchema = z.object({
52
+ // appLike-style conventions map snake_case columns to camelCase keys.
53
+ customerId: z.number(),
54
+ customerName: z.string(),
55
+ customerStatus: z.string(),
56
+ balance: zNumberFromString,
57
+ joinedAt: zDateFromString,
58
+ })
59
+
60
+ async function main() {
61
+ // Define these once for the whole application.
62
+ const pool = new Pool({ connectionString: process.env.DATABASE_URL })
63
+
64
+ const executor = async (sql: string, params: QueryParams) => {
65
+ const result = await pool.query(sql, params as unknown[])
66
+ return result.rows
67
+ }
68
+
69
+ // Create a reader with common conventions (customizable via presets).
70
+ const reader = createReader(executor)
71
+
72
+ // Create a writer for executing simple INSERT / UPDATE / DELETE statements.
73
+ const writer = createWriter(executor)
74
+
75
+ const sql = `
76
+ SELECT
77
+ customer_id,
78
+ customer_name,
79
+ customer_status,
80
+ balance,
81
+ joined_date
82
+ FROM customers
83
+ WHERE customer_id = $1
84
+ `
85
+
86
+ const customer = await reader.zod(CustomerSchema).one(sql, [42])
87
+
88
+ await writer.insert('customers', { name: 'alice', status: 'pending' })
89
+ await writer.update('customers', { status: 'active' }, { id: 42 })
90
+ await writer.remove('customers', { id: 17 })
91
+
92
+ await pool.end()
93
+ void customer
94
+ }
95
+
96
+ void main()
97
+ ```
98
+
99
+ This snippet shows a typical setup: define an executor, create a reader and writer, validate DTOs with Zod, and execute simple INSERT/UPDATE/DELETE statements.
100
+
101
+ ---
102
+
103
+ ## Features
104
+
105
+ * Runtime dependency on Zod for validation helpers (no other runtime packages are required)
106
+ * Zero DBMS dependency
107
+ (tested with PostgreSQL, MySQL, SQL Server, and SQLite)
108
+ * Zero database client dependency
109
+ (works with any client that executes SQL and returns rows)
110
+ * Zero framework and ORM dependency
111
+ (fits into any application architecture that uses raw SQL)
112
+ * No schema models or metadata required
113
+ (tables, columns, and relationships are defined only in SQL)
114
+ * Result mapping helpers that operate on any SQL returning rows
115
+ (including SELECT queries and CUD statements with RETURNING or aggregate results)
116
+ * Simple builders for common INSERT, UPDATE, and DELETE cases, without query inference
117
+ * Zod-aware reader (`reader.zod`) that validates mapped DTOs with preset-based conventions or an explicit RowMapping
118
+ * Optional coercion helpers (`zNumberFromString`, `zBigIntFromString`, `zDateFromString`)
119
+ * Readers that accept the same `RowMapping` instances your mapper already uses
120
+ * `createReader(executor)` applies `mapperPresets.appLike()` by default, so snake_case columns work without extra setup
121
+ * Params normalization: omitting params is treated the same as passing `[]`
122
+ * Throws the original `ZodError`, keeping logging and monitoring layers intact
123
+
124
+ ---
125
+
126
+ ## Philosophy
127
+
128
+ ### SQL as Specification
129
+
130
+ How data is retrieved, which fields are selected, how values are transformed, and which conditions are applied are all domain requirements.
131
+
132
+ SQL is the most precise and unambiguous language for expressing these requirements.
133
+ Natural language is not.
134
+
135
+ ### SQL as Fast Feedback
136
+
137
+ Effective software development depends on rapid iteration across design, implementation, and verification.
138
+
139
+ Because SQL is executable and directly verifiable, it provides fast and reliable feedback.
140
+ DSLs do not.
141
+
142
+ ---
143
+
144
+ ## Direction
145
+
146
+ ### Mechanical Work in Read Queries
147
+
148
+ When working with raw SQL, certain mechanical tasks are unavoidable.
149
+ Mapping returned rows into application-level DTOs is repetitive, straightforward, and not part of the domain logic.
150
+
151
+ This library focuses on reducing that burden by providing explicit result mapping,
152
+ followed by optional DTO validation using Zod after mapping completes.
153
+
154
+ ### Mechanical Work in Write Queries
155
+
156
+ Write operations such as INSERT, UPDATE, and DELETE usually carry less domain significance than SELECT queries.
157
+ They tend to be short, predictable, and mechanically structured.
158
+
159
+ This library provides minimal builder helpers for common write cases only,
160
+ and intentionally goes no further than that.
161
+
162
+ ---
163
+
164
+ ## Executor: DBMS / Driver Integration
165
+
166
+ `sql-contract-zod` is designed as a reusable, DBMS-agnostic library.
167
+ To integrate it with a specific database or driver, you define a small executor function.
168
+
169
+ An executor receives a SQL string and parameters, executes them using your DB driver,
170
+ and returns the resulting rows as `Row[]`.
171
+
172
+ ```ts
173
+ const executor = async (sql: string, params: QueryParams) => {
174
+ const result = await pool.query(sql, params as unknown[])
175
+ return result.rows
176
+ }
177
+ ```
178
+
179
+ This function is the single integration point between `sql-contract-zod` and the DBMS.
180
+ All database- and driver-specific concerns-connection pooling, transactions,
181
+ retries, and error handling-belong entirely inside the executor.
182
+
183
+ ### Parameters
184
+
185
+ The `params` argument uses the exported `QueryParams` type.
186
+ It supports both positional arrays and named records.
187
+
188
+ Reader methods always supply a params array (defaulting to `[]`),
189
+ so executors may safely treat `params` as `unknown[]` without defensive checks.
190
+
191
+ ---
192
+
193
+ ## Mapper: Query Result Mapping (R)
194
+
195
+ The mapper is responsible for projecting query results (`Row[]`) into DTOs.
196
+
197
+ In a typical application, a mapper is created once and reused across queries.
198
+ It defines application-wide projection behavior,
199
+ while individual queries decide the DTO shape.
200
+
201
+ The mapper operates purely on returned rows and never inspects SQL,
202
+ parameters, or execution behavior.
203
+ To keep mapping predictable, it does not guess column semantics or relationships.
204
+ It focuses on structural projection and column name normalization only.
205
+ Value coercion is intentionally handled by Zod.
206
+
207
+ ```ts
208
+ import { createReader, mapperPresets } from '@rawsql-ts/sql-contract/mapper'
209
+
210
+ const reader = createReader(executor)
211
+ const readerWithOverrides = createReader(executor, mapperPresets.safe())
212
+ ```
213
+
214
+ ---
215
+
216
+ ### Query result cardinality: `one` and `list`
217
+
218
+ Reader methods distinguish between queries that return a single row
219
+ and those that return multiple rows.
220
+
221
+ ```ts
222
+ const row = await reader.zod(Schema).one(sql, params)
223
+ // row is DTO
224
+
225
+ const rows = await reader.zod(Schema).list(sql, params)
226
+ // rows is DTO[]
227
+ ```
228
+
229
+ `one(...)` enforces an exact cardinality contract:
230
+
231
+ - **0 rows** -> throws an error
232
+ - **1 row** -> returns a DTO
233
+ - **n rows (n >= 2)** -> throws an error
234
+
235
+ `list(...)` performs no cardinality checks:
236
+
237
+ - **0 rows** -> returns an empty array `[]`
238
+ - **1 row** -> returns an array with one DTO
239
+ - **n rows (n >= 2)** -> returns an array of `n` DTOs
240
+
241
+ When using `reader.zod(...)`, Zod validation is performed first,
242
+ and the cardinality check is applied afterward.
243
+
244
+ ---
245
+
246
+ ### Zod helpers overview
247
+
248
+ | Helper | Description |
249
+ | ------ | ----------- |
250
+ | `reader.zod` | Validates mapped DTOs with Zod before returning them |
251
+ | `parseRows` / `parseRow` | Validate DTOs obtained from other sources |
252
+ | `zNumberFromString` | Accepts numbers or numeric strings |
253
+ | `zBigIntFromString` | Accepts bigints or strings |
254
+ | `zDateFromString` | Accepts `Date` objects or ISO strings |
255
+
256
+ All helpers propagate the original `ZodError`.
257
+
258
+ ---
259
+
260
+ ### Duck-typed mapping (no model definitions)
261
+
262
+ For lightweight or localized use cases,
263
+ the reader supports duck-typed projections without defining schemas.
264
+
265
+ ```ts
266
+ const rows = await reader.list<{ customerId: number }>(
267
+ 'select customer_id from customers limit 1',
268
+ )
269
+ ```
270
+
271
+ You can also omit the DTO type:
272
+
273
+ ```ts
274
+ const rows = await reader.list(
275
+ 'select customer_id from customers limit 1',
276
+ )
277
+ ```
278
+
279
+ ---
280
+
281
+ ### Single DTO with Zod (recommended)
282
+
283
+ ```ts
284
+ import { z } from 'zod'
285
+
286
+ const CustomerSchema = z.object({
287
+ customerId: z.number(),
288
+ customerName: z.string(),
289
+ })
290
+
291
+ const sql = `
292
+ select
293
+ customer_id,
294
+ customer_name
295
+ from customers
296
+ where customer_id = $1
297
+ `
298
+
299
+ const row = await reader.zod(CustomerSchema).one(sql, [42])
300
+ ```
301
+
302
+ ---
303
+
304
+ ### Mapping to multiple models (joined rows)
305
+
306
+ You can map joined result sets into multiple related DTOs.
307
+ Relations are explicitly defined and never inferred.
308
+
309
+ ```ts
310
+ const customerMapping = rowMapping({
311
+ name: 'customer',
312
+ key: 'customerId',
313
+ })
314
+
315
+ const orderMapping = rowMapping({
316
+ name: 'order',
317
+ key: 'orderId',
318
+ }).belongsTo('customer', customerMapping, 'customerId')
319
+ ```
320
+
321
+ ```ts
322
+ const rows = await reader.zod(OrderSchema, orderMapping).list(sql, [42])
323
+ ```
324
+
325
+ In multi-model mappings, related DTOs are **interned by their key**.
326
+ If multiple rows reference the same key, the same related instance is reused.
327
+
328
+ ```ts
329
+ rows[0].customer === rows[1].customer // true (same customerId)
330
+ ```
331
+
332
+ Mutating related DTOs in place will affect all rows that reference them.
333
+
334
+ ---
335
+
336
+ ## Writer: emitting simple C / U / D statements
337
+
338
+ The writer helpers provide a small, opinionated DSL for common INSERT,
339
+ UPDATE, and DELETE statements.
340
+
341
+ At its core, the writer constructs `{ sql, params }`.
342
+ When bound to an executor, it also executes those statements.
343
+
344
+ ### Executing statements
345
+
346
+ ```ts
347
+ await writer.insert('projects', { name: 'Apollo', owner_id: 7 })
348
+ await writer.update('projects', { name: 'Apollo' }, { project_id: 1 })
349
+ await writer.remove('projects', { project_id: 1 })
350
+ ```
351
+
352
+ ### Building statements without execution
353
+
354
+ ```ts
355
+ const stmt = writer.build.insert('projects', { name: 'Apollo', owner_id: 7 })
356
+ ```
357
+
358
+ ---
359
+
360
+ ## CUD with RETURNING
361
+
362
+ When write statements return rows,
363
+ consume the result with a reader to map and validate DTOs.
364
+
365
+ ```ts
366
+ const stmt = writer.build.insert(
367
+ 'users',
368
+ { user_name: 'alice' },
369
+ { returning: ['user_id', 'user_name'] },
370
+ )
371
+
372
+ const row = await reader.zod(CreatedUserSchema).one(stmt.sql, stmt.params)
373
+ ```
374
+
375
+ ---
376
+
377
+ ## DBMS and driver differences
378
+
379
+ All DBMS- and driver-specific concerns live in the executor.
380
+ Both writer and mapper remain independent of these differences.
381
+
382
+ ---
383
+
384
+ ## Influences / Related Ideas
385
+
386
+ sql-contract-zod is inspired by minimal mapping libraries such as Dapper,
387
+ favoring explicit SQL and thin, predictable mapping layers.
@@ -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/zod@4.3.6/node_modules/zod/v4/core/json-schema.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/standard-schema.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/parse.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/regexes.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ar.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/az.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/be.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/bg.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ca.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/cs.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/da.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/de.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/en.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/eo.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/es.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fa.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fi.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fr.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fr-ca.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/he.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/hu.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/hy.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/id.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/is.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/it.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ja.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ka.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/kh.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/km.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ko.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/lt.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/mk.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ms.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/nl.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/no.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ota.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ps.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/pl.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/pt.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ru.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/sl.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/sv.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ta.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/th.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/tr.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ua.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/uk.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ur.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/uz.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/vi.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/zh-cn.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/zh-tw.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/yo.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/index.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/doc.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/api.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema-generator.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/index.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/errors.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/parse.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/schemas.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/checks.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/compat.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/iso.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/coerce.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/external.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/index.d.cts","../../sql-contract/dist/query-params.d.ts","../../sql-contract/dist/mapper/index.d.ts","../src/index.ts","../../../node_modules/.pnpm/@types+benchmark@2.1.5/node_modules/@types/benchmark/index.d.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/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":[[132,181],[132,178,181],[132,180,181],[181],[132,181,186,215],[132,181,182,187,192,200,212,223],[132,181,182,183,192,200],[127,128,129,132,181],[132,181,184,224],[132,181,185,186,193,201],[132,181,186,212,220],[132,181,187,189,192,200],[132,180,181,188],[132,181,189,190],[132,181,191,192],[132,180,181,192],[132,181,192,193,194,212,223],[132,181,192,193,194,207,212,215],[132,174,181,189,192,195,200,212,223],[132,181,192,193,195,196,200,212,220,223],[132,181,195,197,212,220,223],[130,131,132,133,134,135,136,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229],[132,181,192,198],[132,181,199,223],[132,181,189,192,200,212],[132,181,201],[132,181,202],[132,180,181,203],[132,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229],[132,181,205],[132,181,206],[132,181,192,207,208],[132,181,207,209,224,226],[132,181,192,212,213,215],[132,181,214,215],[132,181,212,213],[132,181,215],[132,181,216],[132,178,181,212,217],[132,181,192,218,219],[132,181,218,219],[132,181,186,200,212,220],[132,181,221],[132,181,200,222],[132,181,195,206,223],[132,181,186,224],[132,181,212,225],[132,181,199,226],[132,181,227],[132,174,181],[132,174,181,192,194,203,212,215,223,225,226,228],[132,181,212,229],[132,181,192,212,220,230,231,232,235,236,237],[132,181,237],[132,181,230,232,233,234],[132,181,230],[132,181,212,230,232],[132,146,150,181,223],[132,146,181,212,223],[132,141,181],[132,143,146,181,220,223],[132,181,200,220],[132,141,181,230],[132,143,146,181,200,223],[132,138,139,142,145,181,192,212,223],[132,146,153,181],[132,138,144,181],[132,146,167,168,181],[132,142,146,181,215,223,230],[132,167,181,230],[132,140,141,181,230],[132,146,181],[132,140,141,142,143,144,145,146,147,148,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,168,169,170,171,172,173,181],[132,146,161,181],[132,146,153,154,181],[132,144,146,154,155,181],[132,145,181],[132,138,141,146,181],[132,146,150,154,155,181],[132,150,181],[132,144,146,149,181,223],[132,138,143,146,153,181],[132,181,212],[132,141,146,167,181,228,230],[121,132,181],[112,132,181],[112,115,132,181],[107,110,112,113,114,115,116,117,118,119,120,132,181],[46,48,115,132,181],[112,113,132,181],[47,112,114,132,181],[48,50,52,53,54,55,132,181],[50,52,54,55,132,181],[50,52,54,132,181],[47,50,52,53,55,132,181],[46,48,49,50,51,52,53,54,55,56,57,107,108,109,110,111,132,181],[46,48,49,52,132,181],[48,49,52,132,181],[52,55,132,181],[46,47,49,50,51,53,54,55,132,181],[46,47,48,52,112,132,181],[52,53,54,55,132,181],[54,132,181],[58,59,60,61,62,63,64,65,66,67,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,99,100,101,102,103,104,105,106,132,181],[122,124,125,132,181],[123,132,181]],"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":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"82919acbb38870fcf5786ec1292f0f5afe490f9b3060123e48675831bd947192","impliedFormat":1},{"version":"e222701788ec77bd57c28facbbd142eadf5c749a74d586bc2f317db7e33544b1","impliedFormat":1},{"version":"09154713fae0ed7befacdad783e5bd1970c06fc41a5f866f7f933b96312ce764","impliedFormat":1},{"version":"8d67b13da77316a8a2fabc21d340866ddf8a4b99e76a6c951cc45189142df652","impliedFormat":1},{"version":"a91c8d28d10fee7fe717ddf3743f287b68770c813c98f796b6e38d5d164bd459","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"f6f827cd43e92685f194002d6b52a9408309cda1cec46fb7ca8489a95cbd2fd4","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"a270a1a893d1aee5a3c1c8c276cd2778aa970a2741ee2ccf29cc3210d7da80f5","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8926594ee895917e90701d8cbb5fdf77fc238b266ac540f929c7253f8ad6233d","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"ed8763205f02fb65e84eff7432155258df7f93b7d938f01785cb447d043d53f3","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"d4a5b1d2ff02c37643e18db302488cd64c342b00e2786e65caac4e12bda9219b","impliedFormat":1},{"version":"29f823cbe0166e10e7176a94afe609a24b9e5af3858628c541ff8ce1727023cd","impliedFormat":1},"12dc2a6c0ab83c0da3f87d95e354e38976fe192c9b0afb4183dc9559385ce585","e47b071b341110c4045230967474a45095072923028eeb03586ab7e4bbbf0429",{"version":"5797974352caf0ab35ccbcd5f90f867412446d942126543c42cb55ce3d479c18","signature":"f80a3fdd50e7c579df3f30e3b7aad95ac6edc243bfd690196578713d2393cb93"},{"version":"d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","impliedFormat":1},{"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":"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":[125],"options":{"composite":true,"declaration":true,"declarationDir":"./","esModuleInterop":true,"module":1,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":6,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[126,1],[178,2],[179,2],[180,3],[132,4],[181,5],[182,6],[183,7],[127,1],[130,8],[128,1],[129,1],[184,9],[185,10],[186,11],[187,12],[188,13],[189,14],[190,14],[191,15],[192,16],[193,17],[194,18],[133,1],[131,1],[195,19],[196,20],[197,21],[230,22],[198,23],[199,24],[200,25],[201,26],[202,27],[203,28],[204,29],[205,30],[206,31],[207,32],[208,32],[209,33],[210,1],[211,1],[212,34],[214,35],[213,36],[215,37],[216,38],[217,39],[218,40],[219,41],[220,42],[221,43],[222,44],[223,45],[224,46],[225,47],[226,48],[227,49],[134,1],[135,1],[136,1],[175,50],[176,1],[177,1],[228,51],[229,52],[237,53],[236,54],[137,1],[235,55],[232,56],[234,57],[233,1],[231,1],[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],[153,58],[163,59],[152,58],[173,60],[144,61],[143,62],[172,56],[166,63],[171,64],[146,65],[160,66],[145,67],[169,68],[141,69],[140,56],[170,70],[142,71],[147,72],[148,1],[151,72],[138,1],[174,73],[164,74],[155,75],[156,76],[158,77],[154,78],[157,79],[167,56],[149,80],[150,81],[159,82],[139,83],[162,74],[161,72],[165,1],[168,84],[122,85],[116,86],[120,87],[117,87],[113,86],[121,88],[118,89],[119,87],[114,90],[115,91],[109,92],[53,93],[55,94],[108,1],[54,95],[112,96],[111,97],[110,98],[46,1],[56,93],[57,1],[48,99],[52,100],[47,1],[49,101],[50,102],[51,1],[58,103],[59,103],[60,103],[61,103],[62,103],[63,103],[64,103],[65,103],[66,103],[67,103],[68,103],[69,103],[70,103],[72,103],[71,103],[73,103],[74,103],[75,103],[76,103],[107,104],[77,103],[78,103],[79,103],[80,103],[81,103],[82,103],[83,103],[84,103],[85,103],[86,103],[87,103],[88,103],[89,103],[91,103],[90,103],[92,103],[93,103],[94,103],[95,103],[96,103],[97,103],[98,103],[99,103],[100,103],[101,103],[102,103],[103,103],[106,103],[104,103],[105,103],[125,105],[124,106],[123,1]],"latestChangedDtsFile":"./index.d.ts","version":"5.9.2"}
@@ -0,0 +1,72 @@
1
+ import { z, type ZodType, type ZodTypeAny } from 'zod';
2
+ import { type MapperOptions, type QueryParams, type EntityMapping as RowMapping } from '@rawsql-ts/sql-contract/mapper';
3
+ /**
4
+ * Minimal mapper surface required by the Zod helpers.
5
+ */
6
+ export interface MapperLike {
7
+ query<T>(sql: string, params?: QueryParams, mappingOrOptions?: RowMapping<T> | MapperOptions): Promise<T[]>;
8
+ queryOne<T>(sql: string, params?: QueryParams, mappingOrOptions?: RowMapping<T> | MapperOptions): Promise<T | undefined>;
9
+ }
10
+ /**
11
+ * A Zod-aware reader bound to a schema and mapping.
12
+ */
13
+ export interface ZodReader<T> {
14
+ list(sql: string, params?: QueryParams): Promise<T[]>;
15
+ one(sql: string, params?: QueryParams): Promise<T>;
16
+ }
17
+ declare module '@rawsql-ts/sql-contract/mapper' {
18
+ interface Mapper {
19
+ /**
20
+ * Creates a reader that validates mapped DTOs with Zod, optionally using an explicit RowMapping.
21
+ */
22
+ zod<S extends ZodTypeAny>(schema: S): ZodReader<z.infer<S>>;
23
+ zod<S extends ZodTypeAny>(schema: S, mapping: RowMapping<z.infer<S>>): ZodReader<z.infer<S>>;
24
+ }
25
+ }
26
+ /**
27
+ * Optional configuration that enriches error messages with a caller-defined label.
28
+ */
29
+ export interface QueryZodOptions {
30
+ /** Label prepended to any thrown `ZodError` so failures are easier to locate. */
31
+ label?: string;
32
+ }
33
+ /**
34
+ * Executes the supplied mapper query and validates every mapped row against the schema.
35
+ * Throws the raw `ZodError` if any row is invalid.
36
+ *
37
+ * @deprecated Use `mapper.zod(schema).list(...)` instead.
38
+ */
39
+ export declare function queryZod<T>(mapper: MapperLike, schema: ZodType<T>, sql: string): Promise<T[]>;
40
+ export declare function queryZod<T>(mapper: MapperLike, schema: ZodType<T>, sql: string, mappingOrOptions: RowMapping<T> | MapperOptions, options?: QueryZodOptions): Promise<T[]>;
41
+ export declare function queryZod<T>(mapper: MapperLike, schema: ZodType<T>, sql: string, params: QueryParams, options?: QueryZodOptions): Promise<T[]>;
42
+ export declare function queryZod<T>(mapper: MapperLike, schema: ZodType<T>, sql: string, params: QueryParams, mappingOrOptions: RowMapping<T> | MapperOptions, options?: QueryZodOptions): Promise<T[]>;
43
+ /**
44
+ * Executes the supplied mapper query and validates a single row.
45
+ * Throws when the mapper returns no rows and rethrows any `ZodError` produced during parsing.
46
+ *
47
+ * @deprecated Use `mapper.zod(schema).one(...)` instead.
48
+ */
49
+ export declare function queryOneZod<T>(mapper: MapperLike, schema: ZodType<T>, sql: string): Promise<T>;
50
+ export declare function queryOneZod<T>(mapper: MapperLike, schema: ZodType<T>, sql: string, mappingOrOptions: RowMapping<T> | MapperOptions, options?: QueryZodOptions): Promise<T>;
51
+ export declare function queryOneZod<T>(mapper: MapperLike, schema: ZodType<T>, sql: string, params: QueryParams, options?: QueryZodOptions): Promise<T>;
52
+ export declare function queryOneZod<T>(mapper: MapperLike, schema: ZodType<T>, sql: string, params: QueryParams, mappingOrOptions: RowMapping<T> | MapperOptions, options?: QueryZodOptions): Promise<T>;
53
+ /**
54
+ * Validates the supplied row array with the schema.
55
+ */
56
+ export declare function parseRows<T>(schema: ZodType<T>, rows: unknown, options?: QueryZodOptions): T[];
57
+ /**
58
+ * Validates a single row with the schema.
59
+ */
60
+ export declare function parseRow<T>(schema: ZodType<T>, row: unknown, options?: QueryZodOptions): T;
61
+ /**
62
+ * Explicit Zod helper that accepts numbers or numeric strings and yields a number.
63
+ */
64
+ export declare const zNumberFromString: z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>;
65
+ /**
66
+ * Explicit Zod helper that accepts bigints or bigint strings and yields a bigint.
67
+ */
68
+ export declare const zBigIntFromString: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodString]>, z.ZodTransform<bigint, string | bigint>>;
69
+ /**
70
+ * Explicit Zod helper that accepts `Date` or ISO strings and yields a `Date`.
71
+ */
72
+ export declare const zDateFromString: z.ZodPipe<z.ZodUnion<readonly [z.ZodDate, z.ZodString]>, z.ZodTransform<Date, string | Date>>;
package/dist/index.js ADDED
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.zDateFromString = exports.zBigIntFromString = exports.zNumberFromString = void 0;
4
+ exports.queryZod = queryZod;
5
+ exports.queryOneZod = queryOneZod;
6
+ exports.parseRows = parseRows;
7
+ exports.parseRow = parseRow;
8
+ const zod_1 = require("zod");
9
+ const mapper_1 = require("@rawsql-ts/sql-contract/mapper");
10
+ async function queryZod(mapper, schema, sql, ...rest) {
11
+ const normalized = normalizeQueryArgs(rest);
12
+ return executeQueryZod(mapper, schema, sql, normalized);
13
+ }
14
+ async function queryOneZod(mapper, schema, sql, ...rest) {
15
+ var _a;
16
+ const normalized = normalizeQueryArgs(rest);
17
+ const rows = await executeQueryZod(mapper, schema, sql, normalized);
18
+ const prefix = ((_a = normalized.options) === null || _a === void 0 ? void 0 : _a.label) ? `${normalized.options.label}: ` : '';
19
+ if (rows.length === 0) {
20
+ throw new Error(`${prefix}queryOneZod expected exactly one row but received none.`);
21
+ }
22
+ if (rows.length > 1) {
23
+ throw new Error(`${prefix}queryOneZod expected exactly one row but received ${rows.length}.`);
24
+ }
25
+ return rows[0];
26
+ }
27
+ async function executeQueryZod(mapper, schema, sql, args) {
28
+ var _a;
29
+ const rows = await mapper.query(sql, (_a = args.params) !== null && _a !== void 0 ? _a : [], args.mappingOrOptions);
30
+ return parseRows(schema, rows, args.options);
31
+ }
32
+ function normalizeQueryArgs(rest) {
33
+ const normalized = {};
34
+ if (rest.length === 0) {
35
+ return normalized;
36
+ }
37
+ const [first, second, third] = rest;
38
+ if (rest.length === 1) {
39
+ if (isRowMapping(first)) {
40
+ normalized.mappingOrOptions = first;
41
+ }
42
+ else if (isMapperOptions(first)) {
43
+ normalized.mappingOrOptions = first;
44
+ }
45
+ else {
46
+ normalized.params = first;
47
+ }
48
+ return normalized;
49
+ }
50
+ if (rest.length === 2) {
51
+ if (isRowMapping(first)) {
52
+ normalized.mappingOrOptions = first;
53
+ normalized.options = second;
54
+ return normalized;
55
+ }
56
+ if (isMapperOptions(first)) {
57
+ normalized.mappingOrOptions = first;
58
+ normalized.options = second;
59
+ return normalized;
60
+ }
61
+ normalized.params = first;
62
+ if (isRowMapping(second)) {
63
+ normalized.mappingOrOptions = second;
64
+ }
65
+ else if (isQueryZodOptions(second)) {
66
+ normalized.options = second;
67
+ }
68
+ else {
69
+ normalized.mappingOrOptions = second;
70
+ }
71
+ return normalized;
72
+ }
73
+ normalized.params = first;
74
+ normalized.mappingOrOptions = second;
75
+ normalized.options = third;
76
+ return normalized;
77
+ }
78
+ function isRowMapping(value) {
79
+ return (typeof value === 'object' &&
80
+ value !== null &&
81
+ 'assignFields' in value &&
82
+ typeof value.assignFields === 'function');
83
+ }
84
+ function isMapperOptions(value) {
85
+ if (typeof value !== 'object' || value === null) {
86
+ return false;
87
+ }
88
+ const optionKeys = [
89
+ 'keyTransform',
90
+ 'idKeysAsString',
91
+ 'typeHints',
92
+ 'coerceDates',
93
+ 'coerceFn',
94
+ ];
95
+ return optionKeys.some((key) => key in value);
96
+ }
97
+ function isQueryZodOptions(value) {
98
+ return (typeof value === 'object' &&
99
+ value !== null &&
100
+ 'label' in value);
101
+ }
102
+ /**
103
+ * Validates the supplied row array with the schema.
104
+ */
105
+ function parseRows(schema, rows, options) {
106
+ return parseWithLabel(schema.array(), rows, options === null || options === void 0 ? void 0 : options.label);
107
+ }
108
+ /**
109
+ * Validates a single row with the schema.
110
+ */
111
+ function parseRow(schema, row, options) {
112
+ return parseWithLabel(schema, row, options === null || options === void 0 ? void 0 : options.label);
113
+ }
114
+ /**
115
+ * Explicit Zod helper that accepts numbers or numeric strings and yields a number.
116
+ */
117
+ exports.zNumberFromString = zod_1.z
118
+ .union([zod_1.z.number(), zod_1.z.string()])
119
+ .transform((value) => {
120
+ if (typeof value === 'number') {
121
+ return value;
122
+ }
123
+ const trimmed = value.trim();
124
+ if (trimmed === '') {
125
+ throw new Error('Value must be a numeric string.');
126
+ }
127
+ const parsed = Number(trimmed);
128
+ if (Number.isNaN(parsed)) {
129
+ throw new Error(`'${value}' is not a valid number.`);
130
+ }
131
+ return parsed;
132
+ });
133
+ /**
134
+ * Explicit Zod helper that accepts bigints or bigint strings and yields a bigint.
135
+ */
136
+ exports.zBigIntFromString = zod_1.z
137
+ .union([zod_1.z.bigint(), zod_1.z.string()])
138
+ .transform((value) => {
139
+ if (typeof value === 'bigint') {
140
+ return value;
141
+ }
142
+ const trimmed = value.trim();
143
+ if (trimmed === '') {
144
+ throw new Error('Value must be a bigint string.');
145
+ }
146
+ try {
147
+ return BigInt(trimmed);
148
+ }
149
+ catch (error) {
150
+ throw new Error(`'${value}' is not a valid bigint.`);
151
+ }
152
+ });
153
+ /**
154
+ * Explicit Zod helper that accepts `Date` or ISO strings and yields a `Date`.
155
+ */
156
+ exports.zDateFromString = zod_1.z
157
+ .union([zod_1.z.date(), zod_1.z.string()])
158
+ .transform((value) => {
159
+ if (value instanceof Date) {
160
+ if (Number.isNaN(value.getTime())) {
161
+ throw new Error('Date value is invalid.');
162
+ }
163
+ return value;
164
+ }
165
+ const trimmed = value.trim();
166
+ if (trimmed === '') {
167
+ throw new Error('Value must be a non-empty date string.');
168
+ }
169
+ const timestamp = Date.parse(trimmed);
170
+ if (Number.isNaN(timestamp)) {
171
+ throw new Error(`'${value}' is not a valid date string.`);
172
+ }
173
+ return new Date(timestamp);
174
+ });
175
+ function parseWithLabel(schema, value, label) {
176
+ try {
177
+ return schema.parse(value);
178
+ }
179
+ catch (error) {
180
+ annotateZodError(error, label);
181
+ }
182
+ }
183
+ function annotateZodError(error, label) {
184
+ if (label && error instanceof zod_1.ZodError) {
185
+ error.message = `${label}: ${error.message}`;
186
+ }
187
+ throw error;
188
+ }
189
+ function createZodReader(mapper, schema, mapping) {
190
+ return {
191
+ list: async (sql, params = []) => {
192
+ const rows = await mapper.query(sql, params, mapping);
193
+ return parseRows(schema, rows);
194
+ },
195
+ one: async (sql, params = []) => {
196
+ const rows = await mapper.query(sql, params, mapping);
197
+ return expectExactlyOneRow(parseRows(schema, rows));
198
+ },
199
+ };
200
+ }
201
+ function createZodPresetReader(mapper, schema) {
202
+ return {
203
+ list: async (sql, params = []) => {
204
+ const rows = await mapper.query(sql, params);
205
+ return parseRows(schema, rows);
206
+ },
207
+ one: async (sql, params = []) => {
208
+ const rows = await mapper.query(sql, params);
209
+ return expectExactlyOneRow(parseRows(schema, rows));
210
+ },
211
+ };
212
+ }
213
+ function expectExactlyOneRow(rows) {
214
+ if (rows.length === 0) {
215
+ throw new Error('expected exactly one row but received none.');
216
+ }
217
+ if (rows.length > 1) {
218
+ throw new Error(`expected exactly one row but received ${rows.length}.`);
219
+ }
220
+ return rows[0];
221
+ }
222
+ mapper_1.Mapper.prototype.zod = function zod(schema, mapping) {
223
+ if (mapping) {
224
+ return createZodReader(this, schema, mapping);
225
+ }
226
+ return createZodPresetReader(this, schema);
227
+ };
228
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@rawsql-ts/sql-contract-zod",
3
+ "version": "0.1.0",
4
+ "description": "Runtime DTO validation on top of sql-contract's explicit mapper using Zod schemas.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "keywords": [
14
+ "sql",
15
+ "mapper",
16
+ "validation",
17
+ "zod",
18
+ "contract",
19
+ "rawsql"
20
+ ],
21
+ "license": "MIT",
22
+ "author": "msugiura",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/mk3008/rawsql-ts.git",
26
+ "directory": "packages/sql-contract-zod"
27
+ },
28
+ "publishConfig": {
29
+ "access": "public"
30
+ },
31
+ "engines": {
32
+ "node": ">=20"
33
+ },
34
+ "dependencies": {
35
+ "zod": "^4.3.6",
36
+ "@rawsql-ts/sql-contract": "0.1.0"
37
+ },
38
+ "devDependencies": {
39
+ "typescript": "^5.8.2",
40
+ "vitest": "^4.0.7"
41
+ },
42
+ "files": [
43
+ "dist"
44
+ ],
45
+ "scripts": {
46
+ "build": "tsc -p tsconfig.json",
47
+ "test": "vitest run",
48
+ "test:watch": "vitest",
49
+ "lint": "eslint src --ext .ts"
50
+ }
51
+ }