Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78d51563ca | ||
|
|
b624dafed7 | ||
|
|
296555b4e7 | ||
| 219895fb76 | |||
|
|
90f3230a85 | ||
| 730cdcc7ef | |||
|
|
423b8db56b | ||
| 4a367ab05d | |||
| 50654cf10f | |||
| 36db88dab3 | |||
|
|
aee7c37b74 | ||
| 93a233ff36 | |||
|
|
13c2e5c7bf | ||
| c7b3e75085 | |||
| 7df85b7654 | |||
| 190ed66c5e | |||
| aad6480642 | |||
| 724c239fa6 | |||
|
|
41db55d45a | ||
|
|
579673056c | ||
|
|
0a56ad814d | ||
|
|
8f20413371 | ||
|
|
1c6db5818d | ||
|
|
f0c2a50c18 | ||
|
|
4d6195699e | ||
|
|
657608fce1 | ||
|
|
bc086a466f | ||
|
|
9c57d891b8 | ||
|
|
5b270f037f | ||
|
|
5efdad0b6b | ||
|
|
1500b39d92 | ||
|
|
da424119c8 |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,4 +1,11 @@
|
|||||||
# Logs
|
# Logs
|
||||||
|
.DS_Store
|
||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
.cache/
|
||||||
|
*.log
|
||||||
|
coverage/
|
||||||
|
._*
|
||||||
logs
|
logs
|
||||||
*.log
|
*.log
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
|
|||||||
4
.husky/pre-commit
Executable file
4
.husky/pre-commit
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
. "$(dirname -- "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
npm run mockTest
|
||||||
9
HELP.md
Normal file
9
HELP.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# React Crafter CLI Help
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
npx react-crafter <project-directory> [options]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--typescript Scaffold the project using the TypeScript template
|
||||||
|
-V, --version Output the version number
|
||||||
|
-h, --help Display help information
|
||||||
39
README.md
39
README.md
@@ -1,17 +1,19 @@
|
|||||||
# React Crafter
|
# React Crafter
|
||||||
|
|
||||||
**React Crafter** is a CLI tool designed to quickly scaffold a modern React application with TypeScript, Ant Design, Sass, Webpack, and essential development tools like Husky and linters pre-configured. This tool simplifies the initial setup, allowing developers to start coding with best practices from the get-go.
|
**React Crafter** is a CLI tool designed to quickly scaffold a modern React application with your choice of JavaScript or TypeScript, optional UI libraries, Sass, Vite, and essential development tools like Husky and linters pre-configured. This tool simplifies the initial setup, allowing developers to start coding with best practices from the get-go.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- **React with TypeScript**: Automatically sets up a React project using TypeScript.
|
- **React with JavaScript or TypeScript**: Choose your preferred language and the CLI sets up the project accordingly.
|
||||||
- **Ant Design Integration**: Includes Ant Design (antd) for UI components, fully integrated with your project.
|
- **UI Library Options**: Choose between Ant Design, Material UI, Chakra UI, Radix UI, or none at all during setup.
|
||||||
- **Sass Support**: Configures Sass for better styling with variables, mixins, and more.
|
- **Sass Support**: Configures Sass for better styling with variables, mixins, and more.
|
||||||
- **Webpack Configuration**: Custom Webpack setup for development and production builds.
|
- **Vite Configuration**: Fast bundler setup for development and production builds.
|
||||||
|
- **Automatic Vite Template**: The CLI passes the correct template to `create-vite` based on your language choice, so no extra prompts appear.
|
||||||
- **Husky & Linters**: Pre-configured Git hooks with Husky, Commitlint, and Prettier to enforce code quality and style.
|
- **Husky & Linters**: Pre-configured Git hooks with Husky, Commitlint, and Prettier to enforce code quality and style.
|
||||||
- **Atomic Design Structure**: Creates an atomic design folder structure to organize your components.
|
- **Atomic Design Structure**: Creates an atomic design folder structure to organize your components.
|
||||||
- **Redux Setup**: Sets up Redux with slices, middleware, and selectors for state management.
|
- **Redux Setup**: Sets up Redux with slices, middleware, and selectors for state management.
|
||||||
- **Test Suite**: Installs Jest and Playwright for comprehensive testing.
|
- **Test Suite**: Installs Jest and Playwright for comprehensive testing.
|
||||||
|
- **Automatic Git Initialization**: Initializes a Git repository for your project during setup.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -37,12 +39,25 @@ npx react-crafter my-new-app
|
|||||||
|
|
||||||
Replace `my-new-app` with the name of your project.
|
Replace `my-new-app` with the name of your project.
|
||||||
|
|
||||||
|
The setup process automatically runs `git init` so your project starts with version control enabled.
|
||||||
|
|
||||||
### Example:
|
### Example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npx react-crafter awesome-project
|
npx react-crafter awesome-project
|
||||||
```
|
```
|
||||||
|
|
||||||
|
During setup you'll select either JavaScript or TypeScript. React Crafter then calls `create-vite` with the matching template (`react` or `react-ts`) so you won't see any additional prompts.
|
||||||
|
|
||||||
|
## CLI Flags
|
||||||
|
|
||||||
|
React Crafter supports a few command line options:
|
||||||
|
|
||||||
|
- `--typescript` – scaffold the project using the TypeScript template without a prompt.
|
||||||
|
- `-V, --version` – output the CLI version.
|
||||||
|
- `-h, --help` – display usage information.
|
||||||
|
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
Here’s a summary of the commands you can use after setting up your project:
|
Here’s a summary of the commands you can use after setting up your project:
|
||||||
@@ -50,10 +65,10 @@ Here’s a summary of the commands you can use after setting up your project:
|
|||||||
1. **Start Development Server**:
|
1. **Start Development Server**:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm start
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
Starts the development server with Webpack. The project is served using Webpack Dev Server with the configuration specified in `webpack.config.js`.
|
Starts the development server with Vite. The project is served using the Vite dev server.
|
||||||
|
|
||||||
2. **Build for Production**:
|
2. **Build for Production**:
|
||||||
|
|
||||||
@@ -61,7 +76,7 @@ Here’s a summary of the commands you can use after setting up your project:
|
|||||||
npm run build
|
npm run build
|
||||||
```
|
```
|
||||||
|
|
||||||
Builds the project for production. Webpack compiles the project and outputs the optimized bundle in the `/dist` directory.
|
Builds the project for production. Vite compiles the project and outputs the optimized bundle in the `dist` directory.
|
||||||
|
|
||||||
3. **Run Tests**:
|
3. **Run Tests**:
|
||||||
|
|
||||||
@@ -111,15 +126,7 @@ Here’s a summary of the commands you can use after setting up your project:
|
|||||||
|
|
||||||
Applies Prettier formatting to staged files before committing. Ensures that committed code is properly formatted.
|
Applies Prettier formatting to staged files before committing. Ensures that committed code is properly formatted.
|
||||||
|
|
||||||
9. **Eject Project**:
|
9. **Prepare Husky**:
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run eject
|
|
||||||
```
|
|
||||||
|
|
||||||
Ejects the project from Create React App. This command exposes the underlying configuration files for full control but cannot be undone.
|
|
||||||
|
|
||||||
10. **Prepare Husky**:
|
|
||||||
```bash
|
```bash
|
||||||
npm run prepare
|
npm run prepare
|
||||||
```
|
```
|
||||||
|
|||||||
205
TODO.md
Normal file
205
TODO.md
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
# TODO: React Crafter Roadmap & Fixes
|
||||||
|
|
||||||
|
## ❗ Known Issues / Bugs
|
||||||
|
|
||||||
|
### 🔧 Core Architecture Issues
|
||||||
|
- [ ] 🔁 **Dual CLI Entry Points**: The project has two different CLI implementations (`index.js` and `bin/cli.js`) with conflicting logic. `index.js` uses `create-react-app` while `bin/cli.js` uses `create-vite`.
|
||||||
|
- [ ] 🧠 **Language Selection Inconsistency**: The CLI asks for **JavaScript or TypeScript**, but the implementation in `index.js` always uses `--template typescript` regardless of user choice.
|
||||||
|
- [ ] 📁 **Template System Confusion**: The project has both `pre-files/` (static templates) and `src/templates/` (dynamic templates), creating confusion about which system is active.
|
||||||
|
|
||||||
|
### 🎨 Styling & UI Issues
|
||||||
|
- [ ] 🎨 **Styling Selection Broken**: In `index.js`, `setupSass()` is called unconditionally, ignoring user's styling choice. The `src/setup/styles.js` has proper logic but isn't being used.
|
||||||
|
- [ ] 🧩 **CSS Modules Logic Missing**: The prompts ask about CSS Modules/styled-components/emotion but there's no implementation for this choice.
|
||||||
|
- [ ] 🎯 **UI Framework Integration**: UI framework selection works in `src/setup/dependencies.js` but the actual component setup is missing.
|
||||||
|
|
||||||
|
### 🧪 Testing Issues
|
||||||
|
- [ ] 🧪 **Testing Framework Setup Incomplete**: `src/setup/testing.js` only supports Jest and Mocha, but the main `index.js` has hardcoded test scripts that don't match.
|
||||||
|
- [ ] 🧩 **Test Package Installation**: The implementation always installs all test-related packages regardless of user selection.
|
||||||
|
- [ ] 🧪 **Limited Testing Options**: No support for Cypress, Playwright, or Vitest as mentioned in original TODO.
|
||||||
|
|
||||||
|
### 🗃️ State Management Issues
|
||||||
|
- [ ] 🔁 **Redux TypeScript Support**: `src/setup/redux.js` has proper TypeScript logic but `index.js` doesn't use it. Store files are always created in JavaScript.
|
||||||
|
- [ ] 🧬 **Store File Language Mismatch**: Store files are created with wrong extensions regardless of selected language.
|
||||||
|
|
||||||
|
### 🐚 Git & Hooks Issues
|
||||||
|
- [ ] 🐚 **Husky Configuration Incomplete**: `src/setup/husky.js` sets up pre-commit hooks but `index.js` deletes them with `deletePreCommitHook()`.
|
||||||
|
- [ ] 🔧 **Git Setup Logic**: `src/setup/gitInit.js` exists but isn't being used in the main flow.
|
||||||
|
|
||||||
|
### 📦 Package Management Issues
|
||||||
|
- [ ] 📦 **Dependency Installation Logic**: `src/setup/dependencies.js` and `src/setup/devDependencies.js` exist but aren't used in `index.js`.
|
||||||
|
- [ ] 🔄 **Package.json Scripts**: The main `index.js` has hardcoded package.json updates that conflict with the modular approach.
|
||||||
|
|
||||||
|
### 🏗️ Project Structure Issues
|
||||||
|
- [ ] 📁 **Atomic Design Implementation**: `src/templates/atomicStructure.js` exists but the main flow doesn't use it properly.
|
||||||
|
- [ ] 🧩 **Module Federation**: `src/setup/moduleFederation.js` exists but integration is incomplete.
|
||||||
|
- [ ] ❌ **React Native Support**: No detection or blocking for React Native projects as mentioned in original TODO.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧠 Suggested Improvements / Roadmap Features
|
||||||
|
|
||||||
|
### 🔧 Architecture & Code Quality
|
||||||
|
- [ ] 🔧 **Consolidate CLI Entry Points**: Choose between `index.js` (CRA) or `bin/cli.js` (Vite) and remove the unused one. Vite is recommended for modern React development.
|
||||||
|
- [ ] 🔧 **Fix Language Selection**: Ensure TypeScript/JavaScript choice is properly passed to the template system and respected throughout the setup.
|
||||||
|
- [ ] 🔧 **Unify Template System**: Decide between static (`pre-files/`) vs dynamic (`src/templates/`) templates and implement consistently.
|
||||||
|
- [ ] 🧼 **Replace Legacy Commands**: Update package.json scripts to use Vite instead of Webpack:
|
||||||
|
- `npm run start` → `vite`
|
||||||
|
- `npm run build` → `vite build`
|
||||||
|
|
||||||
|
### 🔧 CLI Engine & Language
|
||||||
|
- [ ] 🔧 **TypeScript Core Logic**: Extract core CLI logic into TypeScript for better typing, editor support, and DX while keeping entrypoints in JS for simplicity and npx support.
|
||||||
|
- [ ] 🔧 **Multi-Language Plugin Support**: Allow plugins or commands to be authored in other languages (e.g., JSON/YAML configs or .ts generators).
|
||||||
|
- [ ] ⚡ **Fast CLI Performance**: Ensure the CLI runs fast even without a build step (no ts-node dependency unless explicitly supported).
|
||||||
|
- [ ] 🎯 **Internal TS, External JS**: Keep CLI entrypoints in JS for simplicity + npx support, but use internal core logic in TS for maintainability.
|
||||||
|
|
||||||
|
### 🎨 Enhanced UI & Styling
|
||||||
|
- [ ] 🎨 **Implement CSS Modules Logic**: Add support for CSS Modules, styled-components, and emotion based on user selection.
|
||||||
|
- [ ] 🎯 **UI Framework Integration**: Create actual component templates and setup for Ant Design, Material UI, Chakra UI, and Radix UI.
|
||||||
|
- [ ] 🎨 **Dynamic Style Generation**: Generate appropriate style files and imports based on user's styling choice.
|
||||||
|
|
||||||
|
### 📦 Ecosystem Growth
|
||||||
|
- [ ] 🎨 **Additional UI Libraries**: Add support for:
|
||||||
|
- ✅ Tailwind CSS
|
||||||
|
- ✅ ShadCN UI
|
||||||
|
- ✅ TanStack Router
|
||||||
|
- ✅ TanStack Query
|
||||||
|
- [ ] 🔐 **Authentication Setup**: Add auth flag or plugin (e.g., setup NextAuth/Auth0 template)
|
||||||
|
- [ ] 📚 **Starter Templates**: Create example templates under `examples/`:
|
||||||
|
- `crafter-blog` - Blog template
|
||||||
|
- `crafter-dashboard` - Dashboard template
|
||||||
|
- `crafter-admin` - Admin panel template
|
||||||
|
|
||||||
|
### 🧪 Comprehensive Testing
|
||||||
|
- [ ] 🧪 **Testing Framework Separation**: Split testing choices into:
|
||||||
|
- ✅ **Unit Testing**: Jest, Vitest
|
||||||
|
- ✅ **E2E Testing**: Cypress, Playwright
|
||||||
|
- ✅ **None**: Allow skipping testing setup entirely
|
||||||
|
- [ ] 🧪 **Test Configuration**: Generate proper Jest/Vitest config files and sample tests.
|
||||||
|
- [ ] 🧪 **Selective Package Installation**: Only install test packages for the selected framework.
|
||||||
|
- [ ] 🧪 **Sample Component Tests**: Add sample tests for generated components to demonstrate testing patterns.
|
||||||
|
|
||||||
|
### 🗃️ State Management
|
||||||
|
- [ ] 🔁 **Fix Redux TypeScript Support**: Ensure Redux store and slices are properly typed when TypeScript is selected.
|
||||||
|
- [ ] 🧬 **Language-Aware File Generation**: Generate store files with correct extensions (.ts/.js) based on language choice.
|
||||||
|
- [ ] 🗃️ **Enhanced State Setup**: Add sample reducers, actions, and selectors for Redux/Zustand.
|
||||||
|
|
||||||
|
### 🐚 Git & Development Tools
|
||||||
|
- [ ] 🐚 **Complete Husky Setup**: Fix pre-commit and pre-push hooks configuration.
|
||||||
|
- [ ] 🔧 **Git Integration**: Properly integrate `src/setup/gitInit.js` into the main flow.
|
||||||
|
- [ ] 🧹 **Linting & Formatting**: Ensure ESLint, Prettier, and commitlint are properly configured.
|
||||||
|
|
||||||
|
### 📦 Package Management
|
||||||
|
- [ ] 📦 **Modular Dependency Installation**: Use the existing `src/setup/dependencies.js` and `src/setup/devDependencies.js` in the main flow.
|
||||||
|
- [ ] 📦 **Dynamic Package.json Updates**: Use `src/templates/packageJson.js` instead of hardcoded updates.
|
||||||
|
|
||||||
|
### 🏗️ Project Structure & Features
|
||||||
|
- [ ] 📁 **Atomic Design Implementation**: Properly integrate `src/templates/atomicStructure.js` with sample components.
|
||||||
|
- [ ] 🧩 **Module Federation**: Complete the integration of `src/setup/moduleFederation.js`.
|
||||||
|
- [ ] 🧰 **Config-Driven Setup**: Add support for YAML/JSON configuration files:
|
||||||
|
```bash
|
||||||
|
react-crafter create-wizard --config stack.yaml
|
||||||
|
```
|
||||||
|
Example stack.yaml:
|
||||||
|
```yaml
|
||||||
|
ui: chakra
|
||||||
|
language: typescript
|
||||||
|
styling: scss
|
||||||
|
testing: jest
|
||||||
|
router: react-router
|
||||||
|
```
|
||||||
|
- [ ] 📦 **Plugin System**: Add a plugin system for optional features like Auth, Firebase, CI setup, etc.
|
||||||
|
|
||||||
|
### 🧱 Architecture + Filesystem
|
||||||
|
- [ ] 🏗️ **Folder Structure Consistency**: Improve folder structure consistency across generated projects.
|
||||||
|
- [ ] 🔧 **Environment Setup**: Add optional .env setup with common environment variables.
|
||||||
|
- [ ] 📁 **Default Folders**: Add utils, hooks, and services folders by default (optionally toggle).
|
||||||
|
- [ ] 🎯 **Project Layout Options**: Let users choose between "Feature-based" vs "Layer-based" project layout.
|
||||||
|
|
||||||
|
### 📚 Documentation & Community
|
||||||
|
- [ ] 📜 **Dynamic README Generation**: Generate project-specific README based on selected stack.
|
||||||
|
- [ ] 🚀 **Demo Repository**: Create a demo repo using react-crafter to showcase production-quality setup.
|
||||||
|
- [ ] 🌐 **Online Demos**: Launch StackBlitz or Codespaces instant demos.
|
||||||
|
- [ ] 📢 **Community Outreach**: Write launch blog post and submit to:
|
||||||
|
- awesome-react
|
||||||
|
- awesome-nodejs
|
||||||
|
- Reddit /r/reactjs or Hacker News
|
||||||
|
|
||||||
|
### 🚀 CLI UX Enhancements
|
||||||
|
- [ ] ⚙️ **Global Configuration**: Support global config file (`~/.reactcrafterrc` or `crafter.config.js`) to remember default stack preferences.
|
||||||
|
- [ ] 👀 **Dry Run Mode**: Add `--dry-run` mode for previewing what files or packages would be created.
|
||||||
|
- [ ] 🔇 **Silent & Debug Modes**: Add `--silent` and `--debug` modes for different verbosity levels.
|
||||||
|
- [ ] 🔍 **Git Auto-Detection**: Auto-detect if Git repo is missing, and offer to run `git init`.
|
||||||
|
|
||||||
|
### 🛠️ CLI Generator Commands
|
||||||
|
- [ ] 🧩 **Component Generator**: Create a CLI subcommand `g` or `generate` for structured file generation:
|
||||||
|
```bash
|
||||||
|
# Create a new atom component
|
||||||
|
react-crafter g atom Button
|
||||||
|
|
||||||
|
# Create a new API handler (REST GET)
|
||||||
|
react-crafter g api get /users
|
||||||
|
```
|
||||||
|
|
||||||
|
**Behavior:**
|
||||||
|
- `g atom Button` generates:
|
||||||
|
- `src/components/atoms/Button/Button.tsx` (or .jsx based on project language)
|
||||||
|
- `src/components/atoms/Button/Button.module.scss` (or chosen styling)
|
||||||
|
- `src/components/atoms/Button/index.ts` for exports
|
||||||
|
- `src/components/atoms/Button/Button.test.tsx` (if testing is enabled)
|
||||||
|
- Respects atomic structure (atoms, molecules, organisms)
|
||||||
|
|
||||||
|
- `g api get /users` generates:
|
||||||
|
- `src/api/getUsers.ts` (or .js)
|
||||||
|
- Exports `getUsers()` method using Axios or Fetch
|
||||||
|
- Optionally types the response if TypeScript is enabled
|
||||||
|
- Infers function name from HTTP method + path
|
||||||
|
|
||||||
|
**File Structure:**
|
||||||
|
```
|
||||||
|
src/
|
||||||
|
components/
|
||||||
|
atoms/
|
||||||
|
Button/
|
||||||
|
Button.tsx
|
||||||
|
Button.module.scss
|
||||||
|
Button.test.tsx
|
||||||
|
index.ts
|
||||||
|
api/
|
||||||
|
getUsers.ts
|
||||||
|
```
|
||||||
|
|
||||||
|
**Requirements:**
|
||||||
|
- Respect language (JS/TS), styling (SCSS/CSS/etc), and testing setup
|
||||||
|
- Add friendly error message if structure is not found (e.g., project not initialized)
|
||||||
|
- Should work both from project root and subfolders (optional, nice to have)
|
||||||
|
|
||||||
|
**Optional Bonuses:**
|
||||||
|
- Support `--dry-run` to preview file output
|
||||||
|
- Add `g context` or `g hook` generators
|
||||||
|
- Use template strings or external files to allow community-generated scaffolds
|
||||||
|
|
||||||
|
### 🔌 Advanced Generators
|
||||||
|
- [ ] 🪝 **Hook Generator**: `react-crafter g hook useAuth` - Generate custom React hooks
|
||||||
|
- [ ] 🧩 **Context Generator**: `react-crafter g context ThemeContext` - Generate React contexts
|
||||||
|
- [ ] 📄 **Page Generator**: `react-crafter g page Home` - Generate page components
|
||||||
|
- [ ] 🛣️ **Route Generator**: `react-crafter g route /dashboard` - Generate route configurations
|
||||||
|
- [ ] 🎨 **Customizable Templates**: Make generator templates customizable via `templates/` folder
|
||||||
|
|
||||||
|
### 🔍 Code Analysis Findings
|
||||||
|
Based on my analysis of the codebase, here are the specific technical issues found:
|
||||||
|
|
||||||
|
#### File Structure Issues:
|
||||||
|
- **Dual CLI Implementation**: `index.js` (496 lines) uses `create-react-app` while `bin/cli.js` (28 lines) uses `create-vite`
|
||||||
|
- **Unused Modular Code**: `src/setup/` contains well-structured modules that aren't being used by the main flow
|
||||||
|
- **Template Confusion**: Both static (`pre-files/`) and dynamic (`src/templates/`) template systems exist
|
||||||
|
|
||||||
|
#### Logic Flow Problems:
|
||||||
|
- **Hardcoded vs Modular**: `index.js` has hardcoded logic while `src/setup/init.js` has proper modular structure
|
||||||
|
- **Missing Integration**: Many setup functions exist but aren't called in the main flow
|
||||||
|
- **Inconsistent Language Handling**: TypeScript/JavaScript choice isn't properly propagated
|
||||||
|
|
||||||
|
#### Specific Technical Debt:
|
||||||
|
- **Package.json Scripts**: Hardcoded scripts in `index.js` conflict with modular approach
|
||||||
|
- **Dependency Installation**: `src/setup/dependencies.js` has proper logic but isn't used
|
||||||
|
- **Testing Setup**: `src/setup/testing.js` only supports Jest/Mocha, missing modern alternatives
|
||||||
|
- **Husky Configuration**: Setup and deletion logic conflict with each other
|
||||||
27
bin/cli.js
Executable file
27
bin/cli.js
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const program = require('commander');
|
||||||
|
const { initProject } = require('../src/setup/init');
|
||||||
|
const { askProjectDetails } = require('../src/utils/prompts');
|
||||||
|
const { overWriteFolder } = require('../src/utils/overWriteFolder');
|
||||||
|
|
||||||
|
program
|
||||||
|
.version('1.0.0')
|
||||||
|
.description('React Crafter CLI')
|
||||||
|
.arguments('<project-directory>')
|
||||||
|
.option('--typescript', 'Use TypeScript template')
|
||||||
|
.action(async (projectDirectory, options) => {
|
||||||
|
// Use the overwrite function to manage the project directory
|
||||||
|
const shouldProceed = await overWriteFolder(projectDirectory);
|
||||||
|
console.log('shouldProceed', shouldProceed);
|
||||||
|
if (!shouldProceed) {
|
||||||
|
console.error('❌ Project initialization aborted.');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Proceed with project setup
|
||||||
|
const userInput = await askProjectDetails();
|
||||||
|
initProject(projectDirectory, userInput, options);
|
||||||
|
})
|
||||||
|
.parse(process.argv);
|
||||||
|
|
||||||
13
bin/cli.test.js
Normal file
13
bin/cli.test.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
const { execSync } = require('child_process');
|
||||||
|
|
||||||
|
describe('React Crafter CLI', () => {
|
||||||
|
test('CLI runs and shows version', () => {
|
||||||
|
const output = execSync('node bin/cli.js --version').toString();
|
||||||
|
expect(output.trim()).toMatch(/\\d+\\.\\d+\\.\\d+/); // Matches a version format
|
||||||
|
});
|
||||||
|
|
||||||
|
test('CLI handles missing arguments', () => {
|
||||||
|
const output = execSync('node bin/cli.js').toString();
|
||||||
|
expect(output).toContain('React Crafter CLI');
|
||||||
|
});
|
||||||
|
});
|
||||||
21
index.js
21
index.js
@@ -147,17 +147,17 @@ function printCommandSummary() {
|
|||||||
console.log(chalk.yellow('\n🔑 Project Setup Summary:'));
|
console.log(chalk.yellow('\n🔑 Project Setup Summary:'));
|
||||||
console.log(chalk.cyan('\nAvailable Commands:'));
|
console.log(chalk.cyan('\nAvailable Commands:'));
|
||||||
|
|
||||||
console.log(chalk.green('1. 🚀 npm start'));
|
console.log(chalk.green('1. 🚀 npm run dev'));
|
||||||
console.log(
|
console.log(
|
||||||
chalk.white(
|
chalk.white(
|
||||||
' Starts the development server with Webpack. The project is served using Webpack Dev Server with the configuration specified in webpack.config.js.'
|
' Starts the development server with Vite.'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
console.log(chalk.green('\n2. 🛠️ npm run build'));
|
console.log(chalk.green('\n2. 🛠️ npm run build'));
|
||||||
console.log(
|
console.log(
|
||||||
chalk.white(
|
chalk.white(
|
||||||
' Builds the project for production. Webpack compiles the project and outputs the optimized bundle in the /dist directory.'
|
' Builds the project for production using Vite.'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -270,15 +270,14 @@ function updatePackageJson() {
|
|||||||
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
||||||
|
|
||||||
packageJson.scripts = {
|
packageJson.scripts = {
|
||||||
start: 'webpack serve --config webpack.config.js --mode development',
|
dev: 'vite',
|
||||||
build: 'webpack --config webpack.config.js --mode production',
|
build: 'vite build',
|
||||||
|
preview: 'vite preview',
|
||||||
test: 'echo "Error: no test specified" && exit 0',
|
test: 'echo "Error: no test specified" && exit 0',
|
||||||
'test:dev': 'react-scripts test',
|
|
||||||
'pretty-quick': 'pretty-quick',
|
'pretty-quick': 'pretty-quick',
|
||||||
'lint:prettier': 'node check-format.js',
|
'lint:prettier': 'node check-format.js',
|
||||||
prettier: 'prettier --write . --config .prettierrc',
|
prettier: 'prettier --write . --config .prettierrc',
|
||||||
'prettier:commit': 'node prettier-commit.js',
|
'prettier:commit': 'node prettier-commit.js',
|
||||||
eject: 'react-scripts eject',
|
|
||||||
prepare: 'husky install',
|
prepare: 'husky install',
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -307,8 +306,8 @@ function copyPreConfiguredFiles(destinationPath) {
|
|||||||
dest: path.join(destinationPath, 'prettier-commit.js'),
|
dest: path.join(destinationPath, 'prettier-commit.js'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: path.resolve(__dirname, 'pre-files/webpack.config.js'),
|
src: path.resolve(__dirname, 'pre-files/vite.config.js'),
|
||||||
dest: path.join(destinationPath, 'webpack.config.js'),
|
dest: path.join(destinationPath, 'vite.config.js'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: path.resolve(__dirname, 'pre-files/.babelrc'),
|
src: path.resolve(__dirname, 'pre-files/.babelrc'),
|
||||||
@@ -340,7 +339,7 @@ function copyPreConfiguredFiles(destinationPath) {
|
|||||||
function installDependencies(verboseFlag, stdioOption) {
|
function installDependencies(verboseFlag, stdioOption) {
|
||||||
const spinner = ora('🔄 Installing additional dependencies...').start();
|
const spinner = ora('🔄 Installing additional dependencies...').start();
|
||||||
execSync(
|
execSync(
|
||||||
`npm install @babel/core @babel/preset-env @babel/preset-react @reduxjs/toolkit @testing-library/jest-dom @testing-library/react @testing-library/user-event @types/jest @types/node @types/react @types/react-dom ajv antd babel-loader css-loader jest playwright react react-dom react-redux react-scripts redux sass sass-loader style-loader typescript web-vitals webpack webpack-cli ${verboseFlag}`,
|
`npm install @reduxjs/toolkit @testing-library/jest-dom @testing-library/react @testing-library/user-event @types/jest @types/node @types/react @types/react-dom ajv antd jest playwright react react-dom react-redux redux sass typescript web-vitals ${verboseFlag}`,
|
||||||
{ stdio: stdioOption }
|
{ stdio: stdioOption }
|
||||||
);
|
);
|
||||||
spinner.succeed('✅ Additional dependencies installed.');
|
spinner.succeed('✅ Additional dependencies installed.');
|
||||||
@@ -349,7 +348,7 @@ function installDependencies(verboseFlag, stdioOption) {
|
|||||||
function installDevDependencies(verboseFlag, stdioOption) {
|
function installDevDependencies(verboseFlag, stdioOption) {
|
||||||
const spinner = ora('🔄 Installing additional dev dependencies...').start();
|
const spinner = ora('🔄 Installing additional dev dependencies...').start();
|
||||||
execSync(
|
execSync(
|
||||||
`npm install --save-dev @babel/plugin-proposal-private-property-in-object ora prettier @commitlint/cli @commitlint/config-conventional @svgr/webpack dotenv dotenv-webpack husky url-loader webpack-dev-server pretty-quick ${verboseFlag}`,
|
`npm install --save-dev @babel/plugin-proposal-private-property-in-object ora prettier @commitlint/cli @commitlint/config-conventional dotenv husky pretty-quick vite @vitejs/plugin-react ${verboseFlag}`,
|
||||||
{ stdio: stdioOption }
|
{ stdio: stdioOption }
|
||||||
);
|
);
|
||||||
spinner.succeed('✅ Additional dev dependencies installed.');
|
spinner.succeed('✅ Additional dev dependencies installed.');
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
testEnvironment: 'node', // Set up the environment (node, jsdom, etc.)
|
preset: 'ts-jest',
|
||||||
verbose: true, // Show detailed test results
|
roots: ['<rootDir>/src', '<rootDir>/bin'],
|
||||||
coverageDirectory: 'coverage', // Directory for code coverage reports
|
testEnvironment: 'node',
|
||||||
collectCoverage: true, // Collect coverage information
|
roots: ['<rootDir>/'],
|
||||||
coverageReporters: ['text', 'lcov'], // Reporters for coverage
|
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.[tj]sx?$',
|
||||||
|
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
||||||
};
|
};
|
||||||
|
|||||||
1
node_modules/.bin/acorn
generated
vendored
1
node_modules/.bin/acorn
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../acorn/bin/acorn
|
|
||||||
1
node_modules/.bin/browserslist
generated
vendored
1
node_modules/.bin/browserslist
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../browserslist/cli.js
|
|
||||||
1
node_modules/.bin/create-jest
generated
vendored
1
node_modules/.bin/create-jest
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../create-jest/bin/create-jest.js
|
|
||||||
1
node_modules/.bin/cssesc
generated
vendored
1
node_modules/.bin/cssesc
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../cssesc/bin/cssesc
|
|
||||||
1
node_modules/.bin/envinfo
generated
vendored
1
node_modules/.bin/envinfo
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../envinfo/dist/cli.js
|
|
||||||
1
node_modules/.bin/esparse
generated
vendored
1
node_modules/.bin/esparse
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../esprima/bin/esparse.js
|
|
||||||
1
node_modules/.bin/esvalidate
generated
vendored
1
node_modules/.bin/esvalidate
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../esprima/bin/esvalidate.js
|
|
||||||
1
node_modules/.bin/flat
generated
vendored
1
node_modules/.bin/flat
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../flat/cli.js
|
|
||||||
1
node_modules/.bin/import-local-fixture
generated
vendored
1
node_modules/.bin/import-local-fixture
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../import-local/fixtures/cli.js
|
|
||||||
1
node_modules/.bin/jest
generated
vendored
1
node_modules/.bin/jest
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../jest/bin/jest.js
|
|
||||||
1
node_modules/.bin/js-yaml
generated
vendored
1
node_modules/.bin/js-yaml
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../js-yaml/bin/js-yaml.js
|
|
||||||
1
node_modules/.bin/jsesc
generated
vendored
1
node_modules/.bin/jsesc
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../jsesc/bin/jsesc
|
|
||||||
1
node_modules/.bin/json5
generated
vendored
1
node_modules/.bin/json5
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../json5/lib/cli.js
|
|
||||||
1
node_modules/.bin/nanoid
generated
vendored
1
node_modules/.bin/nanoid
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../nanoid/bin/nanoid.cjs
|
|
||||||
1
node_modules/.bin/node-which
generated
vendored
1
node_modules/.bin/node-which
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../which/bin/node-which
|
|
||||||
1
node_modules/.bin/parser
generated
vendored
1
node_modules/.bin/parser
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../@babel/parser/bin/babel-parser.js
|
|
||||||
1
node_modules/.bin/regjsparser
generated
vendored
1
node_modules/.bin/regjsparser
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../regjsparser/bin/parser
|
|
||||||
1
node_modules/.bin/resolve
generated
vendored
1
node_modules/.bin/resolve
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../resolve/bin/resolve
|
|
||||||
1
node_modules/.bin/semver
generated
vendored
1
node_modules/.bin/semver
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../semver/bin/semver.js
|
|
||||||
1
node_modules/.bin/terser
generated
vendored
1
node_modules/.bin/terser
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../terser/bin/terser
|
|
||||||
1
node_modules/.bin/ts-node
generated
vendored
1
node_modules/.bin/ts-node
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../ts-node/dist/bin.js
|
|
||||||
1
node_modules/.bin/ts-node-cwd
generated
vendored
1
node_modules/.bin/ts-node-cwd
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../ts-node/dist/bin-cwd.js
|
|
||||||
1
node_modules/.bin/ts-node-esm
generated
vendored
1
node_modules/.bin/ts-node-esm
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../ts-node/dist/bin-esm.js
|
|
||||||
1
node_modules/.bin/ts-node-script
generated
vendored
1
node_modules/.bin/ts-node-script
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../ts-node/dist/bin-script.js
|
|
||||||
1
node_modules/.bin/ts-node-transpile-only
generated
vendored
1
node_modules/.bin/ts-node-transpile-only
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../ts-node/dist/bin-transpile.js
|
|
||||||
1
node_modules/.bin/ts-script
generated
vendored
1
node_modules/.bin/ts-script
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../ts-node/dist/bin-script-deprecated.js
|
|
||||||
1
node_modules/.bin/update-browserslist-db
generated
vendored
1
node_modules/.bin/update-browserslist-db
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../update-browserslist-db/cli.js
|
|
||||||
1
node_modules/.bin/webpack
generated
vendored
1
node_modules/.bin/webpack
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../webpack/bin/webpack.js
|
|
||||||
1
node_modules/.bin/webpack-cli
generated
vendored
1
node_modules/.bin/webpack-cli
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../webpack-cli/bin/cli.js
|
|
||||||
10147
node_modules/.package-lock.json
generated
vendored
10147
node_modules/.package-lock.json
generated
vendored
File diff suppressed because it is too large
Load Diff
202
node_modules/@ampproject/remapping/LICENSE
generated
vendored
202
node_modules/@ampproject/remapping/LICENSE
generated
vendored
@@ -1,202 +0,0 @@
|
|||||||
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
218
node_modules/@ampproject/remapping/README.md
generated
vendored
218
node_modules/@ampproject/remapping/README.md
generated
vendored
@@ -1,218 +0,0 @@
|
|||||||
# @ampproject/remapping
|
|
||||||
|
|
||||||
> Remap sequential sourcemaps through transformations to point at the original source code
|
|
||||||
|
|
||||||
Remapping allows you to take the sourcemaps generated through transforming your code and "remap"
|
|
||||||
them to the original source locations. Think "my minified code, transformed with babel and bundled
|
|
||||||
with webpack", all pointing to the correct location in your original source code.
|
|
||||||
|
|
||||||
With remapping, none of your source code transformations need to be aware of the input's sourcemap,
|
|
||||||
they only need to generate an output sourcemap. This greatly simplifies building custom
|
|
||||||
transformations (think a find-and-replace).
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install @ampproject/remapping
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
function remapping(
|
|
||||||
map: SourceMap | SourceMap[],
|
|
||||||
loader: (file: string, ctx: LoaderContext) => (SourceMap | null | undefined),
|
|
||||||
options?: { excludeContent: boolean, decodedMappings: boolean }
|
|
||||||
): SourceMap;
|
|
||||||
|
|
||||||
// LoaderContext gives the loader the importing sourcemap, tree depth, the ability to override the
|
|
||||||
// "source" location (where child sources are resolved relative to, or the location of original
|
|
||||||
// source), and the ability to override the "content" of an original source for inclusion in the
|
|
||||||
// output sourcemap.
|
|
||||||
type LoaderContext = {
|
|
||||||
readonly importer: string;
|
|
||||||
readonly depth: number;
|
|
||||||
source: string;
|
|
||||||
content: string | null | undefined;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
`remapping` takes the final output sourcemap, and a `loader` function. For every source file pointer
|
|
||||||
in the sourcemap, the `loader` will be called with the resolved path. If the path itself represents
|
|
||||||
a transformed file (it has a sourcmap associated with it), then the `loader` should return that
|
|
||||||
sourcemap. If not, the path will be treated as an original, untransformed source code.
|
|
||||||
|
|
||||||
```js
|
|
||||||
// Babel transformed "helloworld.js" into "transformed.js"
|
|
||||||
const transformedMap = JSON.stringify({
|
|
||||||
file: 'transformed.js',
|
|
||||||
// 1st column of 2nd line of output file translates into the 1st source
|
|
||||||
// file, line 3, column 2
|
|
||||||
mappings: ';CAEE',
|
|
||||||
sources: ['helloworld.js'],
|
|
||||||
version: 3,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Uglify minified "transformed.js" into "transformed.min.js"
|
|
||||||
const minifiedTransformedMap = JSON.stringify({
|
|
||||||
file: 'transformed.min.js',
|
|
||||||
// 0th column of 1st line of output file translates into the 1st source
|
|
||||||
// file, line 2, column 1.
|
|
||||||
mappings: 'AACC',
|
|
||||||
names: [],
|
|
||||||
sources: ['transformed.js'],
|
|
||||||
version: 3,
|
|
||||||
});
|
|
||||||
|
|
||||||
const remapped = remapping(
|
|
||||||
minifiedTransformedMap,
|
|
||||||
(file, ctx) => {
|
|
||||||
|
|
||||||
// The "transformed.js" file is an transformed file.
|
|
||||||
if (file === 'transformed.js') {
|
|
||||||
// The root importer is empty.
|
|
||||||
console.assert(ctx.importer === '');
|
|
||||||
// The depth in the sourcemap tree we're currently loading.
|
|
||||||
// The root `minifiedTransformedMap` is depth 0, and its source children are depth 1, etc.
|
|
||||||
console.assert(ctx.depth === 1);
|
|
||||||
|
|
||||||
return transformedMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Loader will be called to load transformedMap's source file pointers as well.
|
|
||||||
console.assert(file === 'helloworld.js');
|
|
||||||
// `transformed.js`'s sourcemap points into `helloworld.js`.
|
|
||||||
console.assert(ctx.importer === 'transformed.js');
|
|
||||||
// This is a source child of `transformed`, which is a source child of `minifiedTransformedMap`.
|
|
||||||
console.assert(ctx.depth === 2);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
console.log(remapped);
|
|
||||||
// {
|
|
||||||
// file: 'transpiled.min.js',
|
|
||||||
// mappings: 'AAEE',
|
|
||||||
// sources: ['helloworld.js'],
|
|
||||||
// version: 3,
|
|
||||||
// };
|
|
||||||
```
|
|
||||||
|
|
||||||
In this example, `loader` will be called twice:
|
|
||||||
|
|
||||||
1. `"transformed.js"`, the first source file pointer in the `minifiedTransformedMap`. We return the
|
|
||||||
associated sourcemap for it (its a transformed file, after all) so that sourcemap locations can
|
|
||||||
be traced through it into the source files it represents.
|
|
||||||
2. `"helloworld.js"`, our original, unmodified source code. This file does not have a sourcemap, so
|
|
||||||
we return `null`.
|
|
||||||
|
|
||||||
The `remapped` sourcemap now points from `transformed.min.js` into locations in `helloworld.js`. If
|
|
||||||
you were to read the `mappings`, it says "0th column of the first line output line points to the 1st
|
|
||||||
column of the 2nd line of the file `helloworld.js`".
|
|
||||||
|
|
||||||
### Multiple transformations of a file
|
|
||||||
|
|
||||||
As a convenience, if you have multiple single-source transformations of a file, you may pass an
|
|
||||||
array of sourcemap files in the order of most-recent transformation sourcemap first. Note that this
|
|
||||||
changes the `importer` and `depth` of each call to our loader. So our above example could have been
|
|
||||||
written as:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const remapped = remapping(
|
|
||||||
[minifiedTransformedMap, transformedMap],
|
|
||||||
() => null
|
|
||||||
);
|
|
||||||
|
|
||||||
console.log(remapped);
|
|
||||||
// {
|
|
||||||
// file: 'transpiled.min.js',
|
|
||||||
// mappings: 'AAEE',
|
|
||||||
// sources: ['helloworld.js'],
|
|
||||||
// version: 3,
|
|
||||||
// };
|
|
||||||
```
|
|
||||||
|
|
||||||
### Advanced control of the loading graph
|
|
||||||
|
|
||||||
#### `source`
|
|
||||||
|
|
||||||
The `source` property can overridden to any value to change the location of the current load. Eg,
|
|
||||||
for an original source file, it allows us to change the location to the original source regardless
|
|
||||||
of what the sourcemap source entry says. And for transformed files, it allows us to change the
|
|
||||||
relative resolving location for child sources of the loaded sourcemap.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const remapped = remapping(
|
|
||||||
minifiedTransformedMap,
|
|
||||||
(file, ctx) => {
|
|
||||||
|
|
||||||
if (file === 'transformed.js') {
|
|
||||||
// We pretend the transformed.js file actually exists in the 'src/' directory. When the nested
|
|
||||||
// source files are loaded, they will now be relative to `src/`.
|
|
||||||
ctx.source = 'src/transformed.js';
|
|
||||||
return transformedMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.assert(file === 'src/helloworld.js');
|
|
||||||
// We could futher change the source of this original file, eg, to be inside a nested directory
|
|
||||||
// itself. This will be reflected in the remapped sourcemap.
|
|
||||||
ctx.source = 'src/nested/transformed.js';
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
console.log(remapped);
|
|
||||||
// {
|
|
||||||
// …,
|
|
||||||
// sources: ['src/nested/helloworld.js'],
|
|
||||||
// };
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
#### `content`
|
|
||||||
|
|
||||||
The `content` property can be overridden when we encounter an original source file. Eg, this allows
|
|
||||||
you to manually provide the source content of the original file regardless of whether the
|
|
||||||
`sourcesContent` field is present in the parent sourcemap. It can also be set to `null` to remove
|
|
||||||
the source content.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const remapped = remapping(
|
|
||||||
minifiedTransformedMap,
|
|
||||||
(file, ctx) => {
|
|
||||||
|
|
||||||
if (file === 'transformed.js') {
|
|
||||||
// transformedMap does not include a `sourcesContent` field, so usually the remapped sourcemap
|
|
||||||
// would not include any `sourcesContent` values.
|
|
||||||
return transformedMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.assert(file === 'helloworld.js');
|
|
||||||
// We can read the file to provide the source content.
|
|
||||||
ctx.content = fs.readFileSync(file, 'utf8');
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
console.log(remapped);
|
|
||||||
// {
|
|
||||||
// …,
|
|
||||||
// sourcesContent: [
|
|
||||||
// 'console.log("Hello world!")',
|
|
||||||
// ],
|
|
||||||
// };
|
|
||||||
```
|
|
||||||
|
|
||||||
### Options
|
|
||||||
|
|
||||||
#### excludeContent
|
|
||||||
|
|
||||||
By default, `excludeContent` is `false`. Passing `{ excludeContent: true }` will exclude the
|
|
||||||
`sourcesContent` field from the returned sourcemap. This is mainly useful when you want to reduce
|
|
||||||
the size out the sourcemap.
|
|
||||||
|
|
||||||
#### decodedMappings
|
|
||||||
|
|
||||||
By default, `decodedMappings` is `false`. Passing `{ decodedMappings: true }` will leave the
|
|
||||||
`mappings` field in a [decoded state](https://github.com/rich-harris/sourcemap-codec) instead of
|
|
||||||
encoding into a VLQ string.
|
|
||||||
197
node_modules/@ampproject/remapping/dist/remapping.mjs
generated
vendored
197
node_modules/@ampproject/remapping/dist/remapping.mjs
generated
vendored
@@ -1,197 +0,0 @@
|
|||||||
import { decodedMappings, traceSegment, TraceMap } from '@jridgewell/trace-mapping';
|
|
||||||
import { GenMapping, maybeAddSegment, setSourceContent, setIgnore, toDecodedMap, toEncodedMap } from '@jridgewell/gen-mapping';
|
|
||||||
|
|
||||||
const SOURCELESS_MAPPING = /* #__PURE__ */ SegmentObject('', -1, -1, '', null, false);
|
|
||||||
const EMPTY_SOURCES = [];
|
|
||||||
function SegmentObject(source, line, column, name, content, ignore) {
|
|
||||||
return { source, line, column, name, content, ignore };
|
|
||||||
}
|
|
||||||
function Source(map, sources, source, content, ignore) {
|
|
||||||
return {
|
|
||||||
map,
|
|
||||||
sources,
|
|
||||||
source,
|
|
||||||
content,
|
|
||||||
ignore,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes
|
|
||||||
* (which may themselves be SourceMapTrees).
|
|
||||||
*/
|
|
||||||
function MapSource(map, sources) {
|
|
||||||
return Source(map, sources, '', null, false);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive
|
|
||||||
* segment tracing ends at the `OriginalSource`.
|
|
||||||
*/
|
|
||||||
function OriginalSource(source, content, ignore) {
|
|
||||||
return Source(null, EMPTY_SOURCES, source, content, ignore);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* traceMappings is only called on the root level SourceMapTree, and begins the process of
|
|
||||||
* resolving each mapping in terms of the original source files.
|
|
||||||
*/
|
|
||||||
function traceMappings(tree) {
|
|
||||||
// TODO: Eventually support sourceRoot, which has to be removed because the sources are already
|
|
||||||
// fully resolved. We'll need to make sources relative to the sourceRoot before adding them.
|
|
||||||
const gen = new GenMapping({ file: tree.map.file });
|
|
||||||
const { sources: rootSources, map } = tree;
|
|
||||||
const rootNames = map.names;
|
|
||||||
const rootMappings = decodedMappings(map);
|
|
||||||
for (let i = 0; i < rootMappings.length; i++) {
|
|
||||||
const segments = rootMappings[i];
|
|
||||||
for (let j = 0; j < segments.length; j++) {
|
|
||||||
const segment = segments[j];
|
|
||||||
const genCol = segment[0];
|
|
||||||
let traced = SOURCELESS_MAPPING;
|
|
||||||
// 1-length segments only move the current generated column, there's no source information
|
|
||||||
// to gather from it.
|
|
||||||
if (segment.length !== 1) {
|
|
||||||
const source = rootSources[segment[1]];
|
|
||||||
traced = originalPositionFor(source, segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : '');
|
|
||||||
// If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a
|
|
||||||
// respective segment into an original source.
|
|
||||||
if (traced == null)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const { column, line, name, content, source, ignore } = traced;
|
|
||||||
maybeAddSegment(gen, i, genCol, source, line, column, name);
|
|
||||||
if (source && content != null)
|
|
||||||
setSourceContent(gen, source, content);
|
|
||||||
if (ignore)
|
|
||||||
setIgnore(gen, source, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return gen;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* originalPositionFor is only called on children SourceMapTrees. It recurses down into its own
|
|
||||||
* child SourceMapTrees, until we find the original source map.
|
|
||||||
*/
|
|
||||||
function originalPositionFor(source, line, column, name) {
|
|
||||||
if (!source.map) {
|
|
||||||
return SegmentObject(source.source, line, column, name, source.content, source.ignore);
|
|
||||||
}
|
|
||||||
const segment = traceSegment(source.map, line, column);
|
|
||||||
// If we couldn't find a segment, then this doesn't exist in the sourcemap.
|
|
||||||
if (segment == null)
|
|
||||||
return null;
|
|
||||||
// 1-length segments only move the current generated column, there's no source information
|
|
||||||
// to gather from it.
|
|
||||||
if (segment.length === 1)
|
|
||||||
return SOURCELESS_MAPPING;
|
|
||||||
return originalPositionFor(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name);
|
|
||||||
}
|
|
||||||
|
|
||||||
function asArray(value) {
|
|
||||||
if (Array.isArray(value))
|
|
||||||
return value;
|
|
||||||
return [value];
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Recursively builds a tree structure out of sourcemap files, with each node
|
|
||||||
* being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of
|
|
||||||
* `OriginalSource`s and `SourceMapTree`s.
|
|
||||||
*
|
|
||||||
* Every sourcemap is composed of a collection of source files and mappings
|
|
||||||
* into locations of those source files. When we generate a `SourceMapTree` for
|
|
||||||
* the sourcemap, we attempt to load each source file's own sourcemap. If it
|
|
||||||
* does not have an associated sourcemap, it is considered an original,
|
|
||||||
* unmodified source file.
|
|
||||||
*/
|
|
||||||
function buildSourceMapTree(input, loader) {
|
|
||||||
const maps = asArray(input).map((m) => new TraceMap(m, ''));
|
|
||||||
const map = maps.pop();
|
|
||||||
for (let i = 0; i < maps.length; i++) {
|
|
||||||
if (maps[i].sources.length > 1) {
|
|
||||||
throw new Error(`Transformation map ${i} must have exactly one source file.\n` +
|
|
||||||
'Did you specify these with the most recent transformation maps first?');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let tree = build(map, loader, '', 0);
|
|
||||||
for (let i = maps.length - 1; i >= 0; i--) {
|
|
||||||
tree = MapSource(maps[i], [tree]);
|
|
||||||
}
|
|
||||||
return tree;
|
|
||||||
}
|
|
||||||
function build(map, loader, importer, importerDepth) {
|
|
||||||
const { resolvedSources, sourcesContent, ignoreList } = map;
|
|
||||||
const depth = importerDepth + 1;
|
|
||||||
const children = resolvedSources.map((sourceFile, i) => {
|
|
||||||
// The loading context gives the loader more information about why this file is being loaded
|
|
||||||
// (eg, from which importer). It also allows the loader to override the location of the loaded
|
|
||||||
// sourcemap/original source, or to override the content in the sourcesContent field if it's
|
|
||||||
// an unmodified source file.
|
|
||||||
const ctx = {
|
|
||||||
importer,
|
|
||||||
depth,
|
|
||||||
source: sourceFile || '',
|
|
||||||
content: undefined,
|
|
||||||
ignore: undefined,
|
|
||||||
};
|
|
||||||
// Use the provided loader callback to retrieve the file's sourcemap.
|
|
||||||
// TODO: We should eventually support async loading of sourcemap files.
|
|
||||||
const sourceMap = loader(ctx.source, ctx);
|
|
||||||
const { source, content, ignore } = ctx;
|
|
||||||
// If there is a sourcemap, then we need to recurse into it to load its source files.
|
|
||||||
if (sourceMap)
|
|
||||||
return build(new TraceMap(sourceMap, source), loader, source, depth);
|
|
||||||
// Else, it's an unmodified source file.
|
|
||||||
// The contents of this unmodified source file can be overridden via the loader context,
|
|
||||||
// allowing it to be explicitly null or a string. If it remains undefined, we fall back to
|
|
||||||
// the importing sourcemap's `sourcesContent` field.
|
|
||||||
const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null;
|
|
||||||
const ignored = ignore !== undefined ? ignore : ignoreList ? ignoreList.includes(i) : false;
|
|
||||||
return OriginalSource(source, sourceContent, ignored);
|
|
||||||
});
|
|
||||||
return MapSource(map, children);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A SourceMap v3 compatible sourcemap, which only includes fields that were
|
|
||||||
* provided to it.
|
|
||||||
*/
|
|
||||||
class SourceMap {
|
|
||||||
constructor(map, options) {
|
|
||||||
const out = options.decodedMappings ? toDecodedMap(map) : toEncodedMap(map);
|
|
||||||
this.version = out.version; // SourceMap spec says this should be first.
|
|
||||||
this.file = out.file;
|
|
||||||
this.mappings = out.mappings;
|
|
||||||
this.names = out.names;
|
|
||||||
this.ignoreList = out.ignoreList;
|
|
||||||
this.sourceRoot = out.sourceRoot;
|
|
||||||
this.sources = out.sources;
|
|
||||||
if (!options.excludeContent) {
|
|
||||||
this.sourcesContent = out.sourcesContent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
toString() {
|
|
||||||
return JSON.stringify(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Traces through all the mappings in the root sourcemap, through the sources
|
|
||||||
* (and their sourcemaps), all the way back to the original source location.
|
|
||||||
*
|
|
||||||
* `loader` will be called every time we encounter a source file. If it returns
|
|
||||||
* a sourcemap, we will recurse into that sourcemap to continue the trace. If
|
|
||||||
* it returns a falsey value, that source file is treated as an original,
|
|
||||||
* unmodified source file.
|
|
||||||
*
|
|
||||||
* Pass `excludeContent` to exclude any self-containing source file content
|
|
||||||
* from the output sourcemap.
|
|
||||||
*
|
|
||||||
* Pass `decodedMappings` to receive a SourceMap with decoded (instead of
|
|
||||||
* VLQ encoded) mappings.
|
|
||||||
*/
|
|
||||||
function remapping(input, loader, options) {
|
|
||||||
const opts = typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false };
|
|
||||||
const tree = buildSourceMapTree(input, loader);
|
|
||||||
return new SourceMap(traceMappings(tree), opts);
|
|
||||||
}
|
|
||||||
|
|
||||||
export { remapping as default };
|
|
||||||
//# sourceMappingURL=remapping.mjs.map
|
|
||||||
1
node_modules/@ampproject/remapping/dist/remapping.mjs.map
generated
vendored
1
node_modules/@ampproject/remapping/dist/remapping.mjs.map
generated
vendored
File diff suppressed because one or more lines are too long
202
node_modules/@ampproject/remapping/dist/remapping.umd.js
generated
vendored
202
node_modules/@ampproject/remapping/dist/remapping.umd.js
generated
vendored
@@ -1,202 +0,0 @@
|
|||||||
(function (global, factory) {
|
|
||||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@jridgewell/trace-mapping'), require('@jridgewell/gen-mapping')) :
|
|
||||||
typeof define === 'function' && define.amd ? define(['@jridgewell/trace-mapping', '@jridgewell/gen-mapping'], factory) :
|
|
||||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.remapping = factory(global.traceMapping, global.genMapping));
|
|
||||||
})(this, (function (traceMapping, genMapping) { 'use strict';
|
|
||||||
|
|
||||||
const SOURCELESS_MAPPING = /* #__PURE__ */ SegmentObject('', -1, -1, '', null, false);
|
|
||||||
const EMPTY_SOURCES = [];
|
|
||||||
function SegmentObject(source, line, column, name, content, ignore) {
|
|
||||||
return { source, line, column, name, content, ignore };
|
|
||||||
}
|
|
||||||
function Source(map, sources, source, content, ignore) {
|
|
||||||
return {
|
|
||||||
map,
|
|
||||||
sources,
|
|
||||||
source,
|
|
||||||
content,
|
|
||||||
ignore,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes
|
|
||||||
* (which may themselves be SourceMapTrees).
|
|
||||||
*/
|
|
||||||
function MapSource(map, sources) {
|
|
||||||
return Source(map, sources, '', null, false);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive
|
|
||||||
* segment tracing ends at the `OriginalSource`.
|
|
||||||
*/
|
|
||||||
function OriginalSource(source, content, ignore) {
|
|
||||||
return Source(null, EMPTY_SOURCES, source, content, ignore);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* traceMappings is only called on the root level SourceMapTree, and begins the process of
|
|
||||||
* resolving each mapping in terms of the original source files.
|
|
||||||
*/
|
|
||||||
function traceMappings(tree) {
|
|
||||||
// TODO: Eventually support sourceRoot, which has to be removed because the sources are already
|
|
||||||
// fully resolved. We'll need to make sources relative to the sourceRoot before adding them.
|
|
||||||
const gen = new genMapping.GenMapping({ file: tree.map.file });
|
|
||||||
const { sources: rootSources, map } = tree;
|
|
||||||
const rootNames = map.names;
|
|
||||||
const rootMappings = traceMapping.decodedMappings(map);
|
|
||||||
for (let i = 0; i < rootMappings.length; i++) {
|
|
||||||
const segments = rootMappings[i];
|
|
||||||
for (let j = 0; j < segments.length; j++) {
|
|
||||||
const segment = segments[j];
|
|
||||||
const genCol = segment[0];
|
|
||||||
let traced = SOURCELESS_MAPPING;
|
|
||||||
// 1-length segments only move the current generated column, there's no source information
|
|
||||||
// to gather from it.
|
|
||||||
if (segment.length !== 1) {
|
|
||||||
const source = rootSources[segment[1]];
|
|
||||||
traced = originalPositionFor(source, segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : '');
|
|
||||||
// If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a
|
|
||||||
// respective segment into an original source.
|
|
||||||
if (traced == null)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const { column, line, name, content, source, ignore } = traced;
|
|
||||||
genMapping.maybeAddSegment(gen, i, genCol, source, line, column, name);
|
|
||||||
if (source && content != null)
|
|
||||||
genMapping.setSourceContent(gen, source, content);
|
|
||||||
if (ignore)
|
|
||||||
genMapping.setIgnore(gen, source, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return gen;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* originalPositionFor is only called on children SourceMapTrees. It recurses down into its own
|
|
||||||
* child SourceMapTrees, until we find the original source map.
|
|
||||||
*/
|
|
||||||
function originalPositionFor(source, line, column, name) {
|
|
||||||
if (!source.map) {
|
|
||||||
return SegmentObject(source.source, line, column, name, source.content, source.ignore);
|
|
||||||
}
|
|
||||||
const segment = traceMapping.traceSegment(source.map, line, column);
|
|
||||||
// If we couldn't find a segment, then this doesn't exist in the sourcemap.
|
|
||||||
if (segment == null)
|
|
||||||
return null;
|
|
||||||
// 1-length segments only move the current generated column, there's no source information
|
|
||||||
// to gather from it.
|
|
||||||
if (segment.length === 1)
|
|
||||||
return SOURCELESS_MAPPING;
|
|
||||||
return originalPositionFor(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name);
|
|
||||||
}
|
|
||||||
|
|
||||||
function asArray(value) {
|
|
||||||
if (Array.isArray(value))
|
|
||||||
return value;
|
|
||||||
return [value];
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Recursively builds a tree structure out of sourcemap files, with each node
|
|
||||||
* being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of
|
|
||||||
* `OriginalSource`s and `SourceMapTree`s.
|
|
||||||
*
|
|
||||||
* Every sourcemap is composed of a collection of source files and mappings
|
|
||||||
* into locations of those source files. When we generate a `SourceMapTree` for
|
|
||||||
* the sourcemap, we attempt to load each source file's own sourcemap. If it
|
|
||||||
* does not have an associated sourcemap, it is considered an original,
|
|
||||||
* unmodified source file.
|
|
||||||
*/
|
|
||||||
function buildSourceMapTree(input, loader) {
|
|
||||||
const maps = asArray(input).map((m) => new traceMapping.TraceMap(m, ''));
|
|
||||||
const map = maps.pop();
|
|
||||||
for (let i = 0; i < maps.length; i++) {
|
|
||||||
if (maps[i].sources.length > 1) {
|
|
||||||
throw new Error(`Transformation map ${i} must have exactly one source file.\n` +
|
|
||||||
'Did you specify these with the most recent transformation maps first?');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let tree = build(map, loader, '', 0);
|
|
||||||
for (let i = maps.length - 1; i >= 0; i--) {
|
|
||||||
tree = MapSource(maps[i], [tree]);
|
|
||||||
}
|
|
||||||
return tree;
|
|
||||||
}
|
|
||||||
function build(map, loader, importer, importerDepth) {
|
|
||||||
const { resolvedSources, sourcesContent, ignoreList } = map;
|
|
||||||
const depth = importerDepth + 1;
|
|
||||||
const children = resolvedSources.map((sourceFile, i) => {
|
|
||||||
// The loading context gives the loader more information about why this file is being loaded
|
|
||||||
// (eg, from which importer). It also allows the loader to override the location of the loaded
|
|
||||||
// sourcemap/original source, or to override the content in the sourcesContent field if it's
|
|
||||||
// an unmodified source file.
|
|
||||||
const ctx = {
|
|
||||||
importer,
|
|
||||||
depth,
|
|
||||||
source: sourceFile || '',
|
|
||||||
content: undefined,
|
|
||||||
ignore: undefined,
|
|
||||||
};
|
|
||||||
// Use the provided loader callback to retrieve the file's sourcemap.
|
|
||||||
// TODO: We should eventually support async loading of sourcemap files.
|
|
||||||
const sourceMap = loader(ctx.source, ctx);
|
|
||||||
const { source, content, ignore } = ctx;
|
|
||||||
// If there is a sourcemap, then we need to recurse into it to load its source files.
|
|
||||||
if (sourceMap)
|
|
||||||
return build(new traceMapping.TraceMap(sourceMap, source), loader, source, depth);
|
|
||||||
// Else, it's an unmodified source file.
|
|
||||||
// The contents of this unmodified source file can be overridden via the loader context,
|
|
||||||
// allowing it to be explicitly null or a string. If it remains undefined, we fall back to
|
|
||||||
// the importing sourcemap's `sourcesContent` field.
|
|
||||||
const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null;
|
|
||||||
const ignored = ignore !== undefined ? ignore : ignoreList ? ignoreList.includes(i) : false;
|
|
||||||
return OriginalSource(source, sourceContent, ignored);
|
|
||||||
});
|
|
||||||
return MapSource(map, children);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A SourceMap v3 compatible sourcemap, which only includes fields that were
|
|
||||||
* provided to it.
|
|
||||||
*/
|
|
||||||
class SourceMap {
|
|
||||||
constructor(map, options) {
|
|
||||||
const out = options.decodedMappings ? genMapping.toDecodedMap(map) : genMapping.toEncodedMap(map);
|
|
||||||
this.version = out.version; // SourceMap spec says this should be first.
|
|
||||||
this.file = out.file;
|
|
||||||
this.mappings = out.mappings;
|
|
||||||
this.names = out.names;
|
|
||||||
this.ignoreList = out.ignoreList;
|
|
||||||
this.sourceRoot = out.sourceRoot;
|
|
||||||
this.sources = out.sources;
|
|
||||||
if (!options.excludeContent) {
|
|
||||||
this.sourcesContent = out.sourcesContent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
toString() {
|
|
||||||
return JSON.stringify(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Traces through all the mappings in the root sourcemap, through the sources
|
|
||||||
* (and their sourcemaps), all the way back to the original source location.
|
|
||||||
*
|
|
||||||
* `loader` will be called every time we encounter a source file. If it returns
|
|
||||||
* a sourcemap, we will recurse into that sourcemap to continue the trace. If
|
|
||||||
* it returns a falsey value, that source file is treated as an original,
|
|
||||||
* unmodified source file.
|
|
||||||
*
|
|
||||||
* Pass `excludeContent` to exclude any self-containing source file content
|
|
||||||
* from the output sourcemap.
|
|
||||||
*
|
|
||||||
* Pass `decodedMappings` to receive a SourceMap with decoded (instead of
|
|
||||||
* VLQ encoded) mappings.
|
|
||||||
*/
|
|
||||||
function remapping(input, loader, options) {
|
|
||||||
const opts = typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false };
|
|
||||||
const tree = buildSourceMapTree(input, loader);
|
|
||||||
return new SourceMap(traceMappings(tree), opts);
|
|
||||||
}
|
|
||||||
|
|
||||||
return remapping;
|
|
||||||
|
|
||||||
}));
|
|
||||||
//# sourceMappingURL=remapping.umd.js.map
|
|
||||||
1
node_modules/@ampproject/remapping/dist/remapping.umd.js.map
generated
vendored
1
node_modules/@ampproject/remapping/dist/remapping.umd.js.map
generated
vendored
File diff suppressed because one or more lines are too long
14
node_modules/@ampproject/remapping/dist/types/build-source-map-tree.d.ts
generated
vendored
14
node_modules/@ampproject/remapping/dist/types/build-source-map-tree.d.ts
generated
vendored
@@ -1,14 +0,0 @@
|
|||||||
import type { MapSource as MapSourceType } from './source-map-tree';
|
|
||||||
import type { SourceMapInput, SourceMapLoader } from './types';
|
|
||||||
/**
|
|
||||||
* Recursively builds a tree structure out of sourcemap files, with each node
|
|
||||||
* being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of
|
|
||||||
* `OriginalSource`s and `SourceMapTree`s.
|
|
||||||
*
|
|
||||||
* Every sourcemap is composed of a collection of source files and mappings
|
|
||||||
* into locations of those source files. When we generate a `SourceMapTree` for
|
|
||||||
* the sourcemap, we attempt to load each source file's own sourcemap. If it
|
|
||||||
* does not have an associated sourcemap, it is considered an original,
|
|
||||||
* unmodified source file.
|
|
||||||
*/
|
|
||||||
export default function buildSourceMapTree(input: SourceMapInput | SourceMapInput[], loader: SourceMapLoader): MapSourceType;
|
|
||||||
20
node_modules/@ampproject/remapping/dist/types/remapping.d.ts
generated
vendored
20
node_modules/@ampproject/remapping/dist/types/remapping.d.ts
generated
vendored
@@ -1,20 +0,0 @@
|
|||||||
import SourceMap from './source-map';
|
|
||||||
import type { SourceMapInput, SourceMapLoader, Options } from './types';
|
|
||||||
export type { SourceMapSegment, EncodedSourceMap, EncodedSourceMap as RawSourceMap, DecodedSourceMap, SourceMapInput, SourceMapLoader, LoaderContext, Options, } from './types';
|
|
||||||
export type { SourceMap };
|
|
||||||
/**
|
|
||||||
* Traces through all the mappings in the root sourcemap, through the sources
|
|
||||||
* (and their sourcemaps), all the way back to the original source location.
|
|
||||||
*
|
|
||||||
* `loader` will be called every time we encounter a source file. If it returns
|
|
||||||
* a sourcemap, we will recurse into that sourcemap to continue the trace. If
|
|
||||||
* it returns a falsey value, that source file is treated as an original,
|
|
||||||
* unmodified source file.
|
|
||||||
*
|
|
||||||
* Pass `excludeContent` to exclude any self-containing source file content
|
|
||||||
* from the output sourcemap.
|
|
||||||
*
|
|
||||||
* Pass `decodedMappings` to receive a SourceMap with decoded (instead of
|
|
||||||
* VLQ encoded) mappings.
|
|
||||||
*/
|
|
||||||
export default function remapping(input: SourceMapInput | SourceMapInput[], loader: SourceMapLoader, options?: boolean | Options): SourceMap;
|
|
||||||
45
node_modules/@ampproject/remapping/dist/types/source-map-tree.d.ts
generated
vendored
45
node_modules/@ampproject/remapping/dist/types/source-map-tree.d.ts
generated
vendored
@@ -1,45 +0,0 @@
|
|||||||
import { GenMapping } from '@jridgewell/gen-mapping';
|
|
||||||
import type { TraceMap } from '@jridgewell/trace-mapping';
|
|
||||||
export declare type SourceMapSegmentObject = {
|
|
||||||
column: number;
|
|
||||||
line: number;
|
|
||||||
name: string;
|
|
||||||
source: string;
|
|
||||||
content: string | null;
|
|
||||||
ignore: boolean;
|
|
||||||
};
|
|
||||||
export declare type OriginalSource = {
|
|
||||||
map: null;
|
|
||||||
sources: Sources[];
|
|
||||||
source: string;
|
|
||||||
content: string | null;
|
|
||||||
ignore: boolean;
|
|
||||||
};
|
|
||||||
export declare type MapSource = {
|
|
||||||
map: TraceMap;
|
|
||||||
sources: Sources[];
|
|
||||||
source: string;
|
|
||||||
content: null;
|
|
||||||
ignore: false;
|
|
||||||
};
|
|
||||||
export declare type Sources = OriginalSource | MapSource;
|
|
||||||
/**
|
|
||||||
* MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes
|
|
||||||
* (which may themselves be SourceMapTrees).
|
|
||||||
*/
|
|
||||||
export declare function MapSource(map: TraceMap, sources: Sources[]): MapSource;
|
|
||||||
/**
|
|
||||||
* A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive
|
|
||||||
* segment tracing ends at the `OriginalSource`.
|
|
||||||
*/
|
|
||||||
export declare function OriginalSource(source: string, content: string | null, ignore: boolean): OriginalSource;
|
|
||||||
/**
|
|
||||||
* traceMappings is only called on the root level SourceMapTree, and begins the process of
|
|
||||||
* resolving each mapping in terms of the original source files.
|
|
||||||
*/
|
|
||||||
export declare function traceMappings(tree: MapSource): GenMapping;
|
|
||||||
/**
|
|
||||||
* originalPositionFor is only called on children SourceMapTrees. It recurses down into its own
|
|
||||||
* child SourceMapTrees, until we find the original source map.
|
|
||||||
*/
|
|
||||||
export declare function originalPositionFor(source: Sources, line: number, column: number, name: string): SourceMapSegmentObject | null;
|
|
||||||
18
node_modules/@ampproject/remapping/dist/types/source-map.d.ts
generated
vendored
18
node_modules/@ampproject/remapping/dist/types/source-map.d.ts
generated
vendored
@@ -1,18 +0,0 @@
|
|||||||
import type { GenMapping } from '@jridgewell/gen-mapping';
|
|
||||||
import type { DecodedSourceMap, EncodedSourceMap, Options } from './types';
|
|
||||||
/**
|
|
||||||
* A SourceMap v3 compatible sourcemap, which only includes fields that were
|
|
||||||
* provided to it.
|
|
||||||
*/
|
|
||||||
export default class SourceMap {
|
|
||||||
file?: string | null;
|
|
||||||
mappings: EncodedSourceMap['mappings'] | DecodedSourceMap['mappings'];
|
|
||||||
sourceRoot?: string;
|
|
||||||
names: string[];
|
|
||||||
sources: (string | null)[];
|
|
||||||
sourcesContent?: (string | null)[];
|
|
||||||
version: 3;
|
|
||||||
ignoreList: number[] | undefined;
|
|
||||||
constructor(map: GenMapping, options: Options);
|
|
||||||
toString(): string;
|
|
||||||
}
|
|
||||||
15
node_modules/@ampproject/remapping/dist/types/types.d.ts
generated
vendored
15
node_modules/@ampproject/remapping/dist/types/types.d.ts
generated
vendored
@@ -1,15 +0,0 @@
|
|||||||
import type { SourceMapInput } from '@jridgewell/trace-mapping';
|
|
||||||
export type { SourceMapSegment, DecodedSourceMap, EncodedSourceMap, } from '@jridgewell/trace-mapping';
|
|
||||||
export type { SourceMapInput };
|
|
||||||
export declare type LoaderContext = {
|
|
||||||
readonly importer: string;
|
|
||||||
readonly depth: number;
|
|
||||||
source: string;
|
|
||||||
content: string | null | undefined;
|
|
||||||
ignore: boolean | undefined;
|
|
||||||
};
|
|
||||||
export declare type SourceMapLoader = (file: string, ctx: LoaderContext) => SourceMapInput | null | undefined | void;
|
|
||||||
export declare type Options = {
|
|
||||||
excludeContent?: boolean;
|
|
||||||
decodedMappings?: boolean;
|
|
||||||
};
|
|
||||||
75
node_modules/@ampproject/remapping/package.json
generated
vendored
75
node_modules/@ampproject/remapping/package.json
generated
vendored
@@ -1,75 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@ampproject/remapping",
|
|
||||||
"version": "2.3.0",
|
|
||||||
"description": "Remap sequential sourcemaps through transformations to point at the original source code",
|
|
||||||
"keywords": [
|
|
||||||
"source",
|
|
||||||
"map",
|
|
||||||
"remap"
|
|
||||||
],
|
|
||||||
"main": "dist/remapping.umd.js",
|
|
||||||
"module": "dist/remapping.mjs",
|
|
||||||
"types": "dist/types/remapping.d.ts",
|
|
||||||
"exports": {
|
|
||||||
".": [
|
|
||||||
{
|
|
||||||
"types": "./dist/types/remapping.d.ts",
|
|
||||||
"browser": "./dist/remapping.umd.js",
|
|
||||||
"require": "./dist/remapping.umd.js",
|
|
||||||
"import": "./dist/remapping.mjs"
|
|
||||||
},
|
|
||||||
"./dist/remapping.umd.js"
|
|
||||||
],
|
|
||||||
"./package.json": "./package.json"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"dist"
|
|
||||||
],
|
|
||||||
"author": "Justin Ridgewell <jridgewell@google.com>",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/ampproject/remapping.git"
|
|
||||||
},
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0.0"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"build": "run-s -n build:*",
|
|
||||||
"build:rollup": "rollup -c rollup.config.js",
|
|
||||||
"build:ts": "tsc --project tsconfig.build.json",
|
|
||||||
"lint": "run-s -n lint:*",
|
|
||||||
"lint:prettier": "npm run test:lint:prettier -- --write",
|
|
||||||
"lint:ts": "npm run test:lint:ts -- --fix",
|
|
||||||
"prebuild": "rm -rf dist",
|
|
||||||
"prepublishOnly": "npm run preversion",
|
|
||||||
"preversion": "run-s test build",
|
|
||||||
"test": "run-s -n test:lint test:only",
|
|
||||||
"test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand",
|
|
||||||
"test:lint": "run-s -n test:lint:*",
|
|
||||||
"test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
|
|
||||||
"test:lint:ts": "eslint '{src,test}/**/*.ts'",
|
|
||||||
"test:only": "jest --coverage",
|
|
||||||
"test:watch": "jest --coverage --watch"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@rollup/plugin-typescript": "8.3.2",
|
|
||||||
"@types/jest": "27.4.1",
|
|
||||||
"@typescript-eslint/eslint-plugin": "5.20.0",
|
|
||||||
"@typescript-eslint/parser": "5.20.0",
|
|
||||||
"eslint": "8.14.0",
|
|
||||||
"eslint-config-prettier": "8.5.0",
|
|
||||||
"jest": "27.5.1",
|
|
||||||
"jest-config": "27.5.1",
|
|
||||||
"npm-run-all": "4.1.5",
|
|
||||||
"prettier": "2.6.2",
|
|
||||||
"rollup": "2.70.2",
|
|
||||||
"ts-jest": "27.1.4",
|
|
||||||
"tslib": "2.4.0",
|
|
||||||
"typescript": "4.6.3"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@jridgewell/gen-mapping": "^0.3.5",
|
|
||||||
"@jridgewell/trace-mapping": "^0.3.24"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
22
node_modules/@babel/code-frame/LICENSE
generated
vendored
22
node_modules/@babel/code-frame/LICENSE
generated
vendored
@@ -1,22 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
19
node_modules/@babel/code-frame/README.md
generated
vendored
19
node_modules/@babel/code-frame/README.md
generated
vendored
@@ -1,19 +0,0 @@
|
|||||||
# @babel/code-frame
|
|
||||||
|
|
||||||
> Generate errors that contain a code frame that point to source locations.
|
|
||||||
|
|
||||||
See our website [@babel/code-frame](https://babeljs.io/docs/babel-code-frame) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save-dev @babel/code-frame
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/code-frame --dev
|
|
||||||
```
|
|
||||||
156
node_modules/@babel/code-frame/lib/index.js
generated
vendored
156
node_modules/@babel/code-frame/lib/index.js
generated
vendored
@@ -1,156 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.codeFrameColumns = codeFrameColumns;
|
|
||||||
exports.default = _default;
|
|
||||||
var _highlight = require("@babel/highlight");
|
|
||||||
var _picocolors = _interopRequireWildcard(require("picocolors"), true);
|
|
||||||
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
||||||
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
||||||
const colors = typeof process === "object" && (process.env.FORCE_COLOR === "0" || process.env.FORCE_COLOR === "false") ? (0, _picocolors.createColors)(false) : _picocolors.default;
|
|
||||||
const compose = (f, g) => v => f(g(v));
|
|
||||||
let pcWithForcedColor = undefined;
|
|
||||||
function getColors(forceColor) {
|
|
||||||
if (forceColor) {
|
|
||||||
var _pcWithForcedColor;
|
|
||||||
(_pcWithForcedColor = pcWithForcedColor) != null ? _pcWithForcedColor : pcWithForcedColor = (0, _picocolors.createColors)(true);
|
|
||||||
return pcWithForcedColor;
|
|
||||||
}
|
|
||||||
return colors;
|
|
||||||
}
|
|
||||||
let deprecationWarningShown = false;
|
|
||||||
function getDefs(colors) {
|
|
||||||
return {
|
|
||||||
gutter: colors.gray,
|
|
||||||
marker: compose(colors.red, colors.bold),
|
|
||||||
message: compose(colors.red, colors.bold)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
|
|
||||||
function getMarkerLines(loc, source, opts) {
|
|
||||||
const startLoc = Object.assign({
|
|
||||||
column: 0,
|
|
||||||
line: -1
|
|
||||||
}, loc.start);
|
|
||||||
const endLoc = Object.assign({}, startLoc, loc.end);
|
|
||||||
const {
|
|
||||||
linesAbove = 2,
|
|
||||||
linesBelow = 3
|
|
||||||
} = opts || {};
|
|
||||||
const startLine = startLoc.line;
|
|
||||||
const startColumn = startLoc.column;
|
|
||||||
const endLine = endLoc.line;
|
|
||||||
const endColumn = endLoc.column;
|
|
||||||
let start = Math.max(startLine - (linesAbove + 1), 0);
|
|
||||||
let end = Math.min(source.length, endLine + linesBelow);
|
|
||||||
if (startLine === -1) {
|
|
||||||
start = 0;
|
|
||||||
}
|
|
||||||
if (endLine === -1) {
|
|
||||||
end = source.length;
|
|
||||||
}
|
|
||||||
const lineDiff = endLine - startLine;
|
|
||||||
const markerLines = {};
|
|
||||||
if (lineDiff) {
|
|
||||||
for (let i = 0; i <= lineDiff; i++) {
|
|
||||||
const lineNumber = i + startLine;
|
|
||||||
if (!startColumn) {
|
|
||||||
markerLines[lineNumber] = true;
|
|
||||||
} else if (i === 0) {
|
|
||||||
const sourceLength = source[lineNumber - 1].length;
|
|
||||||
markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
|
|
||||||
} else if (i === lineDiff) {
|
|
||||||
markerLines[lineNumber] = [0, endColumn];
|
|
||||||
} else {
|
|
||||||
const sourceLength = source[lineNumber - i].length;
|
|
||||||
markerLines[lineNumber] = [0, sourceLength];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (startColumn === endColumn) {
|
|
||||||
if (startColumn) {
|
|
||||||
markerLines[startLine] = [startColumn, 0];
|
|
||||||
} else {
|
|
||||||
markerLines[startLine] = true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
markerLines[startLine] = [startColumn, endColumn - startColumn];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
start,
|
|
||||||
end,
|
|
||||||
markerLines
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function codeFrameColumns(rawLines, loc, opts = {}) {
|
|
||||||
const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);
|
|
||||||
const colors = getColors(opts.forceColor);
|
|
||||||
const defs = getDefs(colors);
|
|
||||||
const maybeHighlight = (fmt, string) => {
|
|
||||||
return highlighted ? fmt(string) : string;
|
|
||||||
};
|
|
||||||
const lines = rawLines.split(NEWLINE);
|
|
||||||
const {
|
|
||||||
start,
|
|
||||||
end,
|
|
||||||
markerLines
|
|
||||||
} = getMarkerLines(loc, lines, opts);
|
|
||||||
const hasColumns = loc.start && typeof loc.start.column === "number";
|
|
||||||
const numberMaxWidth = String(end).length;
|
|
||||||
const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;
|
|
||||||
let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
|
|
||||||
const number = start + 1 + index;
|
|
||||||
const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
|
|
||||||
const gutter = ` ${paddedNumber} |`;
|
|
||||||
const hasMarker = markerLines[number];
|
|
||||||
const lastMarkerLine = !markerLines[number + 1];
|
|
||||||
if (hasMarker) {
|
|
||||||
let markerLine = "";
|
|
||||||
if (Array.isArray(hasMarker)) {
|
|
||||||
const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
|
|
||||||
const numberOfMarkers = hasMarker[1] || 1;
|
|
||||||
markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
|
|
||||||
if (lastMarkerLine && opts.message) {
|
|
||||||
markerLine += " " + maybeHighlight(defs.message, opts.message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
|
|
||||||
} else {
|
|
||||||
return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`;
|
|
||||||
}
|
|
||||||
}).join("\n");
|
|
||||||
if (opts.message && !hasColumns) {
|
|
||||||
frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
|
|
||||||
}
|
|
||||||
if (highlighted) {
|
|
||||||
return colors.reset(frame);
|
|
||||||
} else {
|
|
||||||
return frame;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function _default(rawLines, lineNumber, colNumber, opts = {}) {
|
|
||||||
if (!deprecationWarningShown) {
|
|
||||||
deprecationWarningShown = true;
|
|
||||||
const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
|
|
||||||
if (process.emitWarning) {
|
|
||||||
process.emitWarning(message, "DeprecationWarning");
|
|
||||||
} else {
|
|
||||||
const deprecationError = new Error(message);
|
|
||||||
deprecationError.name = "DeprecationWarning";
|
|
||||||
console.warn(new Error(message));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
colNumber = Math.max(colNumber, 0);
|
|
||||||
const location = {
|
|
||||||
start: {
|
|
||||||
column: colNumber,
|
|
||||||
line: lineNumber
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return codeFrameColumns(rawLines, location, opts);
|
|
||||||
}
|
|
||||||
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
1
node_modules/@babel/code-frame/lib/index.js.map
generated
vendored
1
node_modules/@babel/code-frame/lib/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
30
node_modules/@babel/code-frame/package.json
generated
vendored
30
node_modules/@babel/code-frame/package.json
generated
vendored
@@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@babel/code-frame",
|
|
||||||
"version": "7.24.7",
|
|
||||||
"description": "Generate errors that contain a code frame that point to source locations.",
|
|
||||||
"author": "The Babel Team (https://babel.dev/team)",
|
|
||||||
"homepage": "https://babel.dev/docs/en/next/babel-code-frame",
|
|
||||||
"bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen",
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel.git",
|
|
||||||
"directory": "packages/babel-code-frame"
|
|
||||||
},
|
|
||||||
"main": "./lib/index.js",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/highlight": "^7.24.7",
|
|
||||||
"picocolors": "^1.0.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"import-meta-resolve": "^4.1.0",
|
|
||||||
"strip-ansi": "^4.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
},
|
|
||||||
"type": "commonjs"
|
|
||||||
}
|
|
||||||
22
node_modules/@babel/compat-data/LICENSE
generated
vendored
22
node_modules/@babel/compat-data/LICENSE
generated
vendored
@@ -1,22 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
19
node_modules/@babel/compat-data/README.md
generated
vendored
19
node_modules/@babel/compat-data/README.md
generated
vendored
@@ -1,19 +0,0 @@
|
|||||||
# @babel/compat-data
|
|
||||||
|
|
||||||
>
|
|
||||||
|
|
||||||
See our website [@babel/compat-data](https://babeljs.io/docs/babel-compat-data) for more information.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save @babel/compat-data
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/compat-data
|
|
||||||
```
|
|
||||||
2
node_modules/@babel/compat-data/corejs2-built-ins.js
generated
vendored
2
node_modules/@babel/compat-data/corejs2-built-ins.js
generated
vendored
@@ -1,2 +0,0 @@
|
|||||||
// Todo (Babel 8): remove this file as Babel 8 drop support of core-js 2
|
|
||||||
module.exports = require("./data/corejs2-built-ins.json");
|
|
||||||
2
node_modules/@babel/compat-data/corejs3-shipped-proposals.js
generated
vendored
2
node_modules/@babel/compat-data/corejs3-shipped-proposals.js
generated
vendored
@@ -1,2 +0,0 @@
|
|||||||
// Todo (Babel 8): remove this file now that it is included in babel-plugin-polyfill-corejs3
|
|
||||||
module.exports = require("./data/corejs3-shipped-proposals.json");
|
|
||||||
2090
node_modules/@babel/compat-data/data/corejs2-built-ins.json
generated
vendored
2090
node_modules/@babel/compat-data/data/corejs2-built-ins.json
generated
vendored
File diff suppressed because it is too large
Load Diff
5
node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json
generated
vendored
5
node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json
generated
vendored
@@ -1,5 +0,0 @@
|
|||||||
[
|
|
||||||
"esnext.promise.all-settled",
|
|
||||||
"esnext.string.match-all",
|
|
||||||
"esnext.global-this"
|
|
||||||
]
|
|
||||||
18
node_modules/@babel/compat-data/data/native-modules.json
generated
vendored
18
node_modules/@babel/compat-data/data/native-modules.json
generated
vendored
@@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"es6.module": {
|
|
||||||
"chrome": "61",
|
|
||||||
"and_chr": "61",
|
|
||||||
"edge": "16",
|
|
||||||
"firefox": "60",
|
|
||||||
"and_ff": "60",
|
|
||||||
"node": "13.2.0",
|
|
||||||
"opera": "48",
|
|
||||||
"op_mob": "45",
|
|
||||||
"safari": "10.1",
|
|
||||||
"ios": "10.3",
|
|
||||||
"samsung": "8.2",
|
|
||||||
"android": "61",
|
|
||||||
"electron": "2.0",
|
|
||||||
"ios_saf": "10.3"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
35
node_modules/@babel/compat-data/data/overlapping-plugins.json
generated
vendored
35
node_modules/@babel/compat-data/data/overlapping-plugins.json
generated
vendored
@@ -1,35 +0,0 @@
|
|||||||
{
|
|
||||||
"transform-async-to-generator": [
|
|
||||||
"bugfix/transform-async-arrows-in-class"
|
|
||||||
],
|
|
||||||
"transform-parameters": [
|
|
||||||
"bugfix/transform-edge-default-parameters",
|
|
||||||
"bugfix/transform-safari-id-destructuring-collision-in-function-expression"
|
|
||||||
],
|
|
||||||
"transform-function-name": [
|
|
||||||
"bugfix/transform-edge-function-name"
|
|
||||||
],
|
|
||||||
"transform-block-scoping": [
|
|
||||||
"bugfix/transform-safari-block-shadowing",
|
|
||||||
"bugfix/transform-safari-for-shadowing"
|
|
||||||
],
|
|
||||||
"transform-template-literals": [
|
|
||||||
"bugfix/transform-tagged-template-caching"
|
|
||||||
],
|
|
||||||
"transform-optional-chaining": [
|
|
||||||
"bugfix/transform-v8-spread-parameters-in-optional-chaining"
|
|
||||||
],
|
|
||||||
"proposal-optional-chaining": [
|
|
||||||
"bugfix/transform-v8-spread-parameters-in-optional-chaining"
|
|
||||||
],
|
|
||||||
"transform-class-properties": [
|
|
||||||
"bugfix/transform-v8-static-class-fields-redefine-readonly",
|
|
||||||
"bugfix/transform-firefox-class-in-computed-class-key",
|
|
||||||
"bugfix/transform-safari-class-field-initializer-scope"
|
|
||||||
],
|
|
||||||
"proposal-class-properties": [
|
|
||||||
"bugfix/transform-v8-static-class-fields-redefine-readonly",
|
|
||||||
"bugfix/transform-firefox-class-in-computed-class-key",
|
|
||||||
"bugfix/transform-safari-class-field-initializer-scope"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
213
node_modules/@babel/compat-data/data/plugin-bugfixes.json
generated
vendored
213
node_modules/@babel/compat-data/data/plugin-bugfixes.json
generated
vendored
@@ -1,213 +0,0 @@
|
|||||||
{
|
|
||||||
"bugfix/transform-async-arrows-in-class": {
|
|
||||||
"chrome": "55",
|
|
||||||
"opera": "42",
|
|
||||||
"edge": "15",
|
|
||||||
"firefox": "52",
|
|
||||||
"safari": "11",
|
|
||||||
"node": "7.6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11",
|
|
||||||
"samsung": "6",
|
|
||||||
"opera_mobile": "42",
|
|
||||||
"electron": "1.6"
|
|
||||||
},
|
|
||||||
"bugfix/transform-edge-default-parameters": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "18",
|
|
||||||
"firefox": "52",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"bugfix/transform-edge-function-name": {
|
|
||||||
"chrome": "51",
|
|
||||||
"opera": "38",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6.5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "41",
|
|
||||||
"electron": "1.2"
|
|
||||||
},
|
|
||||||
"bugfix/transform-safari-block-shadowing": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "44",
|
|
||||||
"safari": "11",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ie": "11",
|
|
||||||
"ios": "11",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"bugfix/transform-safari-for-shadowing": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "4",
|
|
||||||
"safari": "11",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ie": "11",
|
|
||||||
"ios": "11",
|
|
||||||
"samsung": "5",
|
|
||||||
"rhino": "1.7.13",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"bugfix/transform-safari-id-destructuring-collision-in-function-expression": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "14",
|
|
||||||
"firefox": "2",
|
|
||||||
"safari": "16.3",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "16.3",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"bugfix/transform-tagged-template-caching": {
|
|
||||||
"chrome": "41",
|
|
||||||
"opera": "28",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "34",
|
|
||||||
"safari": "13",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13",
|
|
||||||
"samsung": "3.4",
|
|
||||||
"rhino": "1.7.14",
|
|
||||||
"opera_mobile": "28",
|
|
||||||
"electron": "0.21"
|
|
||||||
},
|
|
||||||
"bugfix/transform-v8-spread-parameters-in-optional-chaining": {
|
|
||||||
"chrome": "91",
|
|
||||||
"opera": "77",
|
|
||||||
"edge": "91",
|
|
||||||
"firefox": "74",
|
|
||||||
"safari": "13.1",
|
|
||||||
"node": "16.9",
|
|
||||||
"deno": "1.9",
|
|
||||||
"ios": "13.4",
|
|
||||||
"samsung": "16",
|
|
||||||
"opera_mobile": "64",
|
|
||||||
"electron": "13.0"
|
|
||||||
},
|
|
||||||
"bugfix/transform-firefox-class-in-computed-class-key": {
|
|
||||||
"chrome": "74",
|
|
||||||
"opera": "62",
|
|
||||||
"edge": "79",
|
|
||||||
"safari": "16",
|
|
||||||
"node": "12",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "16",
|
|
||||||
"samsung": "11",
|
|
||||||
"opera_mobile": "53",
|
|
||||||
"electron": "6.0"
|
|
||||||
},
|
|
||||||
"transform-optional-chaining": {
|
|
||||||
"chrome": "80",
|
|
||||||
"opera": "67",
|
|
||||||
"edge": "80",
|
|
||||||
"firefox": "74",
|
|
||||||
"safari": "13.1",
|
|
||||||
"node": "14",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13.4",
|
|
||||||
"samsung": "13",
|
|
||||||
"opera_mobile": "57",
|
|
||||||
"electron": "8.0"
|
|
||||||
},
|
|
||||||
"proposal-optional-chaining": {
|
|
||||||
"chrome": "80",
|
|
||||||
"opera": "67",
|
|
||||||
"edge": "80",
|
|
||||||
"firefox": "74",
|
|
||||||
"safari": "13.1",
|
|
||||||
"node": "14",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13.4",
|
|
||||||
"samsung": "13",
|
|
||||||
"opera_mobile": "57",
|
|
||||||
"electron": "8.0"
|
|
||||||
},
|
|
||||||
"transform-parameters": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "15",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"transform-async-to-generator": {
|
|
||||||
"chrome": "55",
|
|
||||||
"opera": "42",
|
|
||||||
"edge": "15",
|
|
||||||
"firefox": "52",
|
|
||||||
"safari": "10.1",
|
|
||||||
"node": "7.6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10.3",
|
|
||||||
"samsung": "6",
|
|
||||||
"opera_mobile": "42",
|
|
||||||
"electron": "1.6"
|
|
||||||
},
|
|
||||||
"transform-template-literals": {
|
|
||||||
"chrome": "41",
|
|
||||||
"opera": "28",
|
|
||||||
"edge": "13",
|
|
||||||
"firefox": "34",
|
|
||||||
"safari": "9",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "9",
|
|
||||||
"samsung": "3.4",
|
|
||||||
"opera_mobile": "28",
|
|
||||||
"electron": "0.21"
|
|
||||||
},
|
|
||||||
"transform-function-name": {
|
|
||||||
"chrome": "51",
|
|
||||||
"opera": "38",
|
|
||||||
"edge": "14",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6.5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "41",
|
|
||||||
"electron": "1.2"
|
|
||||||
},
|
|
||||||
"transform-block-scoping": {
|
|
||||||
"chrome": "50",
|
|
||||||
"opera": "37",
|
|
||||||
"edge": "14",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "37",
|
|
||||||
"electron": "1.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
814
node_modules/@babel/compat-data/data/plugins.json
generated
vendored
814
node_modules/@babel/compat-data/data/plugins.json
generated
vendored
@@ -1,814 +0,0 @@
|
|||||||
{
|
|
||||||
"transform-duplicate-named-capturing-groups-regex": {
|
|
||||||
"chrome": "126",
|
|
||||||
"edge": "126",
|
|
||||||
"firefox": "129",
|
|
||||||
"safari": "17.4",
|
|
||||||
"electron": "31.0"
|
|
||||||
},
|
|
||||||
"transform-unicode-sets-regex": {
|
|
||||||
"chrome": "112",
|
|
||||||
"opera": "98",
|
|
||||||
"edge": "112",
|
|
||||||
"firefox": "116",
|
|
||||||
"safari": "17",
|
|
||||||
"node": "20",
|
|
||||||
"deno": "1.32",
|
|
||||||
"ios": "17",
|
|
||||||
"opera_mobile": "75",
|
|
||||||
"electron": "24.0"
|
|
||||||
},
|
|
||||||
"bugfix/transform-v8-static-class-fields-redefine-readonly": {
|
|
||||||
"chrome": "98",
|
|
||||||
"opera": "84",
|
|
||||||
"edge": "98",
|
|
||||||
"firefox": "95",
|
|
||||||
"safari": "15",
|
|
||||||
"node": "12",
|
|
||||||
"deno": "1.18",
|
|
||||||
"ios": "15",
|
|
||||||
"samsung": "11",
|
|
||||||
"opera_mobile": "52",
|
|
||||||
"electron": "17.0"
|
|
||||||
},
|
|
||||||
"bugfix/transform-firefox-class-in-computed-class-key": {
|
|
||||||
"chrome": "74",
|
|
||||||
"opera": "62",
|
|
||||||
"edge": "79",
|
|
||||||
"safari": "16",
|
|
||||||
"node": "12",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "16",
|
|
||||||
"samsung": "11",
|
|
||||||
"opera_mobile": "53",
|
|
||||||
"electron": "6.0"
|
|
||||||
},
|
|
||||||
"bugfix/transform-safari-class-field-initializer-scope": {
|
|
||||||
"chrome": "74",
|
|
||||||
"opera": "62",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "69",
|
|
||||||
"safari": "16",
|
|
||||||
"node": "12",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "16",
|
|
||||||
"samsung": "11",
|
|
||||||
"opera_mobile": "53",
|
|
||||||
"electron": "6.0"
|
|
||||||
},
|
|
||||||
"transform-class-static-block": {
|
|
||||||
"chrome": "94",
|
|
||||||
"opera": "80",
|
|
||||||
"edge": "94",
|
|
||||||
"firefox": "93",
|
|
||||||
"safari": "16.4",
|
|
||||||
"node": "16.11",
|
|
||||||
"deno": "1.14",
|
|
||||||
"ios": "16.4",
|
|
||||||
"samsung": "17",
|
|
||||||
"opera_mobile": "66",
|
|
||||||
"electron": "15.0"
|
|
||||||
},
|
|
||||||
"proposal-class-static-block": {
|
|
||||||
"chrome": "94",
|
|
||||||
"opera": "80",
|
|
||||||
"edge": "94",
|
|
||||||
"firefox": "93",
|
|
||||||
"safari": "16.4",
|
|
||||||
"node": "16.11",
|
|
||||||
"deno": "1.14",
|
|
||||||
"ios": "16.4",
|
|
||||||
"samsung": "17",
|
|
||||||
"opera_mobile": "66",
|
|
||||||
"electron": "15.0"
|
|
||||||
},
|
|
||||||
"transform-private-property-in-object": {
|
|
||||||
"chrome": "91",
|
|
||||||
"opera": "77",
|
|
||||||
"edge": "91",
|
|
||||||
"firefox": "90",
|
|
||||||
"safari": "15",
|
|
||||||
"node": "16.9",
|
|
||||||
"deno": "1.9",
|
|
||||||
"ios": "15",
|
|
||||||
"samsung": "16",
|
|
||||||
"opera_mobile": "64",
|
|
||||||
"electron": "13.0"
|
|
||||||
},
|
|
||||||
"proposal-private-property-in-object": {
|
|
||||||
"chrome": "91",
|
|
||||||
"opera": "77",
|
|
||||||
"edge": "91",
|
|
||||||
"firefox": "90",
|
|
||||||
"safari": "15",
|
|
||||||
"node": "16.9",
|
|
||||||
"deno": "1.9",
|
|
||||||
"ios": "15",
|
|
||||||
"samsung": "16",
|
|
||||||
"opera_mobile": "64",
|
|
||||||
"electron": "13.0"
|
|
||||||
},
|
|
||||||
"transform-class-properties": {
|
|
||||||
"chrome": "74",
|
|
||||||
"opera": "62",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "90",
|
|
||||||
"safari": "14.1",
|
|
||||||
"node": "12",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "14.5",
|
|
||||||
"samsung": "11",
|
|
||||||
"opera_mobile": "53",
|
|
||||||
"electron": "6.0"
|
|
||||||
},
|
|
||||||
"proposal-class-properties": {
|
|
||||||
"chrome": "74",
|
|
||||||
"opera": "62",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "90",
|
|
||||||
"safari": "14.1",
|
|
||||||
"node": "12",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "14.5",
|
|
||||||
"samsung": "11",
|
|
||||||
"opera_mobile": "53",
|
|
||||||
"electron": "6.0"
|
|
||||||
},
|
|
||||||
"transform-private-methods": {
|
|
||||||
"chrome": "84",
|
|
||||||
"opera": "70",
|
|
||||||
"edge": "84",
|
|
||||||
"firefox": "90",
|
|
||||||
"safari": "15",
|
|
||||||
"node": "14.6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "15",
|
|
||||||
"samsung": "14",
|
|
||||||
"opera_mobile": "60",
|
|
||||||
"electron": "10.0"
|
|
||||||
},
|
|
||||||
"proposal-private-methods": {
|
|
||||||
"chrome": "84",
|
|
||||||
"opera": "70",
|
|
||||||
"edge": "84",
|
|
||||||
"firefox": "90",
|
|
||||||
"safari": "15",
|
|
||||||
"node": "14.6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "15",
|
|
||||||
"samsung": "14",
|
|
||||||
"opera_mobile": "60",
|
|
||||||
"electron": "10.0"
|
|
||||||
},
|
|
||||||
"transform-numeric-separator": {
|
|
||||||
"chrome": "75",
|
|
||||||
"opera": "62",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "70",
|
|
||||||
"safari": "13",
|
|
||||||
"node": "12.5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13",
|
|
||||||
"samsung": "11",
|
|
||||||
"rhino": "1.7.14",
|
|
||||||
"opera_mobile": "54",
|
|
||||||
"electron": "6.0"
|
|
||||||
},
|
|
||||||
"proposal-numeric-separator": {
|
|
||||||
"chrome": "75",
|
|
||||||
"opera": "62",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "70",
|
|
||||||
"safari": "13",
|
|
||||||
"node": "12.5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13",
|
|
||||||
"samsung": "11",
|
|
||||||
"rhino": "1.7.14",
|
|
||||||
"opera_mobile": "54",
|
|
||||||
"electron": "6.0"
|
|
||||||
},
|
|
||||||
"transform-logical-assignment-operators": {
|
|
||||||
"chrome": "85",
|
|
||||||
"opera": "71",
|
|
||||||
"edge": "85",
|
|
||||||
"firefox": "79",
|
|
||||||
"safari": "14",
|
|
||||||
"node": "15",
|
|
||||||
"deno": "1.2",
|
|
||||||
"ios": "14",
|
|
||||||
"samsung": "14",
|
|
||||||
"opera_mobile": "60",
|
|
||||||
"electron": "10.0"
|
|
||||||
},
|
|
||||||
"proposal-logical-assignment-operators": {
|
|
||||||
"chrome": "85",
|
|
||||||
"opera": "71",
|
|
||||||
"edge": "85",
|
|
||||||
"firefox": "79",
|
|
||||||
"safari": "14",
|
|
||||||
"node": "15",
|
|
||||||
"deno": "1.2",
|
|
||||||
"ios": "14",
|
|
||||||
"samsung": "14",
|
|
||||||
"opera_mobile": "60",
|
|
||||||
"electron": "10.0"
|
|
||||||
},
|
|
||||||
"transform-nullish-coalescing-operator": {
|
|
||||||
"chrome": "80",
|
|
||||||
"opera": "67",
|
|
||||||
"edge": "80",
|
|
||||||
"firefox": "72",
|
|
||||||
"safari": "13.1",
|
|
||||||
"node": "14",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13.4",
|
|
||||||
"samsung": "13",
|
|
||||||
"opera_mobile": "57",
|
|
||||||
"electron": "8.0"
|
|
||||||
},
|
|
||||||
"proposal-nullish-coalescing-operator": {
|
|
||||||
"chrome": "80",
|
|
||||||
"opera": "67",
|
|
||||||
"edge": "80",
|
|
||||||
"firefox": "72",
|
|
||||||
"safari": "13.1",
|
|
||||||
"node": "14",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13.4",
|
|
||||||
"samsung": "13",
|
|
||||||
"opera_mobile": "57",
|
|
||||||
"electron": "8.0"
|
|
||||||
},
|
|
||||||
"transform-optional-chaining": {
|
|
||||||
"chrome": "91",
|
|
||||||
"opera": "77",
|
|
||||||
"edge": "91",
|
|
||||||
"firefox": "74",
|
|
||||||
"safari": "13.1",
|
|
||||||
"node": "16.9",
|
|
||||||
"deno": "1.9",
|
|
||||||
"ios": "13.4",
|
|
||||||
"samsung": "16",
|
|
||||||
"opera_mobile": "64",
|
|
||||||
"electron": "13.0"
|
|
||||||
},
|
|
||||||
"proposal-optional-chaining": {
|
|
||||||
"chrome": "91",
|
|
||||||
"opera": "77",
|
|
||||||
"edge": "91",
|
|
||||||
"firefox": "74",
|
|
||||||
"safari": "13.1",
|
|
||||||
"node": "16.9",
|
|
||||||
"deno": "1.9",
|
|
||||||
"ios": "13.4",
|
|
||||||
"samsung": "16",
|
|
||||||
"opera_mobile": "64",
|
|
||||||
"electron": "13.0"
|
|
||||||
},
|
|
||||||
"transform-json-strings": {
|
|
||||||
"chrome": "66",
|
|
||||||
"opera": "53",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "62",
|
|
||||||
"safari": "12",
|
|
||||||
"node": "10",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "12",
|
|
||||||
"samsung": "9",
|
|
||||||
"rhino": "1.7.14",
|
|
||||||
"opera_mobile": "47",
|
|
||||||
"electron": "3.0"
|
|
||||||
},
|
|
||||||
"proposal-json-strings": {
|
|
||||||
"chrome": "66",
|
|
||||||
"opera": "53",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "62",
|
|
||||||
"safari": "12",
|
|
||||||
"node": "10",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "12",
|
|
||||||
"samsung": "9",
|
|
||||||
"rhino": "1.7.14",
|
|
||||||
"opera_mobile": "47",
|
|
||||||
"electron": "3.0"
|
|
||||||
},
|
|
||||||
"transform-optional-catch-binding": {
|
|
||||||
"chrome": "66",
|
|
||||||
"opera": "53",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "58",
|
|
||||||
"safari": "11.1",
|
|
||||||
"node": "10",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11.3",
|
|
||||||
"samsung": "9",
|
|
||||||
"opera_mobile": "47",
|
|
||||||
"electron": "3.0"
|
|
||||||
},
|
|
||||||
"proposal-optional-catch-binding": {
|
|
||||||
"chrome": "66",
|
|
||||||
"opera": "53",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "58",
|
|
||||||
"safari": "11.1",
|
|
||||||
"node": "10",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11.3",
|
|
||||||
"samsung": "9",
|
|
||||||
"opera_mobile": "47",
|
|
||||||
"electron": "3.0"
|
|
||||||
},
|
|
||||||
"transform-parameters": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "18",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "16.3",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "16.3",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"transform-async-generator-functions": {
|
|
||||||
"chrome": "63",
|
|
||||||
"opera": "50",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "57",
|
|
||||||
"safari": "12",
|
|
||||||
"node": "10",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "12",
|
|
||||||
"samsung": "8",
|
|
||||||
"opera_mobile": "46",
|
|
||||||
"electron": "3.0"
|
|
||||||
},
|
|
||||||
"proposal-async-generator-functions": {
|
|
||||||
"chrome": "63",
|
|
||||||
"opera": "50",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "57",
|
|
||||||
"safari": "12",
|
|
||||||
"node": "10",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "12",
|
|
||||||
"samsung": "8",
|
|
||||||
"opera_mobile": "46",
|
|
||||||
"electron": "3.0"
|
|
||||||
},
|
|
||||||
"transform-object-rest-spread": {
|
|
||||||
"chrome": "60",
|
|
||||||
"opera": "47",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "55",
|
|
||||||
"safari": "11.1",
|
|
||||||
"node": "8.3",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11.3",
|
|
||||||
"samsung": "8",
|
|
||||||
"opera_mobile": "44",
|
|
||||||
"electron": "2.0"
|
|
||||||
},
|
|
||||||
"proposal-object-rest-spread": {
|
|
||||||
"chrome": "60",
|
|
||||||
"opera": "47",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "55",
|
|
||||||
"safari": "11.1",
|
|
||||||
"node": "8.3",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11.3",
|
|
||||||
"samsung": "8",
|
|
||||||
"opera_mobile": "44",
|
|
||||||
"electron": "2.0"
|
|
||||||
},
|
|
||||||
"transform-dotall-regex": {
|
|
||||||
"chrome": "62",
|
|
||||||
"opera": "49",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "78",
|
|
||||||
"safari": "11.1",
|
|
||||||
"node": "8.10",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11.3",
|
|
||||||
"samsung": "8",
|
|
||||||
"rhino": "1.7.15",
|
|
||||||
"opera_mobile": "46",
|
|
||||||
"electron": "3.0"
|
|
||||||
},
|
|
||||||
"transform-unicode-property-regex": {
|
|
||||||
"chrome": "64",
|
|
||||||
"opera": "51",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "78",
|
|
||||||
"safari": "11.1",
|
|
||||||
"node": "10",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11.3",
|
|
||||||
"samsung": "9",
|
|
||||||
"opera_mobile": "47",
|
|
||||||
"electron": "3.0"
|
|
||||||
},
|
|
||||||
"proposal-unicode-property-regex": {
|
|
||||||
"chrome": "64",
|
|
||||||
"opera": "51",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "78",
|
|
||||||
"safari": "11.1",
|
|
||||||
"node": "10",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11.3",
|
|
||||||
"samsung": "9",
|
|
||||||
"opera_mobile": "47",
|
|
||||||
"electron": "3.0"
|
|
||||||
},
|
|
||||||
"transform-named-capturing-groups-regex": {
|
|
||||||
"chrome": "64",
|
|
||||||
"opera": "51",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "78",
|
|
||||||
"safari": "11.1",
|
|
||||||
"node": "10",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11.3",
|
|
||||||
"samsung": "9",
|
|
||||||
"opera_mobile": "47",
|
|
||||||
"electron": "3.0"
|
|
||||||
},
|
|
||||||
"transform-async-to-generator": {
|
|
||||||
"chrome": "55",
|
|
||||||
"opera": "42",
|
|
||||||
"edge": "15",
|
|
||||||
"firefox": "52",
|
|
||||||
"safari": "11",
|
|
||||||
"node": "7.6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11",
|
|
||||||
"samsung": "6",
|
|
||||||
"opera_mobile": "42",
|
|
||||||
"electron": "1.6"
|
|
||||||
},
|
|
||||||
"transform-exponentiation-operator": {
|
|
||||||
"chrome": "52",
|
|
||||||
"opera": "39",
|
|
||||||
"edge": "14",
|
|
||||||
"firefox": "52",
|
|
||||||
"safari": "10.1",
|
|
||||||
"node": "7",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10.3",
|
|
||||||
"samsung": "6",
|
|
||||||
"rhino": "1.7.14",
|
|
||||||
"opera_mobile": "41",
|
|
||||||
"electron": "1.3"
|
|
||||||
},
|
|
||||||
"transform-template-literals": {
|
|
||||||
"chrome": "41",
|
|
||||||
"opera": "28",
|
|
||||||
"edge": "13",
|
|
||||||
"firefox": "34",
|
|
||||||
"safari": "13",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13",
|
|
||||||
"samsung": "3.4",
|
|
||||||
"opera_mobile": "28",
|
|
||||||
"electron": "0.21"
|
|
||||||
},
|
|
||||||
"transform-literals": {
|
|
||||||
"chrome": "44",
|
|
||||||
"opera": "31",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "9",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "9",
|
|
||||||
"samsung": "4",
|
|
||||||
"rhino": "1.7.15",
|
|
||||||
"opera_mobile": "32",
|
|
||||||
"electron": "0.30"
|
|
||||||
},
|
|
||||||
"transform-function-name": {
|
|
||||||
"chrome": "51",
|
|
||||||
"opera": "38",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6.5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "41",
|
|
||||||
"electron": "1.2"
|
|
||||||
},
|
|
||||||
"transform-arrow-functions": {
|
|
||||||
"chrome": "47",
|
|
||||||
"opera": "34",
|
|
||||||
"edge": "13",
|
|
||||||
"firefox": "43",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"rhino": "1.7.13",
|
|
||||||
"opera_mobile": "34",
|
|
||||||
"electron": "0.36"
|
|
||||||
},
|
|
||||||
"transform-block-scoped-functions": {
|
|
||||||
"chrome": "41",
|
|
||||||
"opera": "28",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "46",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ie": "11",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "3.4",
|
|
||||||
"opera_mobile": "28",
|
|
||||||
"electron": "0.21"
|
|
||||||
},
|
|
||||||
"transform-classes": {
|
|
||||||
"chrome": "46",
|
|
||||||
"opera": "33",
|
|
||||||
"edge": "13",
|
|
||||||
"firefox": "45",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "33",
|
|
||||||
"electron": "0.36"
|
|
||||||
},
|
|
||||||
"transform-object-super": {
|
|
||||||
"chrome": "46",
|
|
||||||
"opera": "33",
|
|
||||||
"edge": "13",
|
|
||||||
"firefox": "45",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "33",
|
|
||||||
"electron": "0.36"
|
|
||||||
},
|
|
||||||
"transform-shorthand-properties": {
|
|
||||||
"chrome": "43",
|
|
||||||
"opera": "30",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "33",
|
|
||||||
"safari": "9",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "9",
|
|
||||||
"samsung": "4",
|
|
||||||
"rhino": "1.7.14",
|
|
||||||
"opera_mobile": "30",
|
|
||||||
"electron": "0.27"
|
|
||||||
},
|
|
||||||
"transform-duplicate-keys": {
|
|
||||||
"chrome": "42",
|
|
||||||
"opera": "29",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "34",
|
|
||||||
"safari": "9",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "9",
|
|
||||||
"samsung": "3.4",
|
|
||||||
"opera_mobile": "29",
|
|
||||||
"electron": "0.25"
|
|
||||||
},
|
|
||||||
"transform-computed-properties": {
|
|
||||||
"chrome": "44",
|
|
||||||
"opera": "31",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "34",
|
|
||||||
"safari": "7.1",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "8",
|
|
||||||
"samsung": "4",
|
|
||||||
"opera_mobile": "32",
|
|
||||||
"electron": "0.30"
|
|
||||||
},
|
|
||||||
"transform-for-of": {
|
|
||||||
"chrome": "51",
|
|
||||||
"opera": "38",
|
|
||||||
"edge": "15",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6.5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "41",
|
|
||||||
"electron": "1.2"
|
|
||||||
},
|
|
||||||
"transform-sticky-regex": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "13",
|
|
||||||
"firefox": "3",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"rhino": "1.7.15",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"transform-unicode-escapes": {
|
|
||||||
"chrome": "44",
|
|
||||||
"opera": "31",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "9",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "9",
|
|
||||||
"samsung": "4",
|
|
||||||
"rhino": "1.7.15",
|
|
||||||
"opera_mobile": "32",
|
|
||||||
"electron": "0.30"
|
|
||||||
},
|
|
||||||
"transform-unicode-regex": {
|
|
||||||
"chrome": "50",
|
|
||||||
"opera": "37",
|
|
||||||
"edge": "13",
|
|
||||||
"firefox": "46",
|
|
||||||
"safari": "12",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "12",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "37",
|
|
||||||
"electron": "1.1"
|
|
||||||
},
|
|
||||||
"transform-spread": {
|
|
||||||
"chrome": "46",
|
|
||||||
"opera": "33",
|
|
||||||
"edge": "13",
|
|
||||||
"firefox": "45",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "33",
|
|
||||||
"electron": "0.36"
|
|
||||||
},
|
|
||||||
"transform-destructuring": {
|
|
||||||
"chrome": "51",
|
|
||||||
"opera": "38",
|
|
||||||
"edge": "15",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6.5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "41",
|
|
||||||
"electron": "1.2"
|
|
||||||
},
|
|
||||||
"transform-block-scoping": {
|
|
||||||
"chrome": "50",
|
|
||||||
"opera": "37",
|
|
||||||
"edge": "14",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "11",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "37",
|
|
||||||
"electron": "1.1"
|
|
||||||
},
|
|
||||||
"transform-typeof-symbol": {
|
|
||||||
"chrome": "38",
|
|
||||||
"opera": "25",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "36",
|
|
||||||
"safari": "9",
|
|
||||||
"node": "0.12",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "9",
|
|
||||||
"samsung": "3",
|
|
||||||
"rhino": "1.7.13",
|
|
||||||
"opera_mobile": "25",
|
|
||||||
"electron": "0.20"
|
|
||||||
},
|
|
||||||
"transform-new-target": {
|
|
||||||
"chrome": "46",
|
|
||||||
"opera": "33",
|
|
||||||
"edge": "14",
|
|
||||||
"firefox": "41",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "33",
|
|
||||||
"electron": "0.36"
|
|
||||||
},
|
|
||||||
"transform-regenerator": {
|
|
||||||
"chrome": "50",
|
|
||||||
"opera": "37",
|
|
||||||
"edge": "13",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "37",
|
|
||||||
"electron": "1.1"
|
|
||||||
},
|
|
||||||
"transform-member-expression-literals": {
|
|
||||||
"chrome": "7",
|
|
||||||
"opera": "12",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "2",
|
|
||||||
"safari": "5.1",
|
|
||||||
"node": "0.4",
|
|
||||||
"deno": "1",
|
|
||||||
"ie": "9",
|
|
||||||
"android": "4",
|
|
||||||
"ios": "6",
|
|
||||||
"phantom": "1.9",
|
|
||||||
"samsung": "1",
|
|
||||||
"rhino": "1.7.13",
|
|
||||||
"opera_mobile": "12",
|
|
||||||
"electron": "0.20"
|
|
||||||
},
|
|
||||||
"transform-property-literals": {
|
|
||||||
"chrome": "7",
|
|
||||||
"opera": "12",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "2",
|
|
||||||
"safari": "5.1",
|
|
||||||
"node": "0.4",
|
|
||||||
"deno": "1",
|
|
||||||
"ie": "9",
|
|
||||||
"android": "4",
|
|
||||||
"ios": "6",
|
|
||||||
"phantom": "1.9",
|
|
||||||
"samsung": "1",
|
|
||||||
"rhino": "1.7.13",
|
|
||||||
"opera_mobile": "12",
|
|
||||||
"electron": "0.20"
|
|
||||||
},
|
|
||||||
"transform-reserved-words": {
|
|
||||||
"chrome": "13",
|
|
||||||
"opera": "10.50",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "2",
|
|
||||||
"safari": "3.1",
|
|
||||||
"node": "0.6",
|
|
||||||
"deno": "1",
|
|
||||||
"ie": "9",
|
|
||||||
"android": "4.4",
|
|
||||||
"ios": "6",
|
|
||||||
"phantom": "1.9",
|
|
||||||
"samsung": "1",
|
|
||||||
"rhino": "1.7.13",
|
|
||||||
"opera_mobile": "10.1",
|
|
||||||
"electron": "0.20"
|
|
||||||
},
|
|
||||||
"transform-export-namespace-from": {
|
|
||||||
"chrome": "72",
|
|
||||||
"deno": "1.0",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "80",
|
|
||||||
"node": "13.2",
|
|
||||||
"opera": "60",
|
|
||||||
"opera_mobile": "51",
|
|
||||||
"safari": "14.1",
|
|
||||||
"ios": "14.5",
|
|
||||||
"samsung": "11.0",
|
|
||||||
"android": "72",
|
|
||||||
"electron": "5.0"
|
|
||||||
},
|
|
||||||
"proposal-export-namespace-from": {
|
|
||||||
"chrome": "72",
|
|
||||||
"deno": "1.0",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "80",
|
|
||||||
"node": "13.2",
|
|
||||||
"opera": "60",
|
|
||||||
"opera_mobile": "51",
|
|
||||||
"safari": "14.1",
|
|
||||||
"ios": "14.5",
|
|
||||||
"samsung": "11.0",
|
|
||||||
"android": "72",
|
|
||||||
"electron": "5.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1
node_modules/@babel/compat-data/native-modules.js
generated
vendored
1
node_modules/@babel/compat-data/native-modules.js
generated
vendored
@@ -1 +0,0 @@
|
|||||||
module.exports = require("./data/native-modules.json");
|
|
||||||
1
node_modules/@babel/compat-data/overlapping-plugins.js
generated
vendored
1
node_modules/@babel/compat-data/overlapping-plugins.js
generated
vendored
@@ -1 +0,0 @@
|
|||||||
module.exports = require("./data/overlapping-plugins.json");
|
|
||||||
40
node_modules/@babel/compat-data/package.json
generated
vendored
40
node_modules/@babel/compat-data/package.json
generated
vendored
@@ -1,40 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@babel/compat-data",
|
|
||||||
"version": "7.25.2",
|
|
||||||
"author": "The Babel Team (https://babel.dev/team)",
|
|
||||||
"license": "MIT",
|
|
||||||
"description": "",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/babel/babel.git",
|
|
||||||
"directory": "packages/babel-compat-data"
|
|
||||||
},
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"exports": {
|
|
||||||
"./plugins": "./plugins.js",
|
|
||||||
"./native-modules": "./native-modules.js",
|
|
||||||
"./corejs2-built-ins": "./corejs2-built-ins.js",
|
|
||||||
"./corejs3-shipped-proposals": "./corejs3-shipped-proposals.js",
|
|
||||||
"./overlapping-plugins": "./overlapping-plugins.js",
|
|
||||||
"./plugin-bugfixes": "./plugin-bugfixes.js"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.js && node ./scripts/build-modules-support.js && node ./scripts/build-bugfixes-targets.js"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"babel",
|
|
||||||
"compat-table",
|
|
||||||
"compat-data"
|
|
||||||
],
|
|
||||||
"devDependencies": {
|
|
||||||
"@mdn/browser-compat-data": "^5.5.36",
|
|
||||||
"core-js-compat": "^3.37.1",
|
|
||||||
"electron-to-chromium": "^1.4.816"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
},
|
|
||||||
"type": "commonjs"
|
|
||||||
}
|
|
||||||
1
node_modules/@babel/compat-data/plugin-bugfixes.js
generated
vendored
1
node_modules/@babel/compat-data/plugin-bugfixes.js
generated
vendored
@@ -1 +0,0 @@
|
|||||||
module.exports = require("./data/plugin-bugfixes.json");
|
|
||||||
1
node_modules/@babel/compat-data/plugins.js
generated
vendored
1
node_modules/@babel/compat-data/plugins.js
generated
vendored
@@ -1 +0,0 @@
|
|||||||
module.exports = require("./data/plugins.json");
|
|
||||||
22
node_modules/@babel/core/LICENSE
generated
vendored
22
node_modules/@babel/core/LICENSE
generated
vendored
@@ -1,22 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
19
node_modules/@babel/core/README.md
generated
vendored
19
node_modules/@babel/core/README.md
generated
vendored
@@ -1,19 +0,0 @@
|
|||||||
# @babel/core
|
|
||||||
|
|
||||||
> Babel compiler core.
|
|
||||||
|
|
||||||
See our website [@babel/core](https://babeljs.io/docs/babel-core) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen) associated with this package.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Using npm:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --save-dev @babel/core
|
|
||||||
```
|
|
||||||
|
|
||||||
or using yarn:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @babel/core --dev
|
|
||||||
```
|
|
||||||
59
node_modules/@babel/core/cjs-proxy.cjs
generated
vendored
59
node_modules/@babel/core/cjs-proxy.cjs
generated
vendored
@@ -1,59 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
const babelP = import("./lib/index.js");
|
|
||||||
let babel = null;
|
|
||||||
Object.defineProperty(exports, "__ initialize @babel/core cjs proxy __", {
|
|
||||||
set(val) {
|
|
||||||
babel = val;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
exports.version = require("./package.json").version;
|
|
||||||
|
|
||||||
const functionNames = [
|
|
||||||
"createConfigItem",
|
|
||||||
"loadPartialConfig",
|
|
||||||
"loadOptions",
|
|
||||||
"transform",
|
|
||||||
"transformFile",
|
|
||||||
"transformFromAst",
|
|
||||||
"parse",
|
|
||||||
];
|
|
||||||
const propertyNames = [
|
|
||||||
"buildExternalHelpers",
|
|
||||||
"types",
|
|
||||||
"tokTypes",
|
|
||||||
"traverse",
|
|
||||||
"template",
|
|
||||||
];
|
|
||||||
|
|
||||||
for (const name of functionNames) {
|
|
||||||
exports[name] = function (...args) {
|
|
||||||
babelP.then(babel => {
|
|
||||||
babel[name](...args);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports[`${name}Async`] = function (...args) {
|
|
||||||
return babelP.then(babel => babel[`${name}Async`](...args));
|
|
||||||
};
|
|
||||||
exports[`${name}Sync`] = function (...args) {
|
|
||||||
if (!babel) throw notLoadedError(`${name}Sync`, "callable");
|
|
||||||
return babel[`${name}Sync`](...args);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const name of propertyNames) {
|
|
||||||
Object.defineProperty(exports, name, {
|
|
||||||
get() {
|
|
||||||
if (!babel) throw notLoadedError(name, "accessible");
|
|
||||||
return babel[name];
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function notLoadedError(name, keyword) {
|
|
||||||
return new Error(
|
|
||||||
`The \`${name}\` export of @babel/core is only ${keyword}` +
|
|
||||||
` from the CommonJS version after that the ESM version is loaded.`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
3
node_modules/@babel/core/lib/config/cache-contexts.js
generated
vendored
3
node_modules/@babel/core/lib/config/cache-contexts.js
generated
vendored
@@ -1,3 +0,0 @@
|
|||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=cache-contexts.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/cache-contexts.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/cache-contexts.js.map
generated
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"names":[],"sources":["../../src/config/cache-contexts.ts"],"sourcesContent":["import type { Targets } from \"@babel/helper-compilation-targets\";\n\nimport type { ConfigContext } from \"./config-chain.ts\";\nimport type { CallerMetadata } from \"./validation/options.ts\";\n\nexport type { ConfigContext as FullConfig };\n\nexport type FullPreset = {\n targets: Targets;\n} & ConfigContext;\nexport type FullPlugin = {\n assumptions: { [name: string]: boolean };\n} & FullPreset;\n\n// Context not including filename since it is used in places that cannot\n// process 'ignore'/'only' and other filename-based logic.\nexport type SimpleConfig = {\n envName: string;\n caller: CallerMetadata | undefined;\n};\nexport type SimplePreset = {\n targets: Targets;\n} & SimpleConfig;\nexport type SimplePlugin = {\n assumptions: {\n [name: string]: boolean;\n };\n} & SimplePreset;\n"],"mappings":"","ignoreList":[]}
|
|
||||||
261
node_modules/@babel/core/lib/config/caching.js
generated
vendored
261
node_modules/@babel/core/lib/config/caching.js
generated
vendored
@@ -1,261 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.assertSimpleType = assertSimpleType;
|
|
||||||
exports.makeStrongCache = makeStrongCache;
|
|
||||||
exports.makeStrongCacheSync = makeStrongCacheSync;
|
|
||||||
exports.makeWeakCache = makeWeakCache;
|
|
||||||
exports.makeWeakCacheSync = makeWeakCacheSync;
|
|
||||||
function _gensync() {
|
|
||||||
const data = require("gensync");
|
|
||||||
_gensync = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
var _async = require("../gensync-utils/async.js");
|
|
||||||
var _util = require("./util.js");
|
|
||||||
const synchronize = gen => {
|
|
||||||
return _gensync()(gen).sync;
|
|
||||||
};
|
|
||||||
function* genTrue() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
function makeWeakCache(handler) {
|
|
||||||
return makeCachedFunction(WeakMap, handler);
|
|
||||||
}
|
|
||||||
function makeWeakCacheSync(handler) {
|
|
||||||
return synchronize(makeWeakCache(handler));
|
|
||||||
}
|
|
||||||
function makeStrongCache(handler) {
|
|
||||||
return makeCachedFunction(Map, handler);
|
|
||||||
}
|
|
||||||
function makeStrongCacheSync(handler) {
|
|
||||||
return synchronize(makeStrongCache(handler));
|
|
||||||
}
|
|
||||||
function makeCachedFunction(CallCache, handler) {
|
|
||||||
const callCacheSync = new CallCache();
|
|
||||||
const callCacheAsync = new CallCache();
|
|
||||||
const futureCache = new CallCache();
|
|
||||||
return function* cachedFunction(arg, data) {
|
|
||||||
const asyncContext = yield* (0, _async.isAsync)();
|
|
||||||
const callCache = asyncContext ? callCacheAsync : callCacheSync;
|
|
||||||
const cached = yield* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data);
|
|
||||||
if (cached.valid) return cached.value;
|
|
||||||
const cache = new CacheConfigurator(data);
|
|
||||||
const handlerResult = handler(arg, cache);
|
|
||||||
let finishLock;
|
|
||||||
let value;
|
|
||||||
if ((0, _util.isIterableIterator)(handlerResult)) {
|
|
||||||
value = yield* (0, _async.onFirstPause)(handlerResult, () => {
|
|
||||||
finishLock = setupAsyncLocks(cache, futureCache, arg);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
value = handlerResult;
|
|
||||||
}
|
|
||||||
updateFunctionCache(callCache, cache, arg, value);
|
|
||||||
if (finishLock) {
|
|
||||||
futureCache.delete(arg);
|
|
||||||
finishLock.release(value);
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function* getCachedValue(cache, arg, data) {
|
|
||||||
const cachedValue = cache.get(arg);
|
|
||||||
if (cachedValue) {
|
|
||||||
for (const {
|
|
||||||
value,
|
|
||||||
valid
|
|
||||||
} of cachedValue) {
|
|
||||||
if (yield* valid(data)) return {
|
|
||||||
valid: true,
|
|
||||||
value
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
valid: false,
|
|
||||||
value: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) {
|
|
||||||
const cached = yield* getCachedValue(callCache, arg, data);
|
|
||||||
if (cached.valid) {
|
|
||||||
return cached;
|
|
||||||
}
|
|
||||||
if (asyncContext) {
|
|
||||||
const cached = yield* getCachedValue(futureCache, arg, data);
|
|
||||||
if (cached.valid) {
|
|
||||||
const value = yield* (0, _async.waitFor)(cached.value.promise);
|
|
||||||
return {
|
|
||||||
valid: true,
|
|
||||||
value
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
valid: false,
|
|
||||||
value: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function setupAsyncLocks(config, futureCache, arg) {
|
|
||||||
const finishLock = new Lock();
|
|
||||||
updateFunctionCache(futureCache, config, arg, finishLock);
|
|
||||||
return finishLock;
|
|
||||||
}
|
|
||||||
function updateFunctionCache(cache, config, arg, value) {
|
|
||||||
if (!config.configured()) config.forever();
|
|
||||||
let cachedValue = cache.get(arg);
|
|
||||||
config.deactivate();
|
|
||||||
switch (config.mode()) {
|
|
||||||
case "forever":
|
|
||||||
cachedValue = [{
|
|
||||||
value,
|
|
||||||
valid: genTrue
|
|
||||||
}];
|
|
||||||
cache.set(arg, cachedValue);
|
|
||||||
break;
|
|
||||||
case "invalidate":
|
|
||||||
cachedValue = [{
|
|
||||||
value,
|
|
||||||
valid: config.validator()
|
|
||||||
}];
|
|
||||||
cache.set(arg, cachedValue);
|
|
||||||
break;
|
|
||||||
case "valid":
|
|
||||||
if (cachedValue) {
|
|
||||||
cachedValue.push({
|
|
||||||
value,
|
|
||||||
valid: config.validator()
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
cachedValue = [{
|
|
||||||
value,
|
|
||||||
valid: config.validator()
|
|
||||||
}];
|
|
||||||
cache.set(arg, cachedValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class CacheConfigurator {
|
|
||||||
constructor(data) {
|
|
||||||
this._active = true;
|
|
||||||
this._never = false;
|
|
||||||
this._forever = false;
|
|
||||||
this._invalidate = false;
|
|
||||||
this._configured = false;
|
|
||||||
this._pairs = [];
|
|
||||||
this._data = void 0;
|
|
||||||
this._data = data;
|
|
||||||
}
|
|
||||||
simple() {
|
|
||||||
return makeSimpleConfigurator(this);
|
|
||||||
}
|
|
||||||
mode() {
|
|
||||||
if (this._never) return "never";
|
|
||||||
if (this._forever) return "forever";
|
|
||||||
if (this._invalidate) return "invalidate";
|
|
||||||
return "valid";
|
|
||||||
}
|
|
||||||
forever() {
|
|
||||||
if (!this._active) {
|
|
||||||
throw new Error("Cannot change caching after evaluation has completed.");
|
|
||||||
}
|
|
||||||
if (this._never) {
|
|
||||||
throw new Error("Caching has already been configured with .never()");
|
|
||||||
}
|
|
||||||
this._forever = true;
|
|
||||||
this._configured = true;
|
|
||||||
}
|
|
||||||
never() {
|
|
||||||
if (!this._active) {
|
|
||||||
throw new Error("Cannot change caching after evaluation has completed.");
|
|
||||||
}
|
|
||||||
if (this._forever) {
|
|
||||||
throw new Error("Caching has already been configured with .forever()");
|
|
||||||
}
|
|
||||||
this._never = true;
|
|
||||||
this._configured = true;
|
|
||||||
}
|
|
||||||
using(handler) {
|
|
||||||
if (!this._active) {
|
|
||||||
throw new Error("Cannot change caching after evaluation has completed.");
|
|
||||||
}
|
|
||||||
if (this._never || this._forever) {
|
|
||||||
throw new Error("Caching has already been configured with .never or .forever()");
|
|
||||||
}
|
|
||||||
this._configured = true;
|
|
||||||
const key = handler(this._data);
|
|
||||||
const fn = (0, _async.maybeAsync)(handler, `You appear to be using an async cache handler, but Babel has been called synchronously`);
|
|
||||||
if ((0, _async.isThenable)(key)) {
|
|
||||||
return key.then(key => {
|
|
||||||
this._pairs.push([key, fn]);
|
|
||||||
return key;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this._pairs.push([key, fn]);
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
invalidate(handler) {
|
|
||||||
this._invalidate = true;
|
|
||||||
return this.using(handler);
|
|
||||||
}
|
|
||||||
validator() {
|
|
||||||
const pairs = this._pairs;
|
|
||||||
return function* (data) {
|
|
||||||
for (const [key, fn] of pairs) {
|
|
||||||
if (key !== (yield* fn(data))) return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
deactivate() {
|
|
||||||
this._active = false;
|
|
||||||
}
|
|
||||||
configured() {
|
|
||||||
return this._configured;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function makeSimpleConfigurator(cache) {
|
|
||||||
function cacheFn(val) {
|
|
||||||
if (typeof val === "boolean") {
|
|
||||||
if (val) cache.forever();else cache.never();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return cache.using(() => assertSimpleType(val()));
|
|
||||||
}
|
|
||||||
cacheFn.forever = () => cache.forever();
|
|
||||||
cacheFn.never = () => cache.never();
|
|
||||||
cacheFn.using = cb => cache.using(() => assertSimpleType(cb()));
|
|
||||||
cacheFn.invalidate = cb => cache.invalidate(() => assertSimpleType(cb()));
|
|
||||||
return cacheFn;
|
|
||||||
}
|
|
||||||
function assertSimpleType(value) {
|
|
||||||
if ((0, _async.isThenable)(value)) {
|
|
||||||
throw new Error(`You appear to be using an async cache handler, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously handle your caching logic.`);
|
|
||||||
}
|
|
||||||
if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") {
|
|
||||||
throw new Error("Cache keys must be either string, boolean, number, null, or undefined.");
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
class Lock {
|
|
||||||
constructor() {
|
|
||||||
this.released = false;
|
|
||||||
this.promise = void 0;
|
|
||||||
this._resolve = void 0;
|
|
||||||
this.promise = new Promise(resolve => {
|
|
||||||
this._resolve = resolve;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
release(value) {
|
|
||||||
this.released = true;
|
|
||||||
this._resolve(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=caching.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/caching.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/caching.js.map
generated
vendored
File diff suppressed because one or more lines are too long
469
node_modules/@babel/core/lib/config/config-chain.js
generated
vendored
469
node_modules/@babel/core/lib/config/config-chain.js
generated
vendored
@@ -1,469 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.buildPresetChain = buildPresetChain;
|
|
||||||
exports.buildPresetChainWalker = void 0;
|
|
||||||
exports.buildRootChain = buildRootChain;
|
|
||||||
function _path() {
|
|
||||||
const data = require("path");
|
|
||||||
_path = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
function _debug() {
|
|
||||||
const data = require("debug");
|
|
||||||
_debug = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
var _options = require("./validation/options.js");
|
|
||||||
var _patternToRegex = require("./pattern-to-regex.js");
|
|
||||||
var _printer = require("./printer.js");
|
|
||||||
var _rewriteStackTrace = require("../errors/rewrite-stack-trace.js");
|
|
||||||
var _configError = require("../errors/config-error.js");
|
|
||||||
var _index = require("./files/index.js");
|
|
||||||
var _caching = require("./caching.js");
|
|
||||||
var _configDescriptors = require("./config-descriptors.js");
|
|
||||||
const debug = _debug()("babel:config:config-chain");
|
|
||||||
function* buildPresetChain(arg, context) {
|
|
||||||
const chain = yield* buildPresetChainWalker(arg, context);
|
|
||||||
if (!chain) return null;
|
|
||||||
return {
|
|
||||||
plugins: dedupDescriptors(chain.plugins),
|
|
||||||
presets: dedupDescriptors(chain.presets),
|
|
||||||
options: chain.options.map(o => normalizeOptions(o)),
|
|
||||||
files: new Set()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
const buildPresetChainWalker = exports.buildPresetChainWalker = makeChainWalker({
|
|
||||||
root: preset => loadPresetDescriptors(preset),
|
|
||||||
env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName),
|
|
||||||
overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index),
|
|
||||||
overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName),
|
|
||||||
createLogger: () => () => {}
|
|
||||||
});
|
|
||||||
const loadPresetDescriptors = (0, _caching.makeWeakCacheSync)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors));
|
|
||||||
const loadPresetEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName)));
|
|
||||||
const loadPresetOverridesDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index)));
|
|
||||||
const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName))));
|
|
||||||
function* buildRootChain(opts, context) {
|
|
||||||
let configReport, babelRcReport;
|
|
||||||
const programmaticLogger = new _printer.ConfigPrinter();
|
|
||||||
const programmaticChain = yield* loadProgrammaticChain({
|
|
||||||
options: opts,
|
|
||||||
dirname: context.cwd
|
|
||||||
}, context, undefined, programmaticLogger);
|
|
||||||
if (!programmaticChain) return null;
|
|
||||||
const programmaticReport = yield* programmaticLogger.output();
|
|
||||||
let configFile;
|
|
||||||
if (typeof opts.configFile === "string") {
|
|
||||||
configFile = yield* (0, _index.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller);
|
|
||||||
} else if (opts.configFile !== false) {
|
|
||||||
configFile = yield* (0, _index.findRootConfig)(context.root, context.envName, context.caller);
|
|
||||||
}
|
|
||||||
let {
|
|
||||||
babelrc,
|
|
||||||
babelrcRoots
|
|
||||||
} = opts;
|
|
||||||
let babelrcRootsDirectory = context.cwd;
|
|
||||||
const configFileChain = emptyChain();
|
|
||||||
const configFileLogger = new _printer.ConfigPrinter();
|
|
||||||
if (configFile) {
|
|
||||||
const validatedFile = validateConfigFile(configFile);
|
|
||||||
const result = yield* loadFileChain(validatedFile, context, undefined, configFileLogger);
|
|
||||||
if (!result) return null;
|
|
||||||
configReport = yield* configFileLogger.output();
|
|
||||||
if (babelrc === undefined) {
|
|
||||||
babelrc = validatedFile.options.babelrc;
|
|
||||||
}
|
|
||||||
if (babelrcRoots === undefined) {
|
|
||||||
babelrcRootsDirectory = validatedFile.dirname;
|
|
||||||
babelrcRoots = validatedFile.options.babelrcRoots;
|
|
||||||
}
|
|
||||||
mergeChain(configFileChain, result);
|
|
||||||
}
|
|
||||||
let ignoreFile, babelrcFile;
|
|
||||||
let isIgnored = false;
|
|
||||||
const fileChain = emptyChain();
|
|
||||||
if ((babelrc === true || babelrc === undefined) && typeof context.filename === "string") {
|
|
||||||
const pkgData = yield* (0, _index.findPackageData)(context.filename);
|
|
||||||
if (pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) {
|
|
||||||
({
|
|
||||||
ignore: ignoreFile,
|
|
||||||
config: babelrcFile
|
|
||||||
} = yield* (0, _index.findRelativeConfig)(pkgData, context.envName, context.caller));
|
|
||||||
if (ignoreFile) {
|
|
||||||
fileChain.files.add(ignoreFile.filepath);
|
|
||||||
}
|
|
||||||
if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) {
|
|
||||||
isIgnored = true;
|
|
||||||
}
|
|
||||||
if (babelrcFile && !isIgnored) {
|
|
||||||
const validatedFile = validateBabelrcFile(babelrcFile);
|
|
||||||
const babelrcLogger = new _printer.ConfigPrinter();
|
|
||||||
const result = yield* loadFileChain(validatedFile, context, undefined, babelrcLogger);
|
|
||||||
if (!result) {
|
|
||||||
isIgnored = true;
|
|
||||||
} else {
|
|
||||||
babelRcReport = yield* babelrcLogger.output();
|
|
||||||
mergeChain(fileChain, result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (babelrcFile && isIgnored) {
|
|
||||||
fileChain.files.add(babelrcFile.filepath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (context.showConfig) {
|
|
||||||
console.log(`Babel configs on "${context.filename}" (ascending priority):\n` + [configReport, babelRcReport, programmaticReport].filter(x => !!x).join("\n\n") + "\n-----End Babel configs-----");
|
|
||||||
}
|
|
||||||
const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain);
|
|
||||||
return {
|
|
||||||
plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),
|
|
||||||
presets: isIgnored ? [] : dedupDescriptors(chain.presets),
|
|
||||||
options: isIgnored ? [] : chain.options.map(o => normalizeOptions(o)),
|
|
||||||
fileHandling: isIgnored ? "ignored" : "transpile",
|
|
||||||
ignore: ignoreFile || undefined,
|
|
||||||
babelrc: babelrcFile || undefined,
|
|
||||||
config: configFile || undefined,
|
|
||||||
files: chain.files
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) {
|
|
||||||
if (typeof babelrcRoots === "boolean") return babelrcRoots;
|
|
||||||
const absoluteRoot = context.root;
|
|
||||||
if (babelrcRoots === undefined) {
|
|
||||||
return pkgData.directories.includes(absoluteRoot);
|
|
||||||
}
|
|
||||||
let babelrcPatterns = babelrcRoots;
|
|
||||||
if (!Array.isArray(babelrcPatterns)) {
|
|
||||||
babelrcPatterns = [babelrcPatterns];
|
|
||||||
}
|
|
||||||
babelrcPatterns = babelrcPatterns.map(pat => {
|
|
||||||
return typeof pat === "string" ? _path().resolve(babelrcRootsDirectory, pat) : pat;
|
|
||||||
});
|
|
||||||
if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {
|
|
||||||
return pkgData.directories.includes(absoluteRoot);
|
|
||||||
}
|
|
||||||
return babelrcPatterns.some(pat => {
|
|
||||||
if (typeof pat === "string") {
|
|
||||||
pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory);
|
|
||||||
}
|
|
||||||
return pkgData.directories.some(directory => {
|
|
||||||
return matchPattern(pat, babelrcRootsDirectory, directory, context);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const validateConfigFile = (0, _caching.makeWeakCacheSync)(file => ({
|
|
||||||
filepath: file.filepath,
|
|
||||||
dirname: file.dirname,
|
|
||||||
options: (0, _options.validate)("configfile", file.options, file.filepath)
|
|
||||||
}));
|
|
||||||
const validateBabelrcFile = (0, _caching.makeWeakCacheSync)(file => ({
|
|
||||||
filepath: file.filepath,
|
|
||||||
dirname: file.dirname,
|
|
||||||
options: (0, _options.validate)("babelrcfile", file.options, file.filepath)
|
|
||||||
}));
|
|
||||||
const validateExtendFile = (0, _caching.makeWeakCacheSync)(file => ({
|
|
||||||
filepath: file.filepath,
|
|
||||||
dirname: file.dirname,
|
|
||||||
options: (0, _options.validate)("extendsfile", file.options, file.filepath)
|
|
||||||
}));
|
|
||||||
const loadProgrammaticChain = makeChainWalker({
|
|
||||||
root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors),
|
|
||||||
env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName),
|
|
||||||
overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index),
|
|
||||||
overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName),
|
|
||||||
createLogger: (input, context, baseLogger) => buildProgrammaticLogger(input, context, baseLogger)
|
|
||||||
});
|
|
||||||
const loadFileChainWalker = makeChainWalker({
|
|
||||||
root: file => loadFileDescriptors(file),
|
|
||||||
env: (file, envName) => loadFileEnvDescriptors(file)(envName),
|
|
||||||
overrides: (file, index) => loadFileOverridesDescriptors(file)(index),
|
|
||||||
overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName),
|
|
||||||
createLogger: (file, context, baseLogger) => buildFileLogger(file.filepath, context, baseLogger)
|
|
||||||
});
|
|
||||||
function* loadFileChain(input, context, files, baseLogger) {
|
|
||||||
const chain = yield* loadFileChainWalker(input, context, files, baseLogger);
|
|
||||||
chain == null || chain.files.add(input.filepath);
|
|
||||||
return chain;
|
|
||||||
}
|
|
||||||
const loadFileDescriptors = (0, _caching.makeWeakCacheSync)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors));
|
|
||||||
const loadFileEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName)));
|
|
||||||
const loadFileOverridesDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index)));
|
|
||||||
const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName))));
|
|
||||||
function buildFileLogger(filepath, context, baseLogger) {
|
|
||||||
if (!baseLogger) {
|
|
||||||
return () => {};
|
|
||||||
}
|
|
||||||
return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Config, {
|
|
||||||
filepath
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function buildRootDescriptors({
|
|
||||||
dirname,
|
|
||||||
options
|
|
||||||
}, alias, descriptors) {
|
|
||||||
return descriptors(dirname, options, alias);
|
|
||||||
}
|
|
||||||
function buildProgrammaticLogger(_, context, baseLogger) {
|
|
||||||
var _context$caller;
|
|
||||||
if (!baseLogger) {
|
|
||||||
return () => {};
|
|
||||||
}
|
|
||||||
return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Programmatic, {
|
|
||||||
callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function buildEnvDescriptors({
|
|
||||||
dirname,
|
|
||||||
options
|
|
||||||
}, alias, descriptors, envName) {
|
|
||||||
var _options$env;
|
|
||||||
const opts = (_options$env = options.env) == null ? void 0 : _options$env[envName];
|
|
||||||
return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null;
|
|
||||||
}
|
|
||||||
function buildOverrideDescriptors({
|
|
||||||
dirname,
|
|
||||||
options
|
|
||||||
}, alias, descriptors, index) {
|
|
||||||
var _options$overrides;
|
|
||||||
const opts = (_options$overrides = options.overrides) == null ? void 0 : _options$overrides[index];
|
|
||||||
if (!opts) throw new Error("Assertion failure - missing override");
|
|
||||||
return descriptors(dirname, opts, `${alias}.overrides[${index}]`);
|
|
||||||
}
|
|
||||||
function buildOverrideEnvDescriptors({
|
|
||||||
dirname,
|
|
||||||
options
|
|
||||||
}, alias, descriptors, index, envName) {
|
|
||||||
var _options$overrides2, _override$env;
|
|
||||||
const override = (_options$overrides2 = options.overrides) == null ? void 0 : _options$overrides2[index];
|
|
||||||
if (!override) throw new Error("Assertion failure - missing override");
|
|
||||||
const opts = (_override$env = override.env) == null ? void 0 : _override$env[envName];
|
|
||||||
return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null;
|
|
||||||
}
|
|
||||||
function makeChainWalker({
|
|
||||||
root,
|
|
||||||
env,
|
|
||||||
overrides,
|
|
||||||
overridesEnv,
|
|
||||||
createLogger
|
|
||||||
}) {
|
|
||||||
return function* chainWalker(input, context, files = new Set(), baseLogger) {
|
|
||||||
const {
|
|
||||||
dirname
|
|
||||||
} = input;
|
|
||||||
const flattenedConfigs = [];
|
|
||||||
const rootOpts = root(input);
|
|
||||||
if (configIsApplicable(rootOpts, dirname, context, input.filepath)) {
|
|
||||||
flattenedConfigs.push({
|
|
||||||
config: rootOpts,
|
|
||||||
envName: undefined,
|
|
||||||
index: undefined
|
|
||||||
});
|
|
||||||
const envOpts = env(input, context.envName);
|
|
||||||
if (envOpts && configIsApplicable(envOpts, dirname, context, input.filepath)) {
|
|
||||||
flattenedConfigs.push({
|
|
||||||
config: envOpts,
|
|
||||||
envName: context.envName,
|
|
||||||
index: undefined
|
|
||||||
});
|
|
||||||
}
|
|
||||||
(rootOpts.options.overrides || []).forEach((_, index) => {
|
|
||||||
const overrideOps = overrides(input, index);
|
|
||||||
if (configIsApplicable(overrideOps, dirname, context, input.filepath)) {
|
|
||||||
flattenedConfigs.push({
|
|
||||||
config: overrideOps,
|
|
||||||
index,
|
|
||||||
envName: undefined
|
|
||||||
});
|
|
||||||
const overrideEnvOpts = overridesEnv(input, index, context.envName);
|
|
||||||
if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context, input.filepath)) {
|
|
||||||
flattenedConfigs.push({
|
|
||||||
config: overrideEnvOpts,
|
|
||||||
index,
|
|
||||||
envName: context.envName
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (flattenedConfigs.some(({
|
|
||||||
config: {
|
|
||||||
options: {
|
|
||||||
ignore,
|
|
||||||
only
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}) => shouldIgnore(context, ignore, only, dirname))) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
const chain = emptyChain();
|
|
||||||
const logger = createLogger(input, context, baseLogger);
|
|
||||||
for (const {
|
|
||||||
config,
|
|
||||||
index,
|
|
||||||
envName
|
|
||||||
} of flattenedConfigs) {
|
|
||||||
if (!(yield* mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger))) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
logger(config, index, envName);
|
|
||||||
yield* mergeChainOpts(chain, config);
|
|
||||||
}
|
|
||||||
return chain;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function* mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) {
|
|
||||||
if (opts.extends === undefined) return true;
|
|
||||||
const file = yield* (0, _index.loadConfig)(opts.extends, dirname, context.envName, context.caller);
|
|
||||||
if (files.has(file)) {
|
|
||||||
throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n"));
|
|
||||||
}
|
|
||||||
files.add(file);
|
|
||||||
const fileChain = yield* loadFileChain(validateExtendFile(file), context, files, baseLogger);
|
|
||||||
files.delete(file);
|
|
||||||
if (!fileChain) return false;
|
|
||||||
mergeChain(chain, fileChain);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
function mergeChain(target, source) {
|
|
||||||
target.options.push(...source.options);
|
|
||||||
target.plugins.push(...source.plugins);
|
|
||||||
target.presets.push(...source.presets);
|
|
||||||
for (const file of source.files) {
|
|
||||||
target.files.add(file);
|
|
||||||
}
|
|
||||||
return target;
|
|
||||||
}
|
|
||||||
function* mergeChainOpts(target, {
|
|
||||||
options,
|
|
||||||
plugins,
|
|
||||||
presets
|
|
||||||
}) {
|
|
||||||
target.options.push(options);
|
|
||||||
target.plugins.push(...(yield* plugins()));
|
|
||||||
target.presets.push(...(yield* presets()));
|
|
||||||
return target;
|
|
||||||
}
|
|
||||||
function emptyChain() {
|
|
||||||
return {
|
|
||||||
options: [],
|
|
||||||
presets: [],
|
|
||||||
plugins: [],
|
|
||||||
files: new Set()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function normalizeOptions(opts) {
|
|
||||||
const options = Object.assign({}, opts);
|
|
||||||
delete options.extends;
|
|
||||||
delete options.env;
|
|
||||||
delete options.overrides;
|
|
||||||
delete options.plugins;
|
|
||||||
delete options.presets;
|
|
||||||
delete options.passPerPreset;
|
|
||||||
delete options.ignore;
|
|
||||||
delete options.only;
|
|
||||||
delete options.test;
|
|
||||||
delete options.include;
|
|
||||||
delete options.exclude;
|
|
||||||
if (hasOwnProperty.call(options, "sourceMap")) {
|
|
||||||
options.sourceMaps = options.sourceMap;
|
|
||||||
delete options.sourceMap;
|
|
||||||
}
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
function dedupDescriptors(items) {
|
|
||||||
const map = new Map();
|
|
||||||
const descriptors = [];
|
|
||||||
for (const item of items) {
|
|
||||||
if (typeof item.value === "function") {
|
|
||||||
const fnKey = item.value;
|
|
||||||
let nameMap = map.get(fnKey);
|
|
||||||
if (!nameMap) {
|
|
||||||
nameMap = new Map();
|
|
||||||
map.set(fnKey, nameMap);
|
|
||||||
}
|
|
||||||
let desc = nameMap.get(item.name);
|
|
||||||
if (!desc) {
|
|
||||||
desc = {
|
|
||||||
value: item
|
|
||||||
};
|
|
||||||
descriptors.push(desc);
|
|
||||||
if (!item.ownPass) nameMap.set(item.name, desc);
|
|
||||||
} else {
|
|
||||||
desc.value = item;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
descriptors.push({
|
|
||||||
value: item
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return descriptors.reduce((acc, desc) => {
|
|
||||||
acc.push(desc.value);
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
function configIsApplicable({
|
|
||||||
options
|
|
||||||
}, dirname, context, configName) {
|
|
||||||
return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname, configName)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname, configName)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname, configName));
|
|
||||||
}
|
|
||||||
function configFieldIsApplicable(context, test, dirname, configName) {
|
|
||||||
const patterns = Array.isArray(test) ? test : [test];
|
|
||||||
return matchesPatterns(context, patterns, dirname, configName);
|
|
||||||
}
|
|
||||||
function ignoreListReplacer(_key, value) {
|
|
||||||
if (value instanceof RegExp) {
|
|
||||||
return String(value);
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
function shouldIgnore(context, ignore, only, dirname) {
|
|
||||||
if (ignore && matchesPatterns(context, ignore, dirname)) {
|
|
||||||
var _context$filename;
|
|
||||||
const message = `No config is applied to "${(_context$filename = context.filename) != null ? _context$filename : "(unknown)"}" because it matches one of \`ignore: ${JSON.stringify(ignore, ignoreListReplacer)}\` from "${dirname}"`;
|
|
||||||
debug(message);
|
|
||||||
if (context.showConfig) {
|
|
||||||
console.log(message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (only && !matchesPatterns(context, only, dirname)) {
|
|
||||||
var _context$filename2;
|
|
||||||
const message = `No config is applied to "${(_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)"}" because it fails to match one of \`only: ${JSON.stringify(only, ignoreListReplacer)}\` from "${dirname}"`;
|
|
||||||
debug(message);
|
|
||||||
if (context.showConfig) {
|
|
||||||
console.log(message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
function matchesPatterns(context, patterns, dirname, configName) {
|
|
||||||
return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context, configName));
|
|
||||||
}
|
|
||||||
function matchPattern(pattern, dirname, pathToTest, context, configName) {
|
|
||||||
if (typeof pattern === "function") {
|
|
||||||
return !!(0, _rewriteStackTrace.endHiddenCallStack)(pattern)(pathToTest, {
|
|
||||||
dirname,
|
|
||||||
envName: context.envName,
|
|
||||||
caller: context.caller
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (typeof pathToTest !== "string") {
|
|
||||||
throw new _configError.default(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`, configName);
|
|
||||||
}
|
|
||||||
if (typeof pattern === "string") {
|
|
||||||
pattern = (0, _patternToRegex.default)(pattern, dirname);
|
|
||||||
}
|
|
||||||
return pattern.test(pathToTest);
|
|
||||||
}
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=config-chain.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/config-chain.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/config-chain.js.map
generated
vendored
File diff suppressed because one or more lines are too long
190
node_modules/@babel/core/lib/config/config-descriptors.js
generated
vendored
190
node_modules/@babel/core/lib/config/config-descriptors.js
generated
vendored
@@ -1,190 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.createCachedDescriptors = createCachedDescriptors;
|
|
||||||
exports.createDescriptor = createDescriptor;
|
|
||||||
exports.createUncachedDescriptors = createUncachedDescriptors;
|
|
||||||
function _gensync() {
|
|
||||||
const data = require("gensync");
|
|
||||||
_gensync = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
var _functional = require("../gensync-utils/functional.js");
|
|
||||||
var _index = require("./files/index.js");
|
|
||||||
var _item = require("./item.js");
|
|
||||||
var _caching = require("./caching.js");
|
|
||||||
var _resolveTargets = require("./resolve-targets.js");
|
|
||||||
function isEqualDescriptor(a, b) {
|
|
||||||
var _a$file, _b$file, _a$file2, _b$file2;
|
|
||||||
return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && ((_a$file = a.file) == null ? void 0 : _a$file.request) === ((_b$file = b.file) == null ? void 0 : _b$file.request) && ((_a$file2 = a.file) == null ? void 0 : _a$file2.resolved) === ((_b$file2 = b.file) == null ? void 0 : _b$file2.resolved);
|
|
||||||
}
|
|
||||||
function* handlerOf(value) {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
function optionsWithResolvedBrowserslistConfigFile(options, dirname) {
|
|
||||||
if (typeof options.browserslistConfigFile === "string") {
|
|
||||||
options.browserslistConfigFile = (0, _resolveTargets.resolveBrowserslistConfigFile)(options.browserslistConfigFile, dirname);
|
|
||||||
}
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
function createCachedDescriptors(dirname, options, alias) {
|
|
||||||
const {
|
|
||||||
plugins,
|
|
||||||
presets,
|
|
||||||
passPerPreset
|
|
||||||
} = options;
|
|
||||||
return {
|
|
||||||
options: optionsWithResolvedBrowserslistConfigFile(options, dirname),
|
|
||||||
plugins: plugins ? () => createCachedPluginDescriptors(plugins, dirname)(alias) : () => handlerOf([]),
|
|
||||||
presets: presets ? () => createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset) : () => handlerOf([])
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function createUncachedDescriptors(dirname, options, alias) {
|
|
||||||
return {
|
|
||||||
options: optionsWithResolvedBrowserslistConfigFile(options, dirname),
|
|
||||||
plugins: (0, _functional.once)(() => createPluginDescriptors(options.plugins || [], dirname, alias)),
|
|
||||||
presets: (0, _functional.once)(() => createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset))
|
|
||||||
};
|
|
||||||
}
|
|
||||||
const PRESET_DESCRIPTOR_CACHE = new WeakMap();
|
|
||||||
const createCachedPresetDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => {
|
|
||||||
const dirname = cache.using(dir => dir);
|
|
||||||
return (0, _caching.makeStrongCacheSync)(alias => (0, _caching.makeStrongCache)(function* (passPerPreset) {
|
|
||||||
const descriptors = yield* createPresetDescriptors(items, dirname, alias, passPerPreset);
|
|
||||||
return descriptors.map(desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc));
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
const PLUGIN_DESCRIPTOR_CACHE = new WeakMap();
|
|
||||||
const createCachedPluginDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => {
|
|
||||||
const dirname = cache.using(dir => dir);
|
|
||||||
return (0, _caching.makeStrongCache)(function* (alias) {
|
|
||||||
const descriptors = yield* createPluginDescriptors(items, dirname, alias);
|
|
||||||
return descriptors.map(desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
const DEFAULT_OPTIONS = {};
|
|
||||||
function loadCachedDescriptor(cache, desc) {
|
|
||||||
const {
|
|
||||||
value,
|
|
||||||
options = DEFAULT_OPTIONS
|
|
||||||
} = desc;
|
|
||||||
if (options === false) return desc;
|
|
||||||
let cacheByOptions = cache.get(value);
|
|
||||||
if (!cacheByOptions) {
|
|
||||||
cacheByOptions = new WeakMap();
|
|
||||||
cache.set(value, cacheByOptions);
|
|
||||||
}
|
|
||||||
let possibilities = cacheByOptions.get(options);
|
|
||||||
if (!possibilities) {
|
|
||||||
possibilities = [];
|
|
||||||
cacheByOptions.set(options, possibilities);
|
|
||||||
}
|
|
||||||
if (!possibilities.includes(desc)) {
|
|
||||||
const matches = possibilities.filter(possibility => isEqualDescriptor(possibility, desc));
|
|
||||||
if (matches.length > 0) {
|
|
||||||
return matches[0];
|
|
||||||
}
|
|
||||||
possibilities.push(desc);
|
|
||||||
}
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
function* createPresetDescriptors(items, dirname, alias, passPerPreset) {
|
|
||||||
return yield* createDescriptors("preset", items, dirname, alias, passPerPreset);
|
|
||||||
}
|
|
||||||
function* createPluginDescriptors(items, dirname, alias) {
|
|
||||||
return yield* createDescriptors("plugin", items, dirname, alias);
|
|
||||||
}
|
|
||||||
function* createDescriptors(type, items, dirname, alias, ownPass) {
|
|
||||||
const descriptors = yield* _gensync().all(items.map((item, index) => createDescriptor(item, dirname, {
|
|
||||||
type,
|
|
||||||
alias: `${alias}$${index}`,
|
|
||||||
ownPass: !!ownPass
|
|
||||||
})));
|
|
||||||
assertNoDuplicates(descriptors);
|
|
||||||
return descriptors;
|
|
||||||
}
|
|
||||||
function* createDescriptor(pair, dirname, {
|
|
||||||
type,
|
|
||||||
alias,
|
|
||||||
ownPass
|
|
||||||
}) {
|
|
||||||
const desc = (0, _item.getItemDescriptor)(pair);
|
|
||||||
if (desc) {
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
let name;
|
|
||||||
let options;
|
|
||||||
let value = pair;
|
|
||||||
if (Array.isArray(value)) {
|
|
||||||
if (value.length === 3) {
|
|
||||||
[value, options, name] = value;
|
|
||||||
} else {
|
|
||||||
[value, options] = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let file = undefined;
|
|
||||||
let filepath = null;
|
|
||||||
if (typeof value === "string") {
|
|
||||||
if (typeof type !== "string") {
|
|
||||||
throw new Error("To resolve a string-based item, the type of item must be given");
|
|
||||||
}
|
|
||||||
const resolver = type === "plugin" ? _index.loadPlugin : _index.loadPreset;
|
|
||||||
const request = value;
|
|
||||||
({
|
|
||||||
filepath,
|
|
||||||
value
|
|
||||||
} = yield* resolver(value, dirname));
|
|
||||||
file = {
|
|
||||||
request,
|
|
||||||
resolved: filepath
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (!value) {
|
|
||||||
throw new Error(`Unexpected falsy value: ${String(value)}`);
|
|
||||||
}
|
|
||||||
if (typeof value === "object" && value.__esModule) {
|
|
||||||
if (value.default) {
|
|
||||||
value = value.default;
|
|
||||||
} else {
|
|
||||||
throw new Error("Must export a default export when using ES6 modules.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (typeof value !== "object" && typeof value !== "function") {
|
|
||||||
throw new Error(`Unsupported format: ${typeof value}. Expected an object or a function.`);
|
|
||||||
}
|
|
||||||
if (filepath !== null && typeof value === "object" && value) {
|
|
||||||
throw new Error(`Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`);
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
name,
|
|
||||||
alias: filepath || alias,
|
|
||||||
value,
|
|
||||||
options,
|
|
||||||
dirname,
|
|
||||||
ownPass,
|
|
||||||
file
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function assertNoDuplicates(items) {
|
|
||||||
const map = new Map();
|
|
||||||
for (const item of items) {
|
|
||||||
if (typeof item.value !== "function") continue;
|
|
||||||
let nameMap = map.get(item.value);
|
|
||||||
if (!nameMap) {
|
|
||||||
nameMap = new Set();
|
|
||||||
map.set(item.value, nameMap);
|
|
||||||
}
|
|
||||||
if (nameMap.has(item.name)) {
|
|
||||||
const conflicts = items.filter(i => i.value === item.value);
|
|
||||||
throw new Error([`Duplicate plugin/preset detected.`, `If you'd like to use two separate instances of a plugin,`, `they need separate names, e.g.`, ``, ` plugins: [`, ` ['some-plugin', {}],`, ` ['some-plugin', {}, 'some unique name'],`, ` ]`, ``, `Duplicates detected are:`, `${JSON.stringify(conflicts, null, 2)}`].join("\n"));
|
|
||||||
}
|
|
||||||
nameMap.add(item.name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=config-descriptors.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/config-descriptors.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/config-descriptors.js.map
generated
vendored
File diff suppressed because one or more lines are too long
286
node_modules/@babel/core/lib/config/files/configuration.js
generated
vendored
286
node_modules/@babel/core/lib/config/files/configuration.js
generated
vendored
@@ -1,286 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.ROOT_CONFIG_FILENAMES = void 0;
|
|
||||||
exports.findConfigUpwards = findConfigUpwards;
|
|
||||||
exports.findRelativeConfig = findRelativeConfig;
|
|
||||||
exports.findRootConfig = findRootConfig;
|
|
||||||
exports.loadConfig = loadConfig;
|
|
||||||
exports.resolveShowConfigPath = resolveShowConfigPath;
|
|
||||||
function _debug() {
|
|
||||||
const data = require("debug");
|
|
||||||
_debug = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
function _fs() {
|
|
||||||
const data = require("fs");
|
|
||||||
_fs = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
function _path() {
|
|
||||||
const data = require("path");
|
|
||||||
_path = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
function _json() {
|
|
||||||
const data = require("json5");
|
|
||||||
_json = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
function _gensync() {
|
|
||||||
const data = require("gensync");
|
|
||||||
_gensync = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
var _caching = require("../caching.js");
|
|
||||||
var _configApi = require("../helpers/config-api.js");
|
|
||||||
var _utils = require("./utils.js");
|
|
||||||
var _moduleTypes = require("./module-types.js");
|
|
||||||
var _patternToRegex = require("../pattern-to-regex.js");
|
|
||||||
var _configError = require("../../errors/config-error.js");
|
|
||||||
var fs = require("../../gensync-utils/fs.js");
|
|
||||||
var _rewriteStackTrace = require("../../errors/rewrite-stack-trace.js");
|
|
||||||
const debug = _debug()("babel:config:loading:files:configuration");
|
|
||||||
const ROOT_CONFIG_FILENAMES = exports.ROOT_CONFIG_FILENAMES = ["babel.config.js", "babel.config.cjs", "babel.config.mjs", "babel.config.json", "babel.config.cts"];
|
|
||||||
const RELATIVE_CONFIG_FILENAMES = [".babelrc", ".babelrc.js", ".babelrc.cjs", ".babelrc.mjs", ".babelrc.json", ".babelrc.cts"];
|
|
||||||
const BABELIGNORE_FILENAME = ".babelignore";
|
|
||||||
const runConfig = (0, _caching.makeWeakCache)(function* runConfig(options, cache) {
|
|
||||||
yield* [];
|
|
||||||
return {
|
|
||||||
options: (0, _rewriteStackTrace.endHiddenCallStack)(options)((0, _configApi.makeConfigAPI)(cache)),
|
|
||||||
cacheNeedsConfiguration: !cache.configured()
|
|
||||||
};
|
|
||||||
});
|
|
||||||
function* readConfigCode(filepath, data) {
|
|
||||||
if (!_fs().existsSync(filepath)) return null;
|
|
||||||
let options = yield* (0, _moduleTypes.default)(filepath, "You appear to be using a native ECMAScript module configuration " + "file, which is only supported when running Babel asynchronously.");
|
|
||||||
let cacheNeedsConfiguration = false;
|
|
||||||
if (typeof options === "function") {
|
|
||||||
({
|
|
||||||
options,
|
|
||||||
cacheNeedsConfiguration
|
|
||||||
} = yield* runConfig(options, data));
|
|
||||||
}
|
|
||||||
if (!options || typeof options !== "object" || Array.isArray(options)) {
|
|
||||||
throw new _configError.default(`Configuration should be an exported JavaScript object.`, filepath);
|
|
||||||
}
|
|
||||||
if (typeof options.then === "function") {
|
|
||||||
options.catch == null || options.catch(() => {});
|
|
||||||
throw new _configError.default(`You appear to be using an async configuration, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously return your config.`, filepath);
|
|
||||||
}
|
|
||||||
if (cacheNeedsConfiguration) throwConfigError(filepath);
|
|
||||||
return buildConfigFileObject(options, filepath);
|
|
||||||
}
|
|
||||||
const cfboaf = new WeakMap();
|
|
||||||
function buildConfigFileObject(options, filepath) {
|
|
||||||
let configFilesByFilepath = cfboaf.get(options);
|
|
||||||
if (!configFilesByFilepath) {
|
|
||||||
cfboaf.set(options, configFilesByFilepath = new Map());
|
|
||||||
}
|
|
||||||
let configFile = configFilesByFilepath.get(filepath);
|
|
||||||
if (!configFile) {
|
|
||||||
configFile = {
|
|
||||||
filepath,
|
|
||||||
dirname: _path().dirname(filepath),
|
|
||||||
options
|
|
||||||
};
|
|
||||||
configFilesByFilepath.set(filepath, configFile);
|
|
||||||
}
|
|
||||||
return configFile;
|
|
||||||
}
|
|
||||||
const packageToBabelConfig = (0, _caching.makeWeakCacheSync)(file => {
|
|
||||||
const babel = file.options["babel"];
|
|
||||||
if (typeof babel === "undefined") return null;
|
|
||||||
if (typeof babel !== "object" || Array.isArray(babel) || babel === null) {
|
|
||||||
throw new _configError.default(`.babel property must be an object`, file.filepath);
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
filepath: file.filepath,
|
|
||||||
dirname: file.dirname,
|
|
||||||
options: babel
|
|
||||||
};
|
|
||||||
});
|
|
||||||
const readConfigJSON5 = (0, _utils.makeStaticFileCache)((filepath, content) => {
|
|
||||||
let options;
|
|
||||||
try {
|
|
||||||
options = _json().parse(content);
|
|
||||||
} catch (err) {
|
|
||||||
throw new _configError.default(`Error while parsing config - ${err.message}`, filepath);
|
|
||||||
}
|
|
||||||
if (!options) throw new _configError.default(`No config detected`, filepath);
|
|
||||||
if (typeof options !== "object") {
|
|
||||||
throw new _configError.default(`Config returned typeof ${typeof options}`, filepath);
|
|
||||||
}
|
|
||||||
if (Array.isArray(options)) {
|
|
||||||
throw new _configError.default(`Expected config object but found array`, filepath);
|
|
||||||
}
|
|
||||||
delete options["$schema"];
|
|
||||||
return {
|
|
||||||
filepath,
|
|
||||||
dirname: _path().dirname(filepath),
|
|
||||||
options
|
|
||||||
};
|
|
||||||
});
|
|
||||||
const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => {
|
|
||||||
const ignoreDir = _path().dirname(filepath);
|
|
||||||
const ignorePatterns = content.split("\n").map(line => line.replace(/#.*$/, "").trim()).filter(line => !!line);
|
|
||||||
for (const pattern of ignorePatterns) {
|
|
||||||
if (pattern[0] === "!") {
|
|
||||||
throw new _configError.default(`Negation of file paths is not supported.`, filepath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
filepath,
|
|
||||||
dirname: _path().dirname(filepath),
|
|
||||||
ignore: ignorePatterns.map(pattern => (0, _patternToRegex.default)(pattern, ignoreDir))
|
|
||||||
};
|
|
||||||
});
|
|
||||||
function findConfigUpwards(rootDir) {
|
|
||||||
let dirname = rootDir;
|
|
||||||
for (;;) {
|
|
||||||
for (const filename of ROOT_CONFIG_FILENAMES) {
|
|
||||||
if (_fs().existsSync(_path().join(dirname, filename))) {
|
|
||||||
return dirname;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const nextDir = _path().dirname(dirname);
|
|
||||||
if (dirname === nextDir) break;
|
|
||||||
dirname = nextDir;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
function* findRelativeConfig(packageData, envName, caller) {
|
|
||||||
let config = null;
|
|
||||||
let ignore = null;
|
|
||||||
const dirname = _path().dirname(packageData.filepath);
|
|
||||||
for (const loc of packageData.directories) {
|
|
||||||
if (!config) {
|
|
||||||
var _packageData$pkg;
|
|
||||||
config = yield* loadOneConfig(RELATIVE_CONFIG_FILENAMES, loc, envName, caller, ((_packageData$pkg = packageData.pkg) == null ? void 0 : _packageData$pkg.dirname) === loc ? packageToBabelConfig(packageData.pkg) : null);
|
|
||||||
}
|
|
||||||
if (!ignore) {
|
|
||||||
const ignoreLoc = _path().join(loc, BABELIGNORE_FILENAME);
|
|
||||||
ignore = yield* readIgnoreConfig(ignoreLoc);
|
|
||||||
if (ignore) {
|
|
||||||
debug("Found ignore %o from %o.", ignore.filepath, dirname);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
config,
|
|
||||||
ignore
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function findRootConfig(dirname, envName, caller) {
|
|
||||||
return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller);
|
|
||||||
}
|
|
||||||
function* loadOneConfig(names, dirname, envName, caller, previousConfig = null) {
|
|
||||||
const configs = yield* _gensync().all(names.map(filename => readConfig(_path().join(dirname, filename), envName, caller)));
|
|
||||||
const config = configs.reduce((previousConfig, config) => {
|
|
||||||
if (config && previousConfig) {
|
|
||||||
throw new _configError.default(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().basename(previousConfig.filepath)}\n` + ` - ${config.filepath}\n` + `from ${dirname}`);
|
|
||||||
}
|
|
||||||
return config || previousConfig;
|
|
||||||
}, previousConfig);
|
|
||||||
if (config) {
|
|
||||||
debug("Found configuration %o from %o.", config.filepath, dirname);
|
|
||||||
}
|
|
||||||
return config;
|
|
||||||
}
|
|
||||||
function* loadConfig(name, dirname, envName, caller) {
|
|
||||||
const filepath = (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
|
|
||||||
paths: [b]
|
|
||||||
}, M = require("module")) => {
|
|
||||||
let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
|
|
||||||
if (f) return f;
|
|
||||||
f = new Error(`Cannot resolve module '${r}'`);
|
|
||||||
f.code = "MODULE_NOT_FOUND";
|
|
||||||
throw f;
|
|
||||||
})(name, {
|
|
||||||
paths: [dirname]
|
|
||||||
});
|
|
||||||
const conf = yield* readConfig(filepath, envName, caller);
|
|
||||||
if (!conf) {
|
|
||||||
throw new _configError.default(`Config file contains no configuration data`, filepath);
|
|
||||||
}
|
|
||||||
debug("Loaded config %o from %o.", name, dirname);
|
|
||||||
return conf;
|
|
||||||
}
|
|
||||||
function readConfig(filepath, envName, caller) {
|
|
||||||
const ext = _path().extname(filepath);
|
|
||||||
switch (ext) {
|
|
||||||
case ".js":
|
|
||||||
case ".cjs":
|
|
||||||
case ".mjs":
|
|
||||||
case ".cts":
|
|
||||||
return readConfigCode(filepath, {
|
|
||||||
envName,
|
|
||||||
caller
|
|
||||||
});
|
|
||||||
default:
|
|
||||||
return readConfigJSON5(filepath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function* resolveShowConfigPath(dirname) {
|
|
||||||
const targetPath = process.env.BABEL_SHOW_CONFIG_FOR;
|
|
||||||
if (targetPath != null) {
|
|
||||||
const absolutePath = _path().resolve(dirname, targetPath);
|
|
||||||
const stats = yield* fs.stat(absolutePath);
|
|
||||||
if (!stats.isFile()) {
|
|
||||||
throw new Error(`${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`);
|
|
||||||
}
|
|
||||||
return absolutePath;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
function throwConfigError(filepath) {
|
|
||||||
throw new _configError.default(`\
|
|
||||||
Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured
|
|
||||||
for various types of caching, using the first param of their handler functions:
|
|
||||||
|
|
||||||
module.exports = function(api) {
|
|
||||||
// The API exposes the following:
|
|
||||||
|
|
||||||
// Cache the returned value forever and don't call this function again.
|
|
||||||
api.cache(true);
|
|
||||||
|
|
||||||
// Don't cache at all. Not recommended because it will be very slow.
|
|
||||||
api.cache(false);
|
|
||||||
|
|
||||||
// Cached based on the value of some function. If this function returns a value different from
|
|
||||||
// a previously-encountered value, the plugins will re-evaluate.
|
|
||||||
var env = api.cache(() => process.env.NODE_ENV);
|
|
||||||
|
|
||||||
// If testing for a specific env, we recommend specifics to avoid instantiating a plugin for
|
|
||||||
// any possible NODE_ENV value that might come up during plugin execution.
|
|
||||||
var isProd = api.cache(() => process.env.NODE_ENV === "production");
|
|
||||||
|
|
||||||
// .cache(fn) will perform a linear search though instances to find the matching plugin based
|
|
||||||
// based on previous instantiated plugins. If you want to recreate the plugin and discard the
|
|
||||||
// previous instance whenever something changes, you may use:
|
|
||||||
var isProd = api.cache.invalidate(() => process.env.NODE_ENV === "production");
|
|
||||||
|
|
||||||
// Note, we also expose the following more-verbose versions of the above examples:
|
|
||||||
api.cache.forever(); // api.cache(true)
|
|
||||||
api.cache.never(); // api.cache(false)
|
|
||||||
api.cache.using(fn); // api.cache(fn)
|
|
||||||
|
|
||||||
// Return the value that will be cached.
|
|
||||||
return { };
|
|
||||||
};`, filepath);
|
|
||||||
}
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=configuration.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/files/configuration.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/files/configuration.js.map
generated
vendored
File diff suppressed because one or more lines are too long
6
node_modules/@babel/core/lib/config/files/import.cjs
generated
vendored
6
node_modules/@babel/core/lib/config/files/import.cjs
generated
vendored
@@ -1,6 +0,0 @@
|
|||||||
module.exports = function import_(filepath) {
|
|
||||||
return import(filepath);
|
|
||||||
};
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=import.cjs.map
|
|
||||||
1
node_modules/@babel/core/lib/config/files/import.cjs.map
generated
vendored
1
node_modules/@babel/core/lib/config/files/import.cjs.map
generated
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"names":["module","exports","import_","filepath"],"sources":["../../../src/config/files/import.cjs"],"sourcesContent":["// We keep this in a separate file so that in older node versions, where\n// import() isn't supported, we can try/catch around the require() call\n// when loading this file.\n\nmodule.exports = function import_(filepath) {\n return import(filepath);\n};\n"],"mappings":"AAIAA,MAAM,CAACC,OAAO,GAAG,SAASC,OAAOA,CAACC,QAAQ,EAAE;EAC1C,OAAO,OAAOA,QAAQ,CAAC;AACzB,CAAC;AAAC","ignoreList":[]}
|
|
||||||
58
node_modules/@babel/core/lib/config/files/index-browser.js
generated
vendored
58
node_modules/@babel/core/lib/config/files/index-browser.js
generated
vendored
@@ -1,58 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.ROOT_CONFIG_FILENAMES = void 0;
|
|
||||||
exports.findConfigUpwards = findConfigUpwards;
|
|
||||||
exports.findPackageData = findPackageData;
|
|
||||||
exports.findRelativeConfig = findRelativeConfig;
|
|
||||||
exports.findRootConfig = findRootConfig;
|
|
||||||
exports.loadConfig = loadConfig;
|
|
||||||
exports.loadPlugin = loadPlugin;
|
|
||||||
exports.loadPreset = loadPreset;
|
|
||||||
exports.resolvePlugin = resolvePlugin;
|
|
||||||
exports.resolvePreset = resolvePreset;
|
|
||||||
exports.resolveShowConfigPath = resolveShowConfigPath;
|
|
||||||
function findConfigUpwards(rootDir) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
function* findPackageData(filepath) {
|
|
||||||
return {
|
|
||||||
filepath,
|
|
||||||
directories: [],
|
|
||||||
pkg: null,
|
|
||||||
isPackage: false
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function* findRelativeConfig(pkgData, envName, caller) {
|
|
||||||
return {
|
|
||||||
config: null,
|
|
||||||
ignore: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function* findRootConfig(dirname, envName, caller) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
function* loadConfig(name, dirname, envName, caller) {
|
|
||||||
throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);
|
|
||||||
}
|
|
||||||
function* resolveShowConfigPath(dirname) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
const ROOT_CONFIG_FILENAMES = exports.ROOT_CONFIG_FILENAMES = [];
|
|
||||||
function resolvePlugin(name, dirname) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
function resolvePreset(name, dirname) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
function loadPlugin(name, dirname) {
|
|
||||||
throw new Error(`Cannot load plugin ${name} relative to ${dirname} in a browser`);
|
|
||||||
}
|
|
||||||
function loadPreset(name, dirname) {
|
|
||||||
throw new Error(`Cannot load preset ${name} relative to ${dirname} in a browser`);
|
|
||||||
}
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=index-browser.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/files/index-browser.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/files/index-browser.js.map
generated
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"names":["findConfigUpwards","rootDir","findPackageData","filepath","directories","pkg","isPackage","findRelativeConfig","pkgData","envName","caller","config","ignore","findRootConfig","dirname","loadConfig","name","Error","resolveShowConfigPath","ROOT_CONFIG_FILENAMES","exports","resolvePlugin","resolvePreset","loadPlugin","loadPreset"],"sources":["../../../src/config/files/index-browser.ts"],"sourcesContent":["import type { Handler } from \"gensync\";\n\nimport type {\n ConfigFile,\n IgnoreFile,\n RelativeConfig,\n FilePackageData,\n} from \"./types.ts\";\n\nimport type { CallerMetadata } from \"../validation/options.ts\";\n\nexport type { ConfigFile, IgnoreFile, RelativeConfig, FilePackageData };\n\nexport function findConfigUpwards(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n rootDir: string,\n): string | null {\n return null;\n}\n\n// eslint-disable-next-line require-yield\nexport function* findPackageData(filepath: string): Handler<FilePackageData> {\n return {\n filepath,\n directories: [],\n pkg: null,\n isPackage: false,\n };\n}\n\n// eslint-disable-next-line require-yield\nexport function* findRelativeConfig(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n pkgData: FilePackageData,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n envName: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n caller: CallerMetadata | undefined,\n): Handler<RelativeConfig> {\n return { config: null, ignore: null };\n}\n\n// eslint-disable-next-line require-yield\nexport function* findRootConfig(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dirname: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n envName: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile | null> {\n return null;\n}\n\n// eslint-disable-next-line require-yield\nexport function* loadConfig(\n name: string,\n dirname: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n envName: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile> {\n throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);\n}\n\n// eslint-disable-next-line require-yield\nexport function* resolveShowConfigPath(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dirname: string,\n): Handler<string | null> {\n return null;\n}\n\nexport const ROOT_CONFIG_FILENAMES: string[] = [];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function resolvePlugin(name: string, dirname: string): string | null {\n return null;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function resolvePreset(name: string, dirname: string): string | null {\n return null;\n}\n\nexport function loadPlugin(\n name: string,\n dirname: string,\n): Handler<{\n filepath: string;\n value: unknown;\n}> {\n throw new Error(\n `Cannot load plugin ${name} relative to ${dirname} in a browser`,\n );\n}\n\nexport function loadPreset(\n name: string,\n dirname: string,\n): Handler<{\n filepath: string;\n value: unknown;\n}> {\n throw new Error(\n `Cannot load preset ${name} relative to ${dirname} in a browser`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAaO,SAASA,iBAAiBA,CAE/BC,OAAe,EACA;EACf,OAAO,IAAI;AACb;AAGO,UAAUC,eAAeA,CAACC,QAAgB,EAA4B;EAC3E,OAAO;IACLA,QAAQ;IACRC,WAAW,EAAE,EAAE;IACfC,GAAG,EAAE,IAAI;IACTC,SAAS,EAAE;EACb,CAAC;AACH;AAGO,UAAUC,kBAAkBA,CAEjCC,OAAwB,EAExBC,OAAe,EAEfC,MAAkC,EACT;EACzB,OAAO;IAAEC,MAAM,EAAE,IAAI;IAAEC,MAAM,EAAE;EAAK,CAAC;AACvC;AAGO,UAAUC,cAAcA,CAE7BC,OAAe,EAEfL,OAAe,EAEfC,MAAkC,EACN;EAC5B,OAAO,IAAI;AACb;AAGO,UAAUK,UAAUA,CACzBC,IAAY,EACZF,OAAe,EAEfL,OAAe,EAEfC,MAAkC,EACb;EACrB,MAAM,IAAIO,KAAK,CAAC,eAAeD,IAAI,gBAAgBF,OAAO,eAAe,CAAC;AAC5E;AAGO,UAAUI,qBAAqBA,CAEpCJ,OAAe,EACS;EACxB,OAAO,IAAI;AACb;AAEO,MAAMK,qBAA+B,GAAAC,OAAA,CAAAD,qBAAA,GAAG,EAAE;AAG1C,SAASE,aAAaA,CAACL,IAAY,EAAEF,OAAe,EAAiB;EAC1E,OAAO,IAAI;AACb;AAGO,SAASQ,aAAaA,CAACN,IAAY,EAAEF,OAAe,EAAiB;EAC1E,OAAO,IAAI;AACb;AAEO,SAASS,UAAUA,CACxBP,IAAY,EACZF,OAAe,EAId;EACD,MAAM,IAAIG,KAAK,CACb,sBAAsBD,IAAI,gBAAgBF,OAAO,eACnD,CAAC;AACH;AAEO,SAASU,UAAUA,CACxBR,IAAY,EACZF,OAAe,EAId;EACD,MAAM,IAAIG,KAAK,CACb,sBAAsBD,IAAI,gBAAgBF,OAAO,eACnD,CAAC;AACH;AAAC","ignoreList":[]}
|
|
||||||
78
node_modules/@babel/core/lib/config/files/index.js
generated
vendored
78
node_modules/@babel/core/lib/config/files/index.js
generated
vendored
@@ -1,78 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "ROOT_CONFIG_FILENAMES", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _configuration.ROOT_CONFIG_FILENAMES;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "findConfigUpwards", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _configuration.findConfigUpwards;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "findPackageData", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _package.findPackageData;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "findRelativeConfig", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _configuration.findRelativeConfig;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "findRootConfig", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _configuration.findRootConfig;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "loadConfig", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _configuration.loadConfig;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "loadPlugin", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _plugins.loadPlugin;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "loadPreset", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _plugins.loadPreset;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "resolvePlugin", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _plugins.resolvePlugin;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "resolvePreset", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _plugins.resolvePreset;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "resolveShowConfigPath", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
return _configuration.resolveShowConfigPath;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var _package = require("./package.js");
|
|
||||||
var _configuration = require("./configuration.js");
|
|
||||||
var _plugins = require("./plugins.js");
|
|
||||||
({});
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/files/index.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/files/index.js.map
generated
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"names":["_package","require","_configuration","_plugins"],"sources":["../../../src/config/files/index.ts"],"sourcesContent":["type indexBrowserType = typeof import(\"./index-browser\");\ntype indexType = typeof import(\"./index\");\n\n// Kind of gross, but essentially asserting that the exports of this module are the same as the\n// exports of index-browser, since this file may be replaced at bundle time with index-browser.\n({}) as any as indexBrowserType as indexType;\n\nexport { findPackageData } from \"./package.ts\";\n\nexport {\n findConfigUpwards,\n findRelativeConfig,\n findRootConfig,\n loadConfig,\n resolveShowConfigPath,\n ROOT_CONFIG_FILENAMES,\n} from \"./configuration.ts\";\nexport type {\n ConfigFile,\n IgnoreFile,\n RelativeConfig,\n FilePackageData,\n} from \"./types.ts\";\nexport {\n loadPlugin,\n loadPreset,\n resolvePlugin,\n resolvePreset,\n} from \"./plugins.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AAcA,IAAAE,QAAA,GAAAF,OAAA;AAlBA,CAAC,CAAC,CAAC;AAA0C","ignoreList":[]}
|
|
||||||
176
node_modules/@babel/core/lib/config/files/module-types.js
generated
vendored
176
node_modules/@babel/core/lib/config/files/module-types.js
generated
vendored
@@ -1,176 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.default = loadCodeDefault;
|
|
||||||
exports.supportsESM = void 0;
|
|
||||||
var _async = require("../../gensync-utils/async.js");
|
|
||||||
function _path() {
|
|
||||||
const data = require("path");
|
|
||||||
_path = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
function _url() {
|
|
||||||
const data = require("url");
|
|
||||||
_url = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
function _semver() {
|
|
||||||
const data = require("semver");
|
|
||||||
_semver = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
function _debug() {
|
|
||||||
const data = require("debug");
|
|
||||||
_debug = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
var _rewriteStackTrace = require("../../errors/rewrite-stack-trace.js");
|
|
||||||
var _configError = require("../../errors/config-error.js");
|
|
||||||
var _transformFile = require("../../transform-file.js");
|
|
||||||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
||||||
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
||||||
const debug = _debug()("babel:config:loading:files:module-types");
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
var import_ = require("./import.cjs");
|
|
||||||
} catch (_unused) {}
|
|
||||||
}
|
|
||||||
const supportsESM = exports.supportsESM = _semver().satisfies(process.versions.node, "^12.17 || >=13.2");
|
|
||||||
const LOADING_CJS_FILES = new Set();
|
|
||||||
function loadCjsDefault(filepath) {
|
|
||||||
if (LOADING_CJS_FILES.has(filepath)) {
|
|
||||||
debug("Auto-ignoring usage of config %o.", filepath);
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
let module;
|
|
||||||
try {
|
|
||||||
LOADING_CJS_FILES.add(filepath);
|
|
||||||
module = (0, _rewriteStackTrace.endHiddenCallStack)(require)(filepath);
|
|
||||||
} finally {
|
|
||||||
LOADING_CJS_FILES.delete(filepath);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
var _module;
|
|
||||||
return (_module = module) != null && _module.__esModule ? module.default || (arguments[1] ? module : undefined) : module;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const loadMjsDefault = (0, _rewriteStackTrace.endHiddenCallStack)(function () {
|
|
||||||
var _loadMjsDefault = _asyncToGenerator(function* (filepath) {
|
|
||||||
const url = (0, _url().pathToFileURL)(filepath).toString();
|
|
||||||
{
|
|
||||||
if (!import_) {
|
|
||||||
throw new _configError.default("Internal error: Native ECMAScript modules aren't supported by this platform.\n", filepath);
|
|
||||||
}
|
|
||||||
return (yield import_(url)).default;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
function loadMjsDefault(_x) {
|
|
||||||
return _loadMjsDefault.apply(this, arguments);
|
|
||||||
}
|
|
||||||
return loadMjsDefault;
|
|
||||||
}());
|
|
||||||
function* loadCodeDefault(filepath, asyncError) {
|
|
||||||
switch (_path().extname(filepath)) {
|
|
||||||
case ".cjs":
|
|
||||||
{
|
|
||||||
return loadCjsDefault(filepath, arguments[2]);
|
|
||||||
}
|
|
||||||
case ".mjs":
|
|
||||||
break;
|
|
||||||
case ".cts":
|
|
||||||
return loadCtsDefault(filepath);
|
|
||||||
default:
|
|
||||||
try {
|
|
||||||
{
|
|
||||||
return loadCjsDefault(filepath, arguments[2]);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
if (e.code !== "ERR_REQUIRE_ESM") throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (yield* (0, _async.isAsync)()) {
|
|
||||||
return yield* (0, _async.waitFor)(loadMjsDefault(filepath));
|
|
||||||
}
|
|
||||||
throw new _configError.default(asyncError, filepath);
|
|
||||||
}
|
|
||||||
function loadCtsDefault(filepath) {
|
|
||||||
const ext = ".cts";
|
|
||||||
const hasTsSupport = !!(require.extensions[".ts"] || require.extensions[".cts"] || require.extensions[".mts"]);
|
|
||||||
let handler;
|
|
||||||
if (!hasTsSupport) {
|
|
||||||
const opts = {
|
|
||||||
babelrc: false,
|
|
||||||
configFile: false,
|
|
||||||
sourceType: "unambiguous",
|
|
||||||
sourceMaps: "inline",
|
|
||||||
sourceFileName: _path().basename(filepath),
|
|
||||||
presets: [[getTSPreset(filepath), Object.assign({
|
|
||||||
onlyRemoveTypeImports: true,
|
|
||||||
optimizeConstEnums: true
|
|
||||||
}, {
|
|
||||||
allowDeclareFields: true
|
|
||||||
})]]
|
|
||||||
};
|
|
||||||
handler = function (m, filename) {
|
|
||||||
if (handler && filename.endsWith(ext)) {
|
|
||||||
try {
|
|
||||||
return m._compile((0, _transformFile.transformFileSync)(filename, Object.assign({}, opts, {
|
|
||||||
filename
|
|
||||||
})).code, filename);
|
|
||||||
} catch (error) {
|
|
||||||
if (!hasTsSupport) {
|
|
||||||
const packageJson = require("@babel/preset-typescript/package.json");
|
|
||||||
if (_semver().lt(packageJson.version, "7.21.4")) {
|
|
||||||
console.error("`.cts` configuration file failed to load, please try to update `@babel/preset-typescript`.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return require.extensions[".js"](m, filename);
|
|
||||||
};
|
|
||||||
require.extensions[ext] = handler;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
return loadCjsDefault(filepath);
|
|
||||||
} finally {
|
|
||||||
if (!hasTsSupport) {
|
|
||||||
if (require.extensions[ext] === handler) delete require.extensions[ext];
|
|
||||||
handler = undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function getTSPreset(filepath) {
|
|
||||||
try {
|
|
||||||
return require("@babel/preset-typescript");
|
|
||||||
} catch (error) {
|
|
||||||
if (error.code !== "MODULE_NOT_FOUND") throw error;
|
|
||||||
let message = "You appear to be using a .cts file as Babel configuration, but the `@babel/preset-typescript` package was not found: please install it!";
|
|
||||||
{
|
|
||||||
if (process.versions.pnp) {
|
|
||||||
message += `
|
|
||||||
If you are using Yarn Plug'n'Play, you may also need to add the following configuration to your .yarnrc.yml file:
|
|
||||||
|
|
||||||
packageExtensions:
|
|
||||||
\t"@babel/core@*":
|
|
||||||
\t\tpeerDependencies:
|
|
||||||
\t\t\t"@babel/preset-typescript": "*"
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw new _configError.default(message, filepath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=module-types.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/files/module-types.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/files/module-types.js.map
generated
vendored
File diff suppressed because one or more lines are too long
61
node_modules/@babel/core/lib/config/files/package.js
generated
vendored
61
node_modules/@babel/core/lib/config/files/package.js
generated
vendored
@@ -1,61 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.findPackageData = findPackageData;
|
|
||||||
function _path() {
|
|
||||||
const data = require("path");
|
|
||||||
_path = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
var _utils = require("./utils.js");
|
|
||||||
var _configError = require("../../errors/config-error.js");
|
|
||||||
const PACKAGE_FILENAME = "package.json";
|
|
||||||
const readConfigPackage = (0, _utils.makeStaticFileCache)((filepath, content) => {
|
|
||||||
let options;
|
|
||||||
try {
|
|
||||||
options = JSON.parse(content);
|
|
||||||
} catch (err) {
|
|
||||||
throw new _configError.default(`Error while parsing JSON - ${err.message}`, filepath);
|
|
||||||
}
|
|
||||||
if (!options) throw new Error(`${filepath}: No config detected`);
|
|
||||||
if (typeof options !== "object") {
|
|
||||||
throw new _configError.default(`Config returned typeof ${typeof options}`, filepath);
|
|
||||||
}
|
|
||||||
if (Array.isArray(options)) {
|
|
||||||
throw new _configError.default(`Expected config object but found array`, filepath);
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
filepath,
|
|
||||||
dirname: _path().dirname(filepath),
|
|
||||||
options
|
|
||||||
};
|
|
||||||
});
|
|
||||||
function* findPackageData(filepath) {
|
|
||||||
let pkg = null;
|
|
||||||
const directories = [];
|
|
||||||
let isPackage = true;
|
|
||||||
let dirname = _path().dirname(filepath);
|
|
||||||
while (!pkg && _path().basename(dirname) !== "node_modules") {
|
|
||||||
directories.push(dirname);
|
|
||||||
pkg = yield* readConfigPackage(_path().join(dirname, PACKAGE_FILENAME));
|
|
||||||
const nextLoc = _path().dirname(dirname);
|
|
||||||
if (dirname === nextLoc) {
|
|
||||||
isPackage = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
dirname = nextLoc;
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
filepath,
|
|
||||||
directories,
|
|
||||||
pkg,
|
|
||||||
isPackage
|
|
||||||
};
|
|
||||||
}
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=package.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/files/package.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/files/package.js.map
generated
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"names":["_path","data","require","_utils","_configError","PACKAGE_FILENAME","readConfigPackage","makeStaticFileCache","filepath","content","options","JSON","parse","err","ConfigError","message","Error","Array","isArray","dirname","path","findPackageData","pkg","directories","isPackage","basename","push","join","nextLoc"],"sources":["../../../src/config/files/package.ts"],"sourcesContent":["import path from \"path\";\nimport type { Handler } from \"gensync\";\nimport { makeStaticFileCache } from \"./utils.ts\";\n\nimport type { ConfigFile, FilePackageData } from \"./types.ts\";\n\nimport ConfigError from \"../../errors/config-error.ts\";\n\nconst PACKAGE_FILENAME = \"package.json\";\n\nconst readConfigPackage = makeStaticFileCache(\n (filepath, content): ConfigFile => {\n let options;\n try {\n options = JSON.parse(content) as unknown;\n } catch (err) {\n throw new ConfigError(\n `Error while parsing JSON - ${err.message}`,\n filepath,\n );\n }\n\n if (!options) throw new Error(`${filepath}: No config detected`);\n\n if (typeof options !== \"object\") {\n throw new ConfigError(\n `Config returned typeof ${typeof options}`,\n filepath,\n );\n }\n if (Array.isArray(options)) {\n throw new ConfigError(`Expected config object but found array`, filepath);\n }\n\n return {\n filepath,\n dirname: path.dirname(filepath),\n options,\n };\n },\n);\n\n/**\n * Find metadata about the package that this file is inside of. Resolution\n * of Babel's config requires general package information to decide when to\n * search for .babelrc files\n */\nexport function* findPackageData(filepath: string): Handler<FilePackageData> {\n let pkg = null;\n const directories = [];\n let isPackage = true;\n\n let dirname = path.dirname(filepath);\n while (!pkg && path.basename(dirname) !== \"node_modules\") {\n directories.push(dirname);\n\n pkg = yield* readConfigPackage(path.join(dirname, PACKAGE_FILENAME));\n\n const nextLoc = path.dirname(dirname);\n if (dirname === nextLoc) {\n isPackage = false;\n break;\n }\n dirname = nextLoc;\n }\n\n return { filepath, directories, pkg, isPackage };\n}\n"],"mappings":";;;;;;AAAA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,IAAAE,MAAA,GAAAD,OAAA;AAIA,IAAAE,YAAA,GAAAF,OAAA;AAEA,MAAMG,gBAAgB,GAAG,cAAc;AAEvC,MAAMC,iBAAiB,GAAG,IAAAC,0BAAmB,EAC3C,CAACC,QAAQ,EAAEC,OAAO,KAAiB;EACjC,IAAIC,OAAO;EACX,IAAI;IACFA,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACH,OAAO,CAAY;EAC1C,CAAC,CAAC,OAAOI,GAAG,EAAE;IACZ,MAAM,IAAIC,oBAAW,CACnB,8BAA8BD,GAAG,CAACE,OAAO,EAAE,EAC3CP,QACF,CAAC;EACH;EAEA,IAAI,CAACE,OAAO,EAAE,MAAM,IAAIM,KAAK,CAAC,GAAGR,QAAQ,sBAAsB,CAAC;EAEhE,IAAI,OAAOE,OAAO,KAAK,QAAQ,EAAE;IAC/B,MAAM,IAAII,oBAAW,CACnB,0BAA0B,OAAOJ,OAAO,EAAE,EAC1CF,QACF,CAAC;EACH;EACA,IAAIS,KAAK,CAACC,OAAO,CAACR,OAAO,CAAC,EAAE;IAC1B,MAAM,IAAII,oBAAW,CAAC,wCAAwC,EAAEN,QAAQ,CAAC;EAC3E;EAEA,OAAO;IACLA,QAAQ;IACRW,OAAO,EAAEC,MAAGA,CAAC,CAACD,OAAO,CAACX,QAAQ,CAAC;IAC/BE;EACF,CAAC;AACH,CACF,CAAC;AAOM,UAAUW,eAAeA,CAACb,QAAgB,EAA4B;EAC3E,IAAIc,GAAG,GAAG,IAAI;EACd,MAAMC,WAAW,GAAG,EAAE;EACtB,IAAIC,SAAS,GAAG,IAAI;EAEpB,IAAIL,OAAO,GAAGC,MAAGA,CAAC,CAACD,OAAO,CAACX,QAAQ,CAAC;EACpC,OAAO,CAACc,GAAG,IAAIF,MAAGA,CAAC,CAACK,QAAQ,CAACN,OAAO,CAAC,KAAK,cAAc,EAAE;IACxDI,WAAW,CAACG,IAAI,CAACP,OAAO,CAAC;IAEzBG,GAAG,GAAG,OAAOhB,iBAAiB,CAACc,MAAGA,CAAC,CAACO,IAAI,CAACR,OAAO,EAAEd,gBAAgB,CAAC,CAAC;IAEpE,MAAMuB,OAAO,GAAGR,MAAGA,CAAC,CAACD,OAAO,CAACA,OAAO,CAAC;IACrC,IAAIA,OAAO,KAAKS,OAAO,EAAE;MACvBJ,SAAS,GAAG,KAAK;MACjB;IACF;IACAL,OAAO,GAAGS,OAAO;EACnB;EAEA,OAAO;IAAEpB,QAAQ;IAAEe,WAAW;IAAED,GAAG;IAAEE;EAAU,CAAC;AAClD;AAAC","ignoreList":[]}
|
|
||||||
217
node_modules/@babel/core/lib/config/files/plugins.js
generated
vendored
217
node_modules/@babel/core/lib/config/files/plugins.js
generated
vendored
@@ -1,217 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.loadPlugin = loadPlugin;
|
|
||||||
exports.loadPreset = loadPreset;
|
|
||||||
exports.resolvePreset = exports.resolvePlugin = void 0;
|
|
||||||
function _debug() {
|
|
||||||
const data = require("debug");
|
|
||||||
_debug = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
function _path() {
|
|
||||||
const data = require("path");
|
|
||||||
_path = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
var _async = require("../../gensync-utils/async.js");
|
|
||||||
var _moduleTypes = require("./module-types.js");
|
|
||||||
function _url() {
|
|
||||||
const data = require("url");
|
|
||||||
_url = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
var _importMetaResolve = require("../../vendor/import-meta-resolve.js");
|
|
||||||
function _fs() {
|
|
||||||
const data = require("fs");
|
|
||||||
_fs = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
const debug = _debug()("babel:config:loading:files:plugins");
|
|
||||||
const EXACT_RE = /^module:/;
|
|
||||||
const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/;
|
|
||||||
const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/;
|
|
||||||
const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/;
|
|
||||||
const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/;
|
|
||||||
const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-plugin(?:-|\/|$)|[^/]+\/)/;
|
|
||||||
const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-preset(?:-|\/|$)|[^/]+\/)/;
|
|
||||||
const OTHER_ORG_DEFAULT_RE = /^(@(?!babel$)[^/]+)$/;
|
|
||||||
const resolvePlugin = exports.resolvePlugin = resolveStandardizedName.bind(null, "plugin");
|
|
||||||
const resolvePreset = exports.resolvePreset = resolveStandardizedName.bind(null, "preset");
|
|
||||||
function* loadPlugin(name, dirname) {
|
|
||||||
const filepath = resolvePlugin(name, dirname, yield* (0, _async.isAsync)());
|
|
||||||
const value = yield* requireModule("plugin", filepath);
|
|
||||||
debug("Loaded plugin %o from %o.", name, dirname);
|
|
||||||
return {
|
|
||||||
filepath,
|
|
||||||
value
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function* loadPreset(name, dirname) {
|
|
||||||
const filepath = resolvePreset(name, dirname, yield* (0, _async.isAsync)());
|
|
||||||
const value = yield* requireModule("preset", filepath);
|
|
||||||
debug("Loaded preset %o from %o.", name, dirname);
|
|
||||||
return {
|
|
||||||
filepath,
|
|
||||||
value
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function standardizeName(type, name) {
|
|
||||||
if (_path().isAbsolute(name)) return name;
|
|
||||||
const isPreset = type === "preset";
|
|
||||||
return name.replace(isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, `babel-${type}-`).replace(isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, `$1${type}-`).replace(isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, `$1babel-${type}-`).replace(OTHER_ORG_DEFAULT_RE, `$1/babel-${type}`).replace(EXACT_RE, "");
|
|
||||||
}
|
|
||||||
function* resolveAlternativesHelper(type, name) {
|
|
||||||
const standardizedName = standardizeName(type, name);
|
|
||||||
const {
|
|
||||||
error,
|
|
||||||
value
|
|
||||||
} = yield standardizedName;
|
|
||||||
if (!error) return value;
|
|
||||||
if (error.code !== "MODULE_NOT_FOUND") throw error;
|
|
||||||
if (standardizedName !== name && !(yield name).error) {
|
|
||||||
error.message += `\n- If you want to resolve "${name}", use "module:${name}"`;
|
|
||||||
}
|
|
||||||
if (!(yield standardizeName(type, "@babel/" + name)).error) {
|
|
||||||
error.message += `\n- Did you mean "@babel/${name}"?`;
|
|
||||||
}
|
|
||||||
const oppositeType = type === "preset" ? "plugin" : "preset";
|
|
||||||
if (!(yield standardizeName(oppositeType, name)).error) {
|
|
||||||
error.message += `\n- Did you accidentally pass a ${oppositeType} as a ${type}?`;
|
|
||||||
}
|
|
||||||
if (type === "plugin") {
|
|
||||||
const transformName = standardizedName.replace("-proposal-", "-transform-");
|
|
||||||
if (transformName !== standardizedName && !(yield transformName).error) {
|
|
||||||
error.message += `\n- Did you mean "${transformName}"?`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
error.message += `\n
|
|
||||||
Make sure that all the Babel plugins and presets you are using
|
|
||||||
are defined as dependencies or devDependencies in your package.json
|
|
||||||
file. It's possible that the missing plugin is loaded by a preset
|
|
||||||
you are using that forgot to add the plugin to its dependencies: you
|
|
||||||
can workaround this problem by explicitly adding the missing package
|
|
||||||
to your top-level package.json.
|
|
||||||
`;
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
function tryRequireResolve(id, dirname) {
|
|
||||||
try {
|
|
||||||
if (dirname) {
|
|
||||||
return {
|
|
||||||
error: null,
|
|
||||||
value: (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
|
|
||||||
paths: [b]
|
|
||||||
}, M = require("module")) => {
|
|
||||||
let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
|
|
||||||
if (f) return f;
|
|
||||||
f = new Error(`Cannot resolve module '${r}'`);
|
|
||||||
f.code = "MODULE_NOT_FOUND";
|
|
||||||
throw f;
|
|
||||||
})(id, {
|
|
||||||
paths: [dirname]
|
|
||||||
})
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
return {
|
|
||||||
error: null,
|
|
||||||
value: require.resolve(id)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
return {
|
|
||||||
error,
|
|
||||||
value: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function tryImportMetaResolve(id, options) {
|
|
||||||
try {
|
|
||||||
return {
|
|
||||||
error: null,
|
|
||||||
value: (0, _importMetaResolve.resolve)(id, options)
|
|
||||||
};
|
|
||||||
} catch (error) {
|
|
||||||
return {
|
|
||||||
error,
|
|
||||||
value: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function resolveStandardizedNameForRequire(type, name, dirname) {
|
|
||||||
const it = resolveAlternativesHelper(type, name);
|
|
||||||
let res = it.next();
|
|
||||||
while (!res.done) {
|
|
||||||
res = it.next(tryRequireResolve(res.value, dirname));
|
|
||||||
}
|
|
||||||
return res.value;
|
|
||||||
}
|
|
||||||
function resolveStandardizedNameForImport(type, name, dirname) {
|
|
||||||
const parentUrl = (0, _url().pathToFileURL)(_path().join(dirname, "./babel-virtual-resolve-base.js")).href;
|
|
||||||
const it = resolveAlternativesHelper(type, name);
|
|
||||||
let res = it.next();
|
|
||||||
while (!res.done) {
|
|
||||||
res = it.next(tryImportMetaResolve(res.value, parentUrl));
|
|
||||||
}
|
|
||||||
return (0, _url().fileURLToPath)(res.value);
|
|
||||||
}
|
|
||||||
function resolveStandardizedName(type, name, dirname, resolveESM) {
|
|
||||||
if (!_moduleTypes.supportsESM || !resolveESM) {
|
|
||||||
return resolveStandardizedNameForRequire(type, name, dirname);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
const resolved = resolveStandardizedNameForImport(type, name, dirname);
|
|
||||||
if (!(0, _fs().existsSync)(resolved)) {
|
|
||||||
throw Object.assign(new Error(`Could not resolve "${name}" in file ${dirname}.`), {
|
|
||||||
type: "MODULE_NOT_FOUND"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return resolved;
|
|
||||||
} catch (e) {
|
|
||||||
try {
|
|
||||||
return resolveStandardizedNameForRequire(type, name, dirname);
|
|
||||||
} catch (e2) {
|
|
||||||
if (e.type === "MODULE_NOT_FOUND") throw e;
|
|
||||||
if (e2.type === "MODULE_NOT_FOUND") throw e2;
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
var LOADING_MODULES = new Set();
|
|
||||||
}
|
|
||||||
function* requireModule(type, name) {
|
|
||||||
{
|
|
||||||
if (!(yield* (0, _async.isAsync)()) && LOADING_MODULES.has(name)) {
|
|
||||||
throw new Error(`Reentrant ${type} detected trying to load "${name}". This module is not ignored ` + "and is trying to load itself while compiling itself, leading to a dependency cycle. " + 'We recommend adding it to your "ignore" list in your babelrc, or to a .babelignore.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
{
|
|
||||||
LOADING_MODULES.add(name);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
return yield* (0, _moduleTypes.default)(name, `You appear to be using a native ECMAScript module ${type}, ` + "which is only supported when running Babel asynchronously.", true);
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
err.message = `[BABEL]: ${err.message} (While processing: ${name})`;
|
|
||||||
throw err;
|
|
||||||
} finally {
|
|
||||||
{
|
|
||||||
LOADING_MODULES.delete(name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=plugins.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/files/plugins.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/files/plugins.js.map
generated
vendored
File diff suppressed because one or more lines are too long
3
node_modules/@babel/core/lib/config/files/types.js
generated
vendored
3
node_modules/@babel/core/lib/config/files/types.js
generated
vendored
@@ -1,3 +0,0 @@
|
|||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=types.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/files/types.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/files/types.js.map
generated
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"names":[],"sources":["../../../src/config/files/types.ts"],"sourcesContent":["import type { InputOptions } from \"../index.ts\";\n\nexport type ConfigFile = {\n filepath: string;\n dirname: string;\n options: InputOptions & { babel?: unknown };\n};\n\nexport type IgnoreFile = {\n filepath: string;\n dirname: string;\n ignore: Array<RegExp>;\n};\n\nexport type RelativeConfig = {\n // The actual config, either from package.json#babel, .babelrc, or\n // .babelrc.js, if there was one.\n config: ConfigFile | null;\n // The .babelignore, if there was one.\n ignore: IgnoreFile | null;\n};\n\nexport type FilePackageData = {\n // The file in the package.\n filepath: string;\n // Any ancestor directories of the file that are within the package.\n directories: Array<string>;\n // The contents of the package.json. May not be found if the package just\n // terminated at a node_modules folder without finding one.\n pkg: ConfigFile | null;\n // True if a package.json or node_modules folder was found while traversing\n // the directory structure.\n isPackage: boolean;\n};\n"],"mappings":"","ignoreList":[]}
|
|
||||||
36
node_modules/@babel/core/lib/config/files/utils.js
generated
vendored
36
node_modules/@babel/core/lib/config/files/utils.js
generated
vendored
@@ -1,36 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.makeStaticFileCache = makeStaticFileCache;
|
|
||||||
var _caching = require("../caching.js");
|
|
||||||
var fs = require("../../gensync-utils/fs.js");
|
|
||||||
function _fs2() {
|
|
||||||
const data = require("fs");
|
|
||||||
_fs2 = function () {
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
function makeStaticFileCache(fn) {
|
|
||||||
return (0, _caching.makeStrongCache)(function* (filepath, cache) {
|
|
||||||
const cached = cache.invalidate(() => fileMtime(filepath));
|
|
||||||
if (cached === null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return fn(filepath, yield* fs.readFile(filepath, "utf8"));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function fileMtime(filepath) {
|
|
||||||
if (!_fs2().existsSync(filepath)) return null;
|
|
||||||
try {
|
|
||||||
return +_fs2().statSync(filepath).mtime;
|
|
||||||
} catch (e) {
|
|
||||||
if (e.code !== "ENOENT" && e.code !== "ENOTDIR") throw e;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
0 && 0;
|
|
||||||
|
|
||||||
//# sourceMappingURL=utils.js.map
|
|
||||||
1
node_modules/@babel/core/lib/config/files/utils.js.map
generated
vendored
1
node_modules/@babel/core/lib/config/files/utils.js.map
generated
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"names":["_caching","require","fs","_fs2","data","makeStaticFileCache","fn","makeStrongCache","filepath","cache","cached","invalidate","fileMtime","readFile","nodeFs","existsSync","statSync","mtime","e","code"],"sources":["../../../src/config/files/utils.ts"],"sourcesContent":["import type { Handler } from \"gensync\";\n\nimport { makeStrongCache } from \"../caching.ts\";\nimport type { CacheConfigurator } from \"../caching.ts\";\nimport * as fs from \"../../gensync-utils/fs.ts\";\nimport nodeFs from \"fs\";\n\nexport function makeStaticFileCache<T>(\n fn: (filepath: string, contents: string) => T,\n) {\n return makeStrongCache(function* (\n filepath: string,\n cache: CacheConfigurator<void>,\n ): Handler<null | T> {\n const cached = cache.invalidate(() => fileMtime(filepath));\n\n if (cached === null) {\n return null;\n }\n\n return fn(filepath, yield* fs.readFile(filepath, \"utf8\"));\n });\n}\n\nfunction fileMtime(filepath: string): number | null {\n if (!nodeFs.existsSync(filepath)) return null;\n\n try {\n return +nodeFs.statSync(filepath).mtime;\n } catch (e) {\n if (e.code !== \"ENOENT\" && e.code !== \"ENOTDIR\") throw e;\n }\n\n return null;\n}\n"],"mappings":";;;;;;AAEA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,EAAA,GAAAD,OAAA;AACA,SAAAE,KAAA;EAAA,MAAAC,IAAA,GAAAH,OAAA;EAAAE,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,SAASC,mBAAmBA,CACjCC,EAA6C,EAC7C;EACA,OAAO,IAAAC,wBAAe,EAAC,WACrBC,QAAgB,EAChBC,KAA8B,EACX;IACnB,MAAMC,MAAM,GAAGD,KAAK,CAACE,UAAU,CAAC,MAAMC,SAAS,CAACJ,QAAQ,CAAC,CAAC;IAE1D,IAAIE,MAAM,KAAK,IAAI,EAAE;MACnB,OAAO,IAAI;IACb;IAEA,OAAOJ,EAAE,CAACE,QAAQ,EAAE,OAAON,EAAE,CAACW,QAAQ,CAACL,QAAQ,EAAE,MAAM,CAAC,CAAC;EAC3D,CAAC,CAAC;AACJ;AAEA,SAASI,SAASA,CAACJ,QAAgB,EAAiB;EAClD,IAAI,CAACM,KAAKA,CAAC,CAACC,UAAU,CAACP,QAAQ,CAAC,EAAE,OAAO,IAAI;EAE7C,IAAI;IACF,OAAO,CAACM,KAAKA,CAAC,CAACE,QAAQ,CAACR,QAAQ,CAAC,CAACS,KAAK;EACzC,CAAC,CAAC,OAAOC,CAAC,EAAE;IACV,IAAIA,CAAC,CAACC,IAAI,KAAK,QAAQ,IAAID,CAAC,CAACC,IAAI,KAAK,SAAS,EAAE,MAAMD,CAAC;EAC1D;EAEA,OAAO,IAAI;AACb;AAAC","ignoreList":[]}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user