├── .github
├── issue_template.md
└── workflows
│ └── CI.yml
├── .gitignore
├── .husky
├── commit-msg
└── pre-commit
├── .prettierrc
├── .release-it.json
├── .vscode
└── settings.json
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── assets
└── logo.jpg
├── bun.lock
├── commitlint.config.js
├── example
├── .gitignore
├── bun.lock
├── index.ts
├── package.json
└── prisma
│ ├── fakeData.utils.ts
│ └── schema.prisma
├── package.json
├── src
├── __tests__
│ ├── __snapshots__
│ │ └── createMethods.test.ts.snap
│ ├── createMethods.test.ts
│ ├── generatorUtils.test.ts
│ ├── sample.prisma
│ └── testUtils.ts
├── bin.ts
├── constants.ts
├── generator.ts
├── helpers
│ └── createMethods.ts
└── utils
│ ├── generatorUtils.ts
│ └── writeFileSafely.ts
├── tsconfig.json
└── vitest.config.ts
/.github/issue_template.md:
--------------------------------------------------------------------------------
1 | Hi, there!
2 |
3 | I know reporting an issue can be as overwhelming as fixing it at times. To simplify the process for both of us, I created a CodeSandbox that you can access through this link: https://codesandbox.io/p/sandbox/prisma-generator-fake-data-example-xplkvs. Feel free to fork it and try to replicate your scenario. Please avoid sharing any Personal Identifiable Information if you're sharing your own code! Also, don't forget to update the `prisma-generator-fake-data` version if it's out of date.
4 |
5 | If you are unable to fork the CodeSandbox, please provide a detailed, step-by-step explanation of how to replicate the issue you are experiencing.
6 |
--------------------------------------------------------------------------------
/.github/workflows/CI.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 | on:
3 | push:
4 | branches:
5 | - main
6 | pull_request:
7 | branches:
8 | - '*'
9 | jobs:
10 | Test:
11 | runs-on: ubuntu-latest
12 | steps:
13 | - uses: actions/checkout@v2
14 | - uses: oven-sh/setup-bun@v1
15 | with:
16 | bun-version: latest
17 | - name: Install dependencies
18 | run: bun install --frozen-lockfile
19 | - name: Run Tests 🧪
20 | run: bun test
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 | yarn-error.log
4 | build
5 | pnpm-debug.log
6 | .env*
7 | example/prisma/fake-data.ts
--------------------------------------------------------------------------------
/.husky/commit-msg:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . "$(dirname "$0")/_/husky.sh"
3 |
4 | npx --no-install commitlint --edit "$1"
5 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | . "$(dirname -- "$0")/_/husky.sh"
3 |
4 | npx pretty-quick --staged
5 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
5 |
--------------------------------------------------------------------------------
/.release-it.json:
--------------------------------------------------------------------------------
1 | {
2 | "github": {
3 | "release": true
4 | },
5 | "plugins": {
6 | "@release-it/conventional-changelog": {
7 | "preset": "conventionalcommits",
8 | "infile": "CHANGELOG.md"
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "typescript.tsdk": "node_modules/typescript/lib"
3 | }
4 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ## [0.15.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.14.3...v0.15.0) (2025-05-06)
4 |
5 | ### ⚠️ BREAKING CHANGES ⚠️
6 |
7 | - This version requires Prisma 6.7.0 or higher. If you're using an older version of Prisma, please stay on version 0.14.3.
8 |
9 | ### Features
10 |
11 | - Add support for prisma 6.7.0+ ([#29](https://github.com/luisrudge/prisma-generator-fake-data/issues/29)) ([c0b070b](https://github.com/luisrudge/prisma-generator-fake-data/commit/c0b070b8b663e72b09808dfcb37a77517a51a6f7)) (thanks @fxdave)
12 |
13 | ### [0.14.3](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.14.2...v0.14.3) (2024-11-01)
14 |
15 | ### Bug Fixes
16 |
17 | - Integer data type fields should not be returning bigint's ([8c15f32](https://github.com/luisrudge/prisma-generator-fake-data/commit/8c15f324793795b833f76bc48b1418f05fca4e32))
18 |
19 | ### [0.14.2](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.14.1...v0.14.2) (2024-03-22)
20 |
21 | ### Bug Fixes
22 |
23 | - Correctly generate import path on Windows ([56ec5e0](https://github.com/luisrudge/prisma-generator-fake-data/commit/56ec5e0678c776dccf12dcb2ecb4c9aa3a83671e))
24 |
25 | ### [0.14.1](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.14.0...v0.14.1) (2024-01-25)
26 |
27 | ### Bug Fixes
28 |
29 | - Correctly generate import path ([0ff1424](https://github.com/luisrudge/prisma-generator-fake-data/commit/0ff142467ea4a96195ed4b9528c531a4c3c70d92))
30 |
31 | ## [0.14.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.13.0...v0.14.0) (2024-01-25)
32 |
33 | ### Features
34 |
35 | - Support array of default enums https://github.com/luisrudge/prisma-generator-fake-data/pull/22
36 | - Generate Decimals using Decimal.js #21 https://github.com/luisrudge/prisma-generator-fake-data/pull/21
37 | - Allow overriding faker method using prisma comment #20
38 |
39 | ### Bug Fixes
40 |
41 | - fix BigInt generation, fix example folder ([82e0d4e](https://github.com/luisrudge/prisma-generator-fake-data/commit/82e0d4ecb7c6ce0730edb6c1fe9dede85fc89522))
42 |
43 | ## [0.13.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.12.0...v0.13.0) (2023-11-23)
44 |
45 | ### Features
46 |
47 | - Use optional client output location when it exists ([130bed7](https://github.com/luisrudge/prisma-generator-fake-data/commit/130bed7c9a3b4a5bdfee8f7bbf785f7eb7a2bb8d))
48 |
49 | ## [0.12.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.11.1...v0.12.0) (2023-11-15)
50 |
51 | ### Features
52 |
53 | - add support for enum arrays with default value ([eab337c](https://github.com/luisrudge/prisma-generator-fake-data/commit/eab337cac34b4da9b250142925dda629e8c75fc3))
54 |
55 | ### [0.11.1](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.11.0...v0.11.1) (2023-11-08)
56 |
57 | ### Bug Fixes
58 |
59 | - Update createMethods.ts wrong function call ([efa2928](https://github.com/luisrudge/prisma-generator-fake-data/commit/efa2928426c3a948f7f5a5844e228536cfeba46e))
60 |
61 | ## [0.11.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.10.0...v0.11.0) (2023-09-27)
62 |
63 | ### Features
64 |
65 | - update to use faker 7.x -> 9.x ([261e7a2](https://github.com/luisrudge/prisma-generator-fake-data/commit/261e7a2ccb8f486d89dd22b7efbff57c98063a44))
66 |
67 | ### Bug Fixes
68 |
69 | - remove settings.json ([67633df](https://github.com/luisrudge/prisma-generator-fake-data/commit/67633df103d94677370188bea3a37a86ca11ed91))
70 |
71 | ## [0.10.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.9.0...v0.10.0) (2023-07-21)
72 |
73 | ### Features
74 |
75 | - upgrade to prisma 5 ([2f879a2](https://github.com/luisrudge/prisma-generator-fake-data/commit/2f879a21025d26e5bd57713c3fbe8b18a0451f7f))
76 |
77 | ## [0.9.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.8.0...v0.9.0) (2023-07-14)
78 |
79 | ### Features
80 |
81 | - add option to default to null instead of undefined fix [#11](https://github.com/luisrudge/prisma-generator-fake-data/issues/11) ([1dbf9d2](https://github.com/luisrudge/prisma-generator-fake-data/commit/1dbf9d2feb0f33b0c0de9e0abc006afcc9ec89b2))
82 |
83 | ## [0.8.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.7.0...v0.8.0) (2023-05-29)
84 |
85 | ### Bug Fixes
86 |
87 | - render fake values for JSON fields with default values ([55fefba](https://github.com/luisrudge/prisma-generator-fake-data/commit/55fefba6be537e397bf8520a5d139b7c537e66e6))
88 |
89 | ## [0.7.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.6.0...v0.7.0) (2023-04-06)
90 |
91 | ### Features
92 |
93 | - render real enums; render optional fields as undefined; render default values when available ([70b21fc](https://github.com/luisrudge/prisma-generator-fake-data/commit/70b21fc0782c83f792c063227cabc5a617e674a3))
94 |
95 | ## [0.6.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.5.0...v0.6.0) (2023-04-05)
96 |
97 | ### Features
98 |
99 | - remove overrides and add fake\*Complete methods with foreign keys ([e370ab4](https://github.com/luisrudge/prisma-generator-fake-data/commit/e370ab4d42a505a72bb5290a6ef8dbd00813febc))
100 |
101 | ### Bug Fixes
102 |
103 | - render enums with `as const` ([1e1946d](https://github.com/luisrudge/prisma-generator-fake-data/commit/1e1946d35fcb150256432344688261ac95109277))
104 |
105 | ### [0.5.1](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.5.0...v0.5.1) (2023-03-31)
106 |
107 | ### Bug Fixes
108 |
109 | - render enums with `as const` ([1e1946d](https://github.com/luisrudge/prisma-generator-fake-data/commit/1e1946d35fcb150256432344688261ac95109277))
110 |
111 | ## [0.5.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.4.1...v0.5.0) (2023-03-30)
112 |
113 | ### Features
114 |
115 | - add extraExport field ([6558bce](https://github.com/luisrudge/prisma-generator-fake-data/commit/6558bcef6cb6877409bdf660505bc8487ec57613))
116 |
117 | ### [0.4.1](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.4.0...v0.4.1) (2023-03-28)
118 |
119 | ### Bug Fixes
120 |
121 | - remove prettier as dependency ([ed2ae92](https://github.com/luisrudge/prisma-generator-fake-data/commit/ed2ae92a39ec8a0141d270d5f60fd9d472de5ff3))
122 |
123 | ## [0.4.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.3.5...v0.4.0) (2023-03-27)
124 |
125 | ### Features
126 |
127 | - add extraImport option ([3362156](https://github.com/luisrudge/prisma-generator-fake-data/commit/3362156c9866acd2fb76d9987b3121eddde35ab7))
128 |
129 | ### [0.3.5](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.3.4...v0.3.5) (2023-03-26)
130 |
131 | ### Bug Fixes
132 |
133 | - return undefined for optional fields ([0d92c64](https://github.com/luisrudge/prisma-generator-fake-data/commit/0d92c6401b018830f4b9057c1f4e5144c2c9334a))
134 |
135 | ### [0.3.4](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.3.3...v0.3.4) (2023-03-26)
136 |
137 | ### Bug Fixes
138 |
139 | - empty omit ([a097169](https://github.com/luisrudge/prisma-generator-fake-data/commit/a097169cc1639d4b1cf22a1ce218a0ed938410b3))
140 |
141 | ### [0.3.3](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.3.2...v0.3.3) (2023-03-26)
142 |
143 | ### Bug Fixes
144 |
145 | - omit relation fields from overrides types ([a0936d5](https://github.com/luisrudge/prisma-generator-fake-data/commit/a0936d5270f6a15a9cf525d9b97ab78db631af70))
146 |
147 | ### [0.3.2](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.3.1...v0.3.2) (2023-03-26)
148 |
149 | ### Bug Fixes
150 |
151 | - parse json field during creation ([9dcbf15](https://github.com/luisrudge/prisma-generator-fake-data/commit/9dcbf15b3b10ecbf090fff7f67df68e204da92a7))
152 |
153 | ### [0.3.1](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.3.0...v0.3.1) (2023-03-26)
154 |
155 | ## [0.3.0](https://github.com/luisrudge/prisma-generator-fake-data/compare/v0.2.0...v0.3.0) (2023-03-26)
156 |
157 | ### Features
158 |
159 | - handle non-required fields ([4d60be7](https://github.com/luisrudge/prisma-generator-fake-data/commit/4d60be7ce259113157c3eba208ce5f986d5de738))
160 |
161 | ### 0.2.0 (2023-03-26)
162 |
163 | ##### New Features
164 |
165 | - custom data shapes for JSON fields ([a2432738](https://github.com/luisrudge/prisma-generator-fake-data/commit/a24327385e886ed59ba6005b04380d9f8e439a1d))
166 | - add name, fullName, firstName faker methods ([5ff33fa4](https://github.com/luisrudge/prisma-generator-fake-data/commit/5ff33fa48f66bbdc6c310831bedd1f76292c1274))
167 |
168 | #### 0.1.2 (2023-03-26)
169 |
170 | ##### Chores
171 |
172 | - update pkg.json ([f3d61b46](https://github.com/luisrudge/prisma-generator-fake-data/commit/f3d61b46b0730fa080c74100135916df4a5a9614))
173 | - simplify repo (remove yarn workspaces) ([7a405c23](https://github.com/luisrudge/prisma-generator-fake-data/commit/7a405c239c0ac52b7d345d7f4a2f6da008d1fd37))
174 | - add readme to npm package ([335f0f44](https://github.com/luisrudge/prisma-generator-fake-data/commit/335f0f44070224360fbf6a40762b786b984763ba))
175 | - remove semantic-release ([c423484c](https://github.com/luisrudge/prisma-generator-fake-data/commit/c423484c4cd0be4bd20a01b7fdccb20c7b6febab))
176 | - remove publish stuff from gh ([01d74225](https://github.com/luisrudge/prisma-generator-fake-data/commit/01d74225bb0207a301167cef067900496424c353))
177 | - remove windows from CI ([2167a863](https://github.com/luisrudge/prisma-generator-fake-data/commit/2167a8637dc01fd12af673c2b74baa6d7dee3d25))
178 | - ci ([137a9cc5](https://github.com/luisrudge/prisma-generator-fake-data/commit/137a9cc5fc641972b6aca3cb3f0cc985c7a5662a))
179 | - fix ci ([756499b2](https://github.com/luisrudge/prisma-generator-fake-data/commit/756499b24741d842a7e82a69d76dbb0f74bf3ff4))
180 |
181 | ##### Documentation Changes
182 |
183 | - copy ([c5f379e7](https://github.com/luisrudge/prisma-generator-fake-data/commit/c5f379e78a26215efd5037f4f50db4441a956da7))
184 | - prisma syntax highlighting ([6aa59966](https://github.com/luisrudge/prisma-generator-fake-data/commit/6aa5996642bdc017452349729b92de40a40a1691))
185 | - add readme info ([441b21a9](https://github.com/luisrudge/prisma-generator-fake-data/commit/441b21a93bdb1ab8e9073098f7234eadaec89e09))
186 |
187 | ##### New Features
188 |
189 | - initial release ([9a3d2f59](https://github.com/luisrudge/prisma-generator-fake-data/commit/9a3d2f59d585dbf1d67612207bb9a7d5ac2368d1))
190 | - initial commit ([6fecd886](https://github.com/luisrudge/prisma-generator-fake-data/commit/6fecd8861a5a0fc8964f21c9b882e4a4cdf411a8))
191 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012-2022 Scott Chacon and others
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # prisma-generator-fake-data
2 |
3 | 
4 |
5 | _Generated with Bing Image Creator. Prompt: create a logo with a cute panda smiling and holding a triangular prisma, digital art_
6 |
7 | 
8 | 
9 |
10 | ## The easiest way to generate mock data based on your Prisma models!
11 |
12 | ### What is prisma-generator-fake-data?
13 |
14 | It's a [Prisma Generator](https://www.prisma.io/docs/concepts/components/prisma-schema/generators) that uses [faker.js](https://fakerjs.dev/) to create realistic-looking fake data for your Prisma models. With this generator, you can quickly and easily create fake data for your Prisma models, without having to write barely any code.
15 |
16 | ### Get started
17 |
18 | - Setup your Prisma project as usual ([Get Started With Prisma](https://www.prisma.io/docs/getting-started))
19 | - Install this package
20 |
21 | - `npm install -D prisma-generator-fake-data`
22 | - `yarn add -D prisma-generator-fake-data`
23 | - `pnpm install -D prisma-generator-fake-data`
24 | - `bun add -D prisma-generator-fake-data`
25 |
26 | - Modify your Prisma model file
27 | ```prisma
28 | generator custom_generator {
29 | provider = "prisma-generator-fake-data"
30 | output = "../types/fake-data.ts"
31 | }
32 | ```
33 | - Run `npx prisma generate`
34 |
35 | You're all done!
36 |
37 | > If you prefer, you can easily get started with [this CodeSandbox.](https://codesandbox.io/p/sandbox/prisma-generator-fake-data-example-xplkvs?file=%2Fscript.ts&selection=%5B%7B%22endColumn%22%3A6%2C%22endLineNumber%22%3A38%2C%22startColumn%22%3A6%2C%22startLineNumber%22%3A38%7D%5D)
38 |
39 | ### Usage
40 |
41 | Once the file is generated, you can import it in your project.
42 |
43 | ```prisma
44 | generator client {
45 | provider = "prisma-client-js"
46 | }
47 |
48 | generator custom_generator {
49 | provider = "prisma-generator-fake-data"
50 | /// by default, the file will be generated at `./prisma/fake-data.ts`
51 | }
52 |
53 | datasource db {
54 | provider = "postgresql"
55 | url = env("DATABASE_URL")
56 | }
57 |
58 | model User {
59 | id String @id @default(cuid())
60 | email String @unique
61 | name String
62 | /// Use comments to specify the faker method. For example:
63 | ///FAKE:faker.location.streetAddress({ useFullAddress: true })
64 | address String
65 | ///FAKE:{notificationsEnabled: faker.datatype.boolean(), preferredColor: faker.color.rgb()}
66 | settings Json
67 | status UserStatus
68 | profile Profile?
69 | }
70 |
71 | model Profile {
72 | id Int @id @default(autoincrement())
73 | someConfiguration Boolean
74 | userId String @unique
75 | user User @relation(fields: [userId], references: [id])
76 | }
77 |
78 | enum UserStatus {
79 | active
80 | inactive
81 | }
82 | ```
83 |
84 | ```ts
85 | import { fakeUser, fakeProfileComplete } from './prisma/fake-data'; //or your custom output path
86 |
87 | console.log(fakeUser());
88 | console.log(fakeProfileComplete());
89 | /*
90 | {
91 | email: 'Ella.Mayer@gmail.com',
92 | name: 'Lana Gulgowski',
93 | age: 81,
94 | settings: { notificationsEnabled: true, preferredColor: '#ee5344' },
95 | maybeString: undefined,
96 | status: 'active'
97 | }
98 | {
99 | id: 96601,
100 | someConfiguration: true,
101 | userId: '821cf67a-dd86-49d7-b0e4-9ad451ad173d'
102 | }
103 | */
104 | ```
105 |
106 | ### Generator options
107 |
108 | | Option | Required | Default | Example | Description |
109 | | ------------ | -------- | ------------------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
110 | | output | no | `"./fake-data.ts"` | `"../types/fake-data.ts"` | Path where the file will be exported to. Base folder is your prisma folder. |
111 | | extraImport | no | `""` | `"import {myCustomFunction} from '../utils/fakeImports'"` | This import will be added to your generated file. Useful when you want to use a custom function to generate fake JSON data. You can use your TypeScript aliases. Base folder is your prisma folder. |
112 | | extraExport | no | `""` | `"export * from '../utils/fakeImports'"` | This export will be added to your generated file. Useful when you want to export all of the fake methods created by this generator from the same file. Base folder is your prisma folder. |
113 | | emptyValueAs | no | `"undefined"` | `"null"` | By default, optional fields will be generated with `undefined`. You can change this behavior by overriding this parameter. You can use a function imported in `extraImport` or just pass a hardcoded value like `"null"`. |
114 | | | | |
115 |
116 | ### Fields with special treatment:
117 |
118 | - `name`, `fullName`, `firstName`, `lastName`, and `age` will use specific `faker-js` methods to appear more realistic.
119 | - If you have an optional Prisma field (e.g., `message String?`), the fake data generator will always return `undefined` for that property (customizable through the `emptyValueAs` option).
120 | - If you have a `JSON` Prisma field, you can add your own data shape by adding a special comment above your field.
121 | - Example: `///FAKE:{test: faker.lorem.word()}`
122 | - Keep in mind that the generator will simply relay whatever is after the `FAKE:` string to your generated code, so it needs to be valid TypeScript.
123 | - By using the `extraImport` generator option, you can create your own helper methods to generate fake data for your JSON fields
124 |
125 | Inspired by https://github.com/toyamarinyon/prisma-factory-generator
126 |
127 | This generator was bootstrapped using [create-prisma-generator](https://github.com/YassinEldeeb/create-prisma-generator)
128 |
129 |
--------------------------------------------------------------------------------
/assets/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luisrudge/prisma-generator-fake-data/7081912cb577052f3465951f169f6179f803ebd8/assets/logo.jpg
--------------------------------------------------------------------------------
/bun.lock:
--------------------------------------------------------------------------------
1 | {
2 | "lockfileVersion": 1,
3 | "workspaces": {
4 | "": {
5 | "name": "prisma-generator-fake-data",
6 | "dependencies": {
7 | "@faker-js/faker": "^9.7.0",
8 | "@prisma/generator-helper": "^6.7.0",
9 | "@prisma/internals": "^6.7.0",
10 | "decimal.js": "^10.5.0",
11 | "tiny-invariant": "^1.3.3",
12 | },
13 | "devDependencies": {
14 | "@release-it/conventional-changelog": "^10.0.1",
15 | "@types/node": "^22.15.13",
16 | "@types/prettier": "^3.0.0",
17 | "generate-changelog": "^1.8.0",
18 | "prettier": "^3.5.3",
19 | "pretty-quick": "^4.1.1",
20 | "prisma": "^6.7.0",
21 | "release-it": "^19.0.2",
22 | "typescript": "^5.8.3",
23 | "vitest": "^3.1.3",
24 | },
25 | },
26 | },
27 | "packages": {
28 | "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
29 |
30 | "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="],
31 |
32 | "@conventional-changelog/git-client": ["@conventional-changelog/git-client@1.0.1", "", { "dependencies": { "@types/semver": "^7.5.5", "semver": "^7.5.2" }, "peerDependencies": { "conventional-commits-filter": "^5.0.0", "conventional-commits-parser": "^6.0.0" }, "optionalPeers": ["conventional-commits-filter", "conventional-commits-parser"] }, "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw=="],
33 |
34 | "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.4", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q=="],
35 |
36 | "@esbuild/android-arm": ["@esbuild/android-arm@0.25.4", "", { "os": "android", "cpu": "arm" }, "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ=="],
37 |
38 | "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.4", "", { "os": "android", "cpu": "arm64" }, "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A=="],
39 |
40 | "@esbuild/android-x64": ["@esbuild/android-x64@0.25.4", "", { "os": "android", "cpu": "x64" }, "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ=="],
41 |
42 | "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g=="],
43 |
44 | "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A=="],
45 |
46 | "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.4", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ=="],
47 |
48 | "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ=="],
49 |
50 | "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.4", "", { "os": "linux", "cpu": "arm" }, "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ=="],
51 |
52 | "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ=="],
53 |
54 | "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.4", "", { "os": "linux", "cpu": "ia32" }, "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ=="],
55 |
56 | "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.4", "", { "os": "linux", "cpu": "none" }, "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA=="],
57 |
58 | "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.4", "", { "os": "linux", "cpu": "none" }, "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg=="],
59 |
60 | "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag=="],
61 |
62 | "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.4", "", { "os": "linux", "cpu": "none" }, "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA=="],
63 |
64 | "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g=="],
65 |
66 | "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.4", "", { "os": "linux", "cpu": "x64" }, "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA=="],
67 |
68 | "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.4", "", { "os": "none", "cpu": "arm64" }, "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ=="],
69 |
70 | "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.4", "", { "os": "none", "cpu": "x64" }, "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw=="],
71 |
72 | "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.4", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A=="],
73 |
74 | "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.4", "", { "os": "openbsd", "cpu": "x64" }, "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw=="],
75 |
76 | "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.4", "", { "os": "sunos", "cpu": "x64" }, "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q=="],
77 |
78 | "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ=="],
79 |
80 | "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg=="],
81 |
82 | "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.4", "", { "os": "win32", "cpu": "x64" }, "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ=="],
83 |
84 | "@faker-js/faker": ["@faker-js/faker@9.7.0", "", {}, "sha512-aozo5vqjCmDoXLNUJarFZx2IN/GgGaogY4TMJ6so/WLZOWpSV7fvj2dmrV6sEAnUm1O7aCrhTibjpzeDFgNqbg=="],
85 |
86 | "@hutson/parse-repository-url": ["@hutson/parse-repository-url@5.0.0", "", {}, "sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg=="],
87 |
88 | "@inquirer/checkbox": ["@inquirer/checkbox@4.1.5", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/figures": "^1.0.11", "@inquirer/type": "^3.0.6", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ=="],
89 |
90 | "@inquirer/confirm": ["@inquirer/confirm@5.1.9", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/type": "^3.0.6" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w=="],
91 |
92 | "@inquirer/core": ["@inquirer/core@10.1.10", "", { "dependencies": { "@inquirer/figures": "^1.0.11", "@inquirer/type": "^3.0.6", "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw=="],
93 |
94 | "@inquirer/editor": ["@inquirer/editor@4.2.10", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/type": "^3.0.6", "external-editor": "^3.1.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw=="],
95 |
96 | "@inquirer/expand": ["@inquirer/expand@4.0.12", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/type": "^3.0.6", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw=="],
97 |
98 | "@inquirer/figures": ["@inquirer/figures@1.0.11", "", {}, "sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw=="],
99 |
100 | "@inquirer/input": ["@inquirer/input@4.1.9", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/type": "^3.0.6" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA=="],
101 |
102 | "@inquirer/number": ["@inquirer/number@3.0.12", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/type": "^3.0.6" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q=="],
103 |
104 | "@inquirer/password": ["@inquirer/password@4.0.12", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/type": "^3.0.6", "ansi-escapes": "^4.3.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g=="],
105 |
106 | "@inquirer/prompts": ["@inquirer/prompts@7.5.0", "", { "dependencies": { "@inquirer/checkbox": "^4.1.5", "@inquirer/confirm": "^5.1.9", "@inquirer/editor": "^4.2.10", "@inquirer/expand": "^4.0.12", "@inquirer/input": "^4.1.9", "@inquirer/number": "^3.0.12", "@inquirer/password": "^4.0.12", "@inquirer/rawlist": "^4.1.0", "@inquirer/search": "^3.0.12", "@inquirer/select": "^4.2.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA=="],
107 |
108 | "@inquirer/rawlist": ["@inquirer/rawlist@4.1.0", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/type": "^3.0.6", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-6ob45Oh9pXmfprKqUiEeMz/tjtVTFQTgDDz1xAMKMrIvyrYjAmRbQZjMJfsictlL4phgjLhdLu27IkHNnNjB7g=="],
109 |
110 | "@inquirer/search": ["@inquirer/search@3.0.12", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/figures": "^1.0.11", "@inquirer/type": "^3.0.6", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ=="],
111 |
112 | "@inquirer/select": ["@inquirer/select@4.2.0", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/figures": "^1.0.11", "@inquirer/type": "^3.0.6", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-KkXQ4aSySWimpV4V/TUJWdB3tdfENZUU765GjOIZ0uPwdbGIG6jrxD4dDf1w68uP+DVtfNhr1A92B+0mbTZ8FA=="],
113 |
114 | "@inquirer/type": ["@inquirer/type@3.0.6", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA=="],
115 |
116 | "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="],
117 |
118 | "@nodeutils/defaults-deep": ["@nodeutils/defaults-deep@1.1.0", "", { "dependencies": { "lodash": "^4.15.0" } }, "sha512-gG44cwQovaOFdSR02jR9IhVRpnDP64VN6JdjYJTfNz4J4fWn7TQnmrf22nSjRqlwlxPcW8PL/L3KbJg3tdwvpg=="],
119 |
120 | "@octokit/auth-token": ["@octokit/auth-token@5.1.2", "", {}, "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="],
121 |
122 | "@octokit/core": ["@octokit/core@6.1.5", "", { "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.2.2", "@octokit/request": "^9.2.3", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "before-after-hook": "^3.0.2", "universal-user-agent": "^7.0.0" } }, "sha512-vvmsN0r7rguA+FySiCsbaTTobSftpIDIpPW81trAmsv9TGxg3YCujAxRYp/Uy8xmDgYCzzgulG62H7KYUFmeIg=="],
123 |
124 | "@octokit/endpoint": ["@octokit/endpoint@10.1.4", "", { "dependencies": { "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA=="],
125 |
126 | "@octokit/graphql": ["@octokit/graphql@8.2.2", "", { "dependencies": { "@octokit/request": "^9.2.3", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA=="],
127 |
128 | "@octokit/openapi-types": ["@octokit/openapi-types@25.0.0", "", {}, "sha512-FZvktFu7HfOIJf2BScLKIEYjDsw6RKc7rBJCdvCTfKsVnx2GEB/Nbzjr29DUdb7vQhlzS/j8qDzdditP0OC6aw=="],
129 |
130 | "@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@11.6.0", "", { "dependencies": { "@octokit/types": "^13.10.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw=="],
131 |
132 | "@octokit/plugin-request-log": ["@octokit/plugin-request-log@5.3.1", "", { "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw=="],
133 |
134 | "@octokit/plugin-rest-endpoint-methods": ["@octokit/plugin-rest-endpoint-methods@13.5.0", "", { "dependencies": { "@octokit/types": "^13.10.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw=="],
135 |
136 | "@octokit/request": ["@octokit/request@9.2.3", "", { "dependencies": { "@octokit/endpoint": "^10.1.4", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w=="],
137 |
138 | "@octokit/request-error": ["@octokit/request-error@6.1.8", "", { "dependencies": { "@octokit/types": "^14.0.0" } }, "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ=="],
139 |
140 | "@octokit/rest": ["@octokit/rest@21.1.1", "", { "dependencies": { "@octokit/core": "^6.1.4", "@octokit/plugin-paginate-rest": "^11.4.2", "@octokit/plugin-request-log": "^5.3.1", "@octokit/plugin-rest-endpoint-methods": "^13.3.0" } }, "sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg=="],
141 |
142 | "@octokit/types": ["@octokit/types@14.0.0", "", { "dependencies": { "@octokit/openapi-types": "^25.0.0" } }, "sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA=="],
143 |
144 | "@phun-ky/typeof": ["@phun-ky/typeof@1.2.8", "", {}, "sha512-7J6ca1tK0duM2BgVB+CuFMh3idlIVASOP2QvOCbNWDc6JnvjtKa9nufPoJQQ4xrwBonwgT1TIhRRcEtzdVgWsA=="],
145 |
146 | "@prisma/config": ["@prisma/config@6.7.0", "", { "dependencies": { "esbuild": ">=0.12 <1", "esbuild-register": "3.6.0" } }, "sha512-di8QDdvSz7DLUi3OOcCHSwxRNeW7jtGRUD2+Z3SdNE3A+pPiNT8WgUJoUyOwJmUr5t+JA2W15P78C/N+8RXrOA=="],
147 |
148 | "@prisma/debug": ["@prisma/debug@6.7.0", "", {}, "sha512-RabHn9emKoYFsv99RLxvfG2GHzWk2ZI1BuVzqYtmMSIcuGboHY5uFt3Q3boOREM9de6z5s3bQoyKeWnq8Fz22w=="],
149 |
150 | "@prisma/dmmf": ["@prisma/dmmf@6.7.0", "", {}, "sha512-Nabzf5H7KUwYV/1u8R5gTQ7x3ffdPIhtxVJsjhnLOjeuem8YzVu39jOgQbiOlfOvjU4sPYkV9wEXc5tIHumdUw=="],
151 |
152 | "@prisma/driver-adapter-utils": ["@prisma/driver-adapter-utils@6.7.0", "", { "dependencies": { "@prisma/debug": "6.7.0" } }, "sha512-xYcXALWz1GsCRqwcDw0kP0R27chn99Co/HMX0nyOvIjAOo+41Tl/qcCOce/Ik1wNMGTI68N64kt3iccJ4EJoCQ=="],
153 |
154 | "@prisma/engines": ["@prisma/engines@6.7.0", "", { "dependencies": { "@prisma/debug": "6.7.0", "@prisma/engines-version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", "@prisma/fetch-engine": "6.7.0", "@prisma/get-platform": "6.7.0" } }, "sha512-3wDMesnOxPrOsq++e5oKV9LmIiEazFTRFZrlULDQ8fxdub5w4NgRBoxtWbvXmj2nJVCnzuz6eFix3OhIqsZ1jw=="],
155 |
156 | "@prisma/engines-version": ["@prisma/engines-version@6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", "", {}, "sha512-EvpOFEWf1KkJpDsBCrih0kg3HdHuaCnXmMn7XFPObpFTzagK1N0Q0FMnYPsEhvARfANP5Ok11QyoTIRA2hgJTA=="],
157 |
158 | "@prisma/fetch-engine": ["@prisma/fetch-engine@6.7.0", "", { "dependencies": { "@prisma/debug": "6.7.0", "@prisma/engines-version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", "@prisma/get-platform": "6.7.0" } }, "sha512-zLlAGnrkmioPKJR4Yf7NfW3hftcvqeNNEHleMZK9yX7RZSkhmxacAYyfGsCcqRt47jiZ7RKdgE0Wh2fWnm7WsQ=="],
159 |
160 | "@prisma/generator": ["@prisma/generator@6.7.0", "", {}, "sha512-wCsD7QJn1JBKJfv5uOMhwBCvZPGerPJ3EC2HocFPFaHSzVIXLi/zNb/8gpBxervOXTbQRJ2dpqvMsJnwAnPi8A=="],
161 |
162 | "@prisma/generator-helper": ["@prisma/generator-helper@6.7.0", "", { "dependencies": { "@prisma/debug": "6.7.0", "@prisma/dmmf": "6.7.0", "@prisma/generator": "6.7.0" } }, "sha512-z4ey7n8eUFx7Ol7RJCoEo9SVK2roy80qLXdrUFlmswcs0e/z03wDl4tpaA02BE2Yi9KCZl2Tkd6oMes81vUefA=="],
163 |
164 | "@prisma/get-platform": ["@prisma/get-platform@6.7.0", "", { "dependencies": { "@prisma/debug": "6.7.0" } }, "sha512-i9IH5lO4fQwnMLvQLYNdgVh9TK3PuWBfQd7QLk/YurnAIg+VeADcZDbmhAi4XBBDD+hDif9hrKyASu0hbjwabw=="],
165 |
166 | "@prisma/internals": ["@prisma/internals@6.7.0", "", { "dependencies": { "@prisma/config": "6.7.0", "@prisma/debug": "6.7.0", "@prisma/dmmf": "6.7.0", "@prisma/driver-adapter-utils": "6.7.0", "@prisma/engines": "6.7.0", "@prisma/fetch-engine": "6.7.0", "@prisma/generator": "6.7.0", "@prisma/generator-helper": "6.7.0", "@prisma/get-platform": "6.7.0", "@prisma/prisma-schema-wasm": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", "@prisma/schema-engine-wasm": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", "@prisma/schema-files-loader": "6.7.0", "arg": "5.0.2", "prompts": "2.4.2" }, "peerDependencies": { "typescript": ">=5.1.0" }, "optionalPeers": ["typescript"] }, "sha512-TeIw9cPf5y0ULw5yOUKxVK/p6J/lvCMIAFzQQ3aSjlg5+XaNxyK8S77J1C2T/kI50/xIPJXiytjv3baUKKVzlA=="],
167 |
168 | "@prisma/prisma-schema-wasm": ["@prisma/prisma-schema-wasm@6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", "", {}, "sha512-lxeu/lRSt0KbYEdsSbWpVKj3DoSqfEnB7h+ju6plR0Eg+jxEdahZRbowzd5qoiMtC57cBhtjQCD2AvewxnUyHA=="],
169 |
170 | "@prisma/schema-engine-wasm": ["@prisma/schema-engine-wasm@6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", "", {}, "sha512-BMdbaajhV46xPBEqwV/7pxYR67hA02ywUcKDKTIULhaofdbhCUee/O0zqoG4TmgsQZc3DUdwK7nmh2U7Ndj3fA=="],
171 |
172 | "@prisma/schema-files-loader": ["@prisma/schema-files-loader@6.7.0", "", { "dependencies": { "@prisma/prisma-schema-wasm": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", "fs-extra": "11.3.0" } }, "sha512-JaAu/hcMAX6rEhB48wTTyTqo7BNS2Cw8ReTGdqIHXJlBHz4p1HxvoqYcmJw/WEsjUx07J0L7RgQJhhbJpo1cdQ=="],
173 |
174 | "@release-it/conventional-changelog": ["@release-it/conventional-changelog@10.0.1", "", { "dependencies": { "concat-stream": "^2.0.0", "conventional-changelog": "^6.0.0", "conventional-recommended-bump": "^10.0.0", "git-semver-tags": "^8.0.0", "semver": "^7.6.3" }, "peerDependencies": { "release-it": "^18.0.0 || ^19.0.0" } }, "sha512-Qp+eyMGCPyq5xiWoNK91cWVIR/6HD1QAUNeG6pV2G4kxotWl81k/KDQqDNvrNVmr9+zDp53jI7pVVYQp6mi4zA=="],
175 |
176 | "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.40.2", "", { "os": "android", "cpu": "arm" }, "sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg=="],
177 |
178 | "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.40.2", "", { "os": "android", "cpu": "arm64" }, "sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw=="],
179 |
180 | "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.40.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w=="],
181 |
182 | "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.40.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ=="],
183 |
184 | "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.40.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ=="],
185 |
186 | "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.40.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q=="],
187 |
188 | "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.40.2", "", { "os": "linux", "cpu": "arm" }, "sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q=="],
189 |
190 | "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.40.2", "", { "os": "linux", "cpu": "arm" }, "sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg=="],
191 |
192 | "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.40.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg=="],
193 |
194 | "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.40.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg=="],
195 |
196 | "@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.40.2", "", { "os": "linux", "cpu": "none" }, "sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw=="],
197 |
198 | "@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.40.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q=="],
199 |
200 | "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.40.2", "", { "os": "linux", "cpu": "none" }, "sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg=="],
201 |
202 | "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.40.2", "", { "os": "linux", "cpu": "none" }, "sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg=="],
203 |
204 | "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.40.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ=="],
205 |
206 | "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.40.2", "", { "os": "linux", "cpu": "x64" }, "sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng=="],
207 |
208 | "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.40.2", "", { "os": "linux", "cpu": "x64" }, "sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA=="],
209 |
210 | "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.40.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg=="],
211 |
212 | "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.40.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA=="],
213 |
214 | "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.40.2", "", { "os": "win32", "cpu": "x64" }, "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA=="],
215 |
216 | "@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="],
217 |
218 | "@types/estree": ["@types/estree@1.0.7", "", {}, "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="],
219 |
220 | "@types/node": ["@types/node@22.15.13", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-mkmz+UBGCF/ssSObTp1McwQEvIjO2hUnVvZzck61l0su7btUill8OSvzA4N62+AtkJgMhiniyD+wEL5kocZaEA=="],
221 |
222 | "@types/normalize-package-data": ["@types/normalize-package-data@2.4.4", "", {}, "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="],
223 |
224 | "@types/parse-path": ["@types/parse-path@7.1.0", "", { "dependencies": { "parse-path": "*" } }, "sha512-EULJ8LApcVEPbrfND0cRQqutIOdiIgJ1Mgrhpy755r14xMohPTEpkV/k28SJvuOs9bHRFW8x+KeDAEPiGQPB9Q=="],
225 |
226 | "@types/prettier": ["@types/prettier@3.0.0", "", { "dependencies": { "prettier": "*" } }, "sha512-mFMBfMOz8QxhYVbuINtswBp9VL2b4Y0QqYHwqLz3YbgtfAcat2Dl6Y1o4e22S/OVE6Ebl9m7wWiMT2lSbAs1wA=="],
227 |
228 | "@types/semver": ["@types/semver@7.7.0", "", {}, "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA=="],
229 |
230 | "@vitest/expect": ["@vitest/expect@3.1.3", "", { "dependencies": { "@vitest/spy": "3.1.3", "@vitest/utils": "3.1.3", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg=="],
231 |
232 | "@vitest/mocker": ["@vitest/mocker@3.1.3", "", { "dependencies": { "@vitest/spy": "3.1.3", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ=="],
233 |
234 | "@vitest/pretty-format": ["@vitest/pretty-format@3.1.3", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA=="],
235 |
236 | "@vitest/runner": ["@vitest/runner@3.1.3", "", { "dependencies": { "@vitest/utils": "3.1.3", "pathe": "^2.0.3" } }, "sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA=="],
237 |
238 | "@vitest/snapshot": ["@vitest/snapshot@3.1.3", "", { "dependencies": { "@vitest/pretty-format": "3.1.3", "magic-string": "^0.30.17", "pathe": "^2.0.3" } }, "sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ=="],
239 |
240 | "@vitest/spy": ["@vitest/spy@3.1.3", "", { "dependencies": { "tinyspy": "^3.0.2" } }, "sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ=="],
241 |
242 | "@vitest/utils": ["@vitest/utils@3.1.3", "", { "dependencies": { "@vitest/pretty-format": "3.1.3", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" } }, "sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg=="],
243 |
244 | "add-stream": ["add-stream@1.0.0", "", {}, "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ=="],
245 |
246 | "agent-base": ["agent-base@7.1.3", "", {}, "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw=="],
247 |
248 | "ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="],
249 |
250 | "ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
251 |
252 | "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
253 |
254 | "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="],
255 |
256 | "array-ify": ["array-ify@1.0.0", "", {}, "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng=="],
257 |
258 | "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="],
259 |
260 | "ast-types": ["ast-types@0.13.4", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="],
261 |
262 | "async-retry": ["async-retry@1.3.3", "", { "dependencies": { "retry": "0.13.1" } }, "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw=="],
263 |
264 | "basic-ftp": ["basic-ftp@5.0.5", "", {}, "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg=="],
265 |
266 | "before-after-hook": ["before-after-hook@3.0.2", "", {}, "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="],
267 |
268 | "bluebird": ["bluebird@3.7.2", "", {}, "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="],
269 |
270 | "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="],
271 |
272 | "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="],
273 |
274 | "c12": ["c12@3.0.3", "", { "dependencies": { "chokidar": "^4.0.3", "confbox": "^0.2.2", "defu": "^6.1.4", "dotenv": "^16.4.7", "exsolve": "^1.0.4", "giget": "^2.0.0", "jiti": "^2.4.2", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^1.0.0", "pkg-types": "^2.1.0", "rc9": "^2.1.2" }, "peerDependencies": { "magicast": "^0.3.5" }, "optionalPeers": ["magicast"] }, "sha512-uC3MacKBb0Z15o5QWCHvHWj5Zv34pGQj9P+iXKSpTuSGFS0KKhUWf4t9AJ+gWjYOdmWCPEGpEzm8sS0iqbpo1w=="],
275 |
276 | "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="],
277 |
278 | "chai": ["chai@5.2.0", "", { "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", "deep-eql": "^5.0.1", "loupe": "^3.1.0", "pathval": "^2.0.0" } }, "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw=="],
279 |
280 | "chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="],
281 |
282 | "chardet": ["chardet@0.7.0", "", {}, "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="],
283 |
284 | "check-error": ["check-error@2.1.1", "", {}, "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw=="],
285 |
286 | "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="],
287 |
288 | "ci-info": ["ci-info@4.2.0", "", {}, "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg=="],
289 |
290 | "citty": ["citty@0.1.6", "", { "dependencies": { "consola": "^3.2.3" } }, "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ=="],
291 |
292 | "cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="],
293 |
294 | "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="],
295 |
296 | "cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="],
297 |
298 | "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
299 |
300 | "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
301 |
302 | "commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="],
303 |
304 | "compare-func": ["compare-func@2.0.0", "", { "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" } }, "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA=="],
305 |
306 | "concat-stream": ["concat-stream@2.0.0", "", { "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.0.2", "typedarray": "^0.0.6" } }, "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A=="],
307 |
308 | "confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="],
309 |
310 | "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="],
311 |
312 | "conventional-changelog": ["conventional-changelog@6.0.0", "", { "dependencies": { "conventional-changelog-angular": "^8.0.0", "conventional-changelog-atom": "^5.0.0", "conventional-changelog-codemirror": "^5.0.0", "conventional-changelog-conventionalcommits": "^8.0.0", "conventional-changelog-core": "^8.0.0", "conventional-changelog-ember": "^5.0.0", "conventional-changelog-eslint": "^6.0.0", "conventional-changelog-express": "^5.0.0", "conventional-changelog-jquery": "^6.0.0", "conventional-changelog-jshint": "^5.0.0", "conventional-changelog-preset-loader": "^5.0.0" } }, "sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w=="],
313 |
314 | "conventional-changelog-angular": ["conventional-changelog-angular@8.0.0", "", { "dependencies": { "compare-func": "^2.0.0" } }, "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA=="],
315 |
316 | "conventional-changelog-atom": ["conventional-changelog-atom@5.0.0", "", {}, "sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g=="],
317 |
318 | "conventional-changelog-codemirror": ["conventional-changelog-codemirror@5.0.0", "", {}, "sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ=="],
319 |
320 | "conventional-changelog-conventionalcommits": ["conventional-changelog-conventionalcommits@8.0.0", "", { "dependencies": { "compare-func": "^2.0.0" } }, "sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA=="],
321 |
322 | "conventional-changelog-core": ["conventional-changelog-core@8.0.0", "", { "dependencies": { "@hutson/parse-repository-url": "^5.0.0", "add-stream": "^1.0.0", "conventional-changelog-writer": "^8.0.0", "conventional-commits-parser": "^6.0.0", "git-raw-commits": "^5.0.0", "git-semver-tags": "^8.0.0", "hosted-git-info": "^7.0.0", "normalize-package-data": "^6.0.0", "read-package-up": "^11.0.0", "read-pkg": "^9.0.0" } }, "sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw=="],
323 |
324 | "conventional-changelog-ember": ["conventional-changelog-ember@5.0.0", "", {}, "sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg=="],
325 |
326 | "conventional-changelog-eslint": ["conventional-changelog-eslint@6.0.0", "", {}, "sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw=="],
327 |
328 | "conventional-changelog-express": ["conventional-changelog-express@5.0.0", "", {}, "sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ=="],
329 |
330 | "conventional-changelog-jquery": ["conventional-changelog-jquery@6.0.0", "", {}, "sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA=="],
331 |
332 | "conventional-changelog-jshint": ["conventional-changelog-jshint@5.0.0", "", { "dependencies": { "compare-func": "^2.0.0" } }, "sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g=="],
333 |
334 | "conventional-changelog-preset-loader": ["conventional-changelog-preset-loader@5.0.0", "", {}, "sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA=="],
335 |
336 | "conventional-changelog-writer": ["conventional-changelog-writer@8.0.1", "", { "dependencies": { "conventional-commits-filter": "^5.0.0", "handlebars": "^4.7.7", "meow": "^13.0.0", "semver": "^7.5.2" }, "bin": { "conventional-changelog-writer": "dist/cli/index.js" } }, "sha512-hlqcy3xHred2gyYg/zXSMXraY2mjAYYo0msUCpK+BGyaVJMFCKWVXPIHiaacGO2GGp13kvHWXFhYmxT4QQqW3Q=="],
337 |
338 | "conventional-commits-filter": ["conventional-commits-filter@5.0.0", "", {}, "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q=="],
339 |
340 | "conventional-commits-parser": ["conventional-commits-parser@6.1.0", "", { "dependencies": { "meow": "^13.0.0" }, "bin": { "conventional-commits-parser": "dist/cli/index.js" } }, "sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw=="],
341 |
342 | "conventional-recommended-bump": ["conventional-recommended-bump@10.0.0", "", { "dependencies": { "@conventional-changelog/git-client": "^1.0.0", "conventional-changelog-preset-loader": "^5.0.0", "conventional-commits-filter": "^5.0.0", "conventional-commits-parser": "^6.0.0", "meow": "^13.0.0" }, "bin": { "conventional-recommended-bump": "dist/cli/index.js" } }, "sha512-RK/fUnc2btot0oEVtrj3p2doImDSs7iiz/bftFCDzels0Qs1mxLghp+DFHMaOC0qiCI6sWzlTDyBFSYuot6pRA=="],
343 |
344 | "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
345 |
346 | "data-uri-to-buffer": ["data-uri-to-buffer@6.0.2", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="],
347 |
348 | "debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="],
349 |
350 | "decimal.js": ["decimal.js@10.5.0", "", {}, "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw=="],
351 |
352 | "deep-eql": ["deep-eql@5.0.2", "", {}, "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q=="],
353 |
354 | "default-browser": ["default-browser@5.2.1", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg=="],
355 |
356 | "default-browser-id": ["default-browser-id@5.0.0", "", {}, "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA=="],
357 |
358 | "define-lazy-prop": ["define-lazy-prop@3.0.0", "", {}, "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg=="],
359 |
360 | "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="],
361 |
362 | "degenerator": ["degenerator@5.0.1", "", { "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", "esprima": "^4.0.1" } }, "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ=="],
363 |
364 | "destr": ["destr@2.0.5", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="],
365 |
366 | "dot-prop": ["dot-prop@5.3.0", "", { "dependencies": { "is-obj": "^2.0.0" } }, "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q=="],
367 |
368 | "dotenv": ["dotenv@16.5.0", "", {}, "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg=="],
369 |
370 | "emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="],
371 |
372 | "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="],
373 |
374 | "esbuild": ["esbuild@0.25.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.4", "@esbuild/android-arm": "0.25.4", "@esbuild/android-arm64": "0.25.4", "@esbuild/android-x64": "0.25.4", "@esbuild/darwin-arm64": "0.25.4", "@esbuild/darwin-x64": "0.25.4", "@esbuild/freebsd-arm64": "0.25.4", "@esbuild/freebsd-x64": "0.25.4", "@esbuild/linux-arm": "0.25.4", "@esbuild/linux-arm64": "0.25.4", "@esbuild/linux-ia32": "0.25.4", "@esbuild/linux-loong64": "0.25.4", "@esbuild/linux-mips64el": "0.25.4", "@esbuild/linux-ppc64": "0.25.4", "@esbuild/linux-riscv64": "0.25.4", "@esbuild/linux-s390x": "0.25.4", "@esbuild/linux-x64": "0.25.4", "@esbuild/netbsd-arm64": "0.25.4", "@esbuild/netbsd-x64": "0.25.4", "@esbuild/openbsd-arm64": "0.25.4", "@esbuild/openbsd-x64": "0.25.4", "@esbuild/sunos-x64": "0.25.4", "@esbuild/win32-arm64": "0.25.4", "@esbuild/win32-ia32": "0.25.4", "@esbuild/win32-x64": "0.25.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q=="],
375 |
376 | "esbuild-register": ["esbuild-register@3.6.0", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "esbuild": ">=0.12 <1" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="],
377 |
378 | "escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="],
379 |
380 | "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="],
381 |
382 | "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
383 |
384 | "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
385 |
386 | "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
387 |
388 | "eta": ["eta@3.5.0", "", {}, "sha512-e3x3FBvGzeCIHhF+zhK8FZA2vC5uFn6b4HJjegUbIWrDb4mJ7JjTGMJY9VGIbRVpmSwHopNiaJibhjIr+HfLug=="],
389 |
390 | "execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="],
391 |
392 | "expect-type": ["expect-type@1.2.1", "", {}, "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw=="],
393 |
394 | "exsolve": ["exsolve@1.0.5", "", {}, "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg=="],
395 |
396 | "external-editor": ["external-editor@3.1.0", "", { "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", "tmp": "^0.0.33" } }, "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew=="],
397 |
398 | "fast-content-type-parse": ["fast-content-type-parse@2.0.1", "", {}, "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q=="],
399 |
400 | "fdir": ["fdir@6.4.4", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg=="],
401 |
402 | "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
403 |
404 | "find-up-simple": ["find-up-simple@1.0.1", "", {}, "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ=="],
405 |
406 | "fs-extra": ["fs-extra@11.3.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew=="],
407 |
408 | "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
409 |
410 | "generate-changelog": ["generate-changelog@1.8.0", "", { "dependencies": { "bluebird": "^3.0.6", "commander": "^2.9.0", "github-url-from-git": "^1.4.0" }, "bin": { "generate-changelog": "./bin/generate", "changelog": "./bin/generate" } }, "sha512-msgpxeB75Ziyg3wGsZuPNl7c5RxChMKmYcAX5obnhUow90dBZW3nLic6nxGtst7Bpx453oS6zAIHcX7F3QVasw=="],
411 |
412 | "get-east-asian-width": ["get-east-asian-width@1.3.0", "", {}, "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="],
413 |
414 | "get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="],
415 |
416 | "get-uri": ["get-uri@6.0.4", "", { "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4" } }, "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ=="],
417 |
418 | "giget": ["giget@2.0.0", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "defu": "^6.1.4", "node-fetch-native": "^1.6.6", "nypm": "^0.6.0", "pathe": "^2.0.3" }, "bin": { "giget": "dist/cli.mjs" } }, "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA=="],
419 |
420 | "git-raw-commits": ["git-raw-commits@5.0.0", "", { "dependencies": { "@conventional-changelog/git-client": "^1.0.0", "meow": "^13.0.0" }, "bin": { "git-raw-commits": "src/cli.js" } }, "sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg=="],
421 |
422 | "git-semver-tags": ["git-semver-tags@8.0.0", "", { "dependencies": { "@conventional-changelog/git-client": "^1.0.0", "meow": "^13.0.0" }, "bin": { "git-semver-tags": "src/cli.js" } }, "sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg=="],
423 |
424 | "git-up": ["git-up@8.1.1", "", { "dependencies": { "is-ssh": "^1.4.0", "parse-url": "^9.2.0" } }, "sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g=="],
425 |
426 | "git-url-parse": ["git-url-parse@16.1.0", "", { "dependencies": { "git-up": "^8.1.0" } }, "sha512-cPLz4HuK86wClEW7iDdeAKcCVlWXmrLpb2L+G9goW0Z1dtpNS6BXXSOckUTlJT/LDQViE1QZKstNORzHsLnobw=="],
427 |
428 | "github-url-from-git": ["github-url-from-git@1.5.0", "", {}, "sha512-WWOec4aRI7YAykQ9+BHmzjyNlkfJFG8QLXnDTsLz/kZefq7qkzdfo4p6fkYYMIq1aj+gZcQs/1HQhQh3DPPxlQ=="],
429 |
430 | "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
431 |
432 | "handlebars": ["handlebars@4.7.8", "", { "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, "optionalDependencies": { "uglify-js": "^3.1.4" }, "bin": { "handlebars": "bin/handlebars" } }, "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ=="],
433 |
434 | "hosted-git-info": ["hosted-git-info@7.0.2", "", { "dependencies": { "lru-cache": "^10.0.1" } }, "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w=="],
435 |
436 | "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="],
437 |
438 | "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
439 |
440 | "human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="],
441 |
442 | "iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="],
443 |
444 | "ignore": ["ignore@7.0.4", "", {}, "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A=="],
445 |
446 | "index-to-position": ["index-to-position@1.1.0", "", {}, "sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg=="],
447 |
448 | "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
449 |
450 | "inquirer": ["inquirer@12.6.0", "", { "dependencies": { "@inquirer/core": "^10.1.10", "@inquirer/prompts": "^7.5.0", "@inquirer/type": "^3.0.6", "ansi-escapes": "^4.3.2", "mute-stream": "^2.0.0", "run-async": "^3.0.0", "rxjs": "^7.8.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-3zmmccQd/8o65nPOZJZ+2wqt76Ghw3+LaMrmc6JE/IzcvQhJ1st+QLCOo/iLS85/tILU0myG31a2TAZX0ysAvg=="],
451 |
452 | "ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="],
453 |
454 | "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="],
455 |
456 | "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
457 |
458 | "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="],
459 |
460 | "is-interactive": ["is-interactive@2.0.0", "", {}, "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ=="],
461 |
462 | "is-obj": ["is-obj@2.0.0", "", {}, "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="],
463 |
464 | "is-ssh": ["is-ssh@1.4.1", "", { "dependencies": { "protocols": "^2.0.1" } }, "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg=="],
465 |
466 | "is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="],
467 |
468 | "is-unicode-supported": ["is-unicode-supported@2.1.0", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="],
469 |
470 | "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="],
471 |
472 | "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
473 |
474 | "issue-parser": ["issue-parser@7.0.1", "", { "dependencies": { "lodash.capitalize": "^4.2.1", "lodash.escaperegexp": "^4.1.2", "lodash.isplainobject": "^4.0.6", "lodash.isstring": "^4.0.1", "lodash.uniqby": "^4.7.0" } }, "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg=="],
475 |
476 | "jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="],
477 |
478 | "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
479 |
480 | "jsbn": ["jsbn@1.1.0", "", {}, "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="],
481 |
482 | "jsonfile": ["jsonfile@6.1.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="],
483 |
484 | "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="],
485 |
486 | "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
487 |
488 | "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="],
489 |
490 | "lodash.capitalize": ["lodash.capitalize@4.2.1", "", {}, "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw=="],
491 |
492 | "lodash.escaperegexp": ["lodash.escaperegexp@4.1.2", "", {}, "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw=="],
493 |
494 | "lodash.get": ["lodash.get@4.4.2", "", {}, "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="],
495 |
496 | "lodash.isplainobject": ["lodash.isplainobject@4.0.6", "", {}, "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="],
497 |
498 | "lodash.isstring": ["lodash.isstring@4.0.1", "", {}, "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="],
499 |
500 | "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
501 |
502 | "lodash.uniqby": ["lodash.uniqby@4.7.0", "", {}, "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww=="],
503 |
504 | "log-symbols": ["log-symbols@6.0.0", "", { "dependencies": { "chalk": "^5.3.0", "is-unicode-supported": "^1.3.0" } }, "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw=="],
505 |
506 | "loupe": ["loupe@3.1.3", "", {}, "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug=="],
507 |
508 | "lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="],
509 |
510 | "macos-release": ["macos-release@3.3.0", "", {}, "sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ=="],
511 |
512 | "magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="],
513 |
514 | "meow": ["meow@13.2.0", "", {}, "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA=="],
515 |
516 | "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="],
517 |
518 | "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="],
519 |
520 | "mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="],
521 |
522 | "mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="],
523 |
524 | "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="],
525 |
526 | "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
527 |
528 | "mri": ["mri@1.2.0", "", {}, "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="],
529 |
530 | "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
531 |
532 | "mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="],
533 |
534 | "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
535 |
536 | "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="],
537 |
538 | "netmask": ["netmask@2.0.2", "", {}, "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="],
539 |
540 | "new-github-release-url": ["new-github-release-url@2.0.0", "", { "dependencies": { "type-fest": "^2.5.1" } }, "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ=="],
541 |
542 | "node-fetch-native": ["node-fetch-native@1.6.6", "", {}, "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ=="],
543 |
544 | "normalize-package-data": ["normalize-package-data@6.0.2", "", { "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" } }, "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g=="],
545 |
546 | "npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="],
547 |
548 | "nypm": ["nypm@0.6.0", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "pathe": "^2.0.3", "pkg-types": "^2.0.0", "tinyexec": "^0.3.2" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg=="],
549 |
550 | "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="],
551 |
552 | "onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="],
553 |
554 | "open": ["open@10.1.2", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "is-wsl": "^3.1.0" } }, "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw=="],
555 |
556 | "ora": ["ora@8.2.0", "", { "dependencies": { "chalk": "^5.3.0", "cli-cursor": "^5.0.0", "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.0.0", "log-symbols": "^6.0.0", "stdin-discarder": "^0.2.2", "string-width": "^7.2.0", "strip-ansi": "^7.1.0" } }, "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw=="],
557 |
558 | "os-name": ["os-name@6.0.0", "", { "dependencies": { "macos-release": "^3.2.0", "windows-release": "^6.0.0" } }, "sha512-bv608E0UX86atYi2GMGjDe0vF/X1TJjemNS8oEW6z22YW1Rc3QykSYoGfkQbX0zZX9H0ZB6CQP/3GTf1I5hURg=="],
559 |
560 | "os-tmpdir": ["os-tmpdir@1.0.2", "", {}, "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="],
561 |
562 | "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
563 |
564 | "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="],
565 |
566 | "pac-proxy-agent": ["pac-proxy-agent@7.2.0", "", { "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", "socks-proxy-agent": "^8.0.5" } }, "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA=="],
567 |
568 | "pac-resolver": ["pac-resolver@7.0.1", "", { "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" } }, "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg=="],
569 |
570 | "parse-json": ["parse-json@8.3.0", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "index-to-position": "^1.1.0", "type-fest": "^4.39.1" } }, "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ=="],
571 |
572 | "parse-path": ["parse-path@7.1.0", "", { "dependencies": { "protocols": "^2.0.0" } }, "sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw=="],
573 |
574 | "parse-url": ["parse-url@9.2.0", "", { "dependencies": { "@types/parse-path": "^7.0.0", "parse-path": "^7.0.0" } }, "sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ=="],
575 |
576 | "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="],
577 |
578 | "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
579 |
580 | "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
581 |
582 | "pathval": ["pathval@2.0.0", "", {}, "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA=="],
583 |
584 | "perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="],
585 |
586 | "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
587 |
588 | "picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="],
589 |
590 | "pkg-types": ["pkg-types@2.1.0", "", { "dependencies": { "confbox": "^0.2.1", "exsolve": "^1.0.1", "pathe": "^2.0.3" } }, "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A=="],
591 |
592 | "postcss": ["postcss@8.5.3", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A=="],
593 |
594 | "prettier": ["prettier@3.5.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw=="],
595 |
596 | "pretty-quick": ["pretty-quick@4.1.1", "", { "dependencies": { "find-up": "^5.0.0", "ignore": "^7.0.3", "mri": "^1.2.0", "picocolors": "^1.1.1", "picomatch": "^4.0.2", "tinyexec": "^0.3.2", "tslib": "^2.8.1" }, "peerDependencies": { "prettier": "^3.0.0" }, "bin": { "pretty-quick": "lib/cli.mjs" } }, "sha512-9Ud0l/CspNTmyIdYac9X7Inb3o8fuUsw+1zJFvCGn+at0t1UwUcUdo2RSZ41gcmfLv1fxgWQxWEfItR7CBwugg=="],
597 |
598 | "prisma": ["prisma@6.7.0", "", { "dependencies": { "@prisma/config": "6.7.0", "@prisma/engines": "6.7.0" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "typescript": ">=5.1.0" }, "optionalPeers": ["typescript"], "bin": { "prisma": "build/index.js" } }, "sha512-vArg+4UqnQ13CVhc2WUosemwh6hr6cr6FY2uzDvCIFwH8pu8BXVv38PktoMLVjtX7sbYThxbnZF5YiR8sN2clw=="],
599 |
600 | "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="],
601 |
602 | "protocols": ["protocols@2.0.2", "", {}, "sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ=="],
603 |
604 | "proxy-agent": ["proxy-agent@6.5.0", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.5" } }, "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A=="],
605 |
606 | "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="],
607 |
608 | "rc9": ["rc9@2.1.2", "", { "dependencies": { "defu": "^6.1.4", "destr": "^2.0.3" } }, "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg=="],
609 |
610 | "read-package-up": ["read-package-up@11.0.0", "", { "dependencies": { "find-up-simple": "^1.0.0", "read-pkg": "^9.0.0", "type-fest": "^4.6.0" } }, "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ=="],
611 |
612 | "read-pkg": ["read-pkg@9.0.1", "", { "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", "parse-json": "^8.0.0", "type-fest": "^4.6.0", "unicorn-magic": "^0.1.0" } }, "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA=="],
613 |
614 | "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
615 |
616 | "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="],
617 |
618 | "release-it": ["release-it@19.0.2", "", { "dependencies": { "@nodeutils/defaults-deep": "1.1.0", "@octokit/rest": "21.1.1", "@phun-ky/typeof": "1.2.8", "async-retry": "1.3.3", "c12": "3.0.3", "ci-info": "^4.2.0", "eta": "3.5.0", "git-url-parse": "16.1.0", "inquirer": "12.6.0", "issue-parser": "7.0.1", "lodash.get": "4.4.2", "lodash.merge": "4.6.2", "mime-types": "3.0.1", "new-github-release-url": "2.0.0", "open": "10.1.2", "ora": "8.2.0", "os-name": "6.0.0", "proxy-agent": "6.5.0", "semver": "7.7.1", "tinyexec": "1.0.1", "tinyglobby": "0.2.13", "undici": "6.21.2", "url-join": "5.0.0", "wildcard-match": "5.1.4", "yargs-parser": "21.1.1" }, "bin": { "release-it": "bin/release-it.js" } }, "sha512-tGRCcKeXNOMrK9Qe+ZIgQiMlQgjV8PLxZjTq1XGlCk5u1qPgx+Pps0i8HIt667FDt0wLjFtvn5o9ItpitKnVUA=="],
619 |
620 | "restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="],
621 |
622 | "retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="],
623 |
624 | "rollup": ["rollup@4.40.2", "", { "dependencies": { "@types/estree": "1.0.7" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.40.2", "@rollup/rollup-android-arm64": "4.40.2", "@rollup/rollup-darwin-arm64": "4.40.2", "@rollup/rollup-darwin-x64": "4.40.2", "@rollup/rollup-freebsd-arm64": "4.40.2", "@rollup/rollup-freebsd-x64": "4.40.2", "@rollup/rollup-linux-arm-gnueabihf": "4.40.2", "@rollup/rollup-linux-arm-musleabihf": "4.40.2", "@rollup/rollup-linux-arm64-gnu": "4.40.2", "@rollup/rollup-linux-arm64-musl": "4.40.2", "@rollup/rollup-linux-loongarch64-gnu": "4.40.2", "@rollup/rollup-linux-powerpc64le-gnu": "4.40.2", "@rollup/rollup-linux-riscv64-gnu": "4.40.2", "@rollup/rollup-linux-riscv64-musl": "4.40.2", "@rollup/rollup-linux-s390x-gnu": "4.40.2", "@rollup/rollup-linux-x64-gnu": "4.40.2", "@rollup/rollup-linux-x64-musl": "4.40.2", "@rollup/rollup-win32-arm64-msvc": "4.40.2", "@rollup/rollup-win32-ia32-msvc": "4.40.2", "@rollup/rollup-win32-x64-msvc": "4.40.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg=="],
625 |
626 | "run-applescript": ["run-applescript@7.0.0", "", {}, "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A=="],
627 |
628 | "run-async": ["run-async@3.0.0", "", {}, "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q=="],
629 |
630 | "rxjs": ["rxjs@7.8.2", "", { "dependencies": { "tslib": "^2.1.0" } }, "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA=="],
631 |
632 | "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
633 |
634 | "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
635 |
636 | "semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="],
637 |
638 | "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
639 |
640 | "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
641 |
642 | "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="],
643 |
644 | "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
645 |
646 | "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
647 |
648 | "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="],
649 |
650 | "socks": ["socks@2.8.4", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ=="],
651 |
652 | "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="],
653 |
654 | "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
655 |
656 | "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
657 |
658 | "spdx-correct": ["spdx-correct@3.2.0", "", { "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA=="],
659 |
660 | "spdx-exceptions": ["spdx-exceptions@2.5.0", "", {}, "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w=="],
661 |
662 | "spdx-expression-parse": ["spdx-expression-parse@3.0.1", "", { "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q=="],
663 |
664 | "spdx-license-ids": ["spdx-license-ids@3.0.21", "", {}, "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg=="],
665 |
666 | "sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="],
667 |
668 | "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="],
669 |
670 | "std-env": ["std-env@3.9.0", "", {}, "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw=="],
671 |
672 | "stdin-discarder": ["stdin-discarder@0.2.2", "", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="],
673 |
674 | "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="],
675 |
676 | "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="],
677 |
678 | "strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
679 |
680 | "strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="],
681 |
682 | "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="],
683 |
684 | "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="],
685 |
686 | "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="],
687 |
688 | "tinyglobby": ["tinyglobby@0.2.13", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw=="],
689 |
690 | "tinypool": ["tinypool@1.0.2", "", {}, "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA=="],
691 |
692 | "tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="],
693 |
694 | "tinyspy": ["tinyspy@3.0.2", "", {}, "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q=="],
695 |
696 | "tmp": ["tmp@0.0.33", "", { "dependencies": { "os-tmpdir": "~1.0.2" } }, "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="],
697 |
698 | "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
699 |
700 | "type-fest": ["type-fest@2.19.0", "", {}, "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA=="],
701 |
702 | "typedarray": ["typedarray@0.0.6", "", {}, "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="],
703 |
704 | "typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="],
705 |
706 | "uglify-js": ["uglify-js@3.19.3", "", { "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ=="],
707 |
708 | "undici": ["undici@6.21.2", "", {}, "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g=="],
709 |
710 | "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
711 |
712 | "unicorn-magic": ["unicorn-magic@0.1.0", "", {}, "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ=="],
713 |
714 | "universal-user-agent": ["universal-user-agent@7.0.2", "", {}, "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q=="],
715 |
716 | "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="],
717 |
718 | "url-join": ["url-join@5.0.0", "", {}, "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA=="],
719 |
720 | "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
721 |
722 | "validate-npm-package-license": ["validate-npm-package-license@3.0.4", "", { "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="],
723 |
724 | "vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="],
725 |
726 | "vite-node": ["vite-node@3.1.3", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.0", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA=="],
727 |
728 | "vitest": ["vitest@3.1.3", "", { "dependencies": { "@vitest/expect": "3.1.3", "@vitest/mocker": "3.1.3", "@vitest/pretty-format": "^3.1.3", "@vitest/runner": "3.1.3", "@vitest/snapshot": "3.1.3", "@vitest/spy": "3.1.3", "@vitest/utils": "3.1.3", "chai": "^5.2.0", "debug": "^4.4.0", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.13", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", "vite-node": "3.1.3", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.1.3", "@vitest/ui": "3.1.3", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw=="],
729 |
730 | "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
731 |
732 | "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="],
733 |
734 | "wildcard-match": ["wildcard-match@5.1.4", "", {}, "sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g=="],
735 |
736 | "windows-release": ["windows-release@6.0.1", "", { "dependencies": { "execa": "^8.0.1" } }, "sha512-MS3BzG8QK33dAyqwxfYJCJ03arkwKaddUOvvnnlFdXLudflsQF6I8yAxrLBeQk4yO8wjdH/+ax0YzxJEDrOftg=="],
737 |
738 | "wordwrap": ["wordwrap@1.0.0", "", {}, "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="],
739 |
740 | "wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="],
741 |
742 | "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
743 |
744 | "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
745 |
746 | "yoctocolors-cjs": ["yoctocolors-cjs@2.1.2", "", {}, "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA=="],
747 |
748 | "@octokit/plugin-paginate-rest/@octokit/types": ["@octokit/types@13.10.0", "", { "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA=="],
749 |
750 | "@octokit/plugin-rest-endpoint-methods/@octokit/types": ["@octokit/types@13.10.0", "", { "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA=="],
751 |
752 | "ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="],
753 |
754 | "execa/onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="],
755 |
756 | "hosted-git-info/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
757 |
758 | "log-symbols/is-unicode-supported": ["is-unicode-supported@1.3.0", "", {}, "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="],
759 |
760 | "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="],
761 |
762 | "parse-json/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],
763 |
764 | "read-package-up/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],
765 |
766 | "read-pkg/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],
767 |
768 | "release-it/tinyexec": ["tinyexec@1.0.1", "", {}, "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw=="],
769 |
770 | "wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
771 |
772 | "wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
773 |
774 | "@octokit/plugin-paginate-rest/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@24.2.0", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="],
775 |
776 | "@octokit/plugin-rest-endpoint-methods/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@24.2.0", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="],
777 |
778 | "wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
779 |
780 | "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
781 | }
782 | }
783 |
--------------------------------------------------------------------------------
/commitlint.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | extends: ['@commitlint/config-conventional'],
3 | plugins: {
4 | '@release-it/conventional-changelog': {
5 | gitRawCommitsOpts: {
6 | merges: null,
7 | },
8 | parserOpts: {
9 | mergePattern: '^Merge pull request #(\\d+) from (.*)$',
10 | },
11 | },
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | .prisma
--------------------------------------------------------------------------------
/example/index.ts:
--------------------------------------------------------------------------------
1 | import { fakeProfileComplete } from './prisma/fake-data';
2 | import { fakeUser } from './prisma/fake-data';
3 |
4 | console.log(fakeUser());
5 | console.log(fakeProfileComplete());
6 |
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "usage",
3 | "private": true,
4 | "version": "1.0.0",
5 | "main": "src/app.js",
6 | "license": "MIT",
7 | "scripts": {
8 | "start": "ts-node index.ts"
9 | },
10 | "dependencies": {
11 | "@prisma/client": "^6.7.0",
12 | "ts-node": "^10.9.2",
13 | "prisma-generator-fake-data": "file:../"
14 | },
15 | "devDependencies": {
16 | "@types/node": "22.15.13",
17 | "prisma": "^6.7.0",
18 | "typescript": "5.8.3"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/example/prisma/fakeData.utils.ts:
--------------------------------------------------------------------------------
1 | import { faker } from '@faker-js/faker';
2 | export function fakeSettings() {
3 | return {
4 | notificationsEnabled: faker.datatype.boolean(),
5 | preferredColor: faker.color.rgb(),
6 | };
7 | }
8 |
--------------------------------------------------------------------------------
/example/prisma/schema.prisma:
--------------------------------------------------------------------------------
1 | generator client {
2 | ///provider = "prisma-client-js" to use the old client
3 | provider = "prisma-client"
4 | output = "../.prisma"
5 | }
6 |
7 | generator custom_generator {
8 | ///in your project, you'll use it like this
9 | ///provider = "prisma-generator-fake-data"
10 | provider = "ts-node ../src/bin.ts"
11 | extraImport = "import {fakeSettings} from './fakeData.utils'"
12 | extraExport = "export * from './fakeData.utils'"
13 | }
14 |
15 | datasource db {
16 | provider = "postgresql"
17 | url = env("DATABASE_URL")
18 | }
19 |
20 | model User {
21 | id String @id @default(cuid())
22 | email String @unique
23 | name String
24 | age Int
25 | ///FAKE:fakeSettings()
26 | settings Json
27 | maybeString String?
28 | status UserStatus
29 | status2 UserStatus @default(active)
30 | profile Profile?
31 | }
32 |
33 | enum UserStatus {
34 | active
35 | inactive
36 | }
37 |
38 | model Profile {
39 | id Int @id @default(autoincrement())
40 | someConfiguration Boolean
41 | userId String @unique
42 | user User @relation(fields: [userId], references: [id])
43 | settings ProfileSettings?
44 | }
45 |
46 | model ProfileSettings {
47 | id Int @id @default(autoincrement())
48 | someConfiguration Boolean
49 | profileId Int @unique
50 | profile Profile @relation(fields: [profileId], references: [id])
51 | }
52 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "prisma-generator-fake-data",
3 | "description": "The easiest way to generate mock data based on your Prisma models!",
4 | "version": "0.15.0",
5 | "main": "dist/generator.js",
6 | "license": "MIT",
7 | "bin": {
8 | "prisma-generator-fake-data": "dist/bin.js"
9 | },
10 | "engines": {
11 | "node": ">= 16.0.0"
12 | },
13 | "scripts": {
14 | "build": "npx tsc",
15 | "prepack": "bun run build",
16 | "test": "vitest run",
17 | "test:watch": "vitest",
18 | "typecheck": "tsc --noEmit",
19 | "release": "release-it"
20 | },
21 | "dependencies": {
22 | "@faker-js/faker": "^9.7.0",
23 | "@prisma/generator-helper": "^6.7.0",
24 | "@prisma/internals": "^6.7.0",
25 | "decimal.js": "^10.5.0",
26 | "tiny-invariant": "^1.3.3"
27 | },
28 | "devDependencies": {
29 | "@release-it/conventional-changelog": "^10.0.1",
30 | "@types/node": "^22.15.13",
31 | "@types/prettier": "^3.0.0",
32 | "generate-changelog": "^1.8.0",
33 | "prettier": "^3.5.3",
34 | "pretty-quick": "^4.1.1",
35 | "prisma": "^6.7.0",
36 | "release-it": "^19.0.2",
37 | "typescript": "^5.8.3",
38 | "vitest": "^3.1.3"
39 | },
40 | "homepage": "https://github.com/luisrudge/prisma-generator-fake-data",
41 | "repository": {
42 | "type": "git",
43 | "url": "https://github.com/luisrudge/prisma-generator-fake-data.git"
44 | },
45 | "author": "Luis Rudge ",
46 | "keywords": [
47 | "prisma",
48 | "prisma2",
49 | "generator",
50 | "fake data",
51 | "faker-js"
52 | ],
53 | "files": [
54 | "dist"
55 | ],
56 | "publishConfig": {
57 | "registry": "https://registry.npmjs.org/"
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/__tests__/__snapshots__/createMethods.test.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`createMethods with \`null\` as \`emptyValueAs\` 1`] = `
4 | "import { Enum } from '@prisma/client';
5 | import { faker } from '@faker-js/faker';
6 | import Decimal from 'decimal.js';
7 |
8 |
9 |
10 | export function fakeUser() {
11 | return {
12 | email: faker.internet.email(),
13 | name: faker.person.fullName(),
14 | companyName: faker.company.name(),
15 | age: faker.number.int({min: 0, max: 99}),
16 | firstName: faker.person.firstName(),
17 | lastName: faker.person.lastName(),
18 | string: faker.lorem.words(5),
19 | nullableString: null,
20 | boolean: faker.datatype.boolean(),
21 | nullableBoolean: null,
22 | int: faker.number.int(),
23 | nullableInt: null,
24 | bigInt: BigInt(faker.number.int()),
25 | nullableBigInt: null,
26 | float: faker.number.float(),
27 | nullableFloat: null,
28 | decimal: new Decimal(faker.number.float()),
29 | nullableDecimal: null,
30 | dateTime: faker.date.anytime(),
31 | nullableDateTime: null,
32 | stringArray: faker.lorem.words(5).split(' '),
33 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
34 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
35 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
36 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
37 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
38 | json: {test: faker.lorem.word()},
39 | nullableJson: null,
40 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
41 | nullableEnum: null,
42 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
43 | };
44 | }
45 | export function fakeUserComplete() {
46 | return {
47 | id: faker.string.uuid(),
48 | email: faker.internet.email(),
49 | name: faker.person.fullName(),
50 | companyName: faker.company.name(),
51 | age: faker.number.int({min: 0, max: 99}),
52 | firstName: faker.person.firstName(),
53 | lastName: faker.person.lastName(),
54 | string: faker.lorem.words(5),
55 | stringWithDefault: 'default',
56 | nullableString: null,
57 | boolean: faker.datatype.boolean(),
58 | booleanWithDefault: true,
59 | nullableBoolean: null,
60 | int: faker.number.int(),
61 | intWithDefault: 1,
62 | nullableInt: null,
63 | bigInt: BigInt(faker.number.int()),
64 | bigIntWithDefault: BigInt(1),
65 | nullableBigInt: null,
66 | float: faker.number.float(),
67 | floatWithDefault: 1.1,
68 | nullableFloat: null,
69 | decimal: new Decimal(faker.number.float()),
70 | decimalWithDefault: new Decimal(1.23),
71 | nullableDecimal: null,
72 | dateTime: faker.date.anytime(),
73 | dateTimeWithDefault: new Date(),
74 | nullableDateTime: null,
75 | stringArray: faker.lorem.words(5).split(' '),
76 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
77 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
78 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
79 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
80 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
81 | json: {test: faker.lorem.word()},
82 | jsonWithDefault: {},
83 | jsonWithDefaultAndFake: {test2: faker.lorem.word()},
84 | nullableJson: null,
85 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
86 | enumWithDefault: Enum.A,
87 | nullableEnum: null,
88 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
89 | enumsWithDefault: [Enum.A, Enum.B],
90 | };
91 | }
92 | export function fakeUser2Complete() {
93 | return {
94 | id: faker.number.int({ max: 2147483647 }),
95 | };
96 | }
97 | export function fakeUserRelationComplete() {
98 | return {
99 | id: faker.string.uuid(),
100 | userId: faker.string.uuid(),
101 | userId2: faker.string.uuid(),
102 | };
103 | }
104 | export function fakeUser2RelationComplete() {
105 | return {
106 | id: faker.string.uuid(),
107 | user2Id: faker.number.int(),
108 | };
109 | }
110 | "
111 | `;
112 |
113 | exports[`createMethods with custom clientImportPath 1`] = `
114 | "import { Enum } from './src/generated/client';
115 | import { faker } from '@faker-js/faker';
116 | import Decimal from 'decimal.js';
117 |
118 |
119 |
120 | export function fakeUser() {
121 | return {
122 | email: faker.internet.email(),
123 | name: faker.person.fullName(),
124 | companyName: faker.company.name(),
125 | age: faker.number.int({min: 0, max: 99}),
126 | firstName: faker.person.firstName(),
127 | lastName: faker.person.lastName(),
128 | string: faker.lorem.words(5),
129 | nullableString: null,
130 | boolean: faker.datatype.boolean(),
131 | nullableBoolean: null,
132 | int: faker.number.int(),
133 | nullableInt: null,
134 | bigInt: BigInt(faker.number.int()),
135 | nullableBigInt: null,
136 | float: faker.number.float(),
137 | nullableFloat: null,
138 | decimal: new Decimal(faker.number.float()),
139 | nullableDecimal: null,
140 | dateTime: faker.date.anytime(),
141 | nullableDateTime: null,
142 | stringArray: faker.lorem.words(5).split(' '),
143 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
144 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
145 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
146 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
147 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
148 | json: {test: faker.lorem.word()},
149 | nullableJson: null,
150 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
151 | nullableEnum: null,
152 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
153 | };
154 | }
155 | export function fakeUserComplete() {
156 | return {
157 | id: faker.string.uuid(),
158 | email: faker.internet.email(),
159 | name: faker.person.fullName(),
160 | companyName: faker.company.name(),
161 | age: faker.number.int({min: 0, max: 99}),
162 | firstName: faker.person.firstName(),
163 | lastName: faker.person.lastName(),
164 | string: faker.lorem.words(5),
165 | stringWithDefault: 'default',
166 | nullableString: null,
167 | boolean: faker.datatype.boolean(),
168 | booleanWithDefault: true,
169 | nullableBoolean: null,
170 | int: faker.number.int(),
171 | intWithDefault: 1,
172 | nullableInt: null,
173 | bigInt: BigInt(faker.number.int()),
174 | bigIntWithDefault: BigInt(1),
175 | nullableBigInt: null,
176 | float: faker.number.float(),
177 | floatWithDefault: 1.1,
178 | nullableFloat: null,
179 | decimal: new Decimal(faker.number.float()),
180 | decimalWithDefault: new Decimal(1.23),
181 | nullableDecimal: null,
182 | dateTime: faker.date.anytime(),
183 | dateTimeWithDefault: new Date(),
184 | nullableDateTime: null,
185 | stringArray: faker.lorem.words(5).split(' '),
186 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
187 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
188 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
189 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
190 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
191 | json: {test: faker.lorem.word()},
192 | jsonWithDefault: {},
193 | jsonWithDefaultAndFake: {test2: faker.lorem.word()},
194 | nullableJson: null,
195 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
196 | enumWithDefault: Enum.A,
197 | nullableEnum: null,
198 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
199 | enumsWithDefault: [Enum.A, Enum.B],
200 | };
201 | }
202 | export function fakeUser2Complete() {
203 | return {
204 | id: faker.number.int({ max: 2147483647 }),
205 | };
206 | }
207 | export function fakeUserRelationComplete() {
208 | return {
209 | id: faker.string.uuid(),
210 | userId: faker.string.uuid(),
211 | userId2: faker.string.uuid(),
212 | };
213 | }
214 | export function fakeUser2RelationComplete() {
215 | return {
216 | id: faker.string.uuid(),
217 | user2Id: faker.number.int(),
218 | };
219 | }
220 | "
221 | `;
222 |
223 | exports[`createMethods with default clientImportPath 1`] = `
224 | "import { Enum } from '@prisma/client';
225 | import { faker } from '@faker-js/faker';
226 | import Decimal from 'decimal.js';
227 |
228 |
229 |
230 | export function fakeUser() {
231 | return {
232 | email: faker.internet.email(),
233 | name: faker.person.fullName(),
234 | companyName: faker.company.name(),
235 | age: faker.number.int({min: 0, max: 99}),
236 | firstName: faker.person.firstName(),
237 | lastName: faker.person.lastName(),
238 | string: faker.lorem.words(5),
239 | nullableString: null,
240 | boolean: faker.datatype.boolean(),
241 | nullableBoolean: null,
242 | int: faker.number.int(),
243 | nullableInt: null,
244 | bigInt: BigInt(faker.number.int()),
245 | nullableBigInt: null,
246 | float: faker.number.float(),
247 | nullableFloat: null,
248 | decimal: new Decimal(faker.number.float()),
249 | nullableDecimal: null,
250 | dateTime: faker.date.anytime(),
251 | nullableDateTime: null,
252 | stringArray: faker.lorem.words(5).split(' '),
253 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
254 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
255 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
256 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
257 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
258 | json: {test: faker.lorem.word()},
259 | nullableJson: null,
260 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
261 | nullableEnum: null,
262 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
263 | };
264 | }
265 | export function fakeUserComplete() {
266 | return {
267 | id: faker.string.uuid(),
268 | email: faker.internet.email(),
269 | name: faker.person.fullName(),
270 | companyName: faker.company.name(),
271 | age: faker.number.int({min: 0, max: 99}),
272 | firstName: faker.person.firstName(),
273 | lastName: faker.person.lastName(),
274 | string: faker.lorem.words(5),
275 | stringWithDefault: 'default',
276 | nullableString: null,
277 | boolean: faker.datatype.boolean(),
278 | booleanWithDefault: true,
279 | nullableBoolean: null,
280 | int: faker.number.int(),
281 | intWithDefault: 1,
282 | nullableInt: null,
283 | bigInt: BigInt(faker.number.int()),
284 | bigIntWithDefault: BigInt(1),
285 | nullableBigInt: null,
286 | float: faker.number.float(),
287 | floatWithDefault: 1.1,
288 | nullableFloat: null,
289 | decimal: new Decimal(faker.number.float()),
290 | decimalWithDefault: new Decimal(1.23),
291 | nullableDecimal: null,
292 | dateTime: faker.date.anytime(),
293 | dateTimeWithDefault: new Date(),
294 | nullableDateTime: null,
295 | stringArray: faker.lorem.words(5).split(' '),
296 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
297 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
298 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
299 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
300 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
301 | json: {test: faker.lorem.word()},
302 | jsonWithDefault: {},
303 | jsonWithDefaultAndFake: {test2: faker.lorem.word()},
304 | nullableJson: null,
305 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
306 | enumWithDefault: Enum.A,
307 | nullableEnum: null,
308 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
309 | enumsWithDefault: [Enum.A, Enum.B],
310 | };
311 | }
312 | export function fakeUser2Complete() {
313 | return {
314 | id: faker.number.int({ max: 2147483647 }),
315 | };
316 | }
317 | export function fakeUserRelationComplete() {
318 | return {
319 | id: faker.string.uuid(),
320 | userId: faker.string.uuid(),
321 | userId2: faker.string.uuid(),
322 | };
323 | }
324 | export function fakeUser2RelationComplete() {
325 | return {
326 | id: faker.string.uuid(),
327 | user2Id: faker.number.int(),
328 | };
329 | }
330 | "
331 | `;
332 |
333 | exports[`createMethods with extraExport 1`] = `
334 | "import { Enum } from '@prisma/client';
335 | import { faker } from '@faker-js/faker';
336 | import Decimal from 'decimal.js';
337 |
338 | export * from '../utils/fakeImports'
339 |
340 | export function fakeUser() {
341 | return {
342 | email: faker.internet.email(),
343 | name: faker.person.fullName(),
344 | companyName: faker.company.name(),
345 | age: faker.number.int({min: 0, max: 99}),
346 | firstName: faker.person.firstName(),
347 | lastName: faker.person.lastName(),
348 | string: faker.lorem.words(5),
349 | nullableString: undefined,
350 | boolean: faker.datatype.boolean(),
351 | nullableBoolean: undefined,
352 | int: faker.number.int(),
353 | nullableInt: undefined,
354 | bigInt: BigInt(faker.number.int()),
355 | nullableBigInt: undefined,
356 | float: faker.number.float(),
357 | nullableFloat: undefined,
358 | decimal: new Decimal(faker.number.float()),
359 | nullableDecimal: undefined,
360 | dateTime: faker.date.anytime(),
361 | nullableDateTime: undefined,
362 | stringArray: faker.lorem.words(5).split(' '),
363 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
364 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
365 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
366 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
367 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
368 | json: {test: faker.lorem.word()},
369 | nullableJson: undefined,
370 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
371 | nullableEnum: undefined,
372 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
373 | };
374 | }
375 | export function fakeUserComplete() {
376 | return {
377 | id: faker.string.uuid(),
378 | email: faker.internet.email(),
379 | name: faker.person.fullName(),
380 | companyName: faker.company.name(),
381 | age: faker.number.int({min: 0, max: 99}),
382 | firstName: faker.person.firstName(),
383 | lastName: faker.person.lastName(),
384 | string: faker.lorem.words(5),
385 | stringWithDefault: 'default',
386 | nullableString: undefined,
387 | boolean: faker.datatype.boolean(),
388 | booleanWithDefault: true,
389 | nullableBoolean: undefined,
390 | int: faker.number.int(),
391 | intWithDefault: 1,
392 | nullableInt: undefined,
393 | bigInt: BigInt(faker.number.int()),
394 | bigIntWithDefault: BigInt(1),
395 | nullableBigInt: undefined,
396 | float: faker.number.float(),
397 | floatWithDefault: 1.1,
398 | nullableFloat: undefined,
399 | decimal: new Decimal(faker.number.float()),
400 | decimalWithDefault: new Decimal(1.23),
401 | nullableDecimal: undefined,
402 | dateTime: faker.date.anytime(),
403 | dateTimeWithDefault: new Date(),
404 | nullableDateTime: undefined,
405 | stringArray: faker.lorem.words(5).split(' '),
406 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
407 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
408 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
409 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
410 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
411 | json: {test: faker.lorem.word()},
412 | jsonWithDefault: {},
413 | jsonWithDefaultAndFake: {test2: faker.lorem.word()},
414 | nullableJson: undefined,
415 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
416 | enumWithDefault: Enum.A,
417 | nullableEnum: undefined,
418 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
419 | enumsWithDefault: [Enum.A, Enum.B],
420 | };
421 | }
422 | export function fakeUser2Complete() {
423 | return {
424 | id: faker.number.int({ max: 2147483647 }),
425 | };
426 | }
427 | export function fakeUserRelationComplete() {
428 | return {
429 | id: faker.string.uuid(),
430 | userId: faker.string.uuid(),
431 | userId2: faker.string.uuid(),
432 | };
433 | }
434 | export function fakeUser2RelationComplete() {
435 | return {
436 | id: faker.string.uuid(),
437 | user2Id: faker.number.int(),
438 | };
439 | }
440 | "
441 | `;
442 |
443 | exports[`createMethods with extraImport 1`] = `
444 | "import { Enum } from '@prisma/client';
445 | import { faker } from '@faker-js/faker';
446 | import Decimal from 'decimal.js';
447 | import {myCustomFunction} from '../utils/fakeImports'
448 |
449 |
450 | export function fakeUser() {
451 | return {
452 | email: faker.internet.email(),
453 | name: faker.person.fullName(),
454 | companyName: faker.company.name(),
455 | age: faker.number.int({min: 0, max: 99}),
456 | firstName: faker.person.firstName(),
457 | lastName: faker.person.lastName(),
458 | string: faker.lorem.words(5),
459 | nullableString: undefined,
460 | boolean: faker.datatype.boolean(),
461 | nullableBoolean: undefined,
462 | int: faker.number.int(),
463 | nullableInt: undefined,
464 | bigInt: BigInt(faker.number.int()),
465 | nullableBigInt: undefined,
466 | float: faker.number.float(),
467 | nullableFloat: undefined,
468 | decimal: new Decimal(faker.number.float()),
469 | nullableDecimal: undefined,
470 | dateTime: faker.date.anytime(),
471 | nullableDateTime: undefined,
472 | stringArray: faker.lorem.words(5).split(' '),
473 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
474 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
475 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
476 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
477 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
478 | json: {test: faker.lorem.word()},
479 | nullableJson: undefined,
480 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
481 | nullableEnum: undefined,
482 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
483 | };
484 | }
485 | export function fakeUserComplete() {
486 | return {
487 | id: faker.string.uuid(),
488 | email: faker.internet.email(),
489 | name: faker.person.fullName(),
490 | companyName: faker.company.name(),
491 | age: faker.number.int({min: 0, max: 99}),
492 | firstName: faker.person.firstName(),
493 | lastName: faker.person.lastName(),
494 | string: faker.lorem.words(5),
495 | stringWithDefault: 'default',
496 | nullableString: undefined,
497 | boolean: faker.datatype.boolean(),
498 | booleanWithDefault: true,
499 | nullableBoolean: undefined,
500 | int: faker.number.int(),
501 | intWithDefault: 1,
502 | nullableInt: undefined,
503 | bigInt: BigInt(faker.number.int()),
504 | bigIntWithDefault: BigInt(1),
505 | nullableBigInt: undefined,
506 | float: faker.number.float(),
507 | floatWithDefault: 1.1,
508 | nullableFloat: undefined,
509 | decimal: new Decimal(faker.number.float()),
510 | decimalWithDefault: new Decimal(1.23),
511 | nullableDecimal: undefined,
512 | dateTime: faker.date.anytime(),
513 | dateTimeWithDefault: new Date(),
514 | nullableDateTime: undefined,
515 | stringArray: faker.lorem.words(5).split(' '),
516 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
517 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
518 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
519 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
520 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
521 | json: {test: faker.lorem.word()},
522 | jsonWithDefault: {},
523 | jsonWithDefaultAndFake: {test2: faker.lorem.word()},
524 | nullableJson: undefined,
525 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
526 | enumWithDefault: Enum.A,
527 | nullableEnum: undefined,
528 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
529 | enumsWithDefault: [Enum.A, Enum.B],
530 | };
531 | }
532 | export function fakeUser2Complete() {
533 | return {
534 | id: faker.number.int({ max: 2147483647 }),
535 | };
536 | }
537 | export function fakeUserRelationComplete() {
538 | return {
539 | id: faker.string.uuid(),
540 | userId: faker.string.uuid(),
541 | userId2: faker.string.uuid(),
542 | };
543 | }
544 | export function fakeUser2RelationComplete() {
545 | return {
546 | id: faker.string.uuid(),
547 | user2Id: faker.number.int(),
548 | };
549 | }
550 | "
551 | `;
552 |
553 | exports[`createMethods with extraImport and extraExport 1`] = `
554 | "import { Enum } from '@prisma/client';
555 | import { faker } from '@faker-js/faker';
556 | import Decimal from 'decimal.js';
557 | import {myCustomFunction} from '../utils/fakeImports'
558 | export * from '../utils/fakeImports'
559 |
560 | export function fakeUser() {
561 | return {
562 | email: faker.internet.email(),
563 | name: faker.person.fullName(),
564 | companyName: faker.company.name(),
565 | age: faker.number.int({min: 0, max: 99}),
566 | firstName: faker.person.firstName(),
567 | lastName: faker.person.lastName(),
568 | string: faker.lorem.words(5),
569 | nullableString: undefined,
570 | boolean: faker.datatype.boolean(),
571 | nullableBoolean: undefined,
572 | int: faker.number.int(),
573 | nullableInt: undefined,
574 | bigInt: BigInt(faker.number.int()),
575 | nullableBigInt: undefined,
576 | float: faker.number.float(),
577 | nullableFloat: undefined,
578 | decimal: new Decimal(faker.number.float()),
579 | nullableDecimal: undefined,
580 | dateTime: faker.date.anytime(),
581 | nullableDateTime: undefined,
582 | stringArray: faker.lorem.words(5).split(' '),
583 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
584 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
585 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
586 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
587 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
588 | json: {test: faker.lorem.word()},
589 | nullableJson: undefined,
590 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
591 | nullableEnum: undefined,
592 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
593 | };
594 | }
595 | export function fakeUserComplete() {
596 | return {
597 | id: faker.string.uuid(),
598 | email: faker.internet.email(),
599 | name: faker.person.fullName(),
600 | companyName: faker.company.name(),
601 | age: faker.number.int({min: 0, max: 99}),
602 | firstName: faker.person.firstName(),
603 | lastName: faker.person.lastName(),
604 | string: faker.lorem.words(5),
605 | stringWithDefault: 'default',
606 | nullableString: undefined,
607 | boolean: faker.datatype.boolean(),
608 | booleanWithDefault: true,
609 | nullableBoolean: undefined,
610 | int: faker.number.int(),
611 | intWithDefault: 1,
612 | nullableInt: undefined,
613 | bigInt: BigInt(faker.number.int()),
614 | bigIntWithDefault: BigInt(1),
615 | nullableBigInt: undefined,
616 | float: faker.number.float(),
617 | floatWithDefault: 1.1,
618 | nullableFloat: undefined,
619 | decimal: new Decimal(faker.number.float()),
620 | decimalWithDefault: new Decimal(1.23),
621 | nullableDecimal: undefined,
622 | dateTime: faker.date.anytime(),
623 | dateTimeWithDefault: new Date(),
624 | nullableDateTime: undefined,
625 | stringArray: faker.lorem.words(5).split(' '),
626 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
627 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
628 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
629 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
630 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
631 | json: {test: faker.lorem.word()},
632 | jsonWithDefault: {},
633 | jsonWithDefaultAndFake: {test2: faker.lorem.word()},
634 | nullableJson: undefined,
635 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
636 | enumWithDefault: Enum.A,
637 | nullableEnum: undefined,
638 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
639 | enumsWithDefault: [Enum.A, Enum.B],
640 | };
641 | }
642 | export function fakeUser2Complete() {
643 | return {
644 | id: faker.number.int({ max: 2147483647 }),
645 | };
646 | }
647 | export function fakeUserRelationComplete() {
648 | return {
649 | id: faker.string.uuid(),
650 | userId: faker.string.uuid(),
651 | userId2: faker.string.uuid(),
652 | };
653 | }
654 | export function fakeUser2RelationComplete() {
655 | return {
656 | id: faker.string.uuid(),
657 | user2Id: faker.number.int(),
658 | };
659 | }
660 | "
661 | `;
662 |
663 | exports[`createMethods without extraImport 1`] = `
664 | "import { Enum } from '@prisma/client';
665 | import { faker } from '@faker-js/faker';
666 | import Decimal from 'decimal.js';
667 |
668 |
669 |
670 | export function fakeUser() {
671 | return {
672 | email: faker.internet.email(),
673 | name: faker.person.fullName(),
674 | companyName: faker.company.name(),
675 | age: faker.number.int({min: 0, max: 99}),
676 | firstName: faker.person.firstName(),
677 | lastName: faker.person.lastName(),
678 | string: faker.lorem.words(5),
679 | nullableString: undefined,
680 | boolean: faker.datatype.boolean(),
681 | nullableBoolean: undefined,
682 | int: faker.number.int(),
683 | nullableInt: undefined,
684 | bigInt: BigInt(faker.number.int()),
685 | nullableBigInt: undefined,
686 | float: faker.number.float(),
687 | nullableFloat: undefined,
688 | decimal: new Decimal(faker.number.float()),
689 | nullableDecimal: undefined,
690 | dateTime: faker.date.anytime(),
691 | nullableDateTime: undefined,
692 | stringArray: faker.lorem.words(5).split(' '),
693 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
694 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
695 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
696 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
697 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
698 | json: {test: faker.lorem.word()},
699 | nullableJson: undefined,
700 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
701 | nullableEnum: undefined,
702 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
703 | };
704 | }
705 | export function fakeUserComplete() {
706 | return {
707 | id: faker.string.uuid(),
708 | email: faker.internet.email(),
709 | name: faker.person.fullName(),
710 | companyName: faker.company.name(),
711 | age: faker.number.int({min: 0, max: 99}),
712 | firstName: faker.person.firstName(),
713 | lastName: faker.person.lastName(),
714 | string: faker.lorem.words(5),
715 | stringWithDefault: 'default',
716 | nullableString: undefined,
717 | boolean: faker.datatype.boolean(),
718 | booleanWithDefault: true,
719 | nullableBoolean: undefined,
720 | int: faker.number.int(),
721 | intWithDefault: 1,
722 | nullableInt: undefined,
723 | bigInt: BigInt(faker.number.int()),
724 | bigIntWithDefault: BigInt(1),
725 | nullableBigInt: undefined,
726 | float: faker.number.float(),
727 | floatWithDefault: 1.1,
728 | nullableFloat: undefined,
729 | decimal: new Decimal(faker.number.float()),
730 | decimalWithDefault: new Decimal(1.23),
731 | nullableDecimal: undefined,
732 | dateTime: faker.date.anytime(),
733 | dateTimeWithDefault: new Date(),
734 | nullableDateTime: undefined,
735 | stringArray: faker.lorem.words(5).split(' '),
736 | intArray: [faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 }),faker.number.int({ max: 2147483647 })],
737 | bigIntArray: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())],
738 | floatArray: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()],
739 | booleanArray: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()],
740 | dateTimeArray: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()],
741 | json: {test: faker.lorem.word()},
742 | jsonWithDefault: {},
743 | jsonWithDefaultAndFake: {test2: faker.lorem.word()},
744 | nullableJson: undefined,
745 | enum: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
746 | enumWithDefault: Enum.A,
747 | nullableEnum: undefined,
748 | enums: faker.helpers.arrayElement([Enum.A, Enum.B, Enum.C] as const),
749 | enumsWithDefault: [Enum.A, Enum.B],
750 | };
751 | }
752 | export function fakeUser2Complete() {
753 | return {
754 | id: faker.number.int({ max: 2147483647 }),
755 | };
756 | }
757 | export function fakeUserRelationComplete() {
758 | return {
759 | id: faker.string.uuid(),
760 | userId: faker.string.uuid(),
761 | userId2: faker.string.uuid(),
762 | };
763 | }
764 | export function fakeUser2RelationComplete() {
765 | return {
766 | id: faker.string.uuid(),
767 | user2Id: faker.number.int(),
768 | };
769 | }
770 | "
771 | `;
772 |
--------------------------------------------------------------------------------
/src/__tests__/createMethods.test.ts:
--------------------------------------------------------------------------------
1 | import { test, expect } from 'vitest';
2 | import { createMethods } from '../helpers/createMethods';
3 | import { getSampleDMMF } from './testUtils';
4 |
5 | test('createMethods with extraImport', async () => {
6 | const sampleDMMF = await getSampleDMMF();
7 | const extraImport = "import {myCustomFunction} from '../utils/fakeImports'";
8 | expect(
9 | await createMethods(sampleDMMF.datamodel, extraImport, undefined),
10 | ).toMatchSnapshot();
11 | });
12 |
13 | test('createMethods with extraExport', async () => {
14 | const sampleDMMF = await getSampleDMMF();
15 | const extraExport = "export * from '../utils/fakeImports'";
16 | expect(
17 | await createMethods(sampleDMMF.datamodel, undefined, extraExport),
18 | ).toMatchSnapshot();
19 | });
20 |
21 | test('createMethods with extraImport and extraExport', async () => {
22 | const sampleDMMF = await getSampleDMMF();
23 | const extraImport = "import {myCustomFunction} from '../utils/fakeImports'";
24 | const extraExport = "export * from '../utils/fakeImports'";
25 | expect(
26 | await createMethods(sampleDMMF.datamodel, extraImport, extraExport),
27 | ).toMatchSnapshot();
28 | });
29 |
30 | test('createMethods without extraImport', async () => {
31 | const sampleDMMF = await getSampleDMMF();
32 | expect(
33 | await createMethods(sampleDMMF.datamodel, undefined),
34 | ).toMatchSnapshot();
35 | });
36 |
37 | test('createMethods with `null` as `emptyValueAs`', async () => {
38 | const sampleDMMF = await getSampleDMMF();
39 | expect(
40 | await createMethods(sampleDMMF.datamodel, undefined, undefined, 'null'),
41 | ).toMatchSnapshot();
42 | });
43 |
44 | test('createMethods with default clientImportPath', async () => {
45 | const sampleDMMF = await getSampleDMMF();
46 | expect(
47 | await createMethods(
48 | sampleDMMF.datamodel,
49 | undefined,
50 | undefined,
51 | 'null',
52 | undefined,
53 | ),
54 | ).toMatchSnapshot();
55 | });
56 |
57 | test('createMethods with custom clientImportPath', async () => {
58 | const sampleDMMF = await getSampleDMMF();
59 | expect(
60 | await createMethods(
61 | sampleDMMF.datamodel,
62 | undefined,
63 | undefined,
64 | 'null',
65 | './src/generated/client',
66 | ),
67 | ).toMatchSnapshot();
68 | });
69 |
--------------------------------------------------------------------------------
/src/__tests__/generatorUtils.test.ts:
--------------------------------------------------------------------------------
1 | import { test, expect } from 'vitest';
2 | import { GeneratorOptions } from '@prisma/generator-helper';
3 | import { extractClientPath } from '../utils/generatorUtils';
4 |
5 | test('extractClientPath returns @prisma/client for Unix node_modules path', () => {
6 | const options = {
7 | generator: {
8 | name: 'test-generator',
9 | provider: { value: 'test-provider' },
10 | output: { value: '/path/to/output' },
11 | },
12 | otherGenerators: [
13 | {
14 | provider: { value: 'prisma-client-js' },
15 | output: { value: '/path/to/node_modules/@prisma/client' },
16 | },
17 | ],
18 | } as unknown as GeneratorOptions;
19 |
20 | expect(extractClientPath(options)).toBe('@prisma/client');
21 | });
22 |
23 | test('extractClientPath returns @prisma/client for Windows node_modules path', () => {
24 | const options = {
25 | generator: {
26 | name: 'test-generator',
27 | provider: { value: 'test-provider' },
28 | output: { value: 'C:\\path\\to\\output' },
29 | },
30 | otherGenerators: [
31 | {
32 | provider: { value: 'prisma-client-js' },
33 | output: { value: 'C:\\path\\to\\node_modules\\@prisma\\client' },
34 | },
35 | ],
36 | } as unknown as GeneratorOptions;
37 |
38 | expect(extractClientPath(options)).toBe('@prisma/client');
39 | });
40 |
41 | test('extractClientPath returns undefined when client path is not found', () => {
42 | const options = {
43 | generator: {
44 | name: 'test-generator',
45 | provider: { value: 'test-provider' },
46 | output: { value: '/path/to/output' },
47 | },
48 | otherGenerators: [],
49 | } as unknown as GeneratorOptions;
50 |
51 | expect(extractClientPath(options)).toBeUndefined();
52 | });
53 |
54 | test('extractClientPath returns relative path when client is in a custom location', () => {
55 | const options = {
56 | generator: {
57 | name: 'test-generator',
58 | provider: { value: 'test-provider' },
59 | output: { value: '/path/to/output' },
60 | },
61 | otherGenerators: [
62 | {
63 | provider: { value: 'prisma-client-js' },
64 | output: { value: '/path/to/custom/client' },
65 | },
66 | ],
67 | } as unknown as GeneratorOptions;
68 |
69 | expect(extractClientPath(options)).toBe('custom/client');
70 | });
71 |
--------------------------------------------------------------------------------
/src/__tests__/sample.prisma:
--------------------------------------------------------------------------------
1 | datasource db {
2 | provider = "postgresql"
3 | url = env("PGSQL_URL")
4 | }
5 |
6 | model User {
7 | id String @id @default(cuid())
8 | email String
9 | name String
10 | ///FAKE:faker.company.name()
11 | companyName String
12 | age Int
13 | firstName String
14 | lastName String
15 | string String
16 | stringWithDefault String @default("default")
17 | nullableString String?
18 | boolean Boolean
19 | booleanWithDefault Boolean @default(true)
20 | nullableBoolean Boolean?
21 | int Int
22 | intWithDefault Int @default(1)
23 | nullableInt Int?
24 | bigInt BigInt
25 | bigIntWithDefault BigInt @default(1)
26 | nullableBigInt BigInt?
27 | float Float
28 | floatWithDefault Float @default(1.1)
29 | nullableFloat Float?
30 | decimal Decimal
31 | decimalWithDefault Decimal @default(1.23)
32 | nullableDecimal Decimal?
33 | dateTime DateTime
34 | dateTimeWithDefault DateTime @default(now())
35 | nullableDateTime DateTime?
36 | stringArray String[]
37 | intArray Int[]
38 | bigIntArray BigInt[]
39 | floatArray Float[]
40 | booleanArray Boolean[]
41 | dateTimeArray DateTime[]
42 | ///anotherComment
43 | ///FAKE:{test: faker.lorem.word()}
44 | json Json
45 | jsonWithDefault Json @default("{}")
46 | ///FAKE:{test2: faker.lorem.word()}
47 | jsonWithDefaultAndFake Json @default("{}")
48 | nullableJson Json?
49 | enum Enum
50 | enumWithDefault Enum @default(A)
51 | nullableEnum Enum?
52 | relation UserRelation? @relation(name: "UserRelationToUser1")
53 | relation2 UserRelation? @relation(name: "UserRelationToUser2")
54 | enums Enum[]
55 | enumsWithDefault Enum[] @default([A, B])
56 | }
57 |
58 | model User2 {
59 | id Int @id @default(autoincrement())
60 | User2Relation User2Relation?
61 | }
62 |
63 | enum Enum {
64 | A
65 | B
66 | C
67 | }
68 |
69 | model UserRelation {
70 | id String @id @default(cuid())
71 | userId String @unique
72 | user User @relation(fields: [userId], references: [id], name: "UserRelationToUser1")
73 | userId2 String @unique
74 | user2 User @relation(fields: [userId2], references: [id], name: "UserRelationToUser2")
75 | }
76 |
77 | model User2Relation {
78 | id String @id @default(cuid())
79 |
80 | user2Id Int @unique
81 | user User2 @relation(fields: [user2Id], references: [id])
82 | }
83 |
--------------------------------------------------------------------------------
/src/__tests__/testUtils.ts:
--------------------------------------------------------------------------------
1 | import { getDMMF, getSchemaWithPath } from '@prisma/internals';
2 | import path from 'path';
3 |
4 | export async function getSampleDMMF() {
5 | const { schemas } = await getSchemaWithPath(
6 | path.join(__dirname, './sample.prisma'),
7 | );
8 | return getDMMF({
9 | datamodel: schemas,
10 | });
11 | }
12 |
--------------------------------------------------------------------------------
/src/bin.ts:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | import './generator';
3 |
--------------------------------------------------------------------------------
/src/constants.ts:
--------------------------------------------------------------------------------
1 | export const GENERATOR_NAME = 'prisma-generator-fake-data';
2 |
--------------------------------------------------------------------------------
/src/generator.ts:
--------------------------------------------------------------------------------
1 | import { generatorHandler, GeneratorOptions } from '@prisma/generator-helper';
2 | import { GENERATOR_NAME } from './constants';
3 | import { createMethods } from './helpers/createMethods';
4 | import { extractClientPath } from './utils/generatorUtils';
5 | import { writeFileSafely } from './utils/writeFileSafely';
6 | import invariant from 'tiny-invariant';
7 |
8 | const { version } = require('../package.json');
9 | generatorHandler({
10 | onManifest() {
11 | return {
12 | version,
13 | defaultOutput: './fake-data.ts',
14 | prettyName: GENERATOR_NAME,
15 | };
16 | },
17 | async onGenerate(options: GeneratorOptions) {
18 | invariant(
19 | typeof options.generator.config.extraExport === 'string' ||
20 | options.generator.config.extraExport === undefined,
21 | 'extraExport must be a string or empty',
22 | );
23 | invariant(
24 | typeof options.generator.config.extraExport === 'string' ||
25 | options.generator.config.extraExport === undefined,
26 | 'extraExport must be a string or empty',
27 | );
28 | invariant(
29 | typeof options.generator.config.emptyValueAs === 'string' ||
30 | options.generator.config.emptyValueAs === undefined,
31 | 'emptyValueAs must be a string or empty',
32 | );
33 |
34 | const fakeMethods = await createMethods(
35 | options.dmmf.datamodel,
36 | options.generator.config.extraImport as string | undefined,
37 | options.generator.config.extraExport as string | undefined,
38 | options.generator.config.emptyValueAs as string | undefined,
39 | extractClientPath(options),
40 | );
41 |
42 | await writeFileSafely(options.generator.output?.value!, fakeMethods);
43 | },
44 | });
45 |
--------------------------------------------------------------------------------
/src/helpers/createMethods.ts:
--------------------------------------------------------------------------------
1 | import { logger } from '@prisma/internals';
2 | import { DMMF } from '@prisma/generator-helper';
3 | import { faker } from '@faker-js/faker';
4 |
5 | const MAX_INT = 2147483647;
6 |
7 | function getFieldDefinition(
8 | models: DMMF.Datamodel['models'],
9 | model: DMMF.Datamodel['models'][number],
10 | field: DMMF.Datamodel['models'][number]['fields'][number],
11 | enums: DMMF.Datamodel['enums'],
12 | emptyValueAs: string,
13 | ) {
14 | const docLines = field.documentation?.split('\n') || [];
15 | const fakeLine = docLines.find((line) => line.startsWith('FAKE:'));
16 | const fakeValue = fakeLine?.replace('FAKE:', '');
17 |
18 | if (fakeLine && !fakeValue) {
19 | logger.warn(
20 | `${model.name}.${field.name} appears to have a '///FAKE:' comment but is missing a method or JSON after it.`,
21 | );
22 | }
23 |
24 | if (fakeValue) {
25 | return `${field.name}: ${fakeValue}`;
26 | }
27 |
28 | if (field.isId) {
29 | return `${field.name}: ${
30 | field.type === 'String'
31 | ? 'faker.string.uuid()'
32 | : `faker.number.int({ max: ${MAX_INT} })`
33 | }`;
34 | }
35 | if (field.hasDefaultValue) {
36 | if (field.isList && field.kind === 'enum') {
37 | const enumName = field.type;
38 | const enumValues = enums.find((it) => it.name === enumName)?.values || [];
39 | if (enumValues.length === 0) {
40 | logger.warn(
41 | `Enum ${enumName} has no enum values. Field ${field.name} won't be generated.`,
42 | );
43 | } else {
44 | const defaults = (field.default as DMMF.FieldDefaultScalar[])
45 | ?.map((d) => `${enumName}.${d}`)
46 | .join(', ');
47 | return `${field.name}: [${defaults}]`;
48 | }
49 | }
50 | if (field.isList) {
51 | return `${field.name}: ${field.default?.toString() || '[]'}`;
52 | }
53 | if (['Json'].includes(field.type)) {
54 | return `${field.name}: ${fakeValue || field.default?.toString() || '{}'}`;
55 | }
56 | if (field.kind === 'enum') {
57 | return `${field.name}: ${field.type}.${field.default}`;
58 | }
59 |
60 | if (['Int', 'Float', 'Boolean'].includes(field.type)) {
61 | return `${field.name}: ${field.default}`;
62 | }
63 | if (['Decimal'].includes(field.type)) {
64 | return `${field.name}: new Decimal(${field.default})`;
65 | }
66 | if (['BigInt'].includes(field.type)) {
67 | return `${field.name}: BigInt(${field.default})`;
68 | }
69 | if (['String'].includes(field.type)) {
70 | return `${field.name}: '${field.default}'`;
71 | }
72 | if (field.type === 'DateTime') {
73 | return `${field.name}: new Date()`;
74 | }
75 | }
76 | if (!field.isRequired) {
77 | return `${field.name}: ${emptyValueAs}`;
78 | }
79 | if (field.kind === 'enum') {
80 | const enumName = field.type;
81 | const enumValues = enums.find((it) => it.name === enumName)?.values || [];
82 | if (enumValues.length === 0) {
83 | logger.warn(
84 | `Enum ${enumName} has no enum values. Field ${field.name} won't be generated.`,
85 | );
86 | } else {
87 | const enumValuesAsString = enumValues
88 | .map((v) => `${enumName}.${v.name}`)
89 | .join(', ');
90 | return `${field.name}: faker.helpers.arrayElement([${enumValuesAsString}] as const)`;
91 | }
92 | }
93 | if (model.fields.some((it) => it.relationFromFields?.includes(field.name))) {
94 | return `${field.name}: ${
95 | field.type === 'String' ? 'faker.string.uuid()' : 'faker.number.int()'
96 | }`;
97 | }
98 | if (field.type === 'String') {
99 | if (field.isList) {
100 | return `${field.name}: faker.lorem.words(5).split(' ')`;
101 | }
102 | if (field.name === 'email') {
103 | return `${field.name}: faker.internet.email()`;
104 | }
105 | if (field.name === 'image' || field.name === 'avatar') {
106 | return `${field.name}: faker.image.avatar()`;
107 | }
108 | if (field.name === 'username') {
109 | return `${field.name}: faker.internet.userName()`;
110 | }
111 | if (field.name === 'name') {
112 | return `${field.name}: faker.person.fullName()`;
113 | }
114 | if (field.name === 'firstName') {
115 | return `${field.name}: faker.person.firstName()`;
116 | }
117 | if (field.name === 'lastName') {
118 | return `${field.name}: faker.person.lastName()`;
119 | }
120 | return `${field.name}: faker.lorem.words(5)`;
121 | }
122 | if (field.type === 'Int') {
123 | if (field.isList) {
124 | return `${field.name}: [faker.number.int({ max: ${MAX_INT} }),faker.number.int({ max: ${MAX_INT} }),faker.number.int({ max: ${MAX_INT} }),faker.number.int({ max: ${MAX_INT} }),faker.number.int({ max: ${MAX_INT} })]`;
125 | }
126 | if (field.name === 'age') {
127 | return `${field.name}: faker.number.int({min: 0, max: 99})`;
128 | }
129 | return `${field.name}: faker.number.int()`;
130 | }
131 | if (field.type === 'BigInt') {
132 | if (field.isList) {
133 | return `${field.name}: [BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int()),BigInt(faker.number.int())]`;
134 | }
135 | return `${field.name}: BigInt(faker.number.int())`;
136 | }
137 | if (field.type === 'Float') {
138 | if (field.isList) {
139 | return `${field.name}: [faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float(),faker.number.float()]`;
140 | }
141 | return `${field.name}: faker.number.float()`;
142 | }
143 | if (field.type === 'Boolean') {
144 | if (field.isList) {
145 | return `${field.name}: [faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean(),faker.datatype.boolean()]`;
146 | }
147 | return `${field.name}: faker.datatype.boolean()`;
148 | }
149 | if (field.type === 'Decimal') {
150 | if (field.isList) {
151 | return `${field.name}: [new Decimal(faker.number.float()),new Decimal(faker.number.float()),new Decimal(faker.number.float()),new Decimal(faker.number.float()),new Decimal(faker.number.float())]`;
152 | }
153 | return `${field.name}: new Decimal(faker.number.float())`;
154 | }
155 | if (field.type === 'DateTime') {
156 | if (field.isList) {
157 | return `${field.name}: [faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime(),faker.date.anytime()]`;
158 | }
159 | return `${field.name}: faker.date.anytime()`;
160 | }
161 | if (field.type === 'Json') {
162 | return `${field.name}: JSON.stringify(${generateRandomJson()})`;
163 | }
164 | logger.warn(
165 | `Type ${field.type}${field.isList ? '[]' : ''} (${
166 | field.kind
167 | }) is not supported. Field ${field.name} won't be generated.`,
168 | );
169 | return null;
170 | }
171 |
172 | export async function createMethods(
173 | { enums, models }: DMMF.Datamodel,
174 | extraImport?: string,
175 | extraExport?: string,
176 | emptyValueAs = 'undefined',
177 | clientImportPath: string = '@prisma/client',
178 | ) {
179 | const functions: string[] = [];
180 |
181 | models.forEach((m) => {
182 | createFakeFunctionsWithoutFKs(models, m, enums, functions, emptyValueAs);
183 | createFakeFunctionsWithFKs(models, m, enums, functions, emptyValueAs);
184 | });
185 | const enumNames = enums.map((it) => it.name).join(', ');
186 | return await `import { ${enumNames} } from '${clientImportPath}';
187 | import { faker } from '@faker-js/faker';
188 | import Decimal from 'decimal.js';
189 | ${extraImport || ''}
190 | ${extraExport || ''}
191 |
192 | ${functions.join('\n')}
193 | `;
194 | }
195 | function createFakeFunctionsWithoutFKs(
196 | models: DMMF.Datamodel['models'],
197 | model: DMMF.Datamodel['models'][number],
198 | enums: DMMF.Datamodel['enums'],
199 | functions: string[],
200 | emptyValueAs: string,
201 | ) {
202 | const validFields = model.fields
203 | .filter((field) => !field.isId)
204 | .filter((field) => field.kind === 'scalar' || field.kind === 'enum')
205 | .filter((field) => {
206 | return !model.fields.find((it) => {
207 | return it.relationFromFields?.includes(field.name);
208 | });
209 | })
210 | .filter((field) => !field.hasDefaultValue)
211 | .map((f) => getFieldDefinition(models, model, f, enums, emptyValueAs))
212 | .filter(Boolean);
213 | if (validFields.length > 0) {
214 | functions.push(
215 | `export function fake${model.name}() {
216 | return {
217 | ${validFields.join(',\n ')},
218 | };
219 | }`,
220 | );
221 | }
222 | }
223 |
224 | function createFakeFunctionsWithFKs(
225 | models: DMMF.Datamodel['models'],
226 | model: DMMF.Datamodel['models'][number],
227 | enums: DMMF.Datamodel['enums'],
228 | functions: string[],
229 | emptyValueAs: string,
230 | ) {
231 | const validFields = model.fields
232 | .filter((field) => field.kind === 'scalar' || field.kind === 'enum')
233 | .map((f) => getFieldDefinition(models, model, f, enums, emptyValueAs))
234 | .filter(Boolean);
235 | if (validFields.length > 0) {
236 | functions.push(
237 | `export function fake${model.name}Complete() {
238 | return {
239 | ${validFields.join(',\n ')},
240 | };
241 | }`,
242 | );
243 | }
244 | }
245 |
246 | function generateRandomJson(): string {
247 | const obj = {
248 | foo: faker.string.uuid(),
249 | bar: faker.number.int(),
250 | bike: faker.number.hex(),
251 | a: faker.string.alphanumeric(),
252 | b: faker.number.float(),
253 | name: faker.person.firstName(),
254 | prop: faker.string.binary(),
255 | };
256 | return JSON.stringify(obj);
257 | }
258 |
--------------------------------------------------------------------------------
/src/utils/generatorUtils.ts:
--------------------------------------------------------------------------------
1 | import { GeneratorOptions } from '@prisma/generator-helper';
2 | import { relative, dirname } from 'path';
3 |
4 | export function extractClientPath(options: GeneratorOptions) {
5 | const targetPath = options.generator.output?.value!;
6 | const clientPath = options.otherGenerators.find((g) =>
7 | g?.provider?.value?.includes('prisma-client'),
8 | )?.output?.value;
9 |
10 | if (
11 | clientPath?.includes('node_modules/@prisma/client') || //unix path
12 | clientPath?.includes('node_modules\\@prisma\\client') //windows path
13 | ) {
14 | return '@prisma/client';
15 | }
16 |
17 | if (!clientPath) {
18 | return undefined;
19 | }
20 |
21 | const targetDir = dirname(targetPath);
22 | return relative(targetDir, clientPath);
23 | }
24 |
--------------------------------------------------------------------------------
/src/utils/writeFileSafely.ts:
--------------------------------------------------------------------------------
1 | import fs from 'fs';
2 | import path from 'path';
3 |
4 | export const writeFileSafely = async (writeLocation: string, content: any) => {
5 | fs.mkdirSync(path.dirname(writeLocation), {
6 | recursive: true,
7 | });
8 |
9 | fs.writeFileSync(writeLocation, content);
10 | };
11 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2018",
4 | "module": "commonjs",
5 | "lib": ["esnext"],
6 | "strict": true,
7 | "strictPropertyInitialization": false,
8 | "esModuleInterop": true,
9 | "experimentalDecorators": true,
10 | "emitDecoratorMetadata": true,
11 | "skipLibCheck": true,
12 | "forceConsistentCasingInFileNames": true,
13 | "removeComments": true,
14 | "sourceMap": true,
15 | "baseUrl": ".",
16 | "moduleResolution": "Node",
17 | "outDir": "./dist",
18 | "rootDir": "./src",
19 | "newLine": "lf"
20 | },
21 | "include": ["src/**/*"],
22 | "exclude": ["**/node_modules", "**/*.test.ts", "**/__tests__", "**/dest"]
23 | }
24 |
--------------------------------------------------------------------------------
/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitest/config';
2 |
3 | export default defineConfig({
4 | test: {
5 | forceRerunTriggers: [
6 | '**/package.json/**',
7 | '**/vitest.config.*/**',
8 | '**/vite.config.*/**',
9 | 'src/__tests__/sample.prisma',
10 | ],
11 | },
12 | });
13 |
--------------------------------------------------------------------------------