diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 27f83db0..556db2e3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -163,6 +163,18 @@ jobs:
run: pnpm install
working-directory: parser
+ - name: Download v13 WASM Artifacts 📥
+ uses: actions/download-artifact@v4
+ with:
+ name: wasm-artifacts-v13
+ path: versions/13/wasm/
+
+ - name: Download v14 WASM Artifacts 📥
+ uses: actions/download-artifact@v4
+ with:
+ name: wasm-artifacts-v14
+ path: versions/14/wasm/
+
- name: Download v15 WASM Artifacts 📥
uses: actions/download-artifact@v4
with:
@@ -181,6 +193,15 @@ jobs:
name: wasm-artifacts-v17
path: versions/17/wasm/
+ - name: Build Types Packages 🏗
+ run: |
+ for version in 13 14 15 16 17; do
+ echo "Building types for v${version}..."
+ cd types/${version}
+ pnpm run build
+ cd ../..
+ done
+
- name: Build Parser 🏗
run: pnpm run build
working-directory: parser
@@ -234,6 +255,18 @@ jobs:
run: pnpm install
working-directory: parser
+ - name: Download v13 WASM Artifacts 📥
+ uses: actions/download-artifact@v4
+ with:
+ name: wasm-artifacts-v13
+ path: versions/13/wasm/
+
+ - name: Download v14 WASM Artifacts 📥
+ uses: actions/download-artifact@v4
+ with:
+ name: wasm-artifacts-v14
+ path: versions/14/wasm/
+
- name: Download v15 WASM Artifacts 📥
uses: actions/download-artifact@v4
with:
diff --git a/.gitignore b/.gitignore
index de4837c3..b920b6e0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,4 @@ libpg_query/**/*.proto
npm-debug.log
.claude
.openhands/
+.DS_Store
diff --git a/PUBLISH.md b/PUBLISH.md
index 80775227..74574b21 100644
--- a/PUBLISH.md
+++ b/PUBLISH.md
@@ -41,6 +41,39 @@ This interactive script will:
- Build, prepare, and publish each selected version
- Optionally promote pg17 to latest
+### Parser Package
+
+The parser package supports multiple build configurations:
+
+#### Full Build (all versions 13-17)
+```bash
+pnpm run publish:parser
+# or with specific build type
+PARSER_BUILD_TYPE=full pnpm run publish:parser
+```
+
+#### LTS Build (versions 16-17)
+```bash
+PARSER_BUILD_TYPE=lts pnpm run publish:parser
+```
+
+#### Latest Only (version 17)
+```bash
+PARSER_BUILD_TYPE=latest pnpm run publish:parser
+```
+
+#### Legacy Build (versions 13-15)
+```bash
+PARSER_BUILD_TYPE=legacy pnpm run publish:parser
+```
+
+This command will:
+- Navigate to the parser directory
+- Build the parser with the specified configuration
+- Publish the @pgsql/parser package to npm with appropriate dist-tag
+- Note: You should manually bump the version and commit changes before running this
+- **Prerequisite**: The version packages must be built first as the parser copies their WASM files during build
+
## Manual Publishing
### Types Packages
@@ -156,4 +189,118 @@ npm dist-tag add @libpg-query/parser@pg17 latest
```bash
npm install @libpg-query/parser@pg17 # PostgreSQL 17 specific
npm install @libpg-query/parser # Latest version
+```
+
+## Parser Package (@pgsql/parser)
+
+### Quick Publish
+```bash
+cd parser
+pnpm version patch
+git add . && git commit -m "release: bump @pgsql/parser version"
+pnpm build
+pnpm test
+pnpm publish
+```
+
+### Build Configurations
+
+The parser package is now a simple distribution package that copies pre-built WASM files. No TypeScript compilation needed!
+
+#### Available Build Types:
+- **full**: All versions (13, 14, 15, 16, 17) - Default
+- **lts**: LTS versions only (16, 17)
+- **latest**: Latest version only (17)
+- **legacy**: Legacy versions (13, 14, 15)
+
+```bash
+# Full build (default)
+npm run build
+
+# Specific builds
+npm run build:lts
+npm run build:latest
+npm run build:legacy
+
+# Or using environment variable
+PARSER_BUILD_TYPE=lts npm run build
+```
+
+### Build Process
+The simplified parser package:
+1. Copies WASM files from the `versions/*/wasm/` directories
+2. Copies TypeScript type definitions from the `types/*/dist/` directories
+3. Updates import paths to use local types instead of `@pgsql/types`
+4. Generates index files from templates based on the build configuration
+5. Creates version-specific export files
+6. Creates a `build-info.json` file documenting what was included
+
+The templates automatically adjust to include only the versions specified in the build configuration, ensuring proper TypeScript types and runtime validation. The package is completely self-contained with all necessary types bundled.
+
+**Note**: Build scripts use `cross-env` for Windows compatibility.
+
+**Important**: Before building the parser package, ensure that the version packages are built first:
+```bash
+# Build all version packages first
+pnpm build # builds libpg-query versions
+
+# Then build the parser with desired configuration
+cd parser
+npm run build:lts # or build:full, build:latest, etc.
+```
+
+### Types Bundling
+The parser build process automatically:
+1. Copies TypeScript type definitions from `types/*/dist/` directories
+2. Places them in `wasm/v*/types/` for each version
+3. Updates all import references from `@pgsql/types` to `./types`
+4. Makes the package self-contained without external type dependencies
+
+### Publishing with Different Tags
+
+```bash
+# Publish full version as latest
+npm run build:full
+npm publish
+
+# Publish LTS version with lts tag
+npm run build:lts
+npm publish --tag lts
+
+# Publish legacy version with legacy tag
+npm run build:legacy
+npm publish --tag legacy
+```
+
+### What it does
+- Publishes `@pgsql/parser` - a multi-version PostgreSQL parser with dynamic version selection
+- Provides a unified interface to work with multiple PostgreSQL versions
+- Supports different build configurations for different use cases
+- Includes both CommonJS and ESM builds
+- Exports version-specific parsers via subpaths (e.g., `@pgsql/parser/v17`)
+- **Self-contained**: Bundles TypeScript types locally (no external @pgsql/types dependency)
+
+### Install published package
+```bash
+# Install latest (full build)
+npm install @pgsql/parser
+
+# Install LTS version
+npm install @pgsql/parser@lts
+
+# Install legacy version
+npm install @pgsql/parser@legacy
+
+# Use version-specific imports:
+# import { parse } from '@pgsql/parser/v17'
+# import { parse } from '@pgsql/parser/v16'
+# import { parse } from '@pgsql/parser/v13'
+```
+
+### Alternative: Using npm scripts from root
+```bash
+# From the repository root:
+pnpm build:parser # Build the parser package (full build)
+PARSER_BUILD_TYPE=lts pnpm build:parser # Build LTS version
+pnpm publish:parser # Publish the parser package
```
\ No newline at end of file
diff --git a/package.json b/package.json
index 7bdd3df6..e5a75f63 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,9 @@
"publish:versions": "node scripts/publish-versions.js",
"update:versions-types": "node scripts/update-versions-types.js",
"build:parser": "pnpm --filter @pgsql/parser build",
+ "build:parser:lts": "PARSER_BUILD_TYPE=lts pnpm --filter @pgsql/parser build",
+ "build:parser:full": "PARSER_BUILD_TYPE=full pnpm --filter @pgsql/parser build",
+ "build:parser:legacy": "PARSER_BUILD_TYPE=legacy pnpm --filter @pgsql/parser build",
"test:parser": "pnpm --filter @pgsql/parser test",
"publish:parser": "pnpm --filter @pgsql/parser publish"
},
diff --git a/parser/.gitignore b/parser/.gitignore
index 261743c3..83ceb6c1 100644
--- a/parser/.gitignore
+++ b/parser/.gitignore
@@ -1,10 +1,4 @@
node_modules/
-dist/
-dist-esm/
+wasm/
*.log
-.DS_Store
-src/wasm/*.wasm
-src/wasm/*.js
-src/types/15/
-src/types/16/
-src/types/17/
\ No newline at end of file
+.DS_Store
\ No newline at end of file
diff --git a/parser/Makefile.shared b/parser/Makefile.shared
deleted file mode 100644
index 16f69566..00000000
--- a/parser/Makefile.shared
+++ /dev/null
@@ -1,42 +0,0 @@
-# Shared Makefile for building PostgreSQL parser WASM
-VERSION ?= 17
-TAG_15 = 15-4.2.4
-TAG_16 = 16-5.2.0
-TAG_17 = 17-6.1.0
-TAG = $(TAG_$(VERSION))
-
-# Emscripten flags
-EMCC_CFLAGS = -O3 -flto -s WASM=1 -s TOTAL_MEMORY=16777216 \
- -s EXPORTED_FUNCTIONS="['_parse_sql']" \
- -s EXPORTED_RUNTIME_METHODS="['ccall','cwrap']" \
- -s MODULARIZE=1 \
- -s EXPORT_NAME="LibPGQuery$(VERSION)"
-
-.PHONY: all
-all: clean download build-wasm
-
-.PHONY: download
-download:
- @echo "Downloading libpg_query $(TAG)..."
- curl -L "https://github.com/pganalyze/libpg_query/archive/refs/tags/$(TAG).tar.gz" | tar -xz
- mv libpg_query-$(TAG) libpg_query
-
-.PHONY: build-wasm
-build-wasm:
- @echo "Building WASM for PostgreSQL $(VERSION)..."
- cd libpg_query && make build_shared
- emcc $(EMCC_CFLAGS) \
- -I./libpg_query \
- ./wasm_wrapper.c \
- ./libpg_query/libpg_query.a \
- -o libpg-query.js
-
-.PHONY: clean
-clean:
- rm -rf libpg_query libpg-query.js libpg-query.wasm
-
-.PHONY: info
-info:
- @echo "Building PostgreSQL $(VERSION) parser"
- @echo "Tag: $(TAG)"
- @echo "Export name: LibPGQuery$(VERSION)"
\ No newline at end of file
diff --git a/parser/README.md b/parser/README.md
index fb4b4795..3cac1cf3 100644
--- a/parser/README.md
+++ b/parser/README.md
@@ -13,12 +13,19 @@
-Multi-version PostgreSQL parser with dynamic version selection. This package provides a unified interface to parse PostgreSQL queries using different parser versions (15, 16, 17).
+Multi-version PostgreSQL parser with dynamic version selection. This package provides a unified interface to parse PostgreSQL queries using different parser versions (13, 14, 15, 16, 17).
## Installation
```bash
+# Install latest (full build with all versions)
npm install @pgsql/parser
+
+# Install LTS version (PostgreSQL 16-17 only)
+npm install @pgsql/parser@lts
+
+# Install legacy version (PostgreSQL 13-15 only)
+npm install @pgsql/parser@legacy
```
## Usage
@@ -71,12 +78,12 @@ if (result.error) {
## API
-### `parse(query: string, version?: 15 | 16 | 17): Promise`
+### `parse(query: string, version?: 13 | 14 | 15 | 16 | 17): Promise`
Parse a SQL query with the specified PostgreSQL version.
- `query`: The SQL query string to parse
-- `version`: PostgreSQL version (15, 16, or 17). Defaults to 17.
+- `version`: PostgreSQL version (13, 14, 15, 16, or 17). Defaults to 17.
Returns a promise that resolves to:
- On success: `{ version: number, result: AST }`
@@ -88,12 +95,14 @@ Class for creating a parser instance with a specific version.
```javascript
const parser = new PgParser(version);
-await parser.parse(query);
-parser.parseSync(query); // Only available after first parse()
+const result = await parser.parse(query);
+const syncResult = parser.parseSync(query); // Only available after first parse()
```
## Version Exports
+- `@pgsql/parser/v13` - PostgreSQL 13 parser
+- `@pgsql/parser/v14` - PostgreSQL 14 parser
- `@pgsql/parser/v15` - PostgreSQL 15 parser
- `@pgsql/parser/v16` - PostgreSQL 16 parser
- `@pgsql/parser/v17` - PostgreSQL 17 parser
@@ -103,6 +112,20 @@ Each version export provides:
- `parse(query)`: Parse a query (async)
- `parseSync(query)`: Parse a query (sync, requires loadModule first)
+## Build Configurations
+
+This package supports different build configurations for different use cases:
+
+- **full** (default): All versions (13, 14, 15, 16, 17)
+- **lts**: LTS versions only (16, 17)
+- **latest**: Latest version only (17)
+- **legacy**: Legacy versions (13, 14, 15)
+
+When installing from npm, you can choose the appropriate build using tags:
+- `npm install @pgsql/parser` - Full build
+- `npm install @pgsql/parser@lts` - LTS build
+- `npm install @pgsql/parser@legacy` - Legacy build
+
## Credits
Built on the excellent work of several contributors:
diff --git a/parser/package.json b/parser/package.json
index a0106269..8a6bcb4f 100644
--- a/parser/package.json
+++ b/parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@pgsql/parser",
- "version": "1.0.0",
+ "version": "1.0.2",
"author": "Dan Lynch ",
"description": "Multi-version PostgreSQL parser with dynamic version selection",
"main": "./wasm/index.cjs",
@@ -12,6 +12,16 @@
"require": "./wasm/index.cjs",
"types": "./wasm/index.d.ts"
},
+ "./v13": {
+ "import": "./wasm/v13.js",
+ "require": "./wasm/v13.cjs",
+ "types": "./wasm/v13.d.ts"
+ },
+ "./v14": {
+ "import": "./wasm/v14.js",
+ "require": "./wasm/v14.cjs",
+ "types": "./wasm/v14.d.ts"
+ },
"./v15": {
"import": "./wasm/v15.js",
"require": "./wasm/v15.cjs",
@@ -29,13 +39,17 @@
}
},
"files": [
- "wasm"
+ "wasm/**/*"
],
"scripts": {
- "clean": "rimraf wasm/*.js wasm/*.cjs wasm/*.d.ts cjs esm",
- "build:js": "node scripts/build.js",
- "build": "pnpm clean && pnpm build:js",
- "test": "vitest"
+ "clean": "rimraf wasm",
+ "prepare": "node scripts/prepare.js",
+ "build": "npm run clean && npm run prepare",
+ "build:full": "npm run clean && cross-env PARSER_BUILD_TYPE=full npm run prepare",
+ "build:lts": "npm run clean && cross-env PARSER_BUILD_TYPE=lts npm run prepare",
+ "build:latest": "npm run clean && cross-env PARSER_BUILD_TYPE=latest npm run prepare",
+ "build:legacy": "npm run clean && cross-env PARSER_BUILD_TYPE=legacy npm run prepare",
+ "test": "node --test test/parser.test.js"
},
"keywords": [
"postgresql",
@@ -46,6 +60,7 @@
],
"license": "MIT",
"devDependencies": {
- "vitest": "^1.0.0"
+ "cross-env": "^7.0.3",
+ "rimraf": "^5.0.0"
}
}
diff --git a/parser/scripts/build.js b/parser/scripts/build.js
deleted file mode 100644
index 90a73ecb..00000000
--- a/parser/scripts/build.js
+++ /dev/null
@@ -1,61 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-const { execSync } = require('child_process');
-
-// Run TypeScript compilation
-console.log('Compiling TypeScript...');
-
-// Try to find tsc in different locations
-let tscPath = path.join(__dirname, '../node_modules/.bin/tsc');
-if (!fs.existsSync(tscPath)) {
- // Try workspace root
- tscPath = path.join(__dirname, '../../../node_modules/.bin/tsc');
-}
-if (!fs.existsSync(tscPath)) {
- // Try using npx as fallback
- console.log('Using npx to run TypeScript compiler...');
- execSync('npx tsc', { stdio: 'inherit', cwd: path.join(__dirname, '..') });
- execSync('npx tsc -p tsconfig.esm.json', { stdio: 'inherit', cwd: path.join(__dirname, '..') });
-} else {
- execSync(`${tscPath}`, { stdio: 'inherit', cwd: path.join(__dirname, '..') });
- execSync(`${tscPath} -p tsconfig.esm.json`, { stdio: 'inherit', cwd: path.join(__dirname, '..') });
-}
-
-// Rename files to have correct extensions
-const wasmDir = path.join(__dirname, '../wasm');
-const cjsDir = path.join(__dirname, '../cjs');
-const esmDir = path.join(__dirname, '../esm');
-
-// Ensure wasm directory exists
-if (!fs.existsSync(wasmDir)) {
- fs.mkdirSync(wasmDir, { recursive: true });
-}
-
-// Function to rename and move files
-function moveFile(from, to) {
- if (fs.existsSync(from)) {
- fs.renameSync(from, to);
- }
-}
-
-// Move main index files
-moveFile(path.join(cjsDir, 'index.js'), path.join(wasmDir, 'index.cjs'));
-moveFile(path.join(esmDir, 'index.js'), path.join(wasmDir, 'index.js'));
-moveFile(path.join(cjsDir, 'index.d.ts'), path.join(wasmDir, 'index.d.ts'));
-
-// Move version-specific files
-['v15', 'v16', 'v17'].forEach(version => {
- moveFile(path.join(cjsDir, `${version}.js`), path.join(wasmDir, `${version}.cjs`));
- moveFile(path.join(esmDir, `${version}.js`), path.join(wasmDir, `${version}.js`));
- moveFile(path.join(cjsDir, `${version}.d.ts`), path.join(wasmDir, `${version}.d.ts`));
-});
-
-// Clean up temporary directories
-if (fs.existsSync(cjsDir)) {
- fs.rmSync(cjsDir, { recursive: true });
-}
-if (fs.existsSync(esmDir)) {
- fs.rmSync(esmDir, { recursive: true });
-}
-
-console.log('Build completed successfully!');
\ No newline at end of file
diff --git a/parser/scripts/prepare.js b/parser/scripts/prepare.js
new file mode 100644
index 00000000..5d037b21
--- /dev/null
+++ b/parser/scripts/prepare.js
@@ -0,0 +1,203 @@
+const fs = require('fs');
+const path = require('path');
+
+// Build configurations for different tags
+const BUILD_CONFIGS = {
+ 'full': {
+ versions: ['13', '14', '15', '16', '17'],
+ description: 'Full build with all PostgreSQL versions (13-17)'
+ },
+ 'lts': {
+ versions: ['15', '16', '17'], // Current LTS versions
+ description: 'LTS build with PostgreSQL 16 and 17'
+ },
+ 'legacy': {
+ versions: ['13', '14', '15'],
+ description: 'Legacy versions (13-15)'
+ }
+};
+
+// Get build type from environment or default to 'full'
+const buildType = process.env.PARSER_BUILD_TYPE || 'full';
+const config = BUILD_CONFIGS[buildType];
+
+if (!config) {
+ console.error(`Invalid build type: ${buildType}`);
+ console.error('Available build types:', Object.keys(BUILD_CONFIGS).join(', '));
+ process.exit(1);
+}
+
+console.log(`Building parser package: ${buildType}`);
+console.log(`Description: ${config.description}`);
+console.log(`Versions: ${config.versions.join(', ')}`);
+console.log('');
+
+// Ensure wasm directory exists
+const wasmDir = path.join(__dirname, '../wasm');
+if (!fs.existsSync(wasmDir)) {
+ fs.mkdirSync(wasmDir, { recursive: true });
+}
+
+// Helper function to generate template variables
+function generateTemplateVars(versions) {
+ const defaultVersion = versions[versions.length - 1]; // Use highest version as default
+
+ // For JavaScript array: [13, 14, 15, 16, 17]
+ const versionsArray = versions.join(', ');
+
+ // For TypeScript union: 13 | 14 | 15 | 16 | 17
+ const versionUnion = versions.join(' | ');
+
+ // For ESM exports: export * as v13 from './v13/index.js';
+ const versionExports = versions.map(v => `export * as v${v} from './v${v}/index.js';`).join('\n');
+
+ // For CommonJS requires: v13: require('./v13/index.cjs'),
+ const versionRequires = versions.map(v => ` v${v}: require('./v${v}/index.cjs')`).join(',\n');
+
+ // For TypeScript exports: export * as v13 from './v13/index';
+ const versionTypeExports = versions.map(v => `export * as v${v} from './v${v}/index';`).join('\n');
+
+ return {
+ DEFAULT_VERSION: defaultVersion,
+ VERSIONS: versionsArray,
+ VERSION_UNION: versionUnion,
+ VERSION_EXPORTS: versionExports,
+ VERSION_REQUIRES: versionRequires,
+ VERSION_TYPE_EXPORTS: versionTypeExports
+ };
+}
+
+// Process template file
+function processTemplate(templatePath, outputPath, vars) {
+ let content = fs.readFileSync(templatePath, 'utf8');
+
+ // Replace all template variables
+ Object.entries(vars).forEach(([key, value]) => {
+ const regex = new RegExp(`\\$\\{${key}\\}`, 'g');
+ content = content.replace(regex, value);
+ });
+
+ fs.writeFileSync(outputPath, content);
+ console.log(`Generated ${path.basename(outputPath)} from template`);
+}
+
+// Copy WASM files for each version in the config
+config.versions.forEach(version => {
+ const versionWasmDir = path.join(wasmDir, `v${version}`);
+ const sourceWasmDir = path.join(__dirname, `../../versions/${version}/wasm`);
+
+ // Create version directory
+ if (!fs.existsSync(versionWasmDir)) {
+ fs.mkdirSync(versionWasmDir, { recursive: true });
+ }
+
+ // Check if source WASM files exist
+ if (!fs.existsSync(sourceWasmDir)) {
+ console.error(`Warning: WASM files for version ${version} not found at ${sourceWasmDir}`);
+ console.error(`Please build version ${version} first with: cd versions/${version} && pnpm build`);
+ return;
+ }
+
+ // Copy all files from source wasm directory
+ const files = fs.readdirSync(sourceWasmDir);
+ files.forEach(file => {
+ const sourcePath = path.join(sourceWasmDir, file);
+ const destPath = path.join(versionWasmDir, file);
+
+ if (fs.statSync(sourcePath).isFile()) {
+ console.log(`Copying ${file} for v${version}...`);
+ fs.copyFileSync(sourcePath, destPath);
+
+ // Update any references to @pgsql/types to use local types
+ if (file.endsWith('.js') || file.endsWith('.cjs') || file.endsWith('.d.ts')) {
+ let content = fs.readFileSync(destPath, 'utf8');
+ content = content.replace(/@pgsql\/types/g, './types');
+ fs.writeFileSync(destPath, content);
+ }
+ }
+ });
+
+ // Copy types files
+ const typesSourceDir = path.join(__dirname, `../../types/${version}/dist`);
+ const typesTargetDir = path.join(versionWasmDir, 'types');
+
+ if (fs.existsSync(typesSourceDir)) {
+ // Create types directory
+ if (!fs.existsSync(typesTargetDir)) {
+ fs.mkdirSync(typesTargetDir, { recursive: true });
+ }
+
+ // Copy essential type files
+ const typeFiles = ['index.d.ts', 'index.js', 'types.d.ts', 'types.js', 'enums.d.ts', 'enums.js'];
+ typeFiles.forEach(file => {
+ const sourcePath = path.join(typesSourceDir, file);
+ const destPath = path.join(typesTargetDir, file);
+
+ if (fs.existsSync(sourcePath)) {
+ console.log(`Copying types/${file} for v${version}...`);
+ fs.copyFileSync(sourcePath, destPath);
+ }
+ });
+ } else {
+ console.warn(`Warning: Types for version ${version} not found at ${typesSourceDir}`);
+ }
+});
+
+// Generate files from templates
+const templateDir = path.join(__dirname, '../templates');
+const templateVars = generateTemplateVars(config.versions);
+
+// Process each template
+const templates = [
+ { template: 'index.js.template', output: 'index.js' },
+ { template: 'index.cjs.template', output: 'index.cjs' },
+ { template: 'index.d.ts.template', output: 'index.d.ts' }
+];
+
+templates.forEach(({ template, output }) => {
+ const templatePath = path.join(templateDir, template);
+ const outputPath = path.join(wasmDir, output);
+
+ if (fs.existsSync(templatePath)) {
+ processTemplate(templatePath, outputPath, templateVars);
+ } else {
+ console.error(`Template not found: ${templatePath}`);
+ }
+});
+
+// Create version-specific export files
+config.versions.forEach(version => {
+ // ESM version
+ const esmContent = `// Re-export everything from the v${version} parser
+export * from './v${version}/index.js';
+`;
+ fs.writeFileSync(path.join(wasmDir, `v${version}.js`), esmContent);
+
+ // CJS version
+ const cjsContent = `// Re-export everything from the v${version} parser
+module.exports = require('./v${version}/index.cjs');
+`;
+ fs.writeFileSync(path.join(wasmDir, `v${version}.cjs`), cjsContent);
+
+ // TypeScript definitions
+ const dtsContent = `// Re-export types from the v${version} parser
+export * from './v${version}/index';
+`;
+ fs.writeFileSync(path.join(wasmDir, `v${version}.d.ts`), dtsContent);
+});
+
+// Create a build info file
+const buildInfo = {
+ buildType,
+ versions: config.versions,
+ description: config.description,
+ buildTime: new Date().toISOString()
+};
+
+fs.writeFileSync(
+ path.join(wasmDir, 'build-info.json'),
+ JSON.stringify(buildInfo, null, 2)
+);
+
+console.log('\nPrepare completed successfully!');
+console.log(`Build info saved to wasm/build-info.json`);
\ No newline at end of file
diff --git a/parser/src/index.ts b/parser/src/index.ts
deleted file mode 100644
index 5f683114..00000000
--- a/parser/src/index.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-// Dynamic parser that loads the specified version at runtime
-export class PgParser {
- private version: 15 | 16 | 17;
- private parser: any;
-
- constructor(version: 15 | 16 | 17 = 17) {
- this.version = version;
- }
-
- private async loadParser() {
- if (this.parser) return;
-
- switch (this.version) {
- case 15:
- this.parser = await import('../../versions/15/wasm/index.js');
- break;
- case 16:
- this.parser = await import('../../versions/16/wasm/index.js');
- break;
- case 17:
- this.parser = await import('../../versions/17/wasm/index.js');
- break;
- }
-
- if (this.parser.loadModule) {
- await this.parser.loadModule();
- }
- }
-
- async parse(query: string): Promise {
- await this.loadParser();
- try {
- const result = await this.parser.parse(query);
- return { version: this.version, result };
- } catch (error: any) {
- return {
- version: this.version,
- error: {
- type: 'syntax',
- message: error.message,
- position: 0
- }
- };
- }
- }
-
- parseSync(query: string): any {
- if (!this.parser) {
- throw new Error('Parser not loaded. Call parse() first or use parseSync after parse()');
- }
- try {
- const result = this.parser.parseSync(query);
- return { version: this.version, result };
- } catch (error: any) {
- return {
- version: this.version,
- error: {
- type: 'syntax',
- message: error.message,
- position: 0
- }
- };
- }
- }
-}
-
-// Convenience functions
-export async function parse(query: string, version: 15 | 16 | 17 = 17) {
- const parser = new PgParser(version);
- return parser.parse(query);
-}
-
-export function parseSync(query: string, version: 15 | 16 | 17 = 17) {
- throw new Error('parseSync requires parser to be loaded first. Use parse() or create a PgParser instance.');
-}
\ No newline at end of file
diff --git a/parser/src/v15.ts b/parser/src/v15.ts
deleted file mode 100644
index 71eef236..00000000
--- a/parser/src/v15.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// Re-export everything from the v15 parser
-export * from '../../versions/15/wasm/index.js';
\ No newline at end of file
diff --git a/parser/src/v16.ts b/parser/src/v16.ts
deleted file mode 100644
index f45e4e2e..00000000
--- a/parser/src/v16.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// Re-export everything from the v16 parser
-export * from '../../versions/16/wasm/index.js';
\ No newline at end of file
diff --git a/parser/src/v17.ts b/parser/src/v17.ts
deleted file mode 100644
index e421ce77..00000000
--- a/parser/src/v17.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// Re-export everything from the v17 parser
-export * from '../../versions/17/wasm/index.js';
\ No newline at end of file
diff --git a/parser/templates/index.cjs.template b/parser/templates/index.cjs.template
new file mode 100644
index 00000000..7f595cb1
--- /dev/null
+++ b/parser/templates/index.cjs.template
@@ -0,0 +1,69 @@
+// CommonJS entry point for @pgsql/parser
+// Provides dynamic version loading for PostgreSQL parsers
+
+class Parser {
+ constructor(version = ${DEFAULT_VERSION}) {
+ if (![${VERSIONS}].includes(version)) {
+ throw new Error(`Unsupported PostgreSQL version: ${version}. Supported versions are ${VERSIONS}.`);
+ }
+ this.version = version;
+ this.parser = null;
+ }
+
+ async loadParser() {
+ if (this.parser) return;
+
+ // Dynamic require for CommonJS
+ this.parser = require(`./v${this.version}/index.cjs`);
+
+ if (this.parser.loadModule) {
+ await this.parser.loadModule();
+ }
+ }
+
+ async parse(query) {
+ await this.loadParser();
+ try {
+ return this.parser.parse(query);
+ } catch (error) {
+ throw new Error(`Parse error in PostgreSQL ${this.version}: ${error.message}`);
+ }
+ }
+
+ parseSync(query) {
+ if (!this.parser) {
+ throw new Error('Parser not loaded. Call parse() first or use parseSync after loading.');
+ }
+ if (!this.parser.parseSync) {
+ throw new Error(`parseSync not supported in PostgreSQL ${this.version}`);
+ }
+ try {
+ return this.parser.parseSync(query);
+ } catch (error) {
+ throw new Error(`Parse error in PostgreSQL ${this.version}: ${error.message}`);
+ }
+ }
+
+ async fingerprint(query) {
+ await this.loadParser();
+ if (this.parser.fingerprint) {
+ return this.parser.fingerprint(query);
+ }
+ throw new Error(`Fingerprint not supported in PostgreSQL ${this.version}`);
+ }
+
+ async normalize(query) {
+ await this.loadParser();
+ if (this.parser.normalize) {
+ return this.parser.normalize(query);
+ }
+ throw new Error(`Normalize not supported in PostgreSQL ${this.version}`);
+ }
+}
+
+// Export versions
+module.exports = {
+ Parser,
+ default: Parser,
+${VERSION_REQUIRES}
+};
\ No newline at end of file
diff --git a/parser/templates/index.d.ts.template b/parser/templates/index.d.ts.template
new file mode 100644
index 00000000..39ffd96f
--- /dev/null
+++ b/parser/templates/index.d.ts.template
@@ -0,0 +1,30 @@
+// TypeScript definitions for @pgsql/parser
+
+export interface ParseResult {
+ parse_tree?: any;
+ stderr_buffer?: string;
+ error?: {
+ message: string;
+ funcname: string;
+ filename: string;
+ lineno: number;
+ cursorpos: number;
+ context?: string;
+ };
+}
+
+export declare class Parser {
+ constructor(version?: ${VERSION_UNION});
+ parse(query: string): Promise;
+ parseSync(query: string): ParseResult;
+ fingerprint(query: string): Promise;
+ normalize(query: string): Promise;
+}
+
+export default Parser;
+
+// Version-specific exports
+${VERSION_TYPE_EXPORTS}
+
+// Re-export types from the default version
+export * from './v${DEFAULT_VERSION}/types';
\ No newline at end of file
diff --git a/parser/templates/index.js.template b/parser/templates/index.js.template
new file mode 100644
index 00000000..e7ff6fdf
--- /dev/null
+++ b/parser/templates/index.js.template
@@ -0,0 +1,68 @@
+// Main entry point for @pgsql/parser
+// Provides dynamic version loading for PostgreSQL parsers
+
+export class Parser {
+ constructor(version = ${DEFAULT_VERSION}) {
+ if (![${VERSIONS}].includes(version)) {
+ throw new Error(`Unsupported PostgreSQL version: ${version}. Supported versions are ${VERSIONS}.`);
+ }
+ this.version = version;
+ this.parser = null;
+ }
+
+ async loadParser() {
+ if (this.parser) return;
+
+ const module = await import(`./v${this.version}/index.js`);
+ this.parser = module;
+
+ if (this.parser.loadModule) {
+ await this.parser.loadModule();
+ }
+ }
+
+ async parse(query) {
+ await this.loadParser();
+ try {
+ return this.parser.parse(query);
+ } catch (error) {
+ throw new Error(`Parse error in PostgreSQL ${this.version}: ${error.message}`);
+ }
+ }
+
+ parseSync(query) {
+ if (!this.parser) {
+ throw new Error('Parser not loaded. Call parse() first or use parseSync after loading.');
+ }
+ if (!this.parser.parseSync) {
+ throw new Error(`parseSync not supported in PostgreSQL ${this.version}`);
+ }
+ try {
+ return this.parser.parseSync(query);
+ } catch (error) {
+ throw new Error(`Parse error in PostgreSQL ${this.version}: ${error.message}`);
+ }
+ }
+
+ async fingerprint(query) {
+ await this.loadParser();
+ if (this.parser.fingerprint) {
+ return this.parser.fingerprint(query);
+ }
+ throw new Error(`Fingerprint not supported in PostgreSQL ${this.version}`);
+ }
+
+ async normalize(query) {
+ await this.loadParser();
+ if (this.parser.normalize) {
+ return this.parser.normalize(query);
+ }
+ throw new Error(`Normalize not supported in PostgreSQL ${this.version}`);
+ }
+}
+
+// Re-export all versions for direct access
+${VERSION_EXPORTS}
+
+// Default export
+export default Parser;
\ No newline at end of file
diff --git a/parser/test/parser.test.js b/parser/test/parser.test.js
new file mode 100644
index 00000000..dfc5f940
--- /dev/null
+++ b/parser/test/parser.test.js
@@ -0,0 +1,91 @@
+const { describe, it, before } = require('node:test');
+const assert = require('node:assert/strict');
+const { Parser } = require('../wasm/index.cjs');
+
+describe('Parser', () => {
+ describe('Dynamic API', () => {
+ it('should parse SQL with default version', async () => {
+ const parser = new Parser();
+ const result = await parser.parse('SELECT 1+1 as sum');
+ assert.ok(result);
+ assert.ok(result.stmts);
+ assert.equal(result.stmts.length, 1);
+ });
+
+ it('should parse SQL with specific version', async () => {
+ // Get available versions from the Parser class
+ const parser = new Parser();
+ const defaultVersion = parser.version;
+
+ // Test with a different version if available
+ const testVersion = defaultVersion === 17 ? 16 : 15;
+ try {
+ const versionParser = new Parser(testVersion);
+ const result = await versionParser.parse('SELECT 1+1 as sum');
+ assert.equal(versionParser.version, testVersion);
+ assert.ok(result);
+ } catch (e) {
+ // Version might not be available in this build
+ console.log(`Version ${testVersion} not available in this build`);
+ }
+ });
+
+ it('should handle parse errors', async () => {
+ const parser = new Parser();
+ try {
+ await parser.parse('INVALID SQL');
+ assert.fail('Should have thrown an error');
+ } catch (error) {
+ assert.ok(error);
+ assert.ok(error.message.includes('syntax error'));
+ }
+ });
+
+ it('should work with Parser class', async () => {
+ const parser = new Parser();
+ const result = await parser.parse('SELECT * FROM users');
+ assert.ok(result);
+ assert.ok(result.stmts);
+ });
+
+ it('should validate version in constructor', () => {
+ // Test invalid version
+ assert.throws(() => {
+ new Parser(99);
+ }, /Unsupported PostgreSQL version/);
+ });
+
+ it('should support parseSync after initial parse', async () => {
+ const parser = new Parser();
+
+ // First parse to initialize
+ await parser.parse('SELECT 1');
+
+ // Now parseSync should work
+ const result = parser.parseSync('SELECT 2+2 as sum');
+ assert.ok(result);
+ assert.ok(result.stmts);
+ assert.equal(result.stmts.length, 1);
+ });
+ });
+
+ describe('Version-specific imports', () => {
+ // Dynamically test available version imports
+ const versions = [13, 14, 15, 16, 17];
+
+ for (const version of versions) {
+ it(`should parse with v${version} if available`, async () => {
+ try {
+ const versionModule = require(`../wasm/v${version}.cjs`);
+ await versionModule.loadModule();
+ const result = await versionModule.parse('SELECT 1');
+ assert.ok(result);
+ assert.equal(result.stmts.length, 1);
+ } catch (e) {
+ // Version not available in this build
+ console.log(`Version ${version} not available in this build`);
+ }
+ });
+ }
+ });
+});
\ No newline at end of file
diff --git a/parser/tsconfig.esm.json b/parser/tsconfig.esm.json
deleted file mode 100644
index 487f9c55..00000000
--- a/parser/tsconfig.esm.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": "./tsconfig.json",
- "compilerOptions": {
- "module": "esnext",
- "outDir": "esm/"
- }
-}
diff --git a/parser/tsconfig.json b/parser/tsconfig.json
deleted file mode 100644
index d7da207b..00000000
--- a/parser/tsconfig.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "compilerOptions": {
- "target": "es2022",
- "module": "commonjs",
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "strict": true,
- "strictNullChecks": false,
- "skipLibCheck": true,
- "sourceMap": false,
- "declaration": true,
- "resolveJsonModule": true,
- "moduleResolution": "node",
- "outDir": "cjs/",
- "rootDir": "src"
- },
- "exclude": ["cjs", "esm", "wasm", "node_modules", "**/*.test.ts"]
-}
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a9e7eb60..5f66af9f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -80,9 +80,12 @@ importers:
parser:
devDependencies:
- vitest:
- specifier: ^1.0.0
- version: 1.6.1(@types/node@20.19.1)
+ cross-env:
+ specifier: ^7.0.3
+ version: 7.0.3
+ rimraf:
+ specifier: ^5.0.0
+ version: 5.0.10
types/13:
devDependencies:
@@ -269,213 +272,6 @@ packages:
'@jridgewell/trace-mapping': 0.3.9
dev: true
- /@esbuild/aix-ppc64@0.21.5:
- resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/android-arm64@0.21.5:
- resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/android-arm@0.21.5:
- resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/android-x64@0.21.5:
- resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/darwin-arm64@0.21.5:
- resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/darwin-x64@0.21.5:
- resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/freebsd-arm64@0.21.5:
- resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/freebsd-x64@0.21.5:
- resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-arm64@0.21.5:
- resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-arm@0.21.5:
- resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-ia32@0.21.5:
- resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-loong64@0.21.5:
- resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-mips64el@0.21.5:
- resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-ppc64@0.21.5:
- resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-riscv64@0.21.5:
- resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-s390x@0.21.5:
- resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-x64@0.21.5:
- resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/netbsd-x64@0.21.5:
- resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/openbsd-x64@0.21.5:
- resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/sunos-x64@0.21.5:
- resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/win32-arm64@0.21.5:
- resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/win32-ia32@0.21.5:
- resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/win32-x64@0.21.5:
- resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
/@isaacs/cliui@8.0.2:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@@ -488,13 +284,6 @@ packages:
wrap-ansi-cjs: /wrap-ansi@7.0.0
dev: true
- /@jest/schemas@29.6.3:
- resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@sinclair/typebox': 0.27.8
- dev: true
-
/@jridgewell/gen-mapping@0.3.8:
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
engines: {node: '>=6.0.0'}
@@ -654,170 +443,6 @@ packages:
/@protobufjs/utf8@1.1.0:
resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
- /@rollup/rollup-android-arm-eabi@4.44.0:
- resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==}
- cpu: [arm]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-android-arm64@4.44.0:
- resolution: {integrity: sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==}
- cpu: [arm64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-darwin-arm64@4.44.0:
- resolution: {integrity: sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-darwin-x64@4.44.0:
- resolution: {integrity: sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-freebsd-arm64@4.44.0:
- resolution: {integrity: sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==}
- cpu: [arm64]
- os: [freebsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-freebsd-x64@4.44.0:
- resolution: {integrity: sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==}
- cpu: [x64]
- os: [freebsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-arm-gnueabihf@4.44.0:
- resolution: {integrity: sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-arm-musleabihf@4.44.0:
- resolution: {integrity: sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-arm64-gnu@4.44.0:
- resolution: {integrity: sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-arm64-musl@4.44.0:
- resolution: {integrity: sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-loongarch64-gnu@4.44.0:
- resolution: {integrity: sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==}
- cpu: [loong64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-powerpc64le-gnu@4.44.0:
- resolution: {integrity: sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==}
- cpu: [ppc64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-riscv64-gnu@4.44.0:
- resolution: {integrity: sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==}
- cpu: [riscv64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-riscv64-musl@4.44.0:
- resolution: {integrity: sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==}
- cpu: [riscv64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-s390x-gnu@4.44.0:
- resolution: {integrity: sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==}
- cpu: [s390x]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-x64-gnu@4.44.0:
- resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-x64-musl@4.44.0:
- resolution: {integrity: sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-win32-arm64-msvc@4.44.0:
- resolution: {integrity: sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-win32-ia32-msvc@4.44.0:
- resolution: {integrity: sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-win32-x64-msvc@4.44.0:
- resolution: {integrity: sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@sinclair/typebox@0.27.8:
- resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
- dev: true
-
/@tsconfig/node10@1.0.11:
resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
dev: true
@@ -834,10 +459,6 @@ packages:
resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
dev: true
- /@types/estree@1.0.8:
- resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
- dev: true
-
/@types/linkify-it@5.0.0:
resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
dev: true
@@ -858,45 +479,6 @@ packages:
dependencies:
undici-types: 6.21.0
- /@vitest/expect@1.6.1:
- resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==}
- dependencies:
- '@vitest/spy': 1.6.1
- '@vitest/utils': 1.6.1
- chai: 4.5.0
- dev: true
-
- /@vitest/runner@1.6.1:
- resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==}
- dependencies:
- '@vitest/utils': 1.6.1
- p-limit: 5.0.0
- pathe: 1.1.2
- dev: true
-
- /@vitest/snapshot@1.6.1:
- resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==}
- dependencies:
- magic-string: 0.30.17
- pathe: 1.1.2
- pretty-format: 29.7.0
- dev: true
-
- /@vitest/spy@1.6.1:
- resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==}
- dependencies:
- tinyspy: 2.2.1
- dev: true
-
- /@vitest/utils@1.6.1:
- resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==}
- dependencies:
- diff-sequences: 29.6.3
- estree-walker: 3.0.3
- loupe: 2.3.7
- pretty-format: 29.7.0
- dev: true
-
/@yamlize/cli@0.8.0:
resolution: {integrity: sha512-OuhQ/gYLCuMjENdLMF8UXgM32p7blBB0FxwS4R2Mw4jk/9uvv87uCz2ptq9VB7GjNTNbnRTQKw+bAbwCXyngCA==}
hasBin: true
@@ -946,11 +528,6 @@ packages:
color-convert: 2.0.1
dev: true
- /ansi-styles@5.2.0:
- resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
- engines: {node: '>=10'}
- dev: true
-
/ansi-styles@6.2.1:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
@@ -964,10 +541,6 @@ packages:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
dev: true
- /assertion-error@1.1.0:
- resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
- dev: true
-
/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
@@ -989,11 +562,6 @@ packages:
balanced-match: 1.0.2
dev: true
- /cac@6.7.14:
- resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
- engines: {node: '>=8'}
- dev: true
-
/case@1.6.3:
resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==}
engines: {node: '>= 0.8.0'}
@@ -1006,19 +574,6 @@ packages:
lodash: 4.17.21
dev: true
- /chai@4.5.0:
- resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
- engines: {node: '>=4'}
- dependencies:
- assertion-error: 1.1.0
- check-error: 1.0.3
- deep-eql: 4.1.4
- get-func-name: 2.0.2
- loupe: 2.3.7
- pathval: 1.1.1
- type-detect: 4.1.0
- dev: true
-
/chalk@4.1.0:
resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==}
engines: {node: '>=10'}
@@ -1035,12 +590,6 @@ packages:
supports-color: 7.2.0
dev: true
- /check-error@1.0.3:
- resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
- dependencies:
- get-func-name: 2.0.2
- dev: true
-
/cliui@7.0.4:
resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
dependencies:
@@ -1064,10 +613,6 @@ packages:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
- /confbox@0.1.8:
- resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
- dev: true
-
/copyfiles@2.4.1:
resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==}
hasBin: true
@@ -1089,6 +634,14 @@ packages:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true
+ /cross-env@7.0.3:
+ resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
+ engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
+ hasBin: true
+ dependencies:
+ cross-spawn: 7.0.6
+ dev: true
+
/cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -1110,13 +663,6 @@ packages:
ms: 2.1.3
dev: true
- /deep-eql@4.1.4:
- resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
- engines: {node: '>=6'}
- dependencies:
- type-detect: 4.1.0
- dev: true
-
/deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
@@ -1126,11 +672,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /diff-sequences@29.6.3:
- resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dev: true
-
/diff@4.0.2:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
@@ -1153,37 +694,6 @@ packages:
engines: {node: '>=0.12'}
dev: true
- /esbuild@0.21.5:
- resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
- engines: {node: '>=12'}
- hasBin: true
- requiresBuild: true
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.21.5
- '@esbuild/android-arm': 0.21.5
- '@esbuild/android-arm64': 0.21.5
- '@esbuild/android-x64': 0.21.5
- '@esbuild/darwin-arm64': 0.21.5
- '@esbuild/darwin-x64': 0.21.5
- '@esbuild/freebsd-arm64': 0.21.5
- '@esbuild/freebsd-x64': 0.21.5
- '@esbuild/linux-arm': 0.21.5
- '@esbuild/linux-arm64': 0.21.5
- '@esbuild/linux-ia32': 0.21.5
- '@esbuild/linux-loong64': 0.21.5
- '@esbuild/linux-mips64el': 0.21.5
- '@esbuild/linux-ppc64': 0.21.5
- '@esbuild/linux-riscv64': 0.21.5
- '@esbuild/linux-s390x': 0.21.5
- '@esbuild/linux-x64': 0.21.5
- '@esbuild/netbsd-x64': 0.21.5
- '@esbuild/openbsd-x64': 0.21.5
- '@esbuild/sunos-x64': 0.21.5
- '@esbuild/win32-arm64': 0.21.5
- '@esbuild/win32-ia32': 0.21.5
- '@esbuild/win32-x64': 0.21.5
- dev: true
-
/escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
@@ -1237,32 +747,11 @@ packages:
engines: {node: '>=4.0'}
dev: true
- /estree-walker@3.0.3:
- resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
- dependencies:
- '@types/estree': 1.0.8
- dev: true
-
/esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
dev: true
- /execa@8.0.1:
- resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
- engines: {node: '>=16.17'}
- dependencies:
- cross-spawn: 7.0.6
- get-stream: 8.0.1
- human-signals: 5.0.0
- is-stream: 3.0.0
- merge-stream: 2.0.0
- npm-run-path: 5.3.0
- onetime: 6.0.0
- signal-exit: 4.1.0
- strip-final-newline: 3.0.0
- dev: true
-
/fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: true
@@ -1279,28 +768,11 @@ packages:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
- /fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
/get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
dev: true
- /get-func-name@2.0.2:
- resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
- dev: true
-
- /get-stream@8.0.1:
- resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
- engines: {node: '>=16'}
- dev: true
-
/glob@10.4.5:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true
@@ -1351,11 +823,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /human-signals@5.0.0:
- resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
- engines: {node: '>=16.17.0'}
- dev: true
-
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
@@ -1391,11 +858,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /is-stream@3.0.0:
- resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: true
-
/isarray@0.0.1:
resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
dev: true
@@ -1420,10 +882,6 @@ packages:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
dev: true
- /js-tokens@9.0.1:
- resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
- dev: true
-
/js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
@@ -1485,14 +943,6 @@ packages:
uc.micro: 2.1.0
dev: true
- /local-pkg@0.5.1:
- resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
- engines: {node: '>=14'}
- dependencies:
- mlly: 1.7.4
- pkg-types: 1.3.1
- dev: true
-
/lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
dev: true
@@ -1500,22 +950,10 @@ packages:
/long@5.3.2:
resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
- /loupe@2.3.7:
- resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
- dependencies:
- get-func-name: 2.0.2
- dev: true
-
/lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
dev: true
- /magic-string@0.30.17:
- resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
- dev: true
-
/make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
dev: true
@@ -1552,15 +990,6 @@ packages:
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
dev: true
- /merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
- dev: true
-
- /mimic-fn@4.0.0:
- resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
- engines: {node: '>=12'}
- dev: true
-
/minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
dependencies:
@@ -1602,25 +1031,10 @@ packages:
hasBin: true
dev: true
- /mlly@1.7.4:
- resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
- dependencies:
- acorn: 8.15.0
- pathe: 2.0.3
- pkg-types: 1.3.1
- ufo: 1.6.1
- dev: true
-
/ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: true
- /nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
- dev: true
-
/nested-obj@0.0.1:
resolution: {integrity: sha512-kB1WKTng+IePQhZVs1UXtFaHBx4QEM5a0XKGAzYfCKvdx5DhNjCytNDWMUGpNNpHLotln+tiwcA52kWCIgGq1Q==}
dev: true
@@ -1632,26 +1046,12 @@ packages:
readable-stream: 1.0.34
dev: true
- /npm-run-path@5.3.0:
- resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- path-key: 4.0.0
- dev: true
-
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
dev: true
- /onetime@6.0.0:
- resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
- engines: {node: '>=12'}
- dependencies:
- mimic-fn: 4.0.0
- dev: true
-
/optionator@0.8.3:
resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==}
engines: {node: '>= 0.8.0'}
@@ -1664,13 +1064,6 @@ packages:
word-wrap: 1.2.5
dev: true
- /p-limit@5.0.0:
- resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
- engines: {node: '>=18'}
- dependencies:
- yocto-queue: 1.2.1
- dev: true
-
/package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
dev: true
@@ -1685,11 +1078,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
- dev: true
-
/path-scurry@1.11.1:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
@@ -1698,18 +1086,6 @@ packages:
minipass: 7.1.2
dev: true
- /pathe@1.1.2:
- resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
- dev: true
-
- /pathe@2.0.3:
- resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
- dev: true
-
- /pathval@1.1.1:
- resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
- dev: true
-
/pg-proto-parser@1.28.2:
resolution: {integrity: sha512-W+IywDGhYnsWf0pADeeXx9ORmAfUUK4Be6thyXO+uPycdG5EqCHG85G9BG7BubIxHomYxk2xJRgpxfTRfJ49fw==}
dependencies:
@@ -1730,37 +1106,11 @@ packages:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
dev: true
- /pkg-types@1.3.1:
- resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
- dependencies:
- confbox: 0.1.8
- mlly: 1.7.4
- pathe: 2.0.3
- dev: true
-
- /postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
- engines: {node: ^10 || ^12 || >=14}
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
- dev: true
-
/prelude-ls@1.1.2:
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
engines: {node: '>= 0.8.0'}
dev: true
- /pretty-format@29.7.0:
- resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/schemas': 29.6.3
- ansi-styles: 5.2.0
- react-is: 18.3.1
- dev: true
-
/process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
dev: true
@@ -1770,10 +1120,6 @@ packages:
engines: {node: '>=6'}
dev: true
- /react-is@18.3.1:
- resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
- dev: true
-
/readable-stream@1.0.34:
resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==}
dependencies:
@@ -1813,36 +1159,6 @@ packages:
glob: 10.4.5
dev: true
- /rollup@4.44.0:
- resolution: {integrity: sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
- dependencies:
- '@types/estree': 1.0.8
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.44.0
- '@rollup/rollup-android-arm64': 4.44.0
- '@rollup/rollup-darwin-arm64': 4.44.0
- '@rollup/rollup-darwin-x64': 4.44.0
- '@rollup/rollup-freebsd-arm64': 4.44.0
- '@rollup/rollup-freebsd-x64': 4.44.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.44.0
- '@rollup/rollup-linux-arm-musleabihf': 4.44.0
- '@rollup/rollup-linux-arm64-gnu': 4.44.0
- '@rollup/rollup-linux-arm64-musl': 4.44.0
- '@rollup/rollup-linux-loongarch64-gnu': 4.44.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.44.0
- '@rollup/rollup-linux-riscv64-gnu': 4.44.0
- '@rollup/rollup-linux-riscv64-musl': 4.44.0
- '@rollup/rollup-linux-s390x-gnu': 4.44.0
- '@rollup/rollup-linux-x64-gnu': 4.44.0
- '@rollup/rollup-linux-x64-musl': 4.44.0
- '@rollup/rollup-win32-arm64-msvc': 4.44.0
- '@rollup/rollup-win32-ia32-msvc': 4.44.0
- '@rollup/rollup-win32-x64-msvc': 4.44.0
- fsevents: 2.3.3
- dev: true
-
/safe-buffer@5.1.2:
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
dev: true
@@ -1865,20 +1181,11 @@ packages:
engines: {node: '>=8'}
dev: true
- /siginfo@2.0.0:
- resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
- dev: true
-
/signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
dev: true
- /source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
@@ -1886,14 +1193,6 @@ packages:
dev: true
optional: true
- /stackback@0.0.2:
- resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
- dev: true
-
- /std-env@3.9.0:
- resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
- dev: true
-
/strfy-js@3.0.1:
resolution: {integrity: sha512-GVN7Kz2mZ8ZSXyo5neALGObmah+JVw/nr8zNapzNtrObO+tcW0wOmlOBfRdux+XfIaA/87qe5MWXtscE7VeY+g==}
dependencies:
@@ -1942,22 +1241,11 @@ packages:
ansi-regex: 6.1.0
dev: true
- /strip-final-newline@3.0.0:
- resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
- engines: {node: '>=12'}
- dev: true
-
/strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
dev: true
- /strip-literal@2.1.1:
- resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==}
- dependencies:
- js-tokens: 9.0.1
- dev: true
-
/supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -1972,20 +1260,6 @@ packages:
xtend: 4.0.2
dev: true
- /tinybench@2.9.0:
- resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
- dev: true
-
- /tinypool@0.8.4:
- resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==}
- engines: {node: '>=14.0.0'}
- dev: true
-
- /tinyspy@2.2.1:
- resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==}
- engines: {node: '>=14.0.0'}
- dev: true
-
/tmp@0.2.3:
resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==}
engines: {node: '>=14.14'}
@@ -2034,11 +1308,6 @@ packages:
prelude-ls: 1.1.2
dev: true
- /type-detect@4.1.0:
- resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
- engines: {node: '>=4'}
- dev: true
-
/typescript@5.8.3:
resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
engines: {node: '>=14.17'}
@@ -2049,10 +1318,6 @@ packages:
resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
dev: true
- /ufo@1.6.1:
- resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
- dev: true
-
/uglify-js@3.19.3:
resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
engines: {node: '>=0.8.0'}
@@ -2079,124 +1344,6 @@ packages:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
dev: true
- /vite-node@1.6.1(@types/node@20.19.1):
- resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- dependencies:
- cac: 6.7.14
- debug: 4.4.1
- pathe: 1.1.2
- picocolors: 1.1.1
- vite: 5.4.19(@types/node@20.19.1)
- transitivePeerDependencies:
- - '@types/node'
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- dev: true
-
- /vite@5.4.19(@types/node@20.19.1):
- resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- sass-embedded: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- dependencies:
- '@types/node': 20.19.1
- esbuild: 0.21.5
- postcss: 8.5.6
- rollup: 4.44.0
- optionalDependencies:
- fsevents: 2.3.3
- dev: true
-
- /vitest@1.6.1(@types/node@20.19.1):
- resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@edge-runtime/vm': '*'
- '@types/node': ^18.0.0 || >=20.0.0
- '@vitest/browser': 1.6.1
- '@vitest/ui': 1.6.1
- happy-dom: '*'
- jsdom: '*'
- peerDependenciesMeta:
- '@edge-runtime/vm':
- optional: true
- '@types/node':
- optional: true
- '@vitest/browser':
- optional: true
- '@vitest/ui':
- optional: true
- happy-dom:
- optional: true
- jsdom:
- optional: true
- dependencies:
- '@types/node': 20.19.1
- '@vitest/expect': 1.6.1
- '@vitest/runner': 1.6.1
- '@vitest/snapshot': 1.6.1
- '@vitest/spy': 1.6.1
- '@vitest/utils': 1.6.1
- acorn-walk: 8.3.4
- chai: 4.5.0
- debug: 4.4.1
- execa: 8.0.1
- local-pkg: 0.5.1
- magic-string: 0.30.17
- pathe: 1.1.2
- picocolors: 1.1.1
- std-env: 3.9.0
- strip-literal: 2.1.1
- tinybench: 2.9.0
- tinypool: 0.8.4
- vite: 5.4.19(@types/node@20.19.1)
- vite-node: 1.6.1(@types/node@20.19.1)
- why-is-node-running: 2.3.0
- transitivePeerDependencies:
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- dev: true
-
/which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
@@ -2205,15 +1352,6 @@ packages:
isexe: 2.0.0
dev: true
- /why-is-node-running@2.3.0:
- resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
- engines: {node: '>=8'}
- hasBin: true
- dependencies:
- siginfo: 2.0.0
- stackback: 0.0.2
- dev: true
-
/word-wrap@1.2.5:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
@@ -2285,8 +1423,3 @@ packages:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}
dev: true
-
- /yocto-queue@1.2.1:
- resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
- engines: {node: '>=12.20'}
- dev: true