@sqrzro/server 4.0.0-alpha.5 → 4.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/index.js CHANGED
@@ -1,4 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import {program}from'commander';import {spawn}from'child_process';import {dirname,resolve,extname}from'path';import {fileURLToPath}from'url';import {readdir,readFile}from'fs/promises';import {Client}from'pg';import T from'dotenv';var c=dirname(fileURLToPath(import.meta.url)),S=resolve(c,"../../node_modules/.bin/drizzle-kit"),h=resolve(c,"static/drizzle.config.js");async function E(){let t=spawn(S,["generate",`--config=${h}`],{stdio:"inherit"});return new Promise((e,o)=>{t.on("close",A=>{A===0?e():o();});})}var m=E;T.config({path:resolve(process.cwd(),".env"),quiet:true});var d=resolve(process.cwd(),"./database/migrations");async function C(){let t=(await readdir(d)).filter(o=>extname(o)===".sql").map(o=>resolve(d,o)),e=[];for(let o of t)e.push(await readFile(o,"utf-8"));return e.join(`
3
- `)}async function x(){if(!process.env.DATABASE_URL)throw new Error("DATABASE_URL is not defined");let t=process.env.APP_ENV;if(!t||!["development","test"].includes(t))throw new Error("APP_ENV is not defined, or does not support migration.");let e=new Client(process.env.DATABASE_URL);await e.connect(),await e.query("SET client_min_messages TO WARNING; DROP SCHEMA IF EXISTS auth CASCADE; DROP SCHEMA IF EXISTS public CASCADE; CREATE SCHEMA public;");let o=await C();await e.query(o),await e.end();}var f=x;T.config({path:resolve(process.cwd(),".env"),quiet:true});var p=resolve(process.cwd(),"./database/seeds");async function I(t){let e=await import(t);typeof e.default=="function"&&await e.default();}async function L(){let t=(await readdir(p)).map(e=>resolve(p,e));for(let e of t)await I(e);}var u=L;var w=dirname(fileURLToPath(import.meta.url));resolve(w,"../../node_modules/.bin/tsx");resolve(w,"./scripts");async function z(t){t().then(()=>{process.exit(0);}).catch(e=>{console.error(e),process.exit(1);});}var r=z;program.command("db:generate").action(async()=>await r(m));program.command("db:reset").action(async()=>await r(f));program.command("db:seed").action(async()=>await r(u));program.parse();//# sourceMappingURL=index.js.map
2
+ import {program}from'commander';import {spawn}from'child_process';import {dirname,resolve}from'path';import {fileURLToPath}from'url';var i=dirname(fileURLToPath(import.meta.url)),b=resolve(i,"../../node_modules/.bin/tsx"),f=resolve(i,"./scripts");async function u(n){let a=spawn(b,[`${resolve(f,n)}.ts`],{stdio:"inherit"});return new Promise((s,m)=>{a.on("close",o=>{o===0?s():m(new Error(`Script ${n} exited with code ${o}`));});})}var t=u;program.command("db:generate").action(async()=>await t("db-generate"));program.command("db:reset").action(async()=>await t("db-reset"));program.command("db:seed").action(async()=>await t("db-seed"));program.parse();//# sourceMappingURL=index.js.map
4
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/scripts/db-generate.ts","../../src/cli/scripts/db-reset.ts","../../src/cli/scripts/db-seed.ts","../../src/cli/utility/run-script.ts","../../src/cli/index.ts"],"names":["__dirname","dirname","fileURLToPath","binPath","resolve","configPath","dbGenerate","ls","spawn","reject","code","db_generate_default","dotenv","migrationPath","getMigrationQuery","files","readdir","file","extname","query","readFile","dbReset","environment","client","Client","db_reset_default","seedPath","runSeedFile","seedModule","dbSeed","db_seed_default","runScript","script","err","run_script_default","program"],"mappings":";sOAIA,IAAMA,CAAAA,CAAYC,OAAAA,CAAQC,cAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA,CAElDC,EAAUC,OAAAA,CAAQJ,CAAAA,CAAW,qCAAqC,CAAA,CAClEK,EAAaD,OAAAA,CAAQJ,CAAAA,CAAW,0BAA0B,CAAA,CAEhE,eAAeM,CAAAA,EAA4B,CACvC,IAAMC,CAAAA,CAAKC,MAAML,CAAAA,CAAS,CAAC,UAAA,CAAY,CAAA,SAAA,EAAYE,CAAU,CAAA,CAAE,CAAA,CAAG,CAAE,KAAA,CAAO,SAAU,CAAC,CAAA,CAEtF,OAAO,IAAI,QAAc,CAACD,CAAAA,CAASK,CAAAA,GAAW,CAC1CF,EAAG,EAAA,CAAG,OAAA,CAAUG,CAAAA,EAAS,CACjBA,IAAS,CAAA,CACTN,CAAAA,EAAQ,CAERK,CAAAA,GAER,CAAC,EACL,CAAC,CACL,CAEA,IAAOE,CAAAA,CAAQL,CAAAA,CCjBfM,CAAAA,CAAO,MAAA,CAAO,CAAE,KAAMR,OAAAA,CAAQ,OAAA,CAAQ,GAAA,EAAI,CAAG,MAAM,CAAA,CAAG,KAAA,CAAO,IAAK,CAAC,EAEnE,IAAMS,CAAAA,CAAgBT,QAAQ,OAAA,CAAQ,GAAA,GAAO,uBAAuB,CAAA,CAEpE,eAAeU,CAAAA,EAAqC,CAChD,IAAMC,CAAAA,CAAAA,CAAS,MAAMC,OAAAA,CAAQH,CAAa,CAAA,EACrC,MAAA,CAAQI,CAAAA,EAASC,OAAAA,CAAQD,CAAI,CAAA,GAAM,MAAM,CAAA,CACzC,GAAA,CAAKA,GAASb,OAAAA,CAAQS,CAAAA,CAAeI,CAAI,CAAC,EAE3CE,CAAAA,CAAQ,EAAC,CAEb,IAAA,IAAWF,KAAQF,CAAAA,CACfI,CAAAA,CAAM,IAAA,CAAK,MAAMC,SAASH,CAAAA,CAAM,OAAO,CAAC,CAAA,CAG5C,OAAOE,EAAM,IAAA,CAAK;AAAA,CAAI,CAC1B,CAEA,eAAeE,CAAAA,EAAU,CACrB,GAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,YAAA,CACb,MAAM,IAAI,KAAA,CAAM,6BAA6B,CAAA,CAGjD,IAAMC,CAAAA,CAAc,OAAA,CAAQ,GAAA,CAAI,OAAA,CAEhC,GAAI,CAACA,CAAAA,EAAe,CAAC,CAAC,aAAA,CAAe,MAAM,CAAA,CAAE,SAASA,CAAW,CAAA,CAC7D,MAAM,IAAI,KAAA,CAAM,wDAAwD,CAAA,CAG5E,IAAMC,CAAAA,CAAS,IAAIC,MAAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,YAAY,CAAA,CAClD,MAAMD,CAAAA,CAAO,OAAA,EAAQ,CAErB,MAAMA,CAAAA,CAAO,KAAA,CACT,qIACJ,CAAA,CAEA,IAAMJ,CAAAA,CAAQ,MAAML,CAAAA,EAAkB,CACtC,MAAMS,EAAO,KAAA,CAAMJ,CAAK,CAAA,CAExB,MAAMI,CAAAA,CAAO,GAAA,GACjB,CAEA,IAAOE,CAAAA,CAAQJ,CAAAA,CC5CfT,CAAAA,CAAO,MAAA,CAAO,CAAE,IAAA,CAAMR,OAAAA,CAAQ,OAAA,CAAQ,GAAA,EAAI,CAAG,MAAM,CAAA,CAAG,KAAA,CAAO,IAAK,CAAC,CAAA,CAEnE,IAAMsB,CAAAA,CAAWtB,OAAAA,CAAQ,OAAA,CAAQ,GAAA,EAAI,CAAG,kBAAkB,CAAA,CAE1D,eAAeuB,CAAAA,CAAYV,CAAAA,CAAc,CACrC,IAAMW,CAAAA,CAAa,MAAM,OAAOX,CAAAA,CAAAA,CAE5B,OAAOW,CAAAA,CAAW,OAAA,EAAY,UAAA,EAC9B,MAAMA,CAAAA,CAAW,OAAA,GAEzB,CAEA,eAAeC,CAAAA,EAAS,CACpB,IAAMd,CAAAA,CAAAA,CAAS,MAAMC,OAAAA,CAAQU,CAAQ,CAAA,EAAG,GAAA,CAAKT,CAAAA,EAASb,OAAAA,CAAQsB,CAAAA,CAAUT,CAAI,CAAC,CAAA,CAE7E,IAAA,IAAWA,CAAAA,IAAQF,CAAAA,CACf,MAAMY,CAAAA,CAAYV,CAAI,EAE9B,CAEA,IAAOa,CAAAA,CAAQD,CAAAA,CCpBf,IAAM7B,CAAAA,CAAYC,OAAAA,CAAQC,aAAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA,CAExCE,OAAAA,CAAQJ,CAAAA,CAAW,6BAA6B,CAAA,CAC7CI,OAAAA,CAAQJ,CAAAA,CAAW,WAAW,EAgBjD,eAAe+B,CAAAA,CAAUC,CAAAA,CAA4C,CACjEA,CAAAA,EAAO,CACF,KAAK,IAAM,CACR,OAAA,CAAQ,IAAA,CAAK,CAAC,EAClB,CAAC,CAAA,CACA,KAAA,CAAOC,CAAAA,EAAQ,CACZ,OAAA,CAAQ,KAAA,CAAMA,CAAG,CAAA,CACjB,OAAA,CAAQ,IAAA,CAAK,CAAC,EAClB,CAAC,EACT,CAEA,IAAOC,CAAAA,CAAQH,CAAAA,CCxBfI,OAAAA,CAAQ,OAAA,CAAQ,aAAa,CAAA,CAAE,MAAA,CAAO,SAAY,MAAMD,CAAAA,CAAUvB,CAAU,CAAC,CAAA,CAC7EwB,OAAAA,CAAQ,OAAA,CAAQ,UAAU,CAAA,CAAE,MAAA,CAAO,SAAY,MAAMD,CAAAA,CAAUT,CAAO,CAAC,CAAA,CACvEU,OAAAA,CAAQ,OAAA,CAAQ,SAAS,CAAA,CAAE,MAAA,CAAO,SAAY,MAAMD,CAAAA,CAAUJ,CAAM,CAAC,CAAA,CAErEK,OAAAA,CAAQ,KAAA,EAAM","file":"index.js","sourcesContent":["import { spawn } from 'node:child_process';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst binPath = resolve(__dirname, '../../node_modules/.bin/drizzle-kit');\nconst configPath = resolve(__dirname, 'static/drizzle.config.js');\n\nasync function dbGenerate(): Promise<void> {\n const ls = spawn(binPath, ['generate', `--config=${configPath}`], { stdio: 'inherit' });\n\n return new Promise<void>((resolve, reject) => {\n ls.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject();\n }\n });\n });\n}\n\nexport default dbGenerate;\n","import { readdir, readFile } from 'node:fs/promises';\nimport { extname, resolve } from 'node:path';\n\nimport { Client } from 'pg';\n\nimport dotenv from 'dotenv';\ndotenv.config({ path: resolve(process.cwd(), '.env'), quiet: true });\n\nconst migrationPath = resolve(process.cwd(), './database/migrations');\n\nasync function getMigrationQuery(): Promise<string> {\n const files = (await readdir(migrationPath))\n .filter((file) => extname(file) === '.sql')\n .map((file) => resolve(migrationPath, file));\n\n let query = [];\n\n for (const file of files) {\n query.push(await readFile(file, 'utf-8'));\n }\n\n return query.join('\\n');\n}\n\nasync function dbReset() {\n if (!process.env.DATABASE_URL) {\n throw new Error('DATABASE_URL is not defined');\n }\n\n const environment = process.env.APP_ENV;\n\n if (!environment || !['development', 'test'].includes(environment)) {\n throw new Error('APP_ENV is not defined, or does not support migration.');\n }\n\n const client = new Client(process.env.DATABASE_URL);\n await client.connect();\n\n await client.query(\n 'SET client_min_messages TO WARNING; DROP SCHEMA IF EXISTS auth CASCADE; DROP SCHEMA IF EXISTS public CASCADE; CREATE SCHEMA public;'\n );\n\n const query = await getMigrationQuery();\n await client.query(query);\n\n await client.end();\n}\n\nexport default dbReset;\n","import { readdir } from 'node:fs/promises';\nimport { resolve } from 'node:path';\n\nimport dotenv from 'dotenv';\ndotenv.config({ path: resolve(process.cwd(), '.env'), quiet: true });\n\nconst seedPath = resolve(process.cwd(), './database/seeds');\n\nasync function runSeedFile(file: string) {\n const seedModule = await import(file);\n\n if (typeof seedModule.default === 'function') {\n await seedModule.default();\n }\n}\n\nasync function dbSeed() {\n const files = (await readdir(seedPath)).map((file) => resolve(seedPath, file));\n\n for (const file of files) {\n await runSeedFile(file);\n }\n}\n\nexport default dbSeed;\n","import { spawn } from 'node:child_process';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst binPath = resolve(__dirname, '../../node_modules/.bin/tsx');\nconst scriptPath = resolve(__dirname, './scripts');\n\n// async function runScript(file: string) {\n// const ls = spawn(binPath, [`${resolve(scriptPath, file)}.js`], { stdio: 'inherit' });\n\n// return new Promise<void>((resolve, reject) => {\n// ls.on('close', (code) => {\n// if (code === 0) {\n// resolve();\n// } else {\n// reject(new Error(`Script ${file} exited with code ${code}`));\n// }\n// });\n// });\n// }\n\nasync function runScript(script: () => Promise<void>): Promise<void> {\n script()\n .then(() => {\n process.exit(0);\n })\n .catch((err) => {\n console.error(err);\n process.exit(1);\n });\n}\n\nexport default runScript;\n","#!/usr/bin/env node\n\nimport { program } from 'commander';\n\nimport dbGenerate from './scripts/db-generate';\nimport dbReset from './scripts/db-reset';\nimport dbSeed from './scripts/db-seed';\n\nimport runScript from './utility/run-script';\n\nprogram.command('db:generate').action(async () => await runScript(dbGenerate));\nprogram.command('db:reset').action(async () => await runScript(dbReset));\nprogram.command('db:seed').action(async () => await runScript(dbSeed));\n\nprogram.parse();\n"]}
1
+ {"version":3,"sources":["../../src/cli/utility/run-script.ts","../../src/cli/index.ts"],"names":["__dirname","dirname","fileURLToPath","binPath","resolve","scriptPath","runScript","file","ls","spawn","reject","code","run_script_default","program"],"mappings":";qIAIA,IAAMA,CAAAA,CAAYC,OAAAA,CAAQC,aAAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA,CAElDC,CAAAA,CAAUC,OAAAA,CAAQJ,CAAAA,CAAW,6BAA6B,CAAA,CAC1DK,CAAAA,CAAaD,OAAAA,CAAQJ,CAAAA,CAAW,WAAW,CAAA,CAEjD,eAAeM,CAAAA,CAAUC,CAAAA,CAAc,CACnC,IAAMC,CAAAA,CAAKC,KAAAA,CAAMN,CAAAA,CAAS,CAAC,CAAA,EAAGC,OAAAA,CAAQC,CAAAA,CAAYE,CAAI,CAAC,CAAA,GAAA,CAAK,CAAA,CAAG,CAAE,KAAA,CAAO,SAAU,CAAC,CAAA,CAEnF,OAAO,IAAI,OAAA,CAAc,CAACH,CAAAA,CAASM,CAAAA,GAAW,CAC1CF,CAAAA,CAAG,EAAA,CAAG,OAAA,CAAUG,CAAAA,EAAS,CACjBA,CAAAA,GAAS,CAAA,CACTP,CAAAA,EAAQ,CAERM,CAAAA,CAAO,IAAI,KAAA,CAAM,CAAA,OAAA,EAAUH,CAAI,CAAA,kBAAA,EAAqBI,CAAI,CAAA,CAAE,CAAC,EAEnE,CAAC,EACL,CAAC,CACL,CAEA,IAAOC,CAAAA,CAAQN,CAAAA,CCjBfO,OAAAA,CAAQ,OAAA,CAAQ,aAAa,CAAA,CAAE,MAAA,CAAO,SAAY,MAAMD,CAAAA,CAAU,aAAa,CAAC,CAAA,CAChFC,OAAAA,CAAQ,OAAA,CAAQ,UAAU,CAAA,CAAE,MAAA,CAAO,SAAY,MAAMD,CAAAA,CAAU,UAAU,CAAC,CAAA,CAC1EC,OAAAA,CAAQ,OAAA,CAAQ,SAAS,CAAA,CAAE,MAAA,CAAO,SAAY,MAAMD,CAAAA,CAAU,SAAS,CAAC,CAAA,CAExEC,OAAAA,CAAQ,KAAA,EAAM","file":"index.js","sourcesContent":["import { spawn } from 'node:child_process';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst binPath = resolve(__dirname, '../../node_modules/.bin/tsx');\nconst scriptPath = resolve(__dirname, './scripts');\n\nasync function runScript(file: string) {\n const ls = spawn(binPath, [`${resolve(scriptPath, file)}.ts`], { stdio: 'inherit' });\n\n return new Promise<void>((resolve, reject) => {\n ls.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`Script ${file} exited with code ${code}`));\n }\n });\n });\n}\n\nexport default runScript;\n","#!/usr/bin/env node\n\nimport { program } from 'commander';\n\nimport runScript from './utility/run-script';\n\nprogram.command('db:generate').action(async () => await runScript('db-generate'));\nprogram.command('db:reset').action(async () => await runScript('db-reset'));\nprogram.command('db:seed').action(async () => await runScript('db-seed'));\n\nprogram.parse();\n"]}
@@ -0,0 +1,31 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+
5
+ const __dirname = dirname(fileURLToPath(import.meta.url));
6
+
7
+ const binPath = resolve(__dirname, '../../../node_modules/.bin/drizzle-kit');
8
+ const configPath = resolve(__dirname, '../static/drizzle.config.cjs');
9
+
10
+ async function main() {
11
+ const ls = spawn(binPath, ['generate', `--config=${configPath}`], { stdio: 'inherit' });
12
+
13
+ return new Promise<void>((resolve, reject) => {
14
+ ls.on('close', (code) => {
15
+ if (code === 0) {
16
+ resolve();
17
+ } else {
18
+ reject();
19
+ }
20
+ });
21
+ });
22
+ }
23
+
24
+ main()
25
+ .then(() => {
26
+ process.exit(0);
27
+ })
28
+ .catch((err) => {
29
+ console.error(err);
30
+ process.exit(1);
31
+ });
@@ -0,0 +1,56 @@
1
+ import { readdir, readFile } from 'node:fs/promises';
2
+ import { extname, resolve } from 'node:path';
3
+
4
+ import { Client } from 'pg';
5
+
6
+ import dotenv from 'dotenv';
7
+ dotenv.config({ path: resolve(process.cwd(), '.env'), quiet: true });
8
+
9
+ const migrationPath = resolve(process.cwd(), './database/migrations');
10
+
11
+ async function getMigrationQuery(): Promise<string> {
12
+ const files = (await readdir(migrationPath))
13
+ .filter((file) => extname(file) === '.sql')
14
+ .map((file) => resolve(migrationPath, file));
15
+
16
+ let query = [];
17
+
18
+ for (const file of files) {
19
+ query.push(await readFile(file, 'utf-8'));
20
+ }
21
+
22
+ return query.join('\n');
23
+ }
24
+
25
+ async function main() {
26
+ if (!process.env.DATABASE_URL) {
27
+ throw new Error('DATABASE_URL is not defined');
28
+ }
29
+
30
+ const environment = process.env.APP_ENV;
31
+
32
+ if (!environment || !['development', 'test'].includes(environment)) {
33
+ throw new Error('APP_ENV is not defined, or does not support migration.');
34
+ }
35
+
36
+ const client = new Client(process.env.DATABASE_URL);
37
+ await client.connect();
38
+
39
+ await client.query(
40
+ 'SET client_min_messages TO WARNING; DROP SCHEMA IF EXISTS auth CASCADE; DROP SCHEMA IF EXISTS public CASCADE; CREATE SCHEMA public;'
41
+ );
42
+
43
+ const query = await getMigrationQuery();
44
+ await client.query(query);
45
+
46
+ await client.end();
47
+ }
48
+
49
+ main()
50
+ .then(() => {
51
+ process.exit(0);
52
+ })
53
+ .catch((err) => {
54
+ console.error(err);
55
+ process.exit(1);
56
+ });
@@ -0,0 +1,32 @@
1
+ import { readdir } from 'node:fs/promises';
2
+ import { resolve } from 'node:path';
3
+
4
+ import dotenv from 'dotenv';
5
+ dotenv.config({ path: resolve(process.cwd(), '.env'), quiet: true });
6
+
7
+ const seedPath = resolve(process.cwd(), './database/seeds');
8
+
9
+ async function runSeedFile(file: string) {
10
+ const seedModule = await import(file);
11
+
12
+ if (typeof seedModule.default === 'function') {
13
+ await seedModule.default();
14
+ }
15
+ }
16
+
17
+ async function main() {
18
+ const files = (await readdir(seedPath)).map((file) => resolve(seedPath, file));
19
+
20
+ for (const file of files) {
21
+ await runSeedFile(file);
22
+ }
23
+ }
24
+
25
+ main()
26
+ .then(() => {
27
+ process.exit(0);
28
+ })
29
+ .catch((err) => {
30
+ console.error(err);
31
+ process.exit(1);
32
+ });
@@ -1,11 +1,11 @@
1
- import 'dotenv/config';
2
- import { defineConfig } from 'drizzle-kit';
1
+ require('dotenv/config');
2
+ const { defineConfig } = require('drizzle-kit');
3
3
 
4
4
  if (!process.env.DATABASE_URL) {
5
5
  throw new Error('DATABASE_URL is not defined. Database migration cannot be generated.');
6
6
  }
7
7
 
8
- export default defineConfig({
8
+ module.exports = defineConfig({
9
9
  dbCredentials: {
10
10
  url: process.env.DATABASE_URL,
11
11
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sqrzro/server",
3
- "version": "4.0.0-alpha.5",
3
+ "version": "4.0.0-alpha.7",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -52,6 +52,7 @@
52
52
  "pg": "^8.16.3",
53
53
  "react-dom": "^19.2.1",
54
54
  "redis": "^5.10.0",
55
+ "tsx": "^4.21.0",
55
56
  "zod": "^4.1.13",
56
57
  "@sqrzro/utility": "^4.0.0-alpha.1"
57
58
  },
@@ -66,7 +67,6 @@
66
67
  "rimraf": "^4.4.1",
67
68
  "ts-jest": "^29.4.6",
68
69
  "tsup": "^8.5.1",
69
- "tsx": "^4.21.0",
70
70
  "typescript": "^5.9.3",
71
71
  "@sqrzro/prettier-config": "^4.0.0-alpha.1"
72
72
  },