first commit
This commit is contained in:
parent
c46490b8fd
commit
698aa7aa45
249
DASHBOARD_SETUP.md
Normal file
249
DASHBOARD_SETUP.md
Normal file
@ -0,0 +1,249 @@
|
||||
# Modern Dashboard Setup Guide
|
||||
|
||||
## Overview
|
||||
Your React frontend now has a beautiful modern dashboard that consumes data from Frappe Dashboard Chart and Number Card doctypes.
|
||||
|
||||
## What's Been Created
|
||||
|
||||
### 1. Backend API File
|
||||
**File**: `frappe_dashboard_api.py`
|
||||
- Copy this to your Frappe app: `asset_lite/api/dashboard_api.py`
|
||||
- Contains endpoints:
|
||||
- `get_number_cards()` - Returns KPI counts (total assets, work orders by status)
|
||||
- `list_dashboard_charts()` - Lists all public Dashboard Chart docs
|
||||
- `get_dashboard_chart_data(chart_name)` - Returns chart-ready JSON for any Report-based Dashboard Chart
|
||||
- `get_repair_cost_by_item(year)` - Example specialized chart endpoint
|
||||
|
||||
### 2. Frontend Components
|
||||
|
||||
#### `src/pages/ModernDashboard.tsx` (NEW)
|
||||
Modern dashboard matching your reference image with:
|
||||
- Gradient KPI cards (pink, cyan, emerald)
|
||||
- Tab switcher (Variation 1 / Variation 2)
|
||||
- Work Order Status chart with bar visualization
|
||||
- Bandwidth Reports chart (multi-dataset bars)
|
||||
- Progress bars for metrics
|
||||
- Message statistics cards
|
||||
- Author rankings with trend indicators
|
||||
|
||||
#### `src/components/SimpleChart.tsx`
|
||||
Lightweight SVG-based chart renderer:
|
||||
- Bar charts (single & stacked)
|
||||
- Pie charts
|
||||
- No external dependencies
|
||||
|
||||
#### `src/components/ChartTile.tsx`
|
||||
Reusable tile that fetches and displays a Dashboard Chart by name
|
||||
|
||||
### 3. API Integration
|
||||
|
||||
#### `src/config/api.ts`
|
||||
Added endpoints:
|
||||
```typescript
|
||||
DASHBOARD_NUMBER_CARDS: '/api/method/asset_lite.api.dashboard_api.get_number_cards'
|
||||
DASHBOARD_LIST_CHARTS: '/api/method/asset_lite.api.dashboard_api.list_dashboard_charts'
|
||||
DASHBOARD_CHART_DATA: '/api/method/asset_lite.api.dashboard_api.get_dashboard_chart_data'
|
||||
```
|
||||
|
||||
#### `src/services/apiService.ts`
|
||||
Added methods:
|
||||
- `getNumberCards()`
|
||||
- `listDashboardCharts(publicOnly)`
|
||||
- `getDashboardChartData(chartName, filters)`
|
||||
|
||||
#### `src/hooks/useApi.ts`
|
||||
Added hooks:
|
||||
- `useNumberCards()` - Fetches KPI card data
|
||||
- `useDashboardChart(chartName, filters)` - Fetches specific chart data
|
||||
- `useChartsList(publicOnly)` - Lists available charts
|
||||
|
||||
### 4. Routing
|
||||
**File**: `src/App.tsx`
|
||||
- `/dashboard` route already points to `ModernDashboard` component
|
||||
- Protected by authentication
|
||||
- Includes sidebar navigation
|
||||
|
||||
## Installation Steps
|
||||
|
||||
### Step 1: Deploy Backend API
|
||||
```bash
|
||||
# Navigate to your Frappe app directory
|
||||
cd frappe-bench/apps/asset_lite
|
||||
|
||||
# Create the api directory if it doesn't exist
|
||||
mkdir -p asset_lite/api
|
||||
|
||||
# Copy the Python file
|
||||
cp /path/to/frappe_dashboard_api.py asset_lite/api/dashboard_api.py
|
||||
|
||||
# Restart your Frappe server
|
||||
bench restart
|
||||
```
|
||||
|
||||
### Step 2: Verify Dashboard Charts in Frappe
|
||||
Ensure these Dashboard Charts exist and are marked as "Public":
|
||||
- Up & Down Time Chart
|
||||
- Work Order Status Chart
|
||||
- Maintenance - Asset wise Count
|
||||
- Asset Maintenance Assignees Status Count
|
||||
- Asset Maintenance Frequency Chart
|
||||
- PPM Status
|
||||
- PPM Template Counts
|
||||
- Repair Cost
|
||||
|
||||
Each chart should:
|
||||
- Chart Type: "Report"
|
||||
- Use Report Chart: ✓ checked
|
||||
- Have a Report Name configured
|
||||
- Have X Field set
|
||||
- Have Y Axis fields configured in child table
|
||||
- Is Public: ✓ checked
|
||||
|
||||
### Step 3: Test the API Endpoints
|
||||
```bash
|
||||
# Test number cards
|
||||
curl -X GET "https://seeraasm-med.seeraarabia.com/api/method/asset_lite.api.dashboard_api.get_number_cards" \
|
||||
-H "Authorization: token YOUR_API_KEY:YOUR_API_SECRET"
|
||||
|
||||
# Test chart data
|
||||
curl -X GET "https://seeraasm-med.seeraarabia.com/api/method/asset_lite.api.dashboard_api.get_dashboard_chart_data?chart_name=Work%20Order%20Status%20Chart" \
|
||||
-H "Authorization: token YOUR_API_KEY:YOUR_API_SECRET"
|
||||
```
|
||||
|
||||
### Step 4: Run Frontend
|
||||
```bash
|
||||
cd frappe-frontend
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Navigate to: `http://localhost:5173/dashboard`
|
||||
|
||||
## Dashboard Features
|
||||
|
||||
### KPI Cards (Top Row)
|
||||
- **Total Assets**: Pink gradient, shows count from Asset doctype
|
||||
- **Work Orders**: Cyan gradient, shows open + in progress count
|
||||
- **Completed**: Green gradient, shows completed work orders
|
||||
|
||||
### Charts Section
|
||||
- **Work Order Status**: Bar chart from "Work Order Status Chart" Dashboard Chart
|
||||
- **Bandwidth Reports**: Multi-dataset chart from "Maintenance - Asset wise Count"
|
||||
- Both support tab switching and dynamic data loading
|
||||
|
||||
### Additional Sections
|
||||
- Top Authors ranking (mock data for now)
|
||||
- Progress metrics with colored bars
|
||||
- Message statistics at bottom
|
||||
|
||||
## Customization
|
||||
|
||||
### Change Chart Names
|
||||
Edit `src/pages/ModernDashboard.tsx` lines with `useDashboardChart`:
|
||||
```typescript
|
||||
const { data: workOrderChart } = useDashboardChart('Your Chart Name Here');
|
||||
```
|
||||
|
||||
### Add More KPI Cards
|
||||
1. Add new field in backend `get_number_cards()` function
|
||||
2. Update TypeScript interface in `src/services/apiService.ts`
|
||||
3. Add card in `ModernDashboard.tsx` KPI grid
|
||||
|
||||
### Customize Colors
|
||||
Tailwind gradient classes used:
|
||||
- `from-pink-400 to-pink-300`
|
||||
- `from-cyan-400 to-cyan-300`
|
||||
- `from-emerald-400 to-emerald-300`
|
||||
|
||||
Change these to any Tailwind color you want.
|
||||
|
||||
### Add Filters to Charts
|
||||
Pass filters to chart hook:
|
||||
```typescript
|
||||
const { data: chart } = useDashboardChart('Chart Name', {
|
||||
from_date: '2025-01-01',
|
||||
to_date: '2025-12-31',
|
||||
status: 'Open'
|
||||
});
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Charts Not Loading
|
||||
1. Check browser console for API errors
|
||||
2. Verify Dashboard Chart docname is correct (case-sensitive)
|
||||
3. Ensure chart is marked "Public" or user has permission
|
||||
4. Check that Report exists and returns data
|
||||
|
||||
### Number Cards Show Zero
|
||||
1. Verify Work Order statuses match those in `get_number_cards()` function
|
||||
2. Adjust status filters in Python code if your statuses differ:
|
||||
```python
|
||||
work_orders_open = frappe.db.count("Work Order", {"status": ["in", ["Your", "Custom", "Statuses"]]})
|
||||
```
|
||||
|
||||
### CORS Errors
|
||||
1. Check Vite proxy configuration in `vite.config.ts`
|
||||
2. Ensure Frappe CORS settings allow your frontend domain
|
||||
3. Verify cookies are being sent (credentials: 'include')
|
||||
|
||||
## API Reference
|
||||
|
||||
### GET /api/method/asset_lite.api.dashboard_api.get_number_cards
|
||||
Returns:
|
||||
```json
|
||||
{
|
||||
"total_assets": 123,
|
||||
"work_orders_open": 7,
|
||||
"work_orders_in_progress": 3,
|
||||
"work_orders_completed": 42
|
||||
}
|
||||
```
|
||||
|
||||
### GET /api/method/asset_lite.api.dashboard_api.get_dashboard_chart_data
|
||||
Params:
|
||||
- `chart_name` (required): Dashboard Chart docname
|
||||
- `report_filters` (optional): JSON string of filters
|
||||
|
||||
Returns:
|
||||
```json
|
||||
{
|
||||
"labels": ["A", "B", "C"],
|
||||
"datasets": [
|
||||
{
|
||||
"name": "Series 1",
|
||||
"values": [10, 20, 15],
|
||||
"color": "#4F46E5"
|
||||
}
|
||||
],
|
||||
"type": "Bar",
|
||||
"options": {},
|
||||
"source": {"report": "Report Name"}
|
||||
}
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Replace Mock Data**: Update TOP AUTHORS section with real user activity data
|
||||
2. **Add Real-time Updates**: Use WebSocket or polling to refresh charts every N seconds
|
||||
3. **Add Date Range Picker**: Let users filter charts by date range
|
||||
4. **Export Features**: Add PDF/Excel export for charts
|
||||
5. **Drill-down**: Make chart bars/slices clickable to view detail pages
|
||||
6. **Responsive Design**: Already responsive, but test on mobile/tablet
|
||||
7. **Dark Mode**: Add theme toggle using Tailwind dark: classes
|
||||
|
||||
## Support
|
||||
|
||||
If you encounter issues:
|
||||
1. Check Frappe logs: `bench logs`
|
||||
2. Check browser console for frontend errors
|
||||
3. Verify API responses in Network tab
|
||||
4. Ensure all Dashboard Charts are properly configured in Frappe
|
||||
|
||||
---
|
||||
|
||||
**Created**: 2025-10-30
|
||||
**Version**: 1.0
|
||||
**Frontend**: React + TypeScript + Vite + TailwindCSS
|
||||
**Backend**: Frappe v15+ with custom API module
|
||||
|
||||
181
DEPLOY_ASSET_API.md
Normal file
181
DEPLOY_ASSET_API.md
Normal file
@ -0,0 +1,181 @@
|
||||
# Deploy Asset API to Frappe Server
|
||||
|
||||
## Issue
|
||||
When trying to create/edit/delete assets, you get an error: "Failed to save asset" or "Failed to create asset"
|
||||
|
||||
This happens because the Asset API endpoints are not deployed on your Frappe server yet.
|
||||
|
||||
## Solution
|
||||
|
||||
Follow these steps to deploy the Asset API:
|
||||
|
||||
### Step 1: SSH into Your Frappe Server
|
||||
|
||||
```bash
|
||||
ssh user@seeraasm-med.seeraarabia.com
|
||||
```
|
||||
|
||||
Replace `user` with your actual SSH username.
|
||||
|
||||
### Step 2: Navigate to the Asset Lite App API Directory
|
||||
|
||||
```bash
|
||||
cd frappe-bench/apps/asset_lite/asset_lite/api/
|
||||
```
|
||||
|
||||
If the `api` directory doesn't exist, create it:
|
||||
|
||||
```bash
|
||||
mkdir -p frappe-bench/apps/asset_lite/asset_lite/api/
|
||||
cd frappe-bench/apps/asset_lite/asset_lite/api/
|
||||
```
|
||||
|
||||
### Step 3: Create the Asset API File
|
||||
|
||||
Create a new file called `asset_api.py`:
|
||||
|
||||
```bash
|
||||
nano asset_api.py
|
||||
```
|
||||
|
||||
### Step 4: Copy the API Code
|
||||
|
||||
Copy the **ENTIRE contents** of the file `frappe_asset_api.py` from your project folder and paste it into the editor.
|
||||
|
||||
The file contains these API endpoints:
|
||||
- `get_assets` - Get list of assets with filters
|
||||
- `get_asset_details` - Get details of a specific asset
|
||||
- `create_asset` - Create a new asset
|
||||
- `update_asset` - Update an existing asset
|
||||
- `delete_asset` - Delete an asset
|
||||
- `get_asset_filters` - Get filter options
|
||||
- `get_asset_stats` - Get asset statistics
|
||||
- `search_assets` - Search assets by keyword
|
||||
|
||||
### Step 5: Save and Exit
|
||||
|
||||
In nano:
|
||||
- Press `Ctrl + O` (to save)
|
||||
- Press `Enter` (to confirm)
|
||||
- Press `Ctrl + X` (to exit)
|
||||
|
||||
### Step 6: Create __init__.py (if needed)
|
||||
|
||||
Make sure there's an `__init__.py` file in the api directory:
|
||||
|
||||
```bash
|
||||
touch __init__.py
|
||||
```
|
||||
|
||||
### Step 7: Restart Frappe
|
||||
|
||||
Go back to the bench directory and restart:
|
||||
|
||||
```bash
|
||||
cd ~/frappe-bench
|
||||
bench restart
|
||||
```
|
||||
|
||||
Or if using supervisor:
|
||||
|
||||
```bash
|
||||
sudo supervisorctl restart all
|
||||
```
|
||||
|
||||
### Step 8: Test the API
|
||||
|
||||
Open your browser console and try creating an asset again. You should now see detailed logs:
|
||||
|
||||
```
|
||||
[useAssetMutations] Creating asset with data: {...}
|
||||
[useAssetMutations] Create asset response: {...}
|
||||
```
|
||||
|
||||
## Verify Deployment
|
||||
|
||||
You can verify the API is deployed by checking if the endpoint exists:
|
||||
|
||||
```bash
|
||||
curl -X GET "https://seeraasm-med.seeraarabia.com/api/method/asset_lite.api.asset_api.get_assets?limit=1"
|
||||
```
|
||||
|
||||
You should get a response (even if it's an authentication error, that means the endpoint exists).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Error: "Module has no attribute 'asset_api'"
|
||||
|
||||
**Cause:** The file wasn't created in the right location or Frappe hasn't reloaded.
|
||||
|
||||
**Solution:**
|
||||
1. Check the file exists: `ls -la ~/frappe-bench/apps/asset_lite/asset_lite/api/asset_api.py`
|
||||
2. Restart Frappe: `cd ~/frappe-bench && bench restart`
|
||||
|
||||
### Error: "Not permitted to create asset"
|
||||
|
||||
**Cause:** Your user doesn't have permissions for the Asset doctype.
|
||||
|
||||
**Solution:**
|
||||
1. Log in to Frappe desk as Administrator
|
||||
2. Go to User Permissions
|
||||
3. Grant your user "Create" permission for Asset doctype
|
||||
|
||||
### Error: "Asset doctype not found"
|
||||
|
||||
**Cause:** The Asset Lite app doesn't have an Asset doctype, or it's named differently.
|
||||
|
||||
**Solution:**
|
||||
Check what doctypes are available:
|
||||
|
||||
```bash
|
||||
cd ~/frappe-bench
|
||||
bench console
|
||||
```
|
||||
|
||||
Then in the console:
|
||||
|
||||
```python
|
||||
import frappe
|
||||
frappe.get_all('DocType', filters={'module': 'Asset Lite'}, fields=['name'])
|
||||
```
|
||||
|
||||
You may need to adjust the doctype name in the API code.
|
||||
|
||||
## Expected Behavior After Deployment
|
||||
|
||||
✅ **Create Asset:** Form data is saved, new asset is created with auto-generated ID
|
||||
✅ **Edit Asset:** Changes are saved to existing asset
|
||||
✅ **Delete Asset:** Asset is deleted after confirmation
|
||||
✅ **Duplicate Asset:** New asset is created based on existing one
|
||||
✅ **Export/Print:** Asset data is exported or printed
|
||||
|
||||
## Console Debugging
|
||||
|
||||
After deployment, when you try to save an asset, you should see in the browser console:
|
||||
|
||||
```javascript
|
||||
[useAssetMutations] Creating asset with data: {
|
||||
asset_name: "Test Asset",
|
||||
company: "Test Company",
|
||||
custom_asset_type: "Medical Equipment",
|
||||
// ... other fields
|
||||
}
|
||||
|
||||
[useAssetMutations] Create asset response: {
|
||||
success: true,
|
||||
asset: { name: "ACC-ASS-2025-00097", ... },
|
||||
message: "Asset created successfully"
|
||||
}
|
||||
```
|
||||
|
||||
If you see errors instead, they will now show the actual backend error message.
|
||||
|
||||
## Need Help?
|
||||
|
||||
If you continue having issues:
|
||||
|
||||
1. Check the Frappe error logs: `tail -f ~/frappe-bench/logs/error.log`
|
||||
2. Check the worker logs: `tail -f ~/frappe-bench/logs/worker.error.log`
|
||||
3. Verify your user has the correct permissions in Frappe
|
||||
4. Make sure the Asset doctype exists in your Asset Lite app
|
||||
|
||||
150
DEPLOY_BACKEND.md
Normal file
150
DEPLOY_BACKEND.md
Normal file
@ -0,0 +1,150 @@
|
||||
# Backend Deployment Guide
|
||||
|
||||
## Quick Deploy
|
||||
|
||||
Copy the updated `frappe_dashboard_api.py` to your Frappe server:
|
||||
|
||||
```bash
|
||||
# Step 1: Copy file to Frappe app
|
||||
scp frappe_dashboard_api.py user@your-server:/tmp/
|
||||
|
||||
# Step 2: SSH to server
|
||||
ssh user@your-server
|
||||
|
||||
# Step 3: Move to correct location
|
||||
cd /path/to/frappe-bench/apps/asset_lite
|
||||
mkdir -p asset_lite/api
|
||||
cp /tmp/frappe_dashboard_api.py asset_lite/api/dashboard_api.py
|
||||
|
||||
# Step 4: Restart Frappe
|
||||
bench restart
|
||||
|
||||
# Step 5: Test the API
|
||||
curl "https://seeraasm-med.seeraarabia.com/api/method/asset_lite.api.dashboard_api.get_number_cards"
|
||||
```
|
||||
|
||||
## What This API Does
|
||||
|
||||
### 1. `get_number_cards()`
|
||||
Returns counts for KPI cards:
|
||||
- Total Assets
|
||||
- Open Work Orders
|
||||
- Work Orders In Progress
|
||||
- Completed Work Orders
|
||||
|
||||
### 2. `list_dashboard_charts()`
|
||||
Lists all public Dashboard Charts with their configuration
|
||||
|
||||
### 3. `get_dashboard_chart_data(chart_name, filters)`
|
||||
**Supports BOTH:**
|
||||
- **Report Charts** - Uses the Report's query and x/y field configuration
|
||||
- **Custom Charts** - Queries the source doctype directly based on `based_on` and `value_based_on` fields
|
||||
|
||||
### 4. `get_repair_cost_by_item(year)`
|
||||
Specialized endpoint for repair cost analysis
|
||||
|
||||
## What Was Fixed
|
||||
|
||||
### Issue 1: "Unknown column 'label'"
|
||||
- ✅ Removed `label` field from queries
|
||||
- ✅ Now only queries `y_field` and `color`
|
||||
|
||||
### Issue 2: "DashboardChart object has no attribute 'get_chart_data'"
|
||||
- ✅ Replaced with custom SQL queries
|
||||
- ✅ Reads `document_type`, `based_on`, `value_based_on` fields
|
||||
- ✅ Builds appropriate GROUP BY queries
|
||||
|
||||
### Issue 3: Empty datasets
|
||||
- ✅ Added proper error handling
|
||||
- ✅ Logs errors to Frappe error log
|
||||
- ✅ Returns meaningful error messages
|
||||
|
||||
## Chart Types Supported
|
||||
|
||||
### Report Charts (with "Use Report Chart" checked)
|
||||
Examples from your Frappe:
|
||||
- Up & Down Time Chart
|
||||
- Work Order Status Chart
|
||||
- PPM Status
|
||||
- PPM Template Counts
|
||||
- Repair Cost
|
||||
|
||||
**Configuration Required:**
|
||||
- Chart Type: Report
|
||||
- Report Name: Valid report name
|
||||
- Use Report Chart: ✓ checked
|
||||
- X Field: Field name for X-axis
|
||||
- Y Axis: At least one row with y_field and color
|
||||
|
||||
### Custom Charts (DocType-based)
|
||||
Examples from your Frappe:
|
||||
- Maintenance - Asset wise Count
|
||||
- Asset Maintenance Assignees Status Count
|
||||
- Asset Maintenance Frequency Chart
|
||||
|
||||
**Configuration Required:**
|
||||
- Chart Type: Custom
|
||||
- Document Type: Source doctype (e.g., "Asset Maintenance")
|
||||
- Based On: Field to group by (e.g., "assigned_to")
|
||||
- Value Based On: Field to count (optional, defaults to "name")
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Charts still showing "No data"
|
||||
|
||||
1. **Check chart exists:**
|
||||
```sql
|
||||
SELECT name, chart_name, chart_type, document_type, based_on
|
||||
FROM `tabDashboard Chart`
|
||||
WHERE name = 'Up & Down Time Chart';
|
||||
```
|
||||
|
||||
2. **Check if Public:**
|
||||
```sql
|
||||
SELECT name, is_public FROM `tabDashboard Chart`;
|
||||
```
|
||||
|
||||
3. **Test API directly:**
|
||||
```bash
|
||||
# In browser (while logged in):
|
||||
https://seeraasm-med.seeraarabia.com/api/method/asset_lite.api.dashboard_api.get_dashboard_chart_data?chart_name=Up%20%26%20Down%20Time%20Chart
|
||||
```
|
||||
|
||||
4. **Check Frappe logs:**
|
||||
```bash
|
||||
bench logs
|
||||
# or
|
||||
tail -f logs/web.error.log
|
||||
```
|
||||
|
||||
### API returns 404
|
||||
- Backend file not copied to correct location
|
||||
- App name is not `asset_lite` (update paths in API calls)
|
||||
|
||||
### API returns 500
|
||||
- Check Frappe error logs
|
||||
- Verify chart configuration matches what API expects
|
||||
|
||||
## Next Steps After Deploy
|
||||
|
||||
1. Deploy this file to your Frappe server
|
||||
2. Restart: `bench restart`
|
||||
3. Hard refresh your React dashboard (Ctrl+Shift+R)
|
||||
4. Check browser console for data logs
|
||||
5. Charts should now display with real data!
|
||||
|
||||
## Expected Console Output (Success)
|
||||
|
||||
After successful deployment, you should see:
|
||||
```
|
||||
Up & Down Time Chart data: {labels: ["up", "down"], datasets: [{values: [7092, 16]}], type: "Pie"}
|
||||
Work Order Status Chart data: {labels: ["Open", "Completed"], datasets: [{values: [3, 2]}], type: "Bar"}
|
||||
Maintenance - Asset wise Count data: {labels: ["Asset1", "Asset2"], datasets: [{values: [10, 5]}], type: "Bar"}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**File to deploy:** `frappe_dashboard_api.py`
|
||||
**Location:** `asset_lite/api/dashboard_api.py`
|
||||
**Restart:** `bench restart`
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Frappe React Frontend
|
||||
|
||||
A modern React frontend application built with TypeScript, Vite, and TailwindCSS that connects to your existing Frappe backend.
|
||||
A modern React frontend application built with TypeScript, Vite, and TailwindCSS that connects to our existing Frappe backend.
|
||||
|
||||
## Features
|
||||
|
||||
|
||||
210
TROUBLESHOOTING_CHARTS.md
Normal file
210
TROUBLESHOOTING_CHARTS.md
Normal file
@ -0,0 +1,210 @@
|
||||
# Charts Not Showing - Troubleshooting Guide
|
||||
|
||||
## Step 1: Check Browser Console
|
||||
|
||||
1. Open your browser's Developer Tools (F12)
|
||||
2. Go to the **Console** tab
|
||||
3. Look for error messages for each chart
|
||||
4. Look for API call logs showing chart data
|
||||
|
||||
You should see logs like:
|
||||
```
|
||||
Up & Down Time Chart data: {labels: [...], datasets: [...]}
|
||||
```
|
||||
|
||||
If you see errors instead, note them down.
|
||||
|
||||
## Step 2: Verify Backend API is Deployed
|
||||
|
||||
The Python file `frappe_dashboard_api.py` must be copied to your Frappe server:
|
||||
|
||||
```bash
|
||||
# SSH to your Frappe server
|
||||
cd frappe-bench/apps/asset_lite
|
||||
|
||||
# Create api directory if it doesn't exist
|
||||
mkdir -p asset_lite/api
|
||||
|
||||
# Copy the file
|
||||
cp /path/to/frappe_dashboard_api.py asset_lite/api/dashboard_api.py
|
||||
|
||||
# Restart Frappe
|
||||
bench restart
|
||||
```
|
||||
|
||||
## Step 3: Test API Directly
|
||||
|
||||
Open a new browser tab and try accessing the API directly:
|
||||
|
||||
### Test Number Cards
|
||||
```
|
||||
https://seeraasm-med.seeraarabia.com/api/method/asset_lite.api.dashboard_api.get_number_cards
|
||||
```
|
||||
|
||||
**Expected Response:**
|
||||
```json
|
||||
{
|
||||
"message": {
|
||||
"total_assets": 7109,
|
||||
"work_orders_open": 3,
|
||||
"work_orders_in_progress": 1,
|
||||
"work_orders_completed": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Test Chart Data
|
||||
```
|
||||
https://seeraasm-med.seeraarabia.com/api/method/asset_lite.api.dashboard_api.get_dashboard_chart_data?chart_name=Work%20Order%20Status%20Chart
|
||||
```
|
||||
|
||||
**Expected Response:**
|
||||
```json
|
||||
{
|
||||
"message": {
|
||||
"labels": ["Open", "Completed", "Pending"],
|
||||
"datasets": [{
|
||||
"name": "Count",
|
||||
"values": [10, 20, 5],
|
||||
"color": "#4F46E5"
|
||||
}],
|
||||
"type": "Bar"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Step 4: Check Dashboard Chart Names
|
||||
|
||||
The chart names in React MUST match EXACTLY (including spaces and capitalization) with your Frappe Dashboard Chart docnames.
|
||||
|
||||
In Frappe, go to: **Desk → Dashboard Chart List**
|
||||
|
||||
Current names in React code:
|
||||
- `Up & Down Time Chart`
|
||||
- `Work Order Status Chart`
|
||||
- `Maintenance - Asset wise Count`
|
||||
- `Asset Maintenance Assignees Status Count`
|
||||
- `Asset Maintenance Frequency Chart`
|
||||
- `PPM Status`
|
||||
- `PPM Template Counts`
|
||||
|
||||
If your Frappe charts have different names, update them in `ModernDashboard.tsx` line 12-18.
|
||||
|
||||
## Step 5: Verify Dashboard Chart Configuration
|
||||
|
||||
Each Dashboard Chart in Frappe must have:
|
||||
|
||||
1. **Chart Type:** "Report"
|
||||
2. **Use Report Chart:** ✓ (checked)
|
||||
3. **Report Name:** A valid report name
|
||||
4. **X Field:** The field to use for X-axis (e.g., `status`, `item_name`)
|
||||
5. **Y Axis Fields:** At least one entry in child table with:
|
||||
- Y Field (e.g., `count`, `amount`)
|
||||
- Color (e.g., `#4F46E5`)
|
||||
- Label (e.g., `Count`)
|
||||
6. **Is Public:** ✓ (checked) OR user has permission
|
||||
|
||||
## Step 6: Check Network Tab
|
||||
|
||||
1. Open Developer Tools (F12)
|
||||
2. Go to **Network** tab
|
||||
3. Refresh the dashboard page
|
||||
4. Look for API calls to `get_dashboard_chart_data`
|
||||
5. Click on each call and check:
|
||||
- **Status Code:** Should be 200
|
||||
- **Response:** Should contain chart data
|
||||
|
||||
### Common Errors:
|
||||
|
||||
**404 Not Found**
|
||||
- Backend API file not deployed
|
||||
- Endpoint path is wrong
|
||||
|
||||
**500 Internal Server Error**
|
||||
- Chart doesn't exist in Frappe
|
||||
- Report has an error
|
||||
- Python code has a bug
|
||||
|
||||
**401 Unauthorized**
|
||||
- Not logged in
|
||||
- Session expired
|
||||
|
||||
**403 Forbidden**
|
||||
- Chart is not Public
|
||||
- User doesn't have permission
|
||||
|
||||
## Step 7: Quick Fixes
|
||||
|
||||
### If API endpoint doesn't exist (404):
|
||||
```bash
|
||||
# On Frappe server
|
||||
cd frappe-bench/apps/asset_lite
|
||||
ls -la asset_lite/api/ # Check if dashboard_api.py exists
|
||||
bench restart
|
||||
```
|
||||
|
||||
### If chart names don't match:
|
||||
Edit `src/pages/ModernDashboard.tsx` and update chart names to match exactly.
|
||||
|
||||
### If charts are private:
|
||||
In Frappe, for each Dashboard Chart:
|
||||
1. Open the chart
|
||||
2. Check **Is Public**
|
||||
3. Save
|
||||
|
||||
### If using wrong report:
|
||||
The backend expects Report-based charts. Regular charts won't work.
|
||||
|
||||
## Step 8: Enable Debug Mode
|
||||
|
||||
Add this to see what's being fetched:
|
||||
|
||||
Open `src/hooks/useApi.ts` and check if errors are being caught properly.
|
||||
|
||||
## Step 9: Test with Mock Data
|
||||
|
||||
Temporarily add mock data to verify charts render:
|
||||
|
||||
```typescript
|
||||
// In ModernDashboard.tsx, replace chart fetch with:
|
||||
const mockData = {
|
||||
labels: ['A', 'B', 'C'],
|
||||
datasets: [{
|
||||
name: 'Test',
|
||||
values: [10, 20, 15],
|
||||
color: '#4F46E5'
|
||||
}],
|
||||
type: 'Bar'
|
||||
};
|
||||
|
||||
const { data: workOrderChart } = { data: mockData, loading: false, error: null };
|
||||
```
|
||||
|
||||
If charts appear with mock data, the problem is the API. If not, it's the chart rendering logic.
|
||||
|
||||
## Step 10: Contact Support
|
||||
|
||||
If none of the above work, provide:
|
||||
1. Browser console errors
|
||||
2. Network tab screenshots showing API responses
|
||||
3. Frappe Dashboard Chart configuration screenshots
|
||||
4. Frappe error logs: `bench logs`
|
||||
|
||||
---
|
||||
|
||||
## Quick Checklist
|
||||
|
||||
- [ ] `frappe_dashboard_api.py` copied to `asset_lite/api/dashboard_api.py`
|
||||
- [ ] Frappe server restarted (`bench restart`)
|
||||
- [ ] Chart names in React match Frappe exactly
|
||||
- [ ] All charts are marked "Is Public" in Frappe
|
||||
- [ ] Charts are "Report" type with "Use Report Chart" checked
|
||||
- [ ] Each chart has X Field and Y Axis configured
|
||||
- [ ] Can access API endpoint directly in browser
|
||||
- [ ] Browser console shows no 404/500 errors
|
||||
- [ ] Logged in user has permissions
|
||||
|
||||
---
|
||||
|
||||
**Most Common Issue:** Backend API file not deployed to Frappe server yet!
|
||||
|
||||
23
eslint.config.js
Normal file
23
eslint.config.js
Normal file
@ -0,0 +1,23 @@
|
||||
import js from '@eslint/js'
|
||||
import globals from 'globals'
|
||||
import reactHooks from 'eslint-plugin-react-hooks'
|
||||
import reactRefresh from 'eslint-plugin-react-refresh'
|
||||
import tseslint from 'typescript-eslint'
|
||||
import { defineConfig, globalIgnores } from 'eslint/config'
|
||||
|
||||
export default defineConfig([
|
||||
globalIgnores(['dist']),
|
||||
{
|
||||
files: ['**/*.{ts,tsx}'],
|
||||
extends: [
|
||||
js.configs.recommended,
|
||||
tseslint.configs.recommended,
|
||||
reactHooks.configs['recommended-latest'],
|
||||
reactRefresh.configs.vite,
|
||||
],
|
||||
languageOptions: {
|
||||
ecmaVersion: 2020,
|
||||
globals: globals.browser,
|
||||
},
|
||||
},
|
||||
])
|
||||
166
frappe_api_setup.py
Normal file
166
frappe_api_setup.py
Normal file
@ -0,0 +1,166 @@
|
||||
# Add this file to your Frappe app: asset_lite/api/custom_api.py
|
||||
# This file should be placed at: /path/to/your/frappe/sites/seeraasm-med/apps/asset_lite/asset_lite/api/custom_api.py
|
||||
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.utils import now, today, get_datetime
|
||||
import json
|
||||
|
||||
@frappe.whitelist(allow_guest=False)
|
||||
def get_user_details(user_id=None):
|
||||
"""
|
||||
Get detailed user information
|
||||
Usage: /api/method/asset_lite.api.custom_api.get_user_details
|
||||
"""
|
||||
try:
|
||||
if not user_id:
|
||||
user_id = frappe.session.user
|
||||
|
||||
user = frappe.get_doc("User", user_id)
|
||||
|
||||
# Get user roles
|
||||
roles = frappe.get_roles(user_id)
|
||||
|
||||
response_data = {
|
||||
"user_id": user_id,
|
||||
"full_name": user.full_name,
|
||||
"email": user.email,
|
||||
"user_image": user.user_image,
|
||||
"roles": roles,
|
||||
"last_login": user.last_login,
|
||||
"enabled": user.enabled,
|
||||
"creation": user.creation,
|
||||
"modified": user.modified
|
||||
}
|
||||
|
||||
frappe.response.message = response_data
|
||||
frappe.response.status_code = 200
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(f"Error in get_user_details: {str(e)}")
|
||||
frappe.response.message = {"error": str(e)}
|
||||
frappe.response.status_code = 500
|
||||
|
||||
@frappe.whitelist(allow_guest=False)
|
||||
def get_doctype_records(doctype, filters=None, fields=None, limit=20, offset=0):
|
||||
"""
|
||||
Get records from any DocType with filtering and pagination
|
||||
Usage: /api/method/asset_lite.api.custom_api.get_doctype_records
|
||||
"""
|
||||
try:
|
||||
# Parse filters and fields if provided as JSON strings
|
||||
if isinstance(filters, str):
|
||||
filters = json.loads(filters)
|
||||
if isinstance(fields, str):
|
||||
fields = json.loads(fields)
|
||||
|
||||
# Build the query
|
||||
query_filters = filters or {}
|
||||
|
||||
# Get records
|
||||
records = frappe.get_list(
|
||||
doctype,
|
||||
filters=query_filters,
|
||||
fields=fields or ["*"],
|
||||
limit=limit,
|
||||
start=offset,
|
||||
order_by="creation desc"
|
||||
)
|
||||
|
||||
# Get total count for pagination
|
||||
total_count = frappe.db.count(doctype, query_filters)
|
||||
|
||||
response_data = {
|
||||
"records": records,
|
||||
"total_count": total_count,
|
||||
"limit": limit,
|
||||
"offset": offset,
|
||||
"has_more": (offset + limit) < total_count
|
||||
}
|
||||
|
||||
frappe.response.message = response_data
|
||||
frappe.response.status_code = 200
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(f"Error in get_doctype_records: {str(e)}")
|
||||
frappe.response.message = {"error": str(e)}
|
||||
frappe.response.status_code = 500
|
||||
|
||||
@frappe.whitelist(allow_guest=False)
|
||||
def get_dashboard_stats():
|
||||
"""
|
||||
Get dashboard statistics
|
||||
Usage: /api/method/asset_lite.api.custom_api.get_dashboard_stats
|
||||
"""
|
||||
try:
|
||||
# Example: Get counts for different DocTypes
|
||||
stats = {
|
||||
"total_users": frappe.db.count("User", {"enabled": 1}),
|
||||
"total_customers": frappe.db.count("Customer"),
|
||||
"total_items": frappe.db.count("Item"),
|
||||
"total_orders": frappe.db.count("Sales Order"),
|
||||
"recent_activities": []
|
||||
}
|
||||
|
||||
# Get recent activities (example)
|
||||
recent_users = frappe.get_list(
|
||||
"User",
|
||||
fields=["name", "full_name", "creation"],
|
||||
limit=5,
|
||||
order_by="creation desc"
|
||||
)
|
||||
|
||||
stats["recent_activities"] = recent_users
|
||||
|
||||
frappe.response.message = stats
|
||||
frappe.response.status_code = 200
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(f"Error in get_dashboard_stats: {str(e)}")
|
||||
frappe.response.message = {"error": str(e)}
|
||||
frappe.response.status_code = 500
|
||||
|
||||
# Example KYC API for your KYCDetails component
|
||||
@frappe.whitelist(allow_guest=False)
|
||||
def get_kyc_details():
|
||||
"""
|
||||
Get KYC details - customize this based on your actual KYC DocType
|
||||
Usage: /api/method/asset_lite.api.custom_api.get_kyc_details
|
||||
"""
|
||||
try:
|
||||
# Replace 'KYC' with your actual DocType name
|
||||
kyc_records = frappe.get_list(
|
||||
"KYC", # Change this to your actual DocType
|
||||
fields=["name", "kyc_status", "kyc_type", "creation"],
|
||||
limit=50,
|
||||
order_by="creation desc"
|
||||
)
|
||||
|
||||
frappe.response.message = kyc_records
|
||||
frappe.response.status_code = 200
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(f"Error in get_kyc_details: {str(e)}")
|
||||
frappe.response.message = {"error": str(e)}
|
||||
frappe.response.status_code = 500
|
||||
|
||||
# Simple test endpoint to verify API is working
|
||||
@frappe.whitelist(allow_guest=False)
|
||||
def test_api():
|
||||
"""
|
||||
Simple test endpoint to verify the API is working
|
||||
Usage: /api/method/asset_lite.api.custom_api.test_api
|
||||
"""
|
||||
try:
|
||||
frappe.response.message = {
|
||||
"status": "success",
|
||||
"message": "API is working!",
|
||||
"user": frappe.session.user,
|
||||
"timestamp": now()
|
||||
}
|
||||
frappe.response.status_code = 200
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(f"Error in test_api: {str(e)}")
|
||||
frappe.response.message = {"error": str(e)}
|
||||
frappe.response.status_code = 500
|
||||
438
frappe_asset_api.py
Normal file
438
frappe_asset_api.py
Normal file
@ -0,0 +1,438 @@
|
||||
# Asset API Endpoints for Frappe
|
||||
# File location: frappe-bench/apps/asset_lite/asset_lite/api/asset_api.py
|
||||
|
||||
import frappe
|
||||
from frappe import _
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_assets(filters=None, fields=None, limit=20, offset=0, order_by=None):
|
||||
"""
|
||||
Get list of assets with filters and pagination
|
||||
|
||||
Args:
|
||||
filters: JSON string of filters (e.g., '{"company": "ABC Corp"}')
|
||||
fields: JSON string of fields to return (e.g., '["asset_name", "location"]')
|
||||
limit: Number of records to return (default: 20)
|
||||
offset: Number of records to skip (default: 0)
|
||||
order_by: Sort order (e.g., "creation desc")
|
||||
|
||||
Returns:
|
||||
{
|
||||
"assets": [...],
|
||||
"total_count": int,
|
||||
"limit": int,
|
||||
"offset": int,
|
||||
"has_more": bool
|
||||
}
|
||||
"""
|
||||
try:
|
||||
# Parse filters if provided
|
||||
if filters and isinstance(filters, str):
|
||||
import json
|
||||
filters = json.loads(filters)
|
||||
|
||||
# Parse fields if provided
|
||||
if fields and isinstance(fields, str):
|
||||
import json
|
||||
fields = json.loads(fields)
|
||||
else:
|
||||
# Default fields to return
|
||||
fields = [
|
||||
'name',
|
||||
'asset_name',
|
||||
'company',
|
||||
'custom_serial_number',
|
||||
'location',
|
||||
'custom_manufacturer',
|
||||
'department',
|
||||
'custom_asset_type',
|
||||
'custom_manufacturing_year',
|
||||
'custom_model',
|
||||
'custom_class',
|
||||
'custom_device_status',
|
||||
'custom_down_time',
|
||||
'asset_owner_company',
|
||||
'custom_up_time',
|
||||
'custom_modality',
|
||||
'custom_attach_image',
|
||||
'custom_site_contractor',
|
||||
'custom_total_amount',
|
||||
'creation',
|
||||
'modified',
|
||||
'owner',
|
||||
'modified_by'
|
||||
]
|
||||
|
||||
# Get total count
|
||||
total_count = frappe.db.count('Asset', filters=filters or {})
|
||||
|
||||
# Get assets
|
||||
assets = frappe.get_all(
|
||||
'Asset',
|
||||
filters=filters or {},
|
||||
fields=fields,
|
||||
limit_page_length=int(limit),
|
||||
limit_start=int(offset),
|
||||
order_by=order_by or 'creation desc'
|
||||
)
|
||||
|
||||
# Calculate has_more
|
||||
has_more = (int(offset) + int(limit)) < total_count
|
||||
|
||||
frappe.response['message'] = {
|
||||
'assets': assets,
|
||||
'total_count': total_count,
|
||||
'limit': int(limit),
|
||||
'offset': int(offset),
|
||||
'has_more': has_more
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), 'Get Assets API Error')
|
||||
frappe.response['message'] = {
|
||||
'error': str(e),
|
||||
'assets': [],
|
||||
'total_count': 0
|
||||
}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_asset_details(asset_name):
|
||||
"""
|
||||
Get detailed information about a specific asset
|
||||
|
||||
Args:
|
||||
asset_name: Name/ID of the asset
|
||||
|
||||
Returns:
|
||||
Asset document with all fields
|
||||
"""
|
||||
try:
|
||||
if not asset_name:
|
||||
frappe.throw(_('Asset name is required'))
|
||||
|
||||
# Check if user has permission to read this asset
|
||||
if not frappe.has_permission('Asset', 'read', asset_name):
|
||||
frappe.throw(_('Not permitted to access this asset'))
|
||||
|
||||
# Get asset details
|
||||
asset = frappe.get_doc('Asset', asset_name)
|
||||
|
||||
frappe.response['message'] = asset.as_dict()
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), 'Get Asset Details API Error')
|
||||
frappe.response['message'] = {
|
||||
'error': str(e)
|
||||
}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def create_asset(asset_data):
|
||||
"""
|
||||
Create a new asset
|
||||
|
||||
Args:
|
||||
asset_data: JSON string containing asset fields
|
||||
|
||||
Returns:
|
||||
Created asset document
|
||||
"""
|
||||
try:
|
||||
import json
|
||||
|
||||
# Parse asset data
|
||||
if isinstance(asset_data, str):
|
||||
asset_data = json.loads(asset_data)
|
||||
|
||||
# Check if user has permission to create asset
|
||||
if not frappe.has_permission('Asset', 'create'):
|
||||
frappe.throw(_('Not permitted to create asset'))
|
||||
|
||||
# Create new asset
|
||||
asset = frappe.get_doc({
|
||||
'doctype': 'Asset',
|
||||
**asset_data
|
||||
})
|
||||
|
||||
asset.insert()
|
||||
frappe.db.commit()
|
||||
|
||||
frappe.response['message'] = {
|
||||
'success': True,
|
||||
'asset': asset.as_dict(),
|
||||
'message': _('Asset created successfully')
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
frappe.db.rollback()
|
||||
frappe.log_error(frappe.get_traceback(), 'Create Asset API Error')
|
||||
frappe.response['message'] = {
|
||||
'success': False,
|
||||
'error': str(e)
|
||||
}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def update_asset(asset_name, asset_data):
|
||||
"""
|
||||
Update an existing asset
|
||||
|
||||
Args:
|
||||
asset_name: Name/ID of the asset
|
||||
asset_data: JSON string containing fields to update
|
||||
|
||||
Returns:
|
||||
Updated asset document
|
||||
"""
|
||||
try:
|
||||
import json
|
||||
|
||||
if not asset_name:
|
||||
frappe.throw(_('Asset name is required'))
|
||||
|
||||
# Parse asset data
|
||||
if isinstance(asset_data, str):
|
||||
asset_data = json.loads(asset_data)
|
||||
|
||||
# Check if user has permission to update this asset
|
||||
if not frappe.has_permission('Asset', 'write', asset_name):
|
||||
frappe.throw(_('Not permitted to update this asset'))
|
||||
|
||||
# Get and update asset
|
||||
asset = frappe.get_doc('Asset', asset_name)
|
||||
|
||||
# Update fields
|
||||
for key, value in asset_data.items():
|
||||
if hasattr(asset, key):
|
||||
setattr(asset, key, value)
|
||||
|
||||
asset.save()
|
||||
frappe.db.commit()
|
||||
|
||||
frappe.response['message'] = {
|
||||
'success': True,
|
||||
'asset': asset.as_dict(),
|
||||
'message': _('Asset updated successfully')
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
frappe.db.rollback()
|
||||
frappe.log_error(frappe.get_traceback(), 'Update Asset API Error')
|
||||
frappe.response['message'] = {
|
||||
'success': False,
|
||||
'error': str(e)
|
||||
}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def delete_asset(asset_name):
|
||||
"""
|
||||
Delete an asset
|
||||
|
||||
Args:
|
||||
asset_name: Name/ID of the asset
|
||||
|
||||
Returns:
|
||||
Success message
|
||||
"""
|
||||
try:
|
||||
if not asset_name:
|
||||
frappe.throw(_('Asset name is required'))
|
||||
|
||||
# Check if user has permission to delete this asset
|
||||
if not frappe.has_permission('Asset', 'delete', asset_name):
|
||||
frappe.throw(_('Not permitted to delete this asset'))
|
||||
|
||||
# Delete asset
|
||||
frappe.delete_doc('Asset', asset_name)
|
||||
frappe.db.commit()
|
||||
|
||||
frappe.response['message'] = {
|
||||
'success': True,
|
||||
'message': _('Asset deleted successfully')
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
frappe.db.rollback()
|
||||
frappe.log_error(frappe.get_traceback(), 'Delete Asset API Error')
|
||||
frappe.response['message'] = {
|
||||
'success': False,
|
||||
'error': str(e)
|
||||
}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_asset_filters():
|
||||
"""
|
||||
Get available filter options for assets
|
||||
|
||||
Returns:
|
||||
{
|
||||
"companies": [...],
|
||||
"locations": [...],
|
||||
"departments": [...],
|
||||
"asset_types": [...],
|
||||
"manufacturers": [...],
|
||||
"device_statuses": [...]
|
||||
}
|
||||
"""
|
||||
try:
|
||||
filters = {
|
||||
'companies': frappe.get_all('Company', fields=['name'], pluck='name'),
|
||||
'locations': frappe.db.get_all('Asset',
|
||||
filters={'location': ['!=', '']},
|
||||
fields=['location'],
|
||||
distinct=True,
|
||||
pluck='location'
|
||||
),
|
||||
'departments': frappe.get_all('Department', fields=['name'], pluck='name'),
|
||||
'asset_types': frappe.db.get_all('Asset',
|
||||
filters={'custom_asset_type': ['!=', '']},
|
||||
fields=['custom_asset_type'],
|
||||
distinct=True,
|
||||
pluck='custom_asset_type'
|
||||
),
|
||||
'manufacturers': frappe.db.get_all('Asset',
|
||||
filters={'custom_manufacturer': ['!=', '']},
|
||||
fields=['custom_manufacturer'],
|
||||
distinct=True,
|
||||
pluck='custom_manufacturer'
|
||||
),
|
||||
'device_statuses': frappe.db.get_all('Asset',
|
||||
filters={'custom_device_status': ['!=', '']},
|
||||
fields=['custom_device_status'],
|
||||
distinct=True,
|
||||
pluck='custom_device_status'
|
||||
),
|
||||
}
|
||||
|
||||
frappe.response['message'] = filters
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), 'Get Asset Filters API Error')
|
||||
frappe.response['message'] = {
|
||||
'error': str(e)
|
||||
}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_asset_stats():
|
||||
"""
|
||||
Get statistics about assets
|
||||
|
||||
Returns:
|
||||
{
|
||||
"total_assets": int,
|
||||
"by_status": {...},
|
||||
"by_company": {...},
|
||||
"by_type": {...},
|
||||
"total_amount": float
|
||||
}
|
||||
"""
|
||||
try:
|
||||
# Total assets
|
||||
total_assets = frappe.db.count('Asset')
|
||||
|
||||
# Assets by device status
|
||||
by_status = {}
|
||||
status_data = frappe.db.sql("""
|
||||
SELECT custom_device_status, COUNT(*) as count
|
||||
FROM `tabAsset`
|
||||
WHERE custom_device_status IS NOT NULL AND custom_device_status != ''
|
||||
GROUP BY custom_device_status
|
||||
""", as_dict=True)
|
||||
for row in status_data:
|
||||
by_status[row.custom_device_status] = row.count
|
||||
|
||||
# Assets by company
|
||||
by_company = {}
|
||||
company_data = frappe.db.sql("""
|
||||
SELECT company, COUNT(*) as count
|
||||
FROM `tabAsset`
|
||||
WHERE company IS NOT NULL AND company != ''
|
||||
GROUP BY company
|
||||
""", as_dict=True)
|
||||
for row in company_data:
|
||||
by_company[row.company] = row.count
|
||||
|
||||
# Assets by type
|
||||
by_type = {}
|
||||
type_data = frappe.db.sql("""
|
||||
SELECT custom_asset_type, COUNT(*) as count
|
||||
FROM `tabAsset`
|
||||
WHERE custom_asset_type IS NOT NULL AND custom_asset_type != ''
|
||||
GROUP BY custom_asset_type
|
||||
""", as_dict=True)
|
||||
for row in type_data:
|
||||
by_type[row.custom_asset_type] = row.count
|
||||
|
||||
# Total amount
|
||||
total_amount = frappe.db.sql("""
|
||||
SELECT SUM(custom_total_amount) as total
|
||||
FROM `tabAsset`
|
||||
WHERE custom_total_amount IS NOT NULL
|
||||
""")[0][0] or 0
|
||||
|
||||
frappe.response['message'] = {
|
||||
'total_assets': total_assets,
|
||||
'by_status': by_status,
|
||||
'by_company': by_company,
|
||||
'by_type': by_type,
|
||||
'total_amount': float(total_amount)
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), 'Get Asset Stats API Error')
|
||||
frappe.response['message'] = {
|
||||
'error': str(e)
|
||||
}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def search_assets(search_term, limit=10):
|
||||
"""
|
||||
Search assets by name, serial number, or other fields
|
||||
|
||||
Args:
|
||||
search_term: Search query string
|
||||
limit: Maximum number of results (default: 10)
|
||||
|
||||
Returns:
|
||||
List of matching assets
|
||||
"""
|
||||
try:
|
||||
if not search_term:
|
||||
frappe.response['message'] = []
|
||||
return
|
||||
|
||||
search_term = f"%{search_term}%"
|
||||
|
||||
assets = frappe.db.sql("""
|
||||
SELECT
|
||||
name,
|
||||
asset_name,
|
||||
custom_serial_number,
|
||||
location,
|
||||
company,
|
||||
custom_device_status
|
||||
FROM `tabAsset`
|
||||
WHERE
|
||||
asset_name LIKE %(search)s
|
||||
OR custom_serial_number LIKE %(search)s
|
||||
OR location LIKE %(search)s
|
||||
OR custom_manufacturer LIKE %(search)s
|
||||
LIMIT %(limit)s
|
||||
""", {
|
||||
'search': search_term,
|
||||
'limit': int(limit)
|
||||
}, as_dict=True)
|
||||
|
||||
frappe.response['message'] = assets
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), 'Search Assets API Error')
|
||||
frappe.response['message'] = {
|
||||
'error': str(e)
|
||||
}
|
||||
|
||||
247
frappe_dashboard_api.py
Normal file
247
frappe_dashboard_api.py
Normal file
@ -0,0 +1,247 @@
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.utils import nowdate
|
||||
import json
|
||||
|
||||
|
||||
def _ok(payload, code=200):
|
||||
frappe.response.status_code = code
|
||||
frappe.response.message = payload
|
||||
|
||||
|
||||
def _err(msg, code=500):
|
||||
frappe.response.status_code = code
|
||||
frappe.response.message = {"error": msg}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_number_cards():
|
||||
"""
|
||||
Returns counts for Number Cards:
|
||||
- total_assets
|
||||
- work_orders_open
|
||||
- work_orders_in_progress
|
||||
- work_orders_completed
|
||||
"""
|
||||
try:
|
||||
total_assets = frappe.db.count("Asset")
|
||||
work_orders_open = frappe.db.count("Work Order", {"status": ["in", ["Not Started", "Open", "Pending"]]})
|
||||
work_orders_in_progress = frappe.db.count("Work Order", {"status": ["in", ["In Process", "In Progress", "Started"]]})
|
||||
work_orders_completed = frappe.db.count("Work Order", {"status": ["in", ["Completed", "Closed", "Finished"]]})
|
||||
|
||||
_ok({
|
||||
"total_assets": total_assets,
|
||||
"work_orders_open": work_orders_open,
|
||||
"work_orders_in_progress": work_orders_in_progress,
|
||||
"work_orders_completed": work_orders_completed,
|
||||
})
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), "get_number_cards")
|
||||
_err(str(e))
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def list_dashboard_charts(search=None, public_only=True, limit=50):
|
||||
"""
|
||||
List available Dashboard Chart docs and their y-axis rows.
|
||||
"""
|
||||
try:
|
||||
filters = {}
|
||||
if str(public_only) in ("1", "true", "True"): # tolerate string flags
|
||||
filters["is_public"] = 1
|
||||
|
||||
charts = frappe.get_all(
|
||||
"Dashboard Chart",
|
||||
filters=filters,
|
||||
fields=[
|
||||
"name",
|
||||
"chart_name",
|
||||
"type",
|
||||
"is_public",
|
||||
"chart_type",
|
||||
"report_name",
|
||||
"use_report_chart",
|
||||
"x_field",
|
||||
"time_interval",
|
||||
"timespan",
|
||||
"custom_options",
|
||||
],
|
||||
limit=int(limit or 50),
|
||||
order_by="modified desc",
|
||||
)
|
||||
|
||||
for c in charts:
|
||||
y_rows = frappe.get_all(
|
||||
"Dashboard Chart Field",
|
||||
filters={"parenttype": "Dashboard Chart", "parent": c["name"]},
|
||||
fields=["y_field", "color"],
|
||||
order_by="idx asc",
|
||||
)
|
||||
c["y_axes"] = y_rows
|
||||
|
||||
_ok({"charts": charts})
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), "list_dashboard_charts")
|
||||
_err(str(e))
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_dashboard_chart_data(chart_name, report_filters=None):
|
||||
"""
|
||||
Return chart-ready JSON for any Dashboard Chart (Report-based or Custom).
|
||||
"""
|
||||
try:
|
||||
if isinstance(report_filters, str):
|
||||
report_filters = json.loads(report_filters or "{}")
|
||||
report_filters = report_filters or {}
|
||||
|
||||
chart = frappe.get_doc("Dashboard Chart", chart_name)
|
||||
|
||||
# Handle Custom charts (non-Report based)
|
||||
if chart.chart_type != "Report" or not chart.use_report_chart:
|
||||
# For Custom charts, query the source doctype directly
|
||||
try:
|
||||
# Get chart configuration
|
||||
source = chart.document_type
|
||||
based_on = chart.based_on
|
||||
value_based_on = chart.value_based_on or "name"
|
||||
|
||||
# Build aggregation query
|
||||
if chart.type == "Pie":
|
||||
# Group by based_on field and count
|
||||
data = frappe.db.sql(f"""
|
||||
SELECT {based_on} as label, COUNT({value_based_on}) as value
|
||||
FROM `tab{source}`
|
||||
GROUP BY {based_on}
|
||||
ORDER BY value DESC
|
||||
""", as_dict=True)
|
||||
|
||||
labels = [str(d.get("label")) for d in data]
|
||||
values = [float(d.get("value") or 0) for d in data]
|
||||
|
||||
_ok({
|
||||
"labels": labels,
|
||||
"datasets": [{"name": "count", "values": values}],
|
||||
"type": "Pie",
|
||||
"options": _parse_custom_options(chart.custom_options),
|
||||
"source": {"doctype": source},
|
||||
})
|
||||
else:
|
||||
# Bar chart: group by based_on
|
||||
data = frappe.db.sql(f"""
|
||||
SELECT {based_on} as label, COUNT({value_based_on}) as value
|
||||
FROM `tab{source}`
|
||||
GROUP BY {based_on}
|
||||
ORDER BY value DESC
|
||||
LIMIT 20
|
||||
""", as_dict=True)
|
||||
|
||||
labels = [str(d.get("label")) for d in data]
|
||||
values = [float(d.get("value") or 0) for d in data]
|
||||
|
||||
_ok({
|
||||
"labels": labels,
|
||||
"datasets": [{"name": "count", "values": values, "color": "#4F46E5"}],
|
||||
"type": "Bar",
|
||||
"options": _parse_custom_options(chart.custom_options),
|
||||
"source": {"doctype": source},
|
||||
})
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), f"Custom Chart Error: {chart_name}")
|
||||
_err(f"Error processing custom chart: {str(e)}")
|
||||
return
|
||||
|
||||
y_axes = frappe.get_all(
|
||||
"Dashboard Chart Field",
|
||||
filters={"parenttype": "Dashboard Chart", "parent": chart.name},
|
||||
fields=["y_field", "color"],
|
||||
order_by="idx asc",
|
||||
)
|
||||
|
||||
run = frappe.get_attr("frappe.desk.query_report.run")
|
||||
report_result = run(chart.report_name, filters=report_filters)
|
||||
rows = report_result.get("result", []) or []
|
||||
data_rows = [r for r in rows if not r.get("is_total_row")]
|
||||
|
||||
x_key = chart.x_field
|
||||
labels = [str(r.get(x_key)) for r in data_rows if r.get(x_key) is not None]
|
||||
|
||||
datasets = []
|
||||
for y in y_axes:
|
||||
series_name = y.get("y_field") # Use field name as series name
|
||||
values = []
|
||||
for r in data_rows:
|
||||
val = r.get(y.get("y_field"))
|
||||
try:
|
||||
values.append(float(val) if val is not None else 0)
|
||||
except Exception:
|
||||
values.append(0)
|
||||
datasets.append({"name": series_name, "values": values, "color": y.get("color")})
|
||||
|
||||
chart_type = (chart.type or "Bar").title()
|
||||
if chart_type.lower() == "pie":
|
||||
ds = datasets[0] if datasets else {"name": "value", "values": []}
|
||||
_ok({
|
||||
"labels": labels,
|
||||
"datasets": [ds],
|
||||
"type": "Pie",
|
||||
"options": _parse_custom_options(chart.custom_options),
|
||||
"source": {"report": chart.report_name},
|
||||
})
|
||||
return
|
||||
|
||||
_ok({
|
||||
"labels": labels,
|
||||
"datasets": datasets,
|
||||
"type": chart_type,
|
||||
"options": _parse_custom_options(chart.custom_options),
|
||||
"source": {"report": chart.report_name},
|
||||
})
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), "get_dashboard_chart_data")
|
||||
_err(str(e))
|
||||
|
||||
|
||||
def _parse_custom_options(raw):
|
||||
if not raw:
|
||||
return {}
|
||||
try:
|
||||
if isinstance(raw, dict):
|
||||
return raw
|
||||
return json.loads(raw)
|
||||
except Exception:
|
||||
return {}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_repair_cost_by_item(year=None):
|
||||
"""
|
||||
Example specialized endpoint for 'Repair Cost' report style chart
|
||||
(X: item_code, Y: amount, Filter: Year)
|
||||
"""
|
||||
try:
|
||||
year = int(year or frappe.utils.getdate(nowdate()).year)
|
||||
rows = frappe.db.sql(
|
||||
"""
|
||||
SELECT item_code, SUM(amount) as amount
|
||||
FROM `tabWork Order` wo
|
||||
WHERE YEAR(wo.posting_date) = %(year)s
|
||||
GROUP BY item_code
|
||||
ORDER BY amount DESC
|
||||
""",
|
||||
{"year": year},
|
||||
as_dict=True,
|
||||
)
|
||||
labels = [r.item_code or "Unknown" for r in rows]
|
||||
values = [float(r.amount or 0) for r in rows]
|
||||
_ok({
|
||||
"labels": labels,
|
||||
"datasets": [{"name": f"Repair Cost {year}", "values": values}],
|
||||
"type": "Bar",
|
||||
"options": {},
|
||||
})
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), "get_repair_cost_by_item")
|
||||
_err(str(e))
|
||||
|
||||
|
||||
13
index.html
Normal file
13
index.html
Normal file
@ -0,0 +1,13 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>frappe-frontend</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/src/main.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
16
node_modules/.bin/acorn
generated
vendored
Normal file
16
node_modules/.bin/acorn
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@"
|
||||
else
|
||||
exec node "$basedir/../acorn/bin/acorn" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/acorn.cmd
generated
vendored
Normal file
17
node_modules/.bin/acorn.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\acorn\bin\acorn" %*
|
||||
28
node_modules/.bin/acorn.ps1
generated
vendored
Normal file
28
node_modules/.bin/acorn.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../acorn/bin/acorn" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../acorn/bin/acorn" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/autoprefixer
generated
vendored
Normal file
16
node_modules/.bin/autoprefixer
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../autoprefixer/bin/autoprefixer" "$@"
|
||||
else
|
||||
exec node "$basedir/../autoprefixer/bin/autoprefixer" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/autoprefixer.cmd
generated
vendored
Normal file
17
node_modules/.bin/autoprefixer.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\autoprefixer\bin\autoprefixer" %*
|
||||
28
node_modules/.bin/autoprefixer.ps1
generated
vendored
Normal file
28
node_modules/.bin/autoprefixer.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../autoprefixer/bin/autoprefixer" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../autoprefixer/bin/autoprefixer" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../autoprefixer/bin/autoprefixer" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../autoprefixer/bin/autoprefixer" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/baseline-browser-mapping
generated
vendored
Normal file
16
node_modules/.bin/baseline-browser-mapping
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../baseline-browser-mapping/dist/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../baseline-browser-mapping/dist/cli.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/baseline-browser-mapping.cmd
generated
vendored
Normal file
17
node_modules/.bin/baseline-browser-mapping.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\baseline-browser-mapping\dist\cli.js" %*
|
||||
28
node_modules/.bin/baseline-browser-mapping.ps1
generated
vendored
Normal file
28
node_modules/.bin/baseline-browser-mapping.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/browserslist
generated
vendored
Normal file
16
node_modules/.bin/browserslist
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../browserslist/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../browserslist/cli.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/browserslist.cmd
generated
vendored
Normal file
17
node_modules/.bin/browserslist.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\browserslist\cli.js" %*
|
||||
28
node_modules/.bin/browserslist.ps1
generated
vendored
Normal file
28
node_modules/.bin/browserslist.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../browserslist/cli.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../browserslist/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/cssesc
generated
vendored
Normal file
16
node_modules/.bin/cssesc
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../cssesc/bin/cssesc" "$@"
|
||||
else
|
||||
exec node "$basedir/../cssesc/bin/cssesc" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/cssesc.cmd
generated
vendored
Normal file
17
node_modules/.bin/cssesc.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\cssesc\bin\cssesc" %*
|
||||
28
node_modules/.bin/cssesc.ps1
generated
vendored
Normal file
28
node_modules/.bin/cssesc.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../cssesc/bin/cssesc" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../cssesc/bin/cssesc" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../cssesc/bin/cssesc" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../cssesc/bin/cssesc" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/esbuild
generated
vendored
Normal file
16
node_modules/.bin/esbuild
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../esbuild/bin/esbuild" "$@"
|
||||
else
|
||||
exec node "$basedir/../esbuild/bin/esbuild" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/esbuild.cmd
generated
vendored
Normal file
17
node_modules/.bin/esbuild.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %*
|
||||
28
node_modules/.bin/esbuild.ps1
generated
vendored
Normal file
28
node_modules/.bin/esbuild.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/eslint
generated
vendored
Normal file
16
node_modules/.bin/eslint
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../eslint/bin/eslint.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../eslint/bin/eslint.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/eslint.cmd
generated
vendored
Normal file
17
node_modules/.bin/eslint.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\eslint\bin\eslint.js" %*
|
||||
28
node_modules/.bin/eslint.ps1
generated
vendored
Normal file
28
node_modules/.bin/eslint.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../eslint/bin/eslint.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../eslint/bin/eslint.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/glob
generated
vendored
Normal file
16
node_modules/.bin/glob
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../glob/dist/esm/bin.mjs" "$@"
|
||||
else
|
||||
exec node "$basedir/../glob/dist/esm/bin.mjs" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/glob.cmd
generated
vendored
Normal file
17
node_modules/.bin/glob.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\glob\dist\esm\bin.mjs" %*
|
||||
28
node_modules/.bin/glob.ps1
generated
vendored
Normal file
28
node_modules/.bin/glob.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../glob/dist/esm/bin.mjs" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../glob/dist/esm/bin.mjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../glob/dist/esm/bin.mjs" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../glob/dist/esm/bin.mjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/jiti
generated
vendored
Normal file
16
node_modules/.bin/jiti
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../jiti/lib/jiti-cli.mjs" "$@"
|
||||
else
|
||||
exec node "$basedir/../jiti/lib/jiti-cli.mjs" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/jiti.cmd
generated
vendored
Normal file
17
node_modules/.bin/jiti.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\jiti\lib\jiti-cli.mjs" %*
|
||||
28
node_modules/.bin/jiti.ps1
generated
vendored
Normal file
28
node_modules/.bin/jiti.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../jiti/lib/jiti-cli.mjs" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../jiti/lib/jiti-cli.mjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../jiti/lib/jiti-cli.mjs" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../jiti/lib/jiti-cli.mjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/js-yaml
generated
vendored
Normal file
16
node_modules/.bin/js-yaml
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../js-yaml/bin/js-yaml.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../js-yaml/bin/js-yaml.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/js-yaml.cmd
generated
vendored
Normal file
17
node_modules/.bin/js-yaml.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\js-yaml\bin\js-yaml.js" %*
|
||||
28
node_modules/.bin/js-yaml.ps1
generated
vendored
Normal file
28
node_modules/.bin/js-yaml.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/jsesc
generated
vendored
Normal file
16
node_modules/.bin/jsesc
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../jsesc/bin/jsesc" "$@"
|
||||
else
|
||||
exec node "$basedir/../jsesc/bin/jsesc" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/jsesc.cmd
generated
vendored
Normal file
17
node_modules/.bin/jsesc.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\jsesc\bin\jsesc" %*
|
||||
28
node_modules/.bin/jsesc.ps1
generated
vendored
Normal file
28
node_modules/.bin/jsesc.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../jsesc/bin/jsesc" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../jsesc/bin/jsesc" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../jsesc/bin/jsesc" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../jsesc/bin/jsesc" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/json5
generated
vendored
Normal file
16
node_modules/.bin/json5
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../json5/lib/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../json5/lib/cli.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/json5.cmd
generated
vendored
Normal file
17
node_modules/.bin/json5.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\json5\lib\cli.js" %*
|
||||
28
node_modules/.bin/json5.ps1
generated
vendored
Normal file
28
node_modules/.bin/json5.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../json5/lib/cli.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../json5/lib/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/nanoid
generated
vendored
Normal file
16
node_modules/.bin/nanoid
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@"
|
||||
else
|
||||
exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/nanoid.cmd
generated
vendored
Normal file
17
node_modules/.bin/nanoid.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %*
|
||||
28
node_modules/.bin/nanoid.ps1
generated
vendored
Normal file
28
node_modules/.bin/nanoid.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/node-which
generated
vendored
Normal file
16
node_modules/.bin/node-which
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../which/bin/node-which" "$@"
|
||||
else
|
||||
exec node "$basedir/../which/bin/node-which" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/node-which.cmd
generated
vendored
Normal file
17
node_modules/.bin/node-which.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\which\bin\node-which" %*
|
||||
28
node_modules/.bin/node-which.ps1
generated
vendored
Normal file
28
node_modules/.bin/node-which.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../which/bin/node-which" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../which/bin/node-which" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/parser
generated
vendored
Normal file
16
node_modules/.bin/parser
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/parser.cmd
generated
vendored
Normal file
17
node_modules/.bin/parser.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@babel\parser\bin\babel-parser.js" %*
|
||||
28
node_modules/.bin/parser.ps1
generated
vendored
Normal file
28
node_modules/.bin/parser.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/resolve
generated
vendored
Normal file
16
node_modules/.bin/resolve
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../resolve/bin/resolve" "$@"
|
||||
else
|
||||
exec node "$basedir/../resolve/bin/resolve" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/resolve.cmd
generated
vendored
Normal file
17
node_modules/.bin/resolve.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\resolve\bin\resolve" %*
|
||||
28
node_modules/.bin/resolve.ps1
generated
vendored
Normal file
28
node_modules/.bin/resolve.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../resolve/bin/resolve" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../resolve/bin/resolve" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../resolve/bin/resolve" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../resolve/bin/resolve" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/rollup
generated
vendored
Normal file
16
node_modules/.bin/rollup
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../rollup/dist/bin/rollup" "$@"
|
||||
else
|
||||
exec node "$basedir/../rollup/dist/bin/rollup" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/rollup.cmd
generated
vendored
Normal file
17
node_modules/.bin/rollup.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %*
|
||||
28
node_modules/.bin/rollup.ps1
generated
vendored
Normal file
28
node_modules/.bin/rollup.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../rollup/dist/bin/rollup" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../rollup/dist/bin/rollup" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/semver
generated
vendored
Normal file
16
node_modules/.bin/semver
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../semver/bin/semver.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../semver/bin/semver.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/semver.cmd
generated
vendored
Normal file
17
node_modules/.bin/semver.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver.js" %*
|
||||
28
node_modules/.bin/semver.ps1
generated
vendored
Normal file
28
node_modules/.bin/semver.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../semver/bin/semver.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../semver/bin/semver.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/sucrase
generated
vendored
Normal file
16
node_modules/.bin/sucrase
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../sucrase/bin/sucrase" "$@"
|
||||
else
|
||||
exec node "$basedir/../sucrase/bin/sucrase" "$@"
|
||||
fi
|
||||
16
node_modules/.bin/sucrase-node
generated
vendored
Normal file
16
node_modules/.bin/sucrase-node
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../sucrase/bin/sucrase-node" "$@"
|
||||
else
|
||||
exec node "$basedir/../sucrase/bin/sucrase-node" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/sucrase-node.cmd
generated
vendored
Normal file
17
node_modules/.bin/sucrase-node.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\sucrase\bin\sucrase-node" %*
|
||||
28
node_modules/.bin/sucrase-node.ps1
generated
vendored
Normal file
28
node_modules/.bin/sucrase-node.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../sucrase/bin/sucrase-node" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../sucrase/bin/sucrase-node" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../sucrase/bin/sucrase-node" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../sucrase/bin/sucrase-node" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
17
node_modules/.bin/sucrase.cmd
generated
vendored
Normal file
17
node_modules/.bin/sucrase.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\sucrase\bin\sucrase" %*
|
||||
28
node_modules/.bin/sucrase.ps1
generated
vendored
Normal file
28
node_modules/.bin/sucrase.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../sucrase/bin/sucrase" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../sucrase/bin/sucrase" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../sucrase/bin/sucrase" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../sucrase/bin/sucrase" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/tailwind
generated
vendored
Normal file
16
node_modules/.bin/tailwind
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../tailwindcss/lib/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../tailwindcss/lib/cli.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/tailwind.cmd
generated
vendored
Normal file
17
node_modules/.bin/tailwind.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\tailwindcss\lib\cli.js" %*
|
||||
28
node_modules/.bin/tailwind.ps1
generated
vendored
Normal file
28
node_modules/.bin/tailwind.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../tailwindcss/lib/cli.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../tailwindcss/lib/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../tailwindcss/lib/cli.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../tailwindcss/lib/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/tailwindcss
generated
vendored
Normal file
16
node_modules/.bin/tailwindcss
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../tailwindcss/lib/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../tailwindcss/lib/cli.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/tailwindcss.cmd
generated
vendored
Normal file
17
node_modules/.bin/tailwindcss.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\tailwindcss\lib\cli.js" %*
|
||||
28
node_modules/.bin/tailwindcss.ps1
generated
vendored
Normal file
28
node_modules/.bin/tailwindcss.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../tailwindcss/lib/cli.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../tailwindcss/lib/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../tailwindcss/lib/cli.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../tailwindcss/lib/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/tsc
generated
vendored
Normal file
16
node_modules/.bin/tsc
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
|
||||
else
|
||||
exec node "$basedir/../typescript/bin/tsc" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/tsc.cmd
generated
vendored
Normal file
17
node_modules/.bin/tsc.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\typescript\bin\tsc" %*
|
||||
28
node_modules/.bin/tsc.ps1
generated
vendored
Normal file
28
node_modules/.bin/tsc.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../typescript/bin/tsc" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../typescript/bin/tsc" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../typescript/bin/tsc" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../typescript/bin/tsc" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/tsserver
generated
vendored
Normal file
16
node_modules/.bin/tsserver
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
|
||||
else
|
||||
exec node "$basedir/../typescript/bin/tsserver" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/tsserver.cmd
generated
vendored
Normal file
17
node_modules/.bin/tsserver.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\typescript\bin\tsserver" %*
|
||||
28
node_modules/.bin/tsserver.ps1
generated
vendored
Normal file
28
node_modules/.bin/tsserver.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../typescript/bin/tsserver" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../typescript/bin/tsserver" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../typescript/bin/tsserver" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../typescript/bin/tsserver" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/update-browserslist-db
generated
vendored
Normal file
16
node_modules/.bin/update-browserslist-db
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../update-browserslist-db/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../update-browserslist-db/cli.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/update-browserslist-db.cmd
generated
vendored
Normal file
17
node_modules/.bin/update-browserslist-db.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\update-browserslist-db\cli.js" %*
|
||||
28
node_modules/.bin/update-browserslist-db.ps1
generated
vendored
Normal file
28
node_modules/.bin/update-browserslist-db.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../update-browserslist-db/cli.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../update-browserslist-db/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../update-browserslist-db/cli.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../update-browserslist-db/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
node_modules/.bin/vite
generated
vendored
Normal file
16
node_modules/.bin/vite
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../vite/bin/vite.js" "$@"
|
||||
fi
|
||||
17
node_modules/.bin/vite.cmd
generated
vendored
Normal file
17
node_modules/.bin/vite.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %*
|
||||
28
node_modules/.bin/vite.ps1
generated
vendored
Normal file
28
node_modules/.bin/vite.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../vite/bin/vite.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../vite/bin/vite.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
4144
node_modules/.package-lock.json
generated
vendored
Normal file
4144
node_modules/.package-lock.json
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
67
node_modules/.vite/deps/_metadata.json
generated
vendored
Normal file
67
node_modules/.vite/deps/_metadata.json
generated
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
{
|
||||
"hash": "4b000bef",
|
||||
"configHash": "7cc09d5b",
|
||||
"lockfileHash": "aa9c04ea",
|
||||
"browserHash": "6a970aed",
|
||||
"optimized": {
|
||||
"react": {
|
||||
"src": "../../react/index.js",
|
||||
"file": "react.js",
|
||||
"fileHash": "6bedc2a9",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react-dom": {
|
||||
"src": "../../react-dom/index.js",
|
||||
"file": "react-dom.js",
|
||||
"fileHash": "fdd4792b",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react/jsx-dev-runtime": {
|
||||
"src": "../../react/jsx-dev-runtime.js",
|
||||
"file": "react_jsx-dev-runtime.js",
|
||||
"fileHash": "cd0de2aa",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react/jsx-runtime": {
|
||||
"src": "../../react/jsx-runtime.js",
|
||||
"file": "react_jsx-runtime.js",
|
||||
"fileHash": "ea762930",
|
||||
"needsInterop": true
|
||||
},
|
||||
"axios": {
|
||||
"src": "../../axios/index.js",
|
||||
"file": "axios.js",
|
||||
"fileHash": "c48e11f7",
|
||||
"needsInterop": false
|
||||
},
|
||||
"react-dom/client": {
|
||||
"src": "../../react-dom/client.js",
|
||||
"file": "react-dom_client.js",
|
||||
"fileHash": "5363edec",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react-icons/fa": {
|
||||
"src": "../../react-icons/fa/index.mjs",
|
||||
"file": "react-icons_fa.js",
|
||||
"fileHash": "7c02b8f7",
|
||||
"needsInterop": false
|
||||
},
|
||||
"react-router-dom": {
|
||||
"src": "../../react-router-dom/dist/index.mjs",
|
||||
"file": "react-router-dom.js",
|
||||
"fileHash": "69de7168",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"chunk-F5X6INBZ": {
|
||||
"file": "chunk-F5X6INBZ.js"
|
||||
},
|
||||
"chunk-KMU3Z7QX": {
|
||||
"file": "chunk-KMU3Z7QX.js"
|
||||
},
|
||||
"chunk-G3PMV62Z": {
|
||||
"file": "chunk-G3PMV62Z.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
2601
node_modules/.vite/deps/axios.js
generated
vendored
Normal file
2601
node_modules/.vite/deps/axios.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
node_modules/.vite/deps/axios.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/axios.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
280
node_modules/.vite/deps/chunk-F5X6INBZ.js
generated
vendored
Normal file
280
node_modules/.vite/deps/chunk-F5X6INBZ.js
generated
vendored
Normal file
@ -0,0 +1,280 @@
|
||||
import {
|
||||
require_react
|
||||
} from "./chunk-KMU3Z7QX.js";
|
||||
import {
|
||||
__commonJS
|
||||
} from "./chunk-G3PMV62Z.js";
|
||||
|
||||
// node_modules/react-dom/cjs/react-dom.development.js
|
||||
var require_react_dom_development = __commonJS({
|
||||
"node_modules/react-dom/cjs/react-dom.development.js"(exports) {
|
||||
"use strict";
|
||||
(function() {
|
||||
function noop() {
|
||||
}
|
||||
function testStringCoercion(value) {
|
||||
return "" + value;
|
||||
}
|
||||
function createPortal$1(children, containerInfo, implementation) {
|
||||
var key = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;
|
||||
try {
|
||||
testStringCoercion(key);
|
||||
var JSCompiler_inline_result = false;
|
||||
} catch (e) {
|
||||
JSCompiler_inline_result = true;
|
||||
}
|
||||
JSCompiler_inline_result && (console.error(
|
||||
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
|
||||
"function" === typeof Symbol && Symbol.toStringTag && key[Symbol.toStringTag] || key.constructor.name || "Object"
|
||||
), testStringCoercion(key));
|
||||
return {
|
||||
$$typeof: REACT_PORTAL_TYPE,
|
||||
key: null == key ? null : "" + key,
|
||||
children,
|
||||
containerInfo,
|
||||
implementation
|
||||
};
|
||||
}
|
||||
function getCrossOriginStringAs(as, input) {
|
||||
if ("font" === as) return "";
|
||||
if ("string" === typeof input)
|
||||
return "use-credentials" === input ? input : "";
|
||||
}
|
||||
function getValueDescriptorExpectingObjectForWarning(thing) {
|
||||
return null === thing ? "`null`" : void 0 === thing ? "`undefined`" : "" === thing ? "an empty string" : 'something with type "' + typeof thing + '"';
|
||||
}
|
||||
function getValueDescriptorExpectingEnumForWarning(thing) {
|
||||
return null === thing ? "`null`" : void 0 === thing ? "`undefined`" : "" === thing ? "an empty string" : "string" === typeof thing ? JSON.stringify(thing) : "number" === typeof thing ? "`" + thing + "`" : 'something with type "' + typeof thing + '"';
|
||||
}
|
||||
function resolveDispatcher() {
|
||||
var dispatcher = ReactSharedInternals.H;
|
||||
null === dispatcher && console.error(
|
||||
"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem."
|
||||
);
|
||||
return dispatcher;
|
||||
}
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
|
||||
var React = require_react(), Internals = {
|
||||
d: {
|
||||
f: noop,
|
||||
r: function() {
|
||||
throw Error(
|
||||
"Invalid form element. requestFormReset must be passed a form that was rendered by React."
|
||||
);
|
||||
},
|
||||
D: noop,
|
||||
C: noop,
|
||||
L: noop,
|
||||
m: noop,
|
||||
X: noop,
|
||||
S: noop,
|
||||
M: noop
|
||||
},
|
||||
p: 0,
|
||||
findDOMNode: null
|
||||
}, REACT_PORTAL_TYPE = Symbol.for("react.portal"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
|
||||
"function" === typeof Map && null != Map.prototype && "function" === typeof Map.prototype.forEach && "function" === typeof Set && null != Set.prototype && "function" === typeof Set.prototype.clear && "function" === typeof Set.prototype.forEach || console.error(
|
||||
"React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"
|
||||
);
|
||||
exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals;
|
||||
exports.createPortal = function(children, container) {
|
||||
var key = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
|
||||
if (!container || 1 !== container.nodeType && 9 !== container.nodeType && 11 !== container.nodeType)
|
||||
throw Error("Target container is not a DOM element.");
|
||||
return createPortal$1(children, container, null, key);
|
||||
};
|
||||
exports.flushSync = function(fn) {
|
||||
var previousTransition = ReactSharedInternals.T, previousUpdatePriority = Internals.p;
|
||||
try {
|
||||
if (ReactSharedInternals.T = null, Internals.p = 2, fn)
|
||||
return fn();
|
||||
} finally {
|
||||
ReactSharedInternals.T = previousTransition, Internals.p = previousUpdatePriority, Internals.d.f() && console.error(
|
||||
"flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task."
|
||||
);
|
||||
}
|
||||
};
|
||||
exports.preconnect = function(href, options) {
|
||||
"string" === typeof href && href ? null != options && "object" !== typeof options ? console.error(
|
||||
"ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.",
|
||||
getValueDescriptorExpectingEnumForWarning(options)
|
||||
) : null != options && "string" !== typeof options.crossOrigin && console.error(
|
||||
"ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.",
|
||||
getValueDescriptorExpectingObjectForWarning(options.crossOrigin)
|
||||
) : console.error(
|
||||
"ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",
|
||||
getValueDescriptorExpectingObjectForWarning(href)
|
||||
);
|
||||
"string" === typeof href && (options ? (options = options.crossOrigin, options = "string" === typeof options ? "use-credentials" === options ? options : "" : void 0) : options = null, Internals.d.C(href, options));
|
||||
};
|
||||
exports.prefetchDNS = function(href) {
|
||||
if ("string" !== typeof href || !href)
|
||||
console.error(
|
||||
"ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",
|
||||
getValueDescriptorExpectingObjectForWarning(href)
|
||||
);
|
||||
else if (1 < arguments.length) {
|
||||
var options = arguments[1];
|
||||
"object" === typeof options && options.hasOwnProperty("crossOrigin") ? console.error(
|
||||
"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",
|
||||
getValueDescriptorExpectingEnumForWarning(options)
|
||||
) : console.error(
|
||||
"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",
|
||||
getValueDescriptorExpectingEnumForWarning(options)
|
||||
);
|
||||
}
|
||||
"string" === typeof href && Internals.d.D(href);
|
||||
};
|
||||
exports.preinit = function(href, options) {
|
||||
"string" === typeof href && href ? null == options || "object" !== typeof options ? console.error(
|
||||
"ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.",
|
||||
getValueDescriptorExpectingEnumForWarning(options)
|
||||
) : "style" !== options.as && "script" !== options.as && console.error(
|
||||
'ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are "style" and "script".',
|
||||
getValueDescriptorExpectingEnumForWarning(options.as)
|
||||
) : console.error(
|
||||
"ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",
|
||||
getValueDescriptorExpectingObjectForWarning(href)
|
||||
);
|
||||
if ("string" === typeof href && options && "string" === typeof options.as) {
|
||||
var as = options.as, crossOrigin = getCrossOriginStringAs(as, options.crossOrigin), integrity = "string" === typeof options.integrity ? options.integrity : void 0, fetchPriority = "string" === typeof options.fetchPriority ? options.fetchPriority : void 0;
|
||||
"style" === as ? Internals.d.S(
|
||||
href,
|
||||
"string" === typeof options.precedence ? options.precedence : void 0,
|
||||
{
|
||||
crossOrigin,
|
||||
integrity,
|
||||
fetchPriority
|
||||
}
|
||||
) : "script" === as && Internals.d.X(href, {
|
||||
crossOrigin,
|
||||
integrity,
|
||||
fetchPriority,
|
||||
nonce: "string" === typeof options.nonce ? options.nonce : void 0
|
||||
});
|
||||
}
|
||||
};
|
||||
exports.preinitModule = function(href, options) {
|
||||
var encountered = "";
|
||||
"string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
|
||||
void 0 !== options && "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : options && "as" in options && "script" !== options.as && (encountered += " The `as` option encountered was " + getValueDescriptorExpectingEnumForWarning(options.as) + ".");
|
||||
if (encountered)
|
||||
console.error(
|
||||
"ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s",
|
||||
encountered
|
||||
);
|
||||
else
|
||||
switch (encountered = options && "string" === typeof options.as ? options.as : "script", encountered) {
|
||||
case "script":
|
||||
break;
|
||||
default:
|
||||
encountered = getValueDescriptorExpectingEnumForWarning(encountered), console.error(
|
||||
'ReactDOM.preinitModule(): Currently the only supported "as" type for this function is "script" but received "%s" instead. This warning was generated for `href` "%s". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)',
|
||||
encountered,
|
||||
href
|
||||
);
|
||||
}
|
||||
if ("string" === typeof href)
|
||||
if ("object" === typeof options && null !== options) {
|
||||
if (null == options.as || "script" === options.as)
|
||||
encountered = getCrossOriginStringAs(
|
||||
options.as,
|
||||
options.crossOrigin
|
||||
), Internals.d.M(href, {
|
||||
crossOrigin: encountered,
|
||||
integrity: "string" === typeof options.integrity ? options.integrity : void 0,
|
||||
nonce: "string" === typeof options.nonce ? options.nonce : void 0
|
||||
});
|
||||
} else null == options && Internals.d.M(href);
|
||||
};
|
||||
exports.preload = function(href, options) {
|
||||
var encountered = "";
|
||||
"string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
|
||||
null == options || "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : "string" === typeof options.as && options.as || (encountered += " The `as` option encountered was " + getValueDescriptorExpectingObjectForWarning(options.as) + ".");
|
||||
encountered && console.error(
|
||||
'ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel="preload" as="..." />` tag.%s',
|
||||
encountered
|
||||
);
|
||||
if ("string" === typeof href && "object" === typeof options && null !== options && "string" === typeof options.as) {
|
||||
encountered = options.as;
|
||||
var crossOrigin = getCrossOriginStringAs(
|
||||
encountered,
|
||||
options.crossOrigin
|
||||
);
|
||||
Internals.d.L(href, encountered, {
|
||||
crossOrigin,
|
||||
integrity: "string" === typeof options.integrity ? options.integrity : void 0,
|
||||
nonce: "string" === typeof options.nonce ? options.nonce : void 0,
|
||||
type: "string" === typeof options.type ? options.type : void 0,
|
||||
fetchPriority: "string" === typeof options.fetchPriority ? options.fetchPriority : void 0,
|
||||
referrerPolicy: "string" === typeof options.referrerPolicy ? options.referrerPolicy : void 0,
|
||||
imageSrcSet: "string" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,
|
||||
imageSizes: "string" === typeof options.imageSizes ? options.imageSizes : void 0,
|
||||
media: "string" === typeof options.media ? options.media : void 0
|
||||
});
|
||||
}
|
||||
};
|
||||
exports.preloadModule = function(href, options) {
|
||||
var encountered = "";
|
||||
"string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
|
||||
void 0 !== options && "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : options && "as" in options && "string" !== typeof options.as && (encountered += " The `as` option encountered was " + getValueDescriptorExpectingObjectForWarning(options.as) + ".");
|
||||
encountered && console.error(
|
||||
'ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel="modulepreload" as="..." />` tag.%s',
|
||||
encountered
|
||||
);
|
||||
"string" === typeof href && (options ? (encountered = getCrossOriginStringAs(
|
||||
options.as,
|
||||
options.crossOrigin
|
||||
), Internals.d.m(href, {
|
||||
as: "string" === typeof options.as && "script" !== options.as ? options.as : void 0,
|
||||
crossOrigin: encountered,
|
||||
integrity: "string" === typeof options.integrity ? options.integrity : void 0
|
||||
})) : Internals.d.m(href));
|
||||
};
|
||||
exports.requestFormReset = function(form) {
|
||||
Internals.d.r(form);
|
||||
};
|
||||
exports.unstable_batchedUpdates = function(fn, a) {
|
||||
return fn(a);
|
||||
};
|
||||
exports.useFormState = function(action, initialState, permalink) {
|
||||
return resolveDispatcher().useFormState(action, initialState, permalink);
|
||||
};
|
||||
exports.useFormStatus = function() {
|
||||
return resolveDispatcher().useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
|
||||
})();
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/react-dom/index.js
|
||||
var require_react_dom = __commonJS({
|
||||
"node_modules/react-dom/index.js"(exports, module) {
|
||||
if (false) {
|
||||
checkDCE();
|
||||
module.exports = null;
|
||||
} else {
|
||||
module.exports = require_react_dom_development();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
require_react_dom
|
||||
};
|
||||
/*! Bundled license information:
|
||||
|
||||
react-dom/cjs/react-dom.development.js:
|
||||
(**
|
||||
* @license React
|
||||
* react-dom.development.js
|
||||
*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-F5X6INBZ.js.map
|
||||
7
node_modules/.vite/deps/chunk-F5X6INBZ.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/chunk-F5X6INBZ.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
35
node_modules/.vite/deps/chunk-G3PMV62Z.js
generated
vendored
Normal file
35
node_modules/.vite/deps/chunk-G3PMV62Z.js
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
var __create = Object.create;
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __getProtoOf = Object.getPrototypeOf;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __commonJS = (cb, mod) => function __require() {
|
||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||
};
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
||||
// If the importer is in node compatibility mode or this is not an ESM
|
||||
// file that has been converted to a CommonJS file using a Babel-
|
||||
// compatible transform (i.e. "__esModule" has not been set), then set
|
||||
// "default" to the CommonJS "module.exports" for node compatibility.
|
||||
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
||||
mod
|
||||
));
|
||||
|
||||
export {
|
||||
__commonJS,
|
||||
__export,
|
||||
__toESM
|
||||
};
|
||||
7
node_modules/.vite/deps/chunk-G3PMV62Z.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/chunk-G3PMV62Z.js.map
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
1004
node_modules/.vite/deps/chunk-KMU3Z7QX.js
generated
vendored
Normal file
1004
node_modules/.vite/deps/chunk-KMU3Z7QX.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
node_modules/.vite/deps/chunk-KMU3Z7QX.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/chunk-KMU3Z7QX.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
3
node_modules/.vite/deps/package.json
generated
vendored
Normal file
3
node_modules/.vite/deps/package.json
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
6
node_modules/.vite/deps/react-dom.js
generated
vendored
Normal file
6
node_modules/.vite/deps/react-dom.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
import {
|
||||
require_react_dom
|
||||
} from "./chunk-F5X6INBZ.js";
|
||||
import "./chunk-KMU3Z7QX.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
export default require_react_dom();
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user