Upload folder using huggingface_hub
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +9 -0
- BLOG.md +242 -0
- README.md +436 -69
- artifacts/dashboard.png +3 -0
- artifacts/illustration1.png +3 -0
- artifacts/illustration2.png +3 -0
- artifacts/illustration3.png +3 -0
- artifacts/illustration4.png +3 -0
- artifacts/pyre_ppo_fixed.csv +201 -0
- artifacts/pyre_ppo_fixed.png +3 -0
- artifacts/pyre_ppo_fixed_eval.csv +11 -0
- artifacts/pyre_ppo_fixed_training.log +0 -0
- frontend/node_modules/@babel/code-frame/LICENSE +22 -0
- frontend/node_modules/@babel/code-frame/README.md +19 -0
- frontend/node_modules/@babel/code-frame/lib/index.js +217 -0
- frontend/node_modules/@babel/code-frame/lib/index.js.map +1 -0
- frontend/node_modules/@babel/code-frame/package.json +32 -0
- frontend/node_modules/@babel/compat-data/LICENSE +22 -0
- frontend/node_modules/@babel/compat-data/README.md +19 -0
- frontend/node_modules/@babel/compat-data/corejs2-built-ins.js +2 -0
- frontend/node_modules/@babel/compat-data/corejs3-shipped-proposals.js +2 -0
- frontend/node_modules/@babel/compat-data/data/corejs2-built-ins.json +2106 -0
- frontend/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json +5 -0
- frontend/node_modules/@babel/compat-data/data/native-modules.json +18 -0
- frontend/node_modules/@babel/compat-data/data/overlapping-plugins.json +35 -0
- frontend/node_modules/@babel/compat-data/data/plugin-bugfixes.json +203 -0
- frontend/node_modules/@babel/compat-data/data/plugins.json +838 -0
- frontend/node_modules/@babel/compat-data/native-modules.js +2 -0
- frontend/node_modules/@babel/compat-data/overlapping-plugins.js +2 -0
- frontend/node_modules/@babel/compat-data/package.json +40 -0
- frontend/node_modules/@babel/compat-data/plugin-bugfixes.js +2 -0
- frontend/node_modules/@babel/compat-data/plugins.js +2 -0
- frontend/node_modules/@babel/core/LICENSE +22 -0
- frontend/node_modules/@babel/core/README.md +19 -0
- frontend/node_modules/@babel/core/lib/config/cache-contexts.js +5 -0
- frontend/node_modules/@babel/core/lib/config/cache-contexts.js.map +1 -0
- frontend/node_modules/@babel/core/lib/config/caching.js +261 -0
- frontend/node_modules/@babel/core/lib/config/caching.js.map +1 -0
- frontend/node_modules/@babel/core/lib/config/config-chain.js +469 -0
- frontend/node_modules/@babel/core/lib/config/config-chain.js.map +1 -0
- frontend/node_modules/@babel/core/lib/config/config-descriptors.js +190 -0
- frontend/node_modules/@babel/core/lib/config/config-descriptors.js.map +1 -0
- frontend/node_modules/@babel/core/lib/config/files/configuration.js +290 -0
- frontend/node_modules/@babel/core/lib/config/files/configuration.js.map +1 -0
- frontend/node_modules/@babel/core/lib/config/files/import.cjs +6 -0
- frontend/node_modules/@babel/core/lib/config/files/import.cjs.map +1 -0
- frontend/node_modules/@babel/core/lib/config/files/index-browser.js +58 -0
- frontend/node_modules/@babel/core/lib/config/files/index-browser.js.map +1 -0
- frontend/node_modules/@babel/core/lib/config/files/index.js +78 -0
- frontend/node_modules/@babel/core/lib/config/files/index.js.map +1 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,12 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
artifacts/dashboard.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
artifacts/illustration1.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
artifacts/illustration2.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
artifacts/illustration3.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
artifacts/illustration4.png filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
artifacts/pyre_ppo_fixed.png filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
frontend/node_modules/@rolldown/binding-darwin-arm64/rolldown-binding.darwin-arm64.node filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
frontend/node_modules/fsevents/fsevents.node filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
frontend/node_modules/lightningcss-darwin-arm64/lightningcss.darwin-arm64.node filter=lfs diff=lfs merge=lfs -text
|
BLOG.md
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pyre: Teaching an AI to Escape a Burning Building
|
| 2 |
+
|
| 3 |
+
> *"When buildings burn, the difference between a safe evacuation and a tragedy is the quality of decisions made in the first 60 seconds. Can we train an LLM to make them?"*
|
| 4 |
+
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
Picture this. You're standing in a corridor. The air is thick.
|
| 8 |
+
|
| 9 |
+
```
|
| 10 |
+
You are in the **main_corridor**. The air is **moderate**.
|
| 11 |
+
Health: ████████░░ (82/100) | Wind: EAST
|
| 12 |
+
Flames are visible to the **west**.
|
| 13 |
+
Exits visible: exit_0_7 — WARNING: 1 exit(s) blocked by fire.
|
| 14 |
+
Doors: door_3 (closed) at 2m east.
|
| 15 |
+
You hear: Fire alarm sounding; Smoke detector beeping.
|
| 16 |
+
Available actions: move(direction='north') move(direction='south')
|
| 17 |
+
door(target_id='door_3', door_state='open') wait()
|
| 18 |
+
```
|
| 19 |
+
|
| 20 |
+
That's not flavor text. That's the exact observation fed to an agent on every step of **Pyre** — our RL training environment where an agent is placed inside a burning building and must decide, turn by turn, what to do next.
|
| 21 |
+
|
| 22 |
+
The exit is 8 meters west. The fire is also west. The wind is blowing east. The agent has 82 HP. It has seen neither the full floor plan nor any global map. It has only this paragraph — and the memory of the last three paragraphs shown before it.
|
| 23 |
+
|
| 24 |
+
What should it do?
|
| 25 |
+
|
| 26 |
+

|
| 27 |
+
|
| 28 |
+
*Step 2 of 150. HP 100. Wind blowing west. Fire is just starting to smolder in the lower corners — those orange glows will become an inferno within 20 steps. Dark grey cells are unexplored; the agent has no map. Two exits are visible at the left and right walls.*
|
| 29 |
+
|
| 30 |
+
---
|
| 31 |
+
|
| 32 |
+
## The Gap This Fills
|
| 33 |
+
|
| 34 |
+
The RL environment space has plenty of grid worlds and fire simulations. OpenEnv itself ships a `wildfire_env` where an agent suppresses fires from a bird's-eye view with full global state visibility. Useful, well-designed — and completely different from what we built.
|
| 35 |
+
|
| 36 |
+
Pyre flips the perspective. Instead of fighting fire from above with complete information, the agent is *inside* the building, *surviving* with almost none. This one change in camera angle creates an entirely different problem class:
|
| 37 |
+
|
| 38 |
+
| | `wildfire_env` | `maze_env` | **Pyre** |
|
| 39 |
+
|---|---|---|---|
|
| 40 |
+
| Observability | Full | Full | **First-person, text, partial** |
|
| 41 |
+
| Map dynamics | Dynamic (fire) | Static | **Dynamic (fire + door state + burnout)** |
|
| 42 |
+
| Action role | Suppressor | Navigator | **Survivor** |
|
| 43 |
+
| Reward signal | Suppress fire area | Reach goal | **14-component composite** |
|
| 44 |
+
|
| 45 |
+
The agent isn't trying to win. It's trying to not die. That's a meaningfully different objective — it requires long-horizon planning, world modeling under uncertainty, and on-the-fly risk assessment with a ticking clock. Both LLM agents (reading the text narrative) and RL agents (consuming the structured grid) can train on it without any code changes. Same environment, two completely different agent paradigms.
|
| 46 |
+
|
| 47 |
+
---
|
| 48 |
+
|
| 49 |
+
## The World
|
| 50 |
+
|
| 51 |
+
Pyre's simulation runs on a 16×16 grid (20×24 for hard mode). Every cell is one of six types: floor, wall, door (open or closed), exit, or obstacle — a cell that burned completely and is now rubble. Overlaid on the structural layer are two continuous fields: fire intensity and smoke density, both floats in [0, 1].
|
| 52 |
+
|
| 53 |
+
### Fire as Physics
|
| 54 |
+
|
| 55 |
+
The fire simulation is a stochastic cellular automaton. Each step proceeds in three phases.
|
| 56 |
+
|
| 57 |
+
**Phase 1 — Ignition.** Any cell burning at intensity ≥ 0.3 probabilistically ignites its four cardinal neighbors. The ignition probability is a function of four interacting factors:
|
| 58 |
+
|
| 59 |
+
- **Wind direction** (9 directions including CALM): downwind cells ignite at **2× base rate**, upwind at **0.5×**. A fire in west wind races east and crawls west.
|
| 60 |
+
- **Humidity**: effective spread rate = `p_spread × (1 − humidity)`. At 5% humidity (hard mode), almost nothing stops it.
|
| 61 |
+
- **Closed doors**: fire crosses a closed door at **15% of normal rate** — a fact the agent can act on.
|
| 62 |
+
- **Per-cell fuel**: office rooms carry a **1.5× fuel multiplier** (paper, wooden furniture). Exit tiles near concrete are at 0.6×.
|
| 63 |
+
|
| 64 |
+
**Phase 2 — Intensity advance.** Burning cells gain 0.15 intensity per step (fuel-scaled). After **5 steps at full intensity**, a cell burns out and becomes a permanent obstacle. The floor plan changes during the episode — corridors you could walk through at step 5 may be rubble at step 25.
|
| 65 |
+
|
| 66 |
+
**Phase 3 — Smoke.** Smoke spreads faster than fire, passes weakly through closed doors (40% of open-door rate), and clears per cell based on a **ventilation map**: open halls clear at 0.050/step; enclosed office rooms hold smoke at 0.010/step — five times slower. An agent trapped in a room with a fire on the other side of a closed door will be choked out long before the door gives.
|
| 67 |
+
|
| 68 |
+

|
| 69 |
+
|
| 70 |
+
*Step 4. Two steps later and the fire is already brighter — intensity climbing from 0.1 toward 0.3 where spread begins. The HUD shows "IN RANGE · 10": the nearest fire is 10 cells away. The agent's blue trail shows it has moved left. Wind is still blowing west.*
|
| 71 |
+
|
| 72 |
+
### The Buildings
|
| 73 |
+
|
| 74 |
+
Three hand-authored 16×16 templates cycle through easy and medium episodes:
|
| 75 |
+
|
| 76 |
+
- `small_office` — north/south office blocks behind doors, connected by a wide central corridor; exits left and right
|
| 77 |
+
- `open_plan` — large open hall with symmetrical 2×2 pillar obstacles; exits at diagonal corners; no internal doors
|
| 78 |
+
- `t_corridor` — T-shaped hallway with a vertical stem, horizontal bar, and three exits; side rooms branch off the stem
|
| 79 |
+
|
| 80 |
+
For **hard mode**, a procedural generator runs a 4-phase algorithm: random non-overlapping room placement, Prim-style MST corridors connecting all room centers via L-shaped tunnels, exit tunneling to both outer walls, then zone labeling and fuel/ventilation derivation. A BFS connectivity guard verifies at least one exit is reachable from the agent's spawn before accepting the layout. Hard-mode episodes are 20×24 grids the agent has never seen before.
|
| 81 |
+
|
| 82 |
+
### What the Agent Can See
|
| 83 |
+
|
| 84 |
+
Visibility is a BFS flood-fill from the agent's position, blocked by walls. The radius starts at 5 cells. In moderate smoke, it drops to 3. In heavy smoke, it drops to 2.
|
| 85 |
+
|
| 86 |
+
An agent standing in heavy smoke in a corner office might see exactly 4 cells. From those 4 cells, it has to decide whether to open the door in front of it or back away. This is the environment making the problem hard in an honest way — the agent is blind because smoke is thick, not because we arbitrarily withheld state.
|
| 87 |
+
|
| 88 |
+

|
| 89 |
+
|
| 90 |
+
*Step 21. Burnout in action: those dark cracked cells in the center-right are former floor tiles that burned for 5 full steps and became permanent obstacles. The corridor is now partially blocked. HP 63 — the agent took some smoke damage. The exit on the left is still reachable, but the right exit is being cut off.*
|
| 91 |
+
|
| 92 |
+
---
|
| 93 |
+
|
| 94 |
+
## The Reward Signal
|
| 95 |
+
|
| 96 |
+
A reward function that teaches is the hardest part of environment design. Give too little signal and nothing is learned. Give too much and the agent games it. Design it wrong and the agent discovers behaviors you didn't intend.
|
| 97 |
+
|
| 98 |
+
Pyre composes **14 rubric components** — each a Python class with a `.score()` method that the environment calls every step:
|
| 99 |
+
|
| 100 |
+
**Per step:**
|
| 101 |
+
|
| 102 |
+
| Rubric | Value | Teaches |
|
| 103 |
+
|---|---|---|
|
| 104 |
+
| `TimeStepPenalty` | −0.01 | Urgency. Every step costs. |
|
| 105 |
+
| `ProgressReward` | +0.25 | Moved closer to nearest unblocked exit (BFS, not Manhattan) |
|
| 106 |
+
| `ProgressRegressionPenalty` | −0.15 | Moved farther from exit — asymmetric two-sided gradient |
|
| 107 |
+
| `SafeProgressBonus` | +0.05 | Progress through a smoke-free cell — prefer clean routes |
|
| 108 |
+
| `DangerPenalty` | −0.50 | Moved into smoke ≥ moderate or fire-adjacent cell |
|
| 109 |
+
| `HealthDrainPenalty` | −0.02 × dmg | Proportional to HP lost this step |
|
| 110 |
+
| `StrategicDoorBonus` | +0.50 | Closed a door adjacent to active fire (once per door per episode) |
|
| 111 |
+
| `ExplorationBonus` | +0.02 | First visit to any cell — prevents corner-hugging loops |
|
| 112 |
+
|
| 113 |
+
**Episode end:**
|
| 114 |
+
|
| 115 |
+
| Rubric | Value | Teaches |
|
| 116 |
+
|---|---|---|
|
| 117 |
+
| `SelfSurviveBonus` | +5.0 | Evacuated alive |
|
| 118 |
+
| `HealthSurvivalBonus` | +1.5 × (hp/100) | Evacuate with *more* health — prefer safe routes |
|
| 119 |
+
| `SelfDeathPenalty` | −10.0 | Died |
|
| 120 |
+
| `TimeoutPenalty` | −5.0 to −8.0 | Ran out of steps — scales with remaining health |
|
| 121 |
+
| `NearMissBonus` | 0 to +3.0 | Partial credit on death based on closest exit approach |
|
| 122 |
+
| `TimeBonus` | +0.05 × remaining_steps | Escape fast |
|
| 123 |
+
|
| 124 |
+
Three of these deserve closer attention.
|
| 125 |
+
|
| 126 |
+
**`NearMissBonus`** exists to prevent reward collapse on hard difficulty. When early training produces agents that die every episode, a flat −10 on all deaths gives zero gradient — every failure looks identical, the optimizer has nothing to differentiate. `NearMissBonus` uses the minimum BFS distance ever reached during the episode: `max(0, 3.0 − 0.5 × min_exit_dist)`. Dying 1 cell from an exit earns +2.5. Dying 12 cells away earns nothing. This single rubric is often the difference between hard-mode training converging and oscillating indefinitely.
|
| 127 |
+
|
| 128 |
+
**`StrategicDoorBonus`** is an emergent-tactics incentive. The agent is never told that closing a door slows fire. It discovers this through reward — the action produces +0.50, and over many episodes that reward correlates with longer survival. The anti-gaming guard (a `rewarded_doors` set; each door earns the bonus at most once per episode) prevents the obvious exploit of opening and re-closing the same door.
|
| 129 |
+
|
| 130 |
+
**`TimeoutPenalty`** scaling is deliberate: at 100 HP it's −8.0, at 50 HP it's −6.5, at 10 HP it's −5.3. A healthy agent that timed out had no excuse — exits were reachable and it didn't take them. An agent barely alive at timeout was fighting hard. The signal should be different.
|
| 131 |
+
|
| 132 |
+
---
|
| 133 |
+
|
| 134 |
+
## Training with PPO
|
| 135 |
+
|
| 136 |
+
The agent's observation is encoded into a **23,128-dimensional float32 vector**. The grid portion is a 24×24 padded map (sized for hard mode) with 10 channels: 6 one-hot cell type, fire intensity, smoke density, visibility mask, and agent position mask. The scalar portion is 17 features: health, step progress, fire parameters, agent coordinates, exit distance and count, visible cell count, smoke severity, alive/evacuated flags, and three **exit compass features** — signed (dx, dy) direction toward the nearest exit cell and normalized Manhattan distance.
|
| 137 |
+
|
| 138 |
+
The exit compass was added after observing that agents trained on fixed layouts completely failed on procedurally generated hard-mode maps — they were navigating by memorized topology. The compass gives the policy a map-agnostic spatial anchor: a unit vector pointing from the agent to the nearest exit, recomputed from the live grid every step.
|
| 139 |
+
|
| 140 |
+
**Four of these frames are stacked.** Fire has direction — a cell that was clear two steps ago and is heavy smoke now tells the agent exactly where fire is moving. Frame stacking makes temporal dynamics explicit without requiring recurrent architecture.
|
| 141 |
+
|
| 142 |
+
**The action space is 41 discrete actions**: 4 move, 4 look, 1 wait, 16 door-open, 16 door-close. Each step's `available_actions_hint` list is converted into a binary validity mask applied as −∞ to policy logits before softmax — invalid moves are architecturally excluded, not penalized. Look actions are masked out during RL training entirely: the agent already receives the full grid; spending a step to look costs a turn and earns no reward.
|
| 143 |
+
|
| 144 |
+
The **ActorCritic** network uses a shared `LayerNorm → FC(512) → LayerNorm → ReLU → FC(256) → LayerNorm → ReLU → FC(128) → ReLU` backbone before splitting into policy and value heads. LayerNorm before activations handles the large flat input without requiring explicit normalization. Orthogonal initialization prevents saturated softmax from the first training step.
|
| 145 |
+
|
| 146 |
+
**Curriculum learning is patience-gated.** The agent starts on `easy` and advances to `medium` only after achieving ≥65% evacuation rate over a 30-episode window, sustained for 15 episodes. The same gate holds at `medium → hard`. During the hard phase, 25% of episodes replay on medium to prevent catastrophic forgetting.
|
| 147 |
+
|
| 148 |
+
Four additional reward shapings stack on top of the environment's signal: idle penalty (−0.05/wait), fire proximity warning (−0.15 when landing adjacent to fire), anti-loop penalty (−0.20 for revisiting a cell within the last 12 steps), and exit proximity pull — a continuous gradient toward exits that fires even before BFS progress kicks in.
|
| 149 |
+
|
| 150 |
+
---
|
| 151 |
+
|
| 152 |
+
## Results
|
| 153 |
+
|
| 154 |
+

|
| 155 |
+
|
| 156 |
+
*Step 29 of 150. HP 63. The entire building is ablaze — 18 active fire cells, multiple rooms fully burned out. And yet the agent is at the exit. Field Report: "You step through the exit and escape the building." This is what a successful episode looks like: reaching safety before the fire made it impossible.*
|
| 157 |
+
|
| 158 |
+
The trained PPO agent ([Krooz/pyre-ppo-agent](https://huggingface.co/Krooz/pyre-ppo-agent)) shows clear progression from the random baseline. The random agent — 70% hint-biased random actions, 30% fully random — produces negative cumulative rewards on medium difficulty in nearly every episode. It has no evacuation strategy, no fire avoidance, no concept of door mechanics.
|
| 159 |
+
|
| 160 |
+

|
| 161 |
+
|
| 162 |
+
*200 episodes, patience-gated curriculum. The agent starts from random behavior (reward ≈ −15) and climbs to ~+15 average reward within 30 episodes on easy. The sharp dip at episode ~100 is the curriculum advancing to medium difficulty — harder fire, more sources, any wind direction. By episode 200 the agent has recovered to a **75% evacuation success rate** on medium. Blue diamonds are deterministic evaluation runs; they hit near-100% on easy before the transition.*
|
| 163 |
+
|
| 164 |
+
The PPO agent learns across three measurable dimensions visible in the training curves:
|
| 165 |
+
|
| 166 |
+
1. **Evacuation rate climbs from ~0% to 75%** on medium difficulty in 200 episodes. The patience gate held on easy until the 30-episode success rate sustained above 65%, confirming mastery before escalation.
|
| 167 |
+
2. **The dip is diagnostic, not failure.** The success rate drop from ~90% to ~60% exactly at the easy→medium boundary is the curriculum working as designed — the agent encountering new wind conditions and denser fire for the first time.
|
| 168 |
+
3. **Health-on-exit improves** over training — the `HealthSurvivalBonus` gradient is working; later evacuations happen at higher HP than early ones, indicating the agent is finding cleaner, smoke-free routes rather than just any path out.
|
| 169 |
+
|
| 170 |
+
Full training metrics, reward curves, and model weights are on the [Hugging Face model card](https://huggingface.co/Krooz/pyre-ppo-agent). The Colab notebook for end-to-end replication runs directly against the live HuggingFace Space.
|
| 171 |
+
|
| 172 |
+
---
|
| 173 |
+
|
| 174 |
+
## Try It Yourself
|
| 175 |
+
|
| 176 |
+
Pyre is deployed as a live HuggingFace Space at [krooz-pyre-env.hf.space](https://krooz-pyre-env.hf.space). The full interactive dashboard — tactical controls, door registry, agent biometrics, and a per-step event log — is available without any setup.
|
| 177 |
+
|
| 178 |
+

|
| 179 |
+
|
| 180 |
+
*The Pyre HuggingFace Space at step 30. Right panel: Proximity Doors shows door_2 is still closed, while door_5 and door_7 have failed (burned to obstacles). Agent Biometrics shows HP 63%, position (0,6), System Integrity at 63%. Environment: 19 hazard cells, wind W, 12% humidity. The event log shows 51 steps of decisions and their rewards.*
|
| 181 |
+
|
| 182 |
+
Run it locally in two commands:
|
| 183 |
+
|
| 184 |
+
```bash
|
| 185 |
+
cd pyre_env && uv sync && uv run server
|
| 186 |
+
```
|
| 187 |
+
|
| 188 |
+
```bash
|
| 189 |
+
python examples/random_agent.py --episodes 5 --verbose
|
| 190 |
+
```
|
| 191 |
+
|
| 192 |
+
Or talk to it directly over HTTP:
|
| 193 |
+
|
| 194 |
+
```bash
|
| 195 |
+
# Start a new episode
|
| 196 |
+
curl -X POST http://localhost:8000/reset \
|
| 197 |
+
-H "Content-Type: application/json" -d '{"difficulty": "medium"}'
|
| 198 |
+
|
| 199 |
+
# Take a step
|
| 200 |
+
curl -X POST http://localhost:8000/step \
|
| 201 |
+
-H "Content-Type: application/json" -d '{"action": "move", "direction": "north"}'
|
| 202 |
+
```
|
| 203 |
+
|
| 204 |
+
Or use the Python client:
|
| 205 |
+
|
| 206 |
+
```python
|
| 207 |
+
from pyre_env import PyreEnv, PyreAction
|
| 208 |
+
|
| 209 |
+
with PyreEnv(base_url="http://localhost:8000") as env:
|
| 210 |
+
obs = env.reset()
|
| 211 |
+
print(obs.observation.narrative)
|
| 212 |
+
result = env.step(PyreAction(action="move", direction="north"))
|
| 213 |
+
print(f"Reward: {result.reward:.3f} | HP: {result.observation.agent_health}")
|
| 214 |
+
```
|
| 215 |
+
|
| 216 |
+
Train from scratch in Colab: [Pyre PPO Training Notebook](https://colab.research.google.com/drive/1ojC55qKXMVRXdjKeG5dUHiA5RBOBxA9V?usp=sharing)
|
| 217 |
+
|
| 218 |
+
---
|
| 219 |
+
|
| 220 |
+
## What's Next
|
| 221 |
+
|
| 222 |
+
Pyre is a foundation, not a finished product. The architecture — cellular automaton physics, composable rubrics, narrative observation layer, dual LLM+RL interface — generalises well beyond a burning building.
|
| 223 |
+
|
| 224 |
+
**Other natural disasters.** The fire sim can be replaced or extended with alternative physics. A flood environment would use water pressure and rising levels instead of fire intensity. An earthquake scenario would collapse walls procedurally, introducing impassable rubble in real time. A chemical spill would add wind-borne toxin spread with a different health decay model. The `fuel_map` / `ventilation_map` / `rubric` architecture is the same in all cases — only the physical model changes.
|
| 225 |
+
|
| 226 |
+
**NPC characters.** The environment already has NPC spawn points and a door registry for inter-agent coordination. The natural next step is adding civilians who move, panic, block corridors, and need rescuing. A survivor agent earns bonus reward for reaching exits alongside NPCs. This introduces the theory-of-mind dimension: the agent must model other agents' paths and prioritise accordingly.
|
| 227 |
+
|
| 228 |
+
**3D maps.** The 16×16 grid is a deliberate simplification for training stability and HTTP throughput. A 3D extension would add floor levels connected by stairs, with fire spreading both horizontally and vertically. The observation layer would shift from a 2D BFS to a 3D cone-of-vision, and the narrative would need to convey vertical cues ("smoke rising from the floor below"). The PPO encoder would pad to a fixed 3D volume.
|
| 229 |
+
|
| 230 |
+
**Multi-floor procedural generation.** The existing Prim-MST generator already produces novel layouts every hard-mode episode. Stacking multiple floors with staircase connections would make every episode a genuinely unique building — relevant to real-world emergency response planning where no two structures are alike.
|
| 231 |
+
|
| 232 |
+
**LLM fine-tuning.** The text narrative interface was built for LLM agents from day one. The next training phase is GRPO fine-tuning (infrastructure already in `training/`) where the language model's policy is updated directly on Pyre episode rollouts, rather than a separate RL network trained on the structured grid.
|
| 233 |
+
|
| 234 |
+
---
|
| 235 |
+
|
| 236 |
+
Pyre isn't a toy. It's a physics-driven environment where every step costs health, every door is a tactical decision, and every exit might be on fire by the time the agent gets there. The agent doesn't get a map. It gets a first-person text paragraph, a structured grid, and 41 possible moves. And somewhere inside a 23,128-dimensional observation vector, a trained PPO policy has learned enough about burning buildings to find the exit — most of the time.
|
| 237 |
+
|
| 238 |
+
That seems like a hard problem to solve. It is. That's the point.
|
| 239 |
+
|
| 240 |
+
---
|
| 241 |
+
|
| 242 |
+
*🔥 Space: [krooz-pyre-env.hf.space](https://krooz-pyre-env.hf.space) · Model: [Krooz/pyre-ppo-agent](https://huggingface.co/Krooz/pyre-ppo-agent) · Training: [Colab Notebook](https://colab.research.google.com/drive/1ojC55qKXMVRXdjKeG5dUHiA5RBOBxA9V?usp=sharing)*
|
README.md
CHANGED
|
@@ -14,7 +14,13 @@ tags:
|
|
| 14 |
|
| 15 |
> *When buildings burn, the difference between a safe evacuation and a tragedy is the quality of decisions made in the first 60 seconds. Can we train an LLM to make them?*
|
| 16 |
|
| 17 |
-
**Pyre** places an LLM agent *inside* a burning building. The agent must navigate to safety under partial observability — no global map, hard time pressure, and a fire that actively spreads
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
|
| 19 |
---
|
| 20 |
|
|
@@ -23,18 +29,211 @@ tags:
|
|
| 23 |
| Feature | `grid_world` | `maze_env` | `wildfire_env` | **Pyre** |
|
| 24 |
|---|---|---|---|---|
|
| 25 |
| Observability | Full | Full | Partial | **Partial, first-person, text** |
|
| 26 |
-
| Map dynamics | Static | Static | Dynamic (fire) | **Dynamic (fire + doors)** |
|
| 27 |
| Action richness | 4 moves | 4 moves | Suppression | **Movement + door control + look** |
|
| 28 |
| Agent role | Mover | Mover | Suppressor | **Survivor** |
|
| 29 |
-
| Reward complexity | Reach goal | Reach goal | Suppress fire | **
|
| 30 |
|
| 31 |
*`wildfire_env` trains an agent to fight fires from above; Pyre trains an agent to survive from inside.*
|
| 32 |
|
| 33 |
---
|
| 34 |
|
| 35 |
-
##
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
-
Every step
|
| 38 |
|
| 39 |
```
|
| 40 |
You are in the **main_corridor**. The air is **moderate**.
|
|
@@ -44,83 +243,228 @@ Exits visible: exit_0_7 at 8m west.
|
|
| 44 |
Doors: door_1 (closed) at 2m east.
|
| 45 |
You hear: Fire alarm sounding; Smoke detector beeping.
|
| 46 |
Last action: You move south. The smoke is thick here.
|
| 47 |
-
Available actions: move(direction='north') move(direction='south')
|
|
|
|
| 48 |
```
|
| 49 |
|
|
|
|
|
|
|
| 50 |
---
|
| 51 |
|
| 52 |
## Action space
|
| 53 |
|
| 54 |
| Action | Parameters | Effect |
|
| 55 |
|---|---|---|
|
| 56 |
-
| `move` | `direction` | Move one cell
|
| 57 |
-
| `door` | `target_id`, `door_state` | Open or close a
|
| 58 |
-
| `look` | `direction` |
|
| 59 |
| `wait` | — | Skip turn |
|
| 60 |
|
| 61 |
---
|
| 62 |
|
| 63 |
-
## Reward function
|
| 64 |
|
| 65 |
-
|
| 66 |
-
- `-0.01` constant time penalty
|
| 67 |
-
- `+0.1` moved closer to nearest unblocked exit (BFS distance)
|
| 68 |
-
- `-0.5` moved into smoke ≥ moderate or fire-adjacent cell
|
| 69 |
-
- `-0.02 × damage` health drain from smoke/fire exposure
|
| 70 |
-
- `+0.5` closed a door adjacent to active fire (strategic)
|
| 71 |
|
| 72 |
-
|
| 73 |
-
-
|
| 74 |
-
|
| 75 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 76 |
|
| 77 |
---
|
| 78 |
|
| 79 |
-
##
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
|
| 81 |
```bash
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
|
| 86 |
-
#
|
| 87 |
-
curl http://localhost:8000/health
|
| 88 |
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
-d '{"difficulty": "medium"}'
|
| 93 |
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
-
|
| 97 |
-
|
| 98 |
|
| 99 |
-
#
|
| 100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 101 |
```
|
| 102 |
|
| 103 |
-
|
| 104 |
|
| 105 |
-
|
| 106 |
-
from pyre_env import PyreEnv, PyreAction
|
| 107 |
|
| 108 |
-
with PyreEnv(base_url="http://localhost:8000") as env:
|
| 109 |
-
result = env.reset()
|
| 110 |
-
print(result.observation.narrative)
|
| 111 |
-
result = env.step(PyreAction(action="move", direction="north"))
|
| 112 |
-
print(f"Reward: {result.reward}, Health: {result.observation.agent_health}")
|
| 113 |
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 114 |
|
| 115 |
---
|
| 116 |
|
| 117 |
-
##
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
| `medium` | 2–4 | 15–40% | Any | 10–45% | 150 |
|
| 123 |
-
| `hard` | 3–5 | 30–55% | Never calm | 5–20% | 100 |
|
| 124 |
|
| 125 |
---
|
| 126 |
|
|
@@ -130,30 +474,53 @@ with PyreEnv(base_url="http://localhost:8000") as env:
|
|
| 130 |
openenv push --repo-id your-org/pyre-env
|
| 131 |
```
|
| 132 |
|
|
|
|
|
|
|
| 133 |
---
|
| 134 |
|
| 135 |
-
##
|
| 136 |
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
``
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
|
| 154 |
---
|
| 155 |
|
| 156 |
## Hackathon alignment
|
| 157 |
|
| 158 |
-
- **Theme #2 — Long-Horizon Planning**: 50–200 step episodes; agent must build a mental map across many partial observations
|
| 159 |
-
- **Theme #3.1 — World Modeling**: no global map; agent infers fire spread, corridor topology, and exit reachability from local text observations alone
|
|
|
|
| 14 |
|
| 15 |
> *When buildings burn, the difference between a safe evacuation and a tragedy is the quality of decisions made in the first 60 seconds. Can we train an LLM to make them?*
|
| 16 |
|
| 17 |
+
**Pyre** places an LLM agent *inside* a burning building. The agent must navigate to safety under partial observability — no global map, a real health system, hard time pressure, and a fire that actively spreads, blocks exits, and permanently alters the floor plan.
|
| 18 |
+
|
| 19 |
+
**Links:**
|
| 20 |
+
🔥 [Live Space](https://krooz-pyre-env.hf.space) |
|
| 21 |
+
🤖 [Trained Model](https://huggingface.co/Krooz/pyre-ppo-agent) |
|
| 22 |
+
📓 [Colab Training](https://colab.research.google.com/drive/1ojC55qKXMVRXdjKeG5dUHiA5RBOBxA9V?usp=sharing) |
|
| 23 |
+
📝 [Blog](BLOG.md)
|
| 24 |
|
| 25 |
---
|
| 26 |
|
|
|
|
| 29 |
| Feature | `grid_world` | `maze_env` | `wildfire_env` | **Pyre** |
|
| 30 |
|---|---|---|---|---|
|
| 31 |
| Observability | Full | Full | Partial | **Partial, first-person, text** |
|
| 32 |
+
| Map dynamics | Static | Static | Dynamic (fire) | **Dynamic (fire + doors + burnout)** |
|
| 33 |
| Action richness | 4 moves | 4 moves | Suppression | **Movement + door control + look** |
|
| 34 |
| Agent role | Mover | Mover | Suppressor | **Survivor** |
|
| 35 |
+
| Reward complexity | Reach goal | Reach goal | Suppress fire | **14-component composite rubric** |
|
| 36 |
|
| 37 |
*`wildfire_env` trains an agent to fight fires from above; Pyre trains an agent to survive from inside.*
|
| 38 |
|
| 39 |
---
|
| 40 |
|
| 41 |
+
## Quick start
|
| 42 |
+
|
| 43 |
+
```bash
|
| 44 |
+
uv sync
|
| 45 |
+
uv run server # → http://localhost:8000
|
| 46 |
+
|
| 47 |
+
# Health check
|
| 48 |
+
curl http://localhost:8000/health
|
| 49 |
+
|
| 50 |
+
# Start episode
|
| 51 |
+
curl -X POST http://localhost:8000/reset \
|
| 52 |
+
-H "Content-Type: application/json" \
|
| 53 |
+
-d '{"difficulty": "medium"}'
|
| 54 |
+
|
| 55 |
+
# Take a step
|
| 56 |
+
curl -X POST http://localhost:8000/step \
|
| 57 |
+
-H "Content-Type: application/json" \
|
| 58 |
+
-d '{"action": "move", "direction": "north"}'
|
| 59 |
+
|
| 60 |
+
# Random baseline (smoke test)
|
| 61 |
+
python examples/random_agent.py --episodes 5 --verbose
|
| 62 |
+
```
|
| 63 |
+
|
| 64 |
+
### Python client
|
| 65 |
+
|
| 66 |
+
```python
|
| 67 |
+
from pyre_env import PyreEnv, PyreAction
|
| 68 |
+
|
| 69 |
+
with PyreEnv(base_url="http://localhost:8000") as env:
|
| 70 |
+
result = env.reset()
|
| 71 |
+
print(result.observation.narrative)
|
| 72 |
+
result = env.step(PyreAction(action="move", direction="north"))
|
| 73 |
+
print(f"Reward: {result.reward:.3f} | HP: {result.observation.agent_health}")
|
| 74 |
+
```
|
| 75 |
+
|
| 76 |
+
### Environment variables
|
| 77 |
+
|
| 78 |
+
| Variable | Default | Description |
|
| 79 |
+
|---|---|---|
|
| 80 |
+
| `PORT` | `8000` | HTTP server port |
|
| 81 |
+
| `PYRE_MAX_STEPS` | `150` | Default max steps per episode (overridden by difficulty preset) |
|
| 82 |
+
| `PYRE_SEED` | `42` | Base RNG seed; each episode increments by 37 |
|
| 83 |
+
| `HF_TOKEN` | — | Required only for `training/push_to_hub.py` |
|
| 84 |
+
|
| 85 |
+
---
|
| 86 |
+
|
| 87 |
+
## Architecture
|
| 88 |
+
|
| 89 |
+
```
|
| 90 |
+
reset() / step()
|
| 91 |
+
│
|
| 92 |
+
▼
|
| 93 |
+
PyreEnvironment server/pyre_env_environment.py
|
| 94 |
+
├── floor_plan.py Building template or procedural generation
|
| 95 |
+
├── fire_sim.py Cellular automaton: spread → intensity → smoke
|
| 96 |
+
├── narrative.py BFS visibility → first-person text + structured fields
|
| 97 |
+
└── rubrics.py 14 composable reward components
|
| 98 |
+
│
|
| 99 |
+
▼
|
| 100 |
+
PyreObservation models.py
|
| 101 |
+
├── narrative str — primary LLM input
|
| 102 |
+
├── map_state PyreMapState — full grid snapshot for RL encoders
|
| 103 |
+
├── reward float
|
| 104 |
+
├── done bool
|
| 105 |
+
└── metadata dict — fire params, distances, difficulty
|
| 106 |
+
```
|
| 107 |
+
|
| 108 |
+
### Data flow per step
|
| 109 |
+
|
| 110 |
+
1. `_execute_action()` — move / door / look / wait, returns feedback string
|
| 111 |
+
2. Check evacuation — agent on EXIT cell with `fire < 0.5` → success
|
| 112 |
+
3. `FireSim.step()` — advance fire, smoke, burn timers; may convert cells to OBSTACLE
|
| 113 |
+
4. Apply health damage from smoke (0.5–5 HP/step) and fire (10 HP/step)
|
| 114 |
+
5. `_compute_reward()` — call all 14 rubrics with shared kwargs
|
| 115 |
+
6. `build_narrative_observation()` — BFS visibility, compose text, collect action hints
|
| 116 |
+
7. `_build_map_state()` — assemble full grid snapshot for UI / RL encoder
|
| 117 |
+
8. Return `PyreObservation`
|
| 118 |
+
|
| 119 |
+
---
|
| 120 |
+
|
| 121 |
+
## Project structure
|
| 122 |
+
|
| 123 |
+
```
|
| 124 |
+
pyre_env/
|
| 125 |
+
├── models.py PyreAction, PyreObservation, PyreMapState, PyreState
|
| 126 |
+
├── client.py PyreEnv (EnvClient subclass, narrative-focused)
|
| 127 |
+
├── openenv.yaml OpenEnv manifest (space, fastapi, port 8000)
|
| 128 |
+
├── pyproject.toml
|
| 129 |
+
│
|
| 130 |
+
├── server/
|
| 131 |
+
│ ├── app.py FastAPI bootstrap; stateful /reset, /step, /state, /scene
|
| 132 |
+
│ ├── pyre_env_environment.py PyreEnvironment state machine + difficulty presets
|
| 133 |
+
│ ├── floor_plan.py 3 hand-authored templates + procedural generator
|
| 134 |
+
│ ├── fire_sim.py Cellular automaton fire/smoke simulation
|
| 135 |
+
│ ├── narrative.py BFS visibility + first-person text renderer
|
| 136 |
+
│ └── rubrics.py 14 composable reward rubric classes
|
| 137 |
+
│
|
| 138 |
+
├── frontend/
|
| 139 |
+
│ ├── src/
|
| 140 |
+
│ │ ├── App.tsx Dashboard shell: topbar, canvas zone, side panel
|
| 141 |
+
│ │ ├── components/Map2D.tsx Canvas2D renderer: fire, smoke, fog-of-war, agent
|
| 142 |
+
│ │ ├── components/HUD.tsx HP bar, wind compass, step counter overlay
|
| 143 |
+
│ │ ├── components/ControlPanel.tsx Move/door controls, difficulty, auto-wait
|
| 144 |
+
│ │ └── components/StatusCard.tsx Agent biometrics, environment stats
|
| 145 |
+
│ └── README.md Frontend setup and demo script
|
| 146 |
+
│
|
| 147 |
+
├── training/
|
| 148 |
+
│ ├── ppo/
|
| 149 |
+
│ │ ├── train_torch_ppo.py In-process PPO (imports PyreEnvironment directly)
|
| 150 |
+
│ │ ├── train_torch_ppo_http.py HTTP-based PPO (trains against live server)
|
| 151 |
+
│ │ └── pyre_ppo_training.ipynb Colab notebook (self-contained, talks to HF Space)
|
| 152 |
+
│ └── push_to_hub.py Upload checkpoint + metrics to HuggingFace Hub
|
| 153 |
+
│
|
| 154 |
+
├── examples/
|
| 155 |
+
│ └── random_agent.py Baseline: 70% hint-biased, 30% random
|
| 156 |
+
│
|
| 157 |
+
└── artifacts/ Training outputs: .pt, .csv, .png
|
| 158 |
+
```
|
| 159 |
+
|
| 160 |
+
---
|
| 161 |
+
|
| 162 |
+
## Simulation layer
|
| 163 |
+
|
| 164 |
+
### Fire simulation (`server/fire_sim.py`)
|
| 165 |
+
|
| 166 |
+
A stochastic cellular automaton over a flat row-major grid. Each call to `FireSim.step()` runs three phases:
|
| 167 |
+
|
| 168 |
+
**Phase 1 — Ignition.** Any cell with `fire ≥ FIRE_BURNING (0.3)` tries to ignite each cardinal neighbor:
|
| 169 |
+
|
| 170 |
+
```
|
| 171 |
+
p_ignite = p_spread × (1 − humidity) × wind_multiplier × fuel_map[neighbor]
|
| 172 |
+
```
|
| 173 |
+
|
| 174 |
+
- **Wind multiplier**: dot product of spread direction with wind vector → downwind 2×, upwind 0.5×, crosswind 1×
|
| 175 |
+
- **Closed doors**: `DOOR_CLOSED_FIRE_FACTOR = 0.15` (fire crosses at 15% normal rate)
|
| 176 |
+
- **Fuel map**: per-cell float from `floor_plan.py`; office rooms 1.5×, exits 0.6×
|
| 177 |
+
|
| 178 |
+
**Phase 2 — Intensity.** Existing fire gains `FIRE_INTENSITY_GAIN (0.15) × fuel_map[i]` per step. When `burn_timer ≥ BURNOUT_TICKS (5)` and intensity reaches 1.0, the cell becomes `OBSTACLE` — permanently impassable rubble.
|
| 179 |
+
|
| 180 |
+
**Phase 3 — Smoke.** Smoke is sourced at +0.3/step for cells with `fire ≥ 0.3`, diffuses between neighbors at `SMOKE_SPREAD_RATE (0.20)`, passes through closed doors at 40% rate, and decays per cell according to `ventilation_map`.
|
| 181 |
+
|
| 182 |
+
**Key constants:**
|
| 183 |
+
|
| 184 |
+
| Constant | Value | Role |
|
| 185 |
+
|---|---|---|
|
| 186 |
+
| `FIRE_IGNITION` | 0.1 | Starting intensity for new ignitions |
|
| 187 |
+
| `FIRE_BURNING` | 0.3 | Threshold for spreading and causing damage |
|
| 188 |
+
| `FIRE_INTENSITY_GAIN` | 0.15 | Intensity added per step to burning cell |
|
| 189 |
+
| `BURNOUT_TICKS` | 5 | Steps at full intensity before cell → OBSTACLE |
|
| 190 |
+
| `DOOR_CLOSED_FIRE_FACTOR` | 0.15 | Fire spread multiplier through closed doors |
|
| 191 |
+
| `SMOKE_SPREAD_RATE` | 0.20 | Smoke diffusion rate between neighbors |
|
| 192 |
+
| `SMOKE_DOOR_FACTOR` | 0.40 | Smoke rate through closed doors |
|
| 193 |
+
| `EXIT_BLOCKED_FIRE_THRESHOLD` | 0.5 | Fire intensity at which an exit is considered blocked |
|
| 194 |
+
|
| 195 |
+
### Building templates (`server/floor_plan.py`)
|
| 196 |
+
|
| 197 |
+
Three hand-authored 16×16 templates for easy and medium difficulty:
|
| 198 |
+
|
| 199 |
+
| Template | Layout | Exits | Doors | Notes |
|
| 200 |
+
|---|---|---|---|---|
|
| 201 |
+
| `small_office` | Two corridor bands + office rooms N/S | 2 (W, E walls) | 8 (room↔corridor) | Agent spawns in corridor |
|
| 202 |
+
| `open_plan` | Open hall with 4 × 2×2 pillar obstacles | 2 (diagonal corners) | 0 | High ventilation throughout |
|
| 203 |
+
| `t_corridor` | T-shaped: vertical stem + horizontal bar | 3 (top, left, right) | 4 (rooms off stem) | Multiple route decisions |
|
| 204 |
+
|
| 205 |
+
Each template carries a `zone_map` (cell → zone label), derived `fuel_map`, and `ventilation_map`:
|
| 206 |
+
|
| 207 |
+
| Zone | Fuel multiplier | Smoke decay/step | Notes |
|
| 208 |
+
|---|---|---|---|
|
| 209 |
+
| `north/south_offices` | 1.5× | 0.010 | High fuel, poor ventilation |
|
| 210 |
+
| `west/east_rooms` | 1.5× | 0.010 | Same as offices |
|
| 211 |
+
| `main_corridor` | 1.0× | 0.028 | Baseline |
|
| 212 |
+
| `northwest/northeast/etc. hall` | 0.9× | 0.050 | Open plan — best ventilation |
|
| 213 |
+
| `exit` | 0.6× | 0.040 | Concrete, vented |
|
| 214 |
+
|
| 215 |
+
**Hard mode — procedural generation.** Episodes run on a freshly generated 20×24 floor plan every time:
|
| 216 |
+
|
| 217 |
+
1. **Room placement**: random non-overlapping rectangles (3–5 × 3–4 cells, 6–10 rooms)
|
| 218 |
+
2. **MST corridors**: Prim-style minimum spanning tree connecting room centers via L-shaped tunnels
|
| 219 |
+
3. **Exit placement**: deterministic tunnels from leftmost/rightmost floor cells to outer walls
|
| 220 |
+
4. **Connectivity guard**: BFS from agent spawn verifies ≥1 exit is reachable; up to 3 attempts; falls back to `small_office`
|
| 221 |
+
|
| 222 |
+
### Visibility (`server/narrative.py`)
|
| 223 |
+
|
| 224 |
+
BFS flood-fill from agent position, walls block expansion:
|
| 225 |
+
|
| 226 |
+
| Agent smoke level | Visibility radius |
|
| 227 |
+
|---|---|
|
| 228 |
+
| None / light (`< 0.5`) | 5 cells |
|
| 229 |
+
| Moderate (`0.5–0.8`) | 3 cells |
|
| 230 |
+
| Heavy (`≥ 0.8`) | 2 cells |
|
| 231 |
+
|
| 232 |
+
---
|
| 233 |
+
|
| 234 |
+
## What the agent sees
|
| 235 |
|
| 236 |
+
Every step, `narrative.py` assembles a first-person text observation from raw grid state:
|
| 237 |
|
| 238 |
```
|
| 239 |
You are in the **main_corridor**. The air is **moderate**.
|
|
|
|
| 243 |
Doors: door_1 (closed) at 2m east.
|
| 244 |
You hear: Fire alarm sounding; Smoke detector beeping.
|
| 245 |
Last action: You move south. The smoke is thick here.
|
| 246 |
+
Available actions: move(direction='north') move(direction='south')
|
| 247 |
+
door(target_id='door_1', door_state='open') look(direction='east') wait()
|
| 248 |
```
|
| 249 |
|
| 250 |
+
The same state is also exposed as structured fields in `PyreObservation` (smoke level, fire direction, visible objects, blocked exits, action hints) and as a full grid snapshot in `PyreObservation.map_state` for programmatic / RL use.
|
| 251 |
+
|
| 252 |
---
|
| 253 |
|
| 254 |
## Action space
|
| 255 |
|
| 256 |
| Action | Parameters | Effect |
|
| 257 |
|---|---|---|
|
| 258 |
+
| `move` | `direction: north\|south\|east\|west` | Move one cell; blocked by walls, obstacles, closed doors |
|
| 259 |
+
| `door` | `target_id: str`, `door_state: open\|close` | Open or close a door within 2 cells Manhattan distance |
|
| 260 |
+
| `look` | `direction: north\|south\|east\|west` | Ray-scan up to 5 cells; returns per-cell smoke/fire/zone/door/exit detail. Time still advances. |
|
| 261 |
| `wait` | — | Skip turn |
|
| 262 |
|
| 263 |
---
|
| 264 |
|
| 265 |
+
## Reward function — all 14 components
|
| 266 |
|
| 267 |
+
### Per-step rubrics
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 268 |
|
| 269 |
+
| Class | Value | Condition |
|
| 270 |
+
|---|---|---|
|
| 271 |
+
| `TimeStepPenalty` | −0.01 | Every step |
|
| 272 |
+
| `ProgressReward` | +0.25 | `move` reduced BFS distance to nearest unblocked exit |
|
| 273 |
+
| `ProgressRegressionPenalty` | −0.15 | `move` increased BFS distance to nearest exit |
|
| 274 |
+
| `SafeProgressBonus` | +0.05 | Progress AND new cell has `smoke < 0.5` |
|
| 275 |
+
| `DangerPenalty` | −0.50 | `move` into cell with `smoke ≥ 0.5` OR adjacent to `fire ≥ 0.3` |
|
| 276 |
+
| `HealthDrainPenalty` | −0.02 × dmg | Proportional to HP lost this step |
|
| 277 |
+
| `StrategicDoorBonus` | +0.50 | Closed a door with a cardinal neighbor `fire ≥ 0.3`; once per door per episode |
|
| 278 |
+
| `ExplorationBonus` | +0.02 | `move` to a cell not visited this episode |
|
| 279 |
+
|
| 280 |
+
### Episode-end rubrics (fire only when `done=True`)
|
| 281 |
+
|
| 282 |
+
| Class | Value | Condition |
|
| 283 |
+
|---|---|---|
|
| 284 |
+
| `SelfSurviveBonus` | +5.0 | Agent evacuated alive |
|
| 285 |
+
| `HealthSurvivalBonus` | +1.5 × (hp/100) | Agent evacuated (range 0 → +1.5) |
|
| 286 |
+
| `SelfDeathPenalty` | −10.0 | Agent died (HP ≤ 0) |
|
| 287 |
+
| `TimeoutPenalty` | −5.0 to −8.0 | Alive but out of steps; scaled by `−5 − 3×(hp/100)` when exits were reachable |
|
| 288 |
+
| `NearMissBonus` | max(0, 3.0 − 0.5 × min_dist) | On death only; partial credit for close exit approach |
|
| 289 |
+
| `TimeBonus` | +0.05 × remaining_steps | Agent evacuated |
|
| 290 |
+
|
| 291 |
+
**BFS note:** `ProgressReward`, `ProgressRegressionPenalty`, `SafeProgressBonus`, and `NearMissBonus` all use true BFS traversal distance (walls and obstacles block; closed doors are treated as passable so the reward models optimal reachability assuming doors can be opened). Manhattan distance is never used for rewards.
|
| 292 |
|
| 293 |
---
|
| 294 |
|
| 295 |
+
## Difficulty presets
|
| 296 |
+
|
| 297 |
+
| Level | Sources | Spread rate | Humidity | Wind | Max steps | Map |
|
| 298 |
+
|---|---|---|---|---|---|---|
|
| 299 |
+
| `easy` | 1 | 10–20% | 30–50% | CALM only | 200 | Fixed 16×16 templates |
|
| 300 |
+
| `medium` | 2–4 | 15–40% | 10–45% | Any | 150 | Fixed 16×16 templates |
|
| 301 |
+
| `hard` | 3–5 | 30–55% | 5–20% | Never CALM | 100 | Procedural 20×24 |
|
| 302 |
+
|
| 303 |
+
**Health damage rates** (applied after fire sim step):
|
| 304 |
+
|
| 305 |
+
| Condition | HP/step |
|
| 306 |
+
|---|---|
|
| 307 |
+
| Light smoke (`0.2–0.5`) | 0.5 |
|
| 308 |
+
| Moderate smoke (`0.5–0.8`) | 2.0 |
|
| 309 |
+
| Heavy smoke (`≥ 0.8`) | 5.0 |
|
| 310 |
+
| On fire (`fire ≥ 0.3`) | 10.0 |
|
| 311 |
+
|
| 312 |
+
Smoke and fire damage stack if both conditions apply.
|
| 313 |
+
|
| 314 |
+
---
|
| 315 |
+
|
| 316 |
+
## HTTP API
|
| 317 |
+
|
| 318 |
+
The FastAPI server exposes both the standard OpenEnv routes and additional endpoints:
|
| 319 |
+
|
| 320 |
+
| Method | Path | Body | Returns |
|
| 321 |
+
|---|---|---|---|
|
| 322 |
+
| `GET` | `/health` | — | `{"status": "ok"}` |
|
| 323 |
+
| `POST` | `/reset` | `{"difficulty": "medium", "seed": null}` | `{observation, reward, done, metadata}` |
|
| 324 |
+
| `POST` | `/step` | `{"action": "move", "direction": "north"}` | `{observation, reward, done, metadata}` |
|
| 325 |
+
| `GET` | `/state` | — | Full `PyreState` dump |
|
| 326 |
+
| `GET` | `/scene` | — | Structured scene graph for UI renderers |
|
| 327 |
+
| `GET` | `/` | — | Frontend `index.html` |
|
| 328 |
+
|
| 329 |
+
`/scene` returns a 5-channel per-cell tensor (`cell_type`, `fire`, `smoke`, `is_agent`, `is_visible`) plus structured `labels` (agent position/health/location, episode params, door registry) — consumed by the React frontend.
|
| 330 |
+
|
| 331 |
+
---
|
| 332 |
+
|
| 333 |
+
## Training
|
| 334 |
+
|
| 335 |
+
Three training surfaces share the same PPO algorithm core from `train_torch_ppo.py`:
|
| 336 |
+
|
| 337 |
+
### 1. In-process (fastest)
|
| 338 |
|
| 339 |
```bash
|
| 340 |
+
python training/ppo/train_torch_ppo.py \
|
| 341 |
+
--episodes 500 \
|
| 342 |
+
--device cuda \
|
| 343 |
+
--difficulty-schedule easy,medium,hard \
|
| 344 |
+
--patience-threshold 0.65 \
|
| 345 |
+
--output artifacts/pyre_ppo.pt
|
| 346 |
+
```
|
| 347 |
|
| 348 |
+
### 2. HTTP (against live server)
|
|
|
|
| 349 |
|
| 350 |
+
```bash
|
| 351 |
+
# Start server first
|
| 352 |
+
uv run server
|
|
|
|
| 353 |
|
| 354 |
+
python training/ppo/train_torch_ppo_http.py \
|
| 355 |
+
--url http://localhost:8000 \
|
| 356 |
+
--episodes 300
|
| 357 |
+
```
|
| 358 |
|
| 359 |
+
### 3. Colab notebook (against HF Space)
|
| 360 |
+
|
| 361 |
+
Open [`training/ppo/pyre_ppo_training.ipynb`](training/ppo/pyre_ppo_training.ipynb) or the [hosted Colab](https://colab.research.google.com/drive/1ojC55qKXMVRXdjKeG5dUHiA5RBOBxA9V?usp=sharing). The notebook points `SERVER_URL` at `https://krooz-pyre-env.hf.space` and trains entirely over HTTP.
|
| 362 |
+
|
| 363 |
+
### Observation encoding
|
| 364 |
+
|
| 365 |
+
The `ObservationEncoder` in `train_torch_ppo.py` encodes each `PyreObservation` into a **5,785-dim float32 vector**:
|
| 366 |
+
|
| 367 |
+
```
|
| 368 |
+
Grid: 24×24 × 10 channels = 5,760
|
| 369 |
+
• 6 one-hot cell type (floor/wall/door_open/door_closed/exit/obstacle)
|
| 370 |
+
• fire intensity [0,1]
|
| 371 |
+
• smoke density [0,1]
|
| 372 |
+
• visibility mask (1=visible)
|
| 373 |
+
• agent position mask
|
| 374 |
+
|
| 375 |
+
Scalars: 17 global features
|
| 376 |
+
health, step_progress, fire_spread_rate, humidity,
|
| 377 |
+
agent_x_norm, agent_y_norm, nearest_exit_distance,
|
| 378 |
+
reachable_exit_count, visible_cell_count, fire_sources,
|
| 379 |
+
smoke_severity, alive, evacuated,
|
| 380 |
+
exit_dx_norm, exit_dy_norm, exit_manhattan_norm ← exit compass (Fix 3)
|
| 381 |
+
|
| 382 |
+
One-hots: wind (5) + difficulty (3) = 8
|
| 383 |
+
|
| 384 |
+
Total: 5,760 + 17 = 5,777 + 8 = 5,785
|
| 385 |
```
|
| 386 |
|
| 387 |
+
With `--history-length 4` (default), four frames are stacked: **input_dim = 23,140**.
|
| 388 |
|
| 389 |
+
### Network architecture
|
|
|
|
| 390 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 391 |
```
|
| 392 |
+
Input (23,140)
|
| 393 |
+
→ LayerNorm → FC(512) → LayerNorm → ReLU
|
| 394 |
+
→ FC(256) → LayerNorm → ReLU
|
| 395 |
+
→ FC(128) → ReLU
|
| 396 |
+
├── Policy head → FC(41) logits + action mask (−∞ for invalid)
|
| 397 |
+
└── Value head → FC(1) scalar
|
| 398 |
+
```
|
| 399 |
+
|
| 400 |
+
Orthogonal init (√2 gain hidden layers, 0.01 policy head). Total parameters: ~12.3M.
|
| 401 |
+
|
| 402 |
+
### Curriculum
|
| 403 |
+
|
| 404 |
+
The `PatienceCurriculum` gating:
|
| 405 |
+
|
| 406 |
+
```
|
| 407 |
+
Stay on current difficulty until:
|
| 408 |
+
success_rate (last 30 eps) ≥ patience_threshold (default 0.65)
|
| 409 |
+
for patience_window (default 15) consecutive episodes
|
| 410 |
+
→ then advance to next difficulty
|
| 411 |
+
|
| 412 |
+
Hard phase: 25% of episodes replay on medium (--hard-mix-ratio 0.25)
|
| 413 |
+
to prevent catastrophic forgetting
|
| 414 |
+
```
|
| 415 |
+
|
| 416 |
+
### Push to HuggingFace Hub
|
| 417 |
+
|
| 418 |
+
```bash
|
| 419 |
+
export HF_TOKEN=hf_...
|
| 420 |
+
uv run python training/push_to_hub.py \
|
| 421 |
+
--repo-id Krooz/pyre-ppo-agent \
|
| 422 |
+
--stem pyre_ppo_fixed \
|
| 423 |
+
--artifacts-dir artifacts
|
| 424 |
+
```
|
| 425 |
+
|
| 426 |
+
Uploads `{stem}.pt`, `{stem}.csv`, `{stem}.png`, `{stem}_eval.csv`, and generates a model card README. Trained weights: **[Krooz/pyre-ppo-agent](https://huggingface.co/Krooz/pyre-ppo-agent)**.
|
| 427 |
+
|
| 428 |
+
### Training results
|
| 429 |
+
|
| 430 |
+

|
| 431 |
+
|
| 432 |
+
**200 episodes, patience-gated easy→medium curriculum.**
|
| 433 |
+
|
| 434 |
+
| Phase | Episodes | Final success rate | Notes |
|
| 435 |
+
|---|---|---|---|
|
| 436 |
+
| Easy | ~1–100 | ~90% | Reward climbs from −15 to +15 within 30 eps |
|
| 437 |
+
| Medium | ~100–200 | **75%** | Dip at transition, recovers within 25 eps |
|
| 438 |
+
|
| 439 |
+
Key observations from the curves:
|
| 440 |
+
- Raw episode reward (grey) is noisy due to stochastic fire; MA-20 (orange) shows clean monotone improvement within each phase
|
| 441 |
+
- The success rate drop at episode ~100 is the curriculum gating working correctly — medium difficulty introduces wind, denser fire, and shorter time limits simultaneously
|
| 442 |
+
- Evaluation checkpoints (blue diamonds) confirm near-100% on easy before the gate advances
|
| 443 |
+
- Final 75% success rate on medium vs ~3% for the random baseline
|
| 444 |
|
| 445 |
---
|
| 446 |
|
| 447 |
+
## Frontend
|
| 448 |
+
|
| 449 |
+
A cinematic real-time visualization built in React 19 + Vite + TypeScript.
|
| 450 |
+
|
| 451 |
+
```bash
|
| 452 |
+
cd frontend
|
| 453 |
+
npm install
|
| 454 |
+
npm run dev # → http://localhost:5173
|
| 455 |
+
```
|
| 456 |
+
|
| 457 |
+
The map renderer (`src/components/Map2D.tsx`) uses HTML5 Canvas 2D with:
|
| 458 |
+
- **5-layer volumetric fire**: dark-red base → orange body → yellow core → white-hot tip → wind-bent plume
|
| 459 |
+
- **Ember particle system**: 200-max particles, wind-biased velocity, fade-out
|
| 460 |
+
- **Animated walls**: brick texture with heat-tint shift and crack lines near fire
|
| 461 |
+
- **Charred obstacles**: dark rubble cells with ember-glow when adjacent to fire
|
| 462 |
+
- **Fog-of-war**: per-cell alpha overlay; fire beacon glow punches through fog
|
| 463 |
+
- **Minecraft-style agent**: pixel-art character with health-based color theme (blue→orange→red→purple), gold health arc ring, and movement trail
|
| 464 |
|
| 465 |
+
The agent color changes with HP: `healthy (≥60%) → blue`, `moderate (30–59%) → orange`, `low (1–29%) → red`, `critical (≤0%) → purple`.
|
| 466 |
+
|
| 467 |
+
The right side panel polls `/scene` every 500ms and shows tactical controls, per-door state (open/closed/failed), agent biometrics, environment stats, event log with reward annotations, and raw network activity.
|
|
|
|
|
|
|
| 468 |
|
| 469 |
---
|
| 470 |
|
|
|
|
| 474 |
openenv push --repo-id your-org/pyre-env
|
| 475 |
```
|
| 476 |
|
| 477 |
+
The `openenv.yaml` manifest declares this as a FastAPI space on port 8000. Docker configuration is in `server/Dockerfile`.
|
| 478 |
+
|
| 479 |
---
|
| 480 |
|
| 481 |
+
## Roadmap
|
| 482 |
|
| 483 |
+
The current architecture — cellular automaton physics, composable rubrics, BFS-based visibility, narrative observation layer, dual LLM+RL interface — is designed to generalise. Planned extensions:
|
| 484 |
+
|
| 485 |
+
### Other natural disasters
|
| 486 |
+
The `FireSim` is one implementation of a physics layer. The same environment shell supports alternative calamity models with minimal changes:
|
| 487 |
+
|
| 488 |
+
| Disaster | Physics swap | New mechanic |
|
| 489 |
+
|---|---|---|
|
| 490 |
+
| **Flood** | Water pressure + rising level grid | Agent must find high ground or exits before water fills corridors |
|
| 491 |
+
| **Earthquake** | Probabilistic wall collapse | Rubble blocks form during episode; structural integrity per cell |
|
| 492 |
+
| **Chemical spill** | Wind-borne toxin concentration | Invisible hazard; agent must infer spread direction from health decay |
|
| 493 |
+
| **Wildfire (ground level)** | Existing fire sim, outdoor map | No walls, wind-dominated spread, sparse exits |
|
| 494 |
+
|
| 495 |
+
Each shares the same reward rubric composability, observation layer, and training stack.
|
| 496 |
+
|
| 497 |
+
### NPC characters
|
| 498 |
+
The floor plan templates already define `spawn_zones` and the state model has placeholders for multi-agent positions. Next steps:
|
| 499 |
+
- Add panicking civilians who move randomly and block corridors
|
| 500 |
+
- Rescue mechanic: escort NPCs to exits for bonus reward
|
| 501 |
+
- Theory-of-mind challenge: agent must model NPC movement to plan around them
|
| 502 |
+
- Competing agent: second RL agent racing for the same exit (mixed cooperative/competitive)
|
| 503 |
+
|
| 504 |
+
### 3D maps and multi-floor buildings
|
| 505 |
+
- Stack floor levels connected by staircases
|
| 506 |
+
- Fire spreads both horizontally and vertically through floor openings
|
| 507 |
+
- 3D BFS cone-of-vision observation (currently 2D flood-fill)
|
| 508 |
+
- Elevator shafts as high-risk shortcuts
|
| 509 |
+
- Procedural multi-floor generator extending the existing Prim-MST approach
|
| 510 |
+
|
| 511 |
+
### LLM fine-tuning (GRPO)
|
| 512 |
+
- `training/` already scaffolds GRPO infrastructure alongside PPO
|
| 513 |
+
- Fine-tune a language model's policy directly on Pyre episode rollouts
|
| 514 |
+
- Compare: PPO on structured grid vs GRPO on text narrative — does the LLM develop genuine spatial reasoning or pattern-match the narrative?
|
| 515 |
+
|
| 516 |
+
### Harder curriculum stages
|
| 517 |
+
- `extreme` difficulty: procedural map, 5 fire sources, humidity 0–5%, always hurricane-force wind, 75 max steps
|
| 518 |
+
- Dynamic difficulty adjustment: real-time difficulty scaling based on agent rolling success rate
|
| 519 |
+
- Adversarial fire placement: second agent controls fire source positions to maximise agent failure
|
| 520 |
|
| 521 |
---
|
| 522 |
|
| 523 |
## Hackathon alignment
|
| 524 |
|
| 525 |
+
- **Theme #2 — Long-Horizon Planning**: 50–200 step episodes; agent must build a mental map across many partial observations with no global state
|
| 526 |
+
- **Theme #3.1 — World Modeling**: no global map; agent infers fire spread direction, corridor topology, and exit reachability from local first-person text observations alone
|
artifacts/dashboard.png
ADDED
|
Git LFS Details
|
artifacts/illustration1.png
ADDED
|
Git LFS Details
|
artifacts/illustration2.png
ADDED
|
Git LFS Details
|
artifacts/illustration3.png
ADDED
|
Git LFS Details
|
artifacts/illustration4.png
ADDED
|
Git LFS Details
|
artifacts/pyre_ppo_fixed.csv
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
episode,difficulty,steps,reward,evacuated,final_health,reward_mean_30,success_rate_30
|
| 2 |
+
1,easy,200,-22.96,0,30.0,-22.96,0.0
|
| 3 |
+
2,easy,1,16.76,1,100.0,-3.1,0.5
|
| 4 |
+
3,easy,200,-16.89,0,100.0,-7.6967,0.3333
|
| 5 |
+
4,easy,200,-8.24,0,100.0,-7.8325,0.25
|
| 6 |
+
5,easy,45,17.34,1,100.0,-2.798,0.4
|
| 7 |
+
6,easy,23,17.1,1,100.0,0.5183,0.5
|
| 8 |
+
7,easy,200,-7.53,0,100.0,-0.6314,0.4286
|
| 9 |
+
8,easy,58,17.15,1,100.0,1.5912,0.5
|
| 10 |
+
9,easy,12,18.34,1,100.0,3.4522,0.5556
|
| 11 |
+
10,easy,200,-12.04,0,100.0,1.903,0.5
|
| 12 |
+
11,easy,108,10.18,1,100.0,2.6555,0.5455
|
| 13 |
+
12,easy,132,7.7,1,100.0,3.0758,0.5833
|
| 14 |
+
13,easy,107,14.17,1,100.0,3.9292,0.6154
|
| 15 |
+
14,easy,57,17.94,1,100.0,4.93,0.6429
|
| 16 |
+
15,easy,80,14.65,1,100.0,5.578,0.6667
|
| 17 |
+
16,easy,200,-11.21,0,100.0,4.5287,0.625
|
| 18 |
+
17,easy,50,19.92,1,100.0,5.4341,0.6471
|
| 19 |
+
18,easy,44,14.68,1,100.0,5.9478,0.6667
|
| 20 |
+
19,easy,9,17.1,1,100.0,6.5347,0.6842
|
| 21 |
+
20,easy,66,16.89,1,100.0,7.0525,0.7
|
| 22 |
+
21,easy,82,12.22,1,100.0,7.2986,0.7143
|
| 23 |
+
22,easy,55,16.94,1,100.0,7.7368,0.7273
|
| 24 |
+
23,easy,20,19.4,1,100.0,8.2439,0.7391
|
| 25 |
+
24,easy,16,18.47,1,100.0,8.67,0.75
|
| 26 |
+
25,easy,21,18.47,1,100.0,9.062,0.76
|
| 27 |
+
26,easy,60,19.69,1,100.0,9.4708,0.7692
|
| 28 |
+
27,easy,9,18.38,1,100.0,9.8007,0.7778
|
| 29 |
+
28,easy,133,13.98,1,100.0,9.95,0.7857
|
| 30 |
+
29,easy,72,20.35,1,100.0,10.3086,0.7931
|
| 31 |
+
30,easy,16,17.63,1,100.0,10.5527,0.8
|
| 32 |
+
31,easy,25,18.65,1,100.0,11.9397,0.8333
|
| 33 |
+
32,easy,40,21.89,1,100.0,12.1107,0.8333
|
| 34 |
+
33,easy,10,18.37,1,100.0,13.286,0.8667
|
| 35 |
+
34,easy,57,15.42,1,100.0,14.0747,0.9
|
| 36 |
+
35,easy,15,17.99,1,100.0,14.0963,0.9
|
| 37 |
+
36,easy,15,18.25,1,100.0,14.1347,0.9
|
| 38 |
+
37,easy,200,-20.44,0,100.0,13.7043,0.9
|
| 39 |
+
38,easy,5,16.9,1,100.0,13.696,0.9
|
| 40 |
+
39,easy,31,16.24,1,100.0,13.626,0.9
|
| 41 |
+
40,easy,200,-18.79,0,100.0,13.401,0.9
|
| 42 |
+
41,easy,34,21.47,1,100.0,13.7773,0.9
|
| 43 |
+
42,easy,15,18.27,1,100.0,14.1297,0.9
|
| 44 |
+
43,easy,87,13.42,1,100.0,14.1047,0.9
|
| 45 |
+
44,easy,33,22.84,1,100.0,14.268,0.9
|
| 46 |
+
45,easy,14,18.33,1,100.0,14.3907,0.9
|
| 47 |
+
46,easy,200,-18.08,0,100.0,14.1617,0.9
|
| 48 |
+
47,easy,41,19.0125,1,99.5,14.1314,0.9
|
| 49 |
+
48,easy,11,18.16,1,100.0,14.2474,0.9
|
| 50 |
+
49,easy,200,-20.515,0,87.5,12.9936,0.8667
|
| 51 |
+
50,easy,28,20.04,1,100.0,13.0986,0.8667
|
| 52 |
+
51,easy,5,17.99,1,100.0,13.2909,0.8667
|
| 53 |
+
52,easy,30,18.365,1,99.0,13.3384,0.8667
|
| 54 |
+
53,easy,7,17.57,1,100.0,13.2774,0.8667
|
| 55 |
+
54,easy,7,17.21,1,100.0,13.2354,0.8667
|
| 56 |
+
55,easy,21,18.18,1,100.0,13.2258,0.8667
|
| 57 |
+
56,easy,32,17.97,1,100.0,13.1684,0.8667
|
| 58 |
+
57,easy,5,17.44,1,100.0,13.1371,0.8667
|
| 59 |
+
58,easy,200,-19.92,0,100.0,12.0071,0.8333
|
| 60 |
+
59,easy,16,18.78,1,100.0,11.9547,0.8333
|
| 61 |
+
60,easy,17,17.83,1,100.0,11.9614,0.8333
|
| 62 |
+
61,easy,200,-19.67,0,100.0,10.6841,0.8
|
| 63 |
+
62,easy,46,19.33,1,100.0,10.5988,0.8
|
| 64 |
+
63,easy,21,17.55,1,100.0,10.5714,0.8
|
| 65 |
+
64,easy,42,17.81,1,100.0,10.6511,0.8
|
| 66 |
+
65,easy,34,21.03,1,100.0,10.7524,0.8
|
| 67 |
+
66,easy,1,16.76,1,100.0,10.7028,0.8
|
| 68 |
+
67,easy,19,16.63,1,100.0,11.9384,0.8333
|
| 69 |
+
68,easy,22,19.16,1,100.0,12.0137,0.8333
|
| 70 |
+
69,easy,19,17.58,1,100.0,12.0584,0.8333
|
| 71 |
+
70,easy,200,-21.27,0,100.0,11.9758,0.8333
|
| 72 |
+
71,easy,21,19.36,1,100.0,11.9054,0.8333
|
| 73 |
+
72,easy,13,18.59,1,100.0,11.9161,0.8333
|
| 74 |
+
73,easy,18,18.25,1,100.0,12.0771,0.8333
|
| 75 |
+
74,easy,25,19.19,1,100.0,11.9554,0.8333
|
| 76 |
+
75,easy,1,16.76,1,100.0,11.9031,0.8333
|
| 77 |
+
76,easy,12,17.64,1,100.0,13.0938,0.8667
|
| 78 |
+
77,easy,43,22.68,1,100.0,13.216,0.8667
|
| 79 |
+
78,easy,2,16.65,1,100.0,13.1657,0.8667
|
| 80 |
+
79,easy,11,18.64,1,100.0,14.4708,0.9
|
| 81 |
+
80,easy,23,21.87,1,100.0,14.5318,0.9
|
| 82 |
+
81,easy,5,17.94,1,100.0,14.5302,0.9
|
| 83 |
+
82,easy,2,17.23,1,100.0,14.4923,0.9
|
| 84 |
+
83,easy,36,18.86,1,100.0,14.5353,0.9
|
| 85 |
+
84,easy,13,18.26,1,100.0,14.5703,0.9
|
| 86 |
+
85,easy,22,18.32,1,100.0,14.575,0.9
|
| 87 |
+
86,easy,12,19.91,1,100.0,14.6397,0.9
|
| 88 |
+
87,easy,27,17.51,1,100.0,14.642,0.9
|
| 89 |
+
88,easy,200,-19.36,0,100.0,14.6607,0.9
|
| 90 |
+
89,easy,30,-12.38,0,0.0,13.622,0.8667
|
| 91 |
+
90,easy,17,17.18,1,100.0,13.6003,0.8667
|
| 92 |
+
91,easy,2,17.23,1,100.0,14.8303,0.9
|
| 93 |
+
92,easy,200,-20.1,0,99.0,13.516,0.8667
|
| 94 |
+
93,easy,24,17.6,1,100.0,13.5177,0.8667
|
| 95 |
+
94,easy,23,17.95,1,100.0,13.5223,0.8667
|
| 96 |
+
95,easy,24,21.62,1,100.0,13.542,0.8667
|
| 97 |
+
96,easy,11,18.51,1,100.0,13.6003,0.8667
|
| 98 |
+
97,easy,14,17.95,1,100.0,13.6443,0.8667
|
| 99 |
+
98,easy,16,19.97,1,100.0,13.6713,0.8667
|
| 100 |
+
99,easy,4,17.55,1,100.0,13.6703,0.8667
|
| 101 |
+
100,easy,15,18.6,1,100.0,14.9993,0.9
|
| 102 |
+
101,medium,16,16.31,1,100.0,14.8977,0.9
|
| 103 |
+
102,medium,35,9.635,1,29.0,14.5992,0.9
|
| 104 |
+
103,medium,61,-15.47,0,0.0,13.4752,0.8667
|
| 105 |
+
104,medium,14,17.03,1,100.0,13.4032,0.8667
|
| 106 |
+
105,medium,31,-18.74,0,0.0,12.2198,0.8333
|
| 107 |
+
106,medium,19,-15.59,0,0.0,11.1122,0.8
|
| 108 |
+
107,medium,17,17.39,1,100.0,10.9358,0.8
|
| 109 |
+
108,medium,21,11.31,1,80.0,10.7578,0.8
|
| 110 |
+
109,medium,15,15.85,1,100.0,10.6648,0.8
|
| 111 |
+
110,medium,7,16.1,1,100.0,10.4725,0.8
|
| 112 |
+
111,medium,27,14.95,1,94.0,10.3728,0.8
|
| 113 |
+
112,medium,19,15.74,1,100.0,10.3232,0.8
|
| 114 |
+
113,medium,33,17.97,1,100.0,10.2935,0.8
|
| 115 |
+
114,medium,3,15.16,1,100.0,10.1902,0.8
|
| 116 |
+
115,medium,7,16.48,1,100.0,10.1288,0.8
|
| 117 |
+
116,medium,20,17.86,1,100.0,10.0605,0.8
|
| 118 |
+
117,medium,14,15.0425,1,99.5,9.9782,0.8
|
| 119 |
+
118,medium,10,15.19,1,100.0,11.1299,0.8333
|
| 120 |
+
119,medium,24,10.3725,1,55.5,11.8883,0.8667
|
| 121 |
+
120,medium,8,15.62,1,100.0,11.8363,0.8667
|
| 122 |
+
121,medium,15,16.25,1,100.0,11.8037,0.8667
|
| 123 |
+
122,medium,14,16.135,1,99.0,13.0115,0.9
|
| 124 |
+
123,medium,1,14.26,1,100.0,12.9002,0.9
|
| 125 |
+
124,medium,13,16.72,1,100.0,12.8592,0.9
|
| 126 |
+
125,medium,30,10.3925,1,55.5,12.4849,0.9
|
| 127 |
+
126,medium,8,16.92,1,100.0,12.4319,0.9
|
| 128 |
+
127,medium,25,-13.34,0,0.0,11.3889,0.8667
|
| 129 |
+
128,medium,7,16.1,1,100.0,11.2599,0.8667
|
| 130 |
+
129,medium,19,14.1675,1,98.5,11.1472,0.8667
|
| 131 |
+
130,medium,67,-16.02,0,0.0,9.9932,0.8333
|
| 132 |
+
131,medium,26,-12.05,0,0.0,9.0478,0.8
|
| 133 |
+
132,medium,30,13.7425,1,93.5,9.1848,0.8
|
| 134 |
+
133,medium,25,14.4475,1,92.5,10.182,0.8333
|
| 135 |
+
134,medium,150,-26.935,0,54.5,8.7165,0.8
|
| 136 |
+
135,medium,13,15.77,1,100.0,9.8668,0.8333
|
| 137 |
+
136,medium,150,-16.3,0,100.0,9.8432,0.8333
|
| 138 |
+
137,medium,24,-17.86,0,0.0,8.6682,0.8
|
| 139 |
+
138,medium,2,14.73,1,100.0,8.7822,0.8
|
| 140 |
+
139,medium,150,-20.595,0,84.5,7.5673,0.7667
|
| 141 |
+
140,medium,18,15.61,1,84.0,7.551,0.7667
|
| 142 |
+
141,medium,5,15.31,1,100.0,7.563,0.7667
|
| 143 |
+
142,medium,19,-11.9,0,0.0,6.6417,0.7333
|
| 144 |
+
143,medium,23,19.75,1,100.0,6.701,0.7333
|
| 145 |
+
144,medium,8,15.64,1,100.0,6.717,0.7333
|
| 146 |
+
145,medium,52,-14.46,0,0.0,5.6857,0.7
|
| 147 |
+
146,medium,20,15.63,1,100.0,5.6113,0.7
|
| 148 |
+
147,medium,4,15.05,1,100.0,5.6116,0.7
|
| 149 |
+
148,medium,27,-18.93,0,0.0,4.4742,0.6667
|
| 150 |
+
149,medium,26,18.9,1,100.0,4.7585,0.6667
|
| 151 |
+
150,medium,27,15.5825,1,97.5,4.7572,0.6667
|
| 152 |
+
151,medium,2,14.73,1,100.0,4.7066,0.6667
|
| 153 |
+
152,medium,17,17.05,1,100.0,4.7371,0.6667
|
| 154 |
+
153,medium,21,14.4025,1,99.5,4.7418,0.6667
|
| 155 |
+
154,medium,72,-9.51,0,0.0,3.8675,0.6333
|
| 156 |
+
155,medium,21,-14.84,0,0.0,3.0264,0.6
|
| 157 |
+
156,medium,15,13.0075,1,72.5,2.896,0.6
|
| 158 |
+
157,medium,35,15.73,1,100.0,3.865,0.6333
|
| 159 |
+
158,medium,20,11.76,1,68.0,3.7203,0.6333
|
| 160 |
+
159,medium,14,15.56,1,100.0,3.7667,0.6333
|
| 161 |
+
160,medium,15,16.88,1,100.0,4.8634,0.6667
|
| 162 |
+
161,medium,150,-16.18,0,6.0,4.7257,0.6667
|
| 163 |
+
162,medium,8,16.04,1,100.0,4.8023,0.6667
|
| 164 |
+
163,medium,12,14.16,1,100.0,4.7927,0.6667
|
| 165 |
+
164,medium,24,19.26,1,100.0,6.3326,0.7
|
| 166 |
+
165,medium,6,15.79,1,100.0,6.3333,0.7
|
| 167 |
+
166,medium,9,16.01,1,100.0,7.4103,0.7333
|
| 168 |
+
167,medium,29,14.365,1,61.0,8.4844,0.7667
|
| 169 |
+
168,medium,10,15.81,1,100.0,8.5204,0.7667
|
| 170 |
+
169,medium,16,16.26,1,100.0,9.7489,0.8
|
| 171 |
+
170,medium,21,16.36,1,100.0,9.7739,0.8
|
| 172 |
+
171,medium,1,14.26,1,100.0,9.7389,0.8
|
| 173 |
+
172,medium,17,14.69,1,100.0,10.6252,0.8333
|
| 174 |
+
173,medium,22,17.94,1,100.0,10.5649,0.8333
|
| 175 |
+
174,medium,8,15.99,1,100.0,10.5766,0.8333
|
| 176 |
+
175,medium,16,-17.26,0,0.0,10.4832,0.8333
|
| 177 |
+
176,medium,21,12.625,1,47.0,10.3831,0.8333
|
| 178 |
+
177,medium,7,16.15,1,100.0,10.4198,0.8333
|
| 179 |
+
178,medium,20,13.82,1,94.0,11.5114,0.8667
|
| 180 |
+
179,medium,9,16.63,1,100.0,11.4358,0.8667
|
| 181 |
+
180,medium,2,14.73,1,100.0,11.4073,0.8667
|
| 182 |
+
181,medium,150,-18.26,0,100.0,10.3077,0.8333
|
| 183 |
+
182,medium,5,15.9,1,100.0,10.2693,0.8333
|
| 184 |
+
183,medium,3,15.16,1,100.0,10.2946,0.8333
|
| 185 |
+
184,medium,14,15.98,1,100.0,11.1442,0.8667
|
| 186 |
+
185,medium,150,-20.69,0,69.0,10.9492,0.8667
|
| 187 |
+
186,medium,12,16.0,1,100.0,11.049,0.8667
|
| 188 |
+
187,medium,62,11.835,1,89.0,10.9192,0.8667
|
| 189 |
+
188,medium,4,15.55,1,100.0,11.0455,0.8667
|
| 190 |
+
189,medium,7,16.1,1,100.0,11.0635,0.8667
|
| 191 |
+
190,medium,26,15.13,1,100.0,11.0052,0.8667
|
| 192 |
+
191,medium,35,15.075,1,97.0,12.047,0.9
|
| 193 |
+
192,medium,17,15.03,1,100.0,12.0133,0.9
|
| 194 |
+
193,medium,16,16.8,1,100.0,12.1013,0.9
|
| 195 |
+
194,medium,23,-14.93,0,0.0,10.9617,0.8667
|
| 196 |
+
195,medium,1,14.26,1,100.0,10.9107,0.8667
|
| 197 |
+
196,medium,52,10.78,1,68.0,10.7363,0.8667
|
| 198 |
+
197,medium,19,16.22,1,100.0,10.7982,0.8667
|
| 199 |
+
198,medium,25,-14.82,0,0.0,9.7772,0.8333
|
| 200 |
+
199,medium,150,-22.31,0,100.0,8.4915,0.8
|
| 201 |
+
200,medium,26,14.9825,1,87.5,8.4456,0.8
|
artifacts/pyre_ppo_fixed.png
ADDED
|
Git LFS Details
|
artifacts/pyre_ppo_fixed_eval.csv
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
episode,difficulty,reward_mean,success_rate,steps_mean
|
| 2 |
+
20,medium,15.6975,1.0,7.0
|
| 3 |
+
40,medium,15.64,1.0,4.3
|
| 4 |
+
60,medium,16.8867,1.0,9.0
|
| 5 |
+
80,medium,15.1617,1.0,10.3
|
| 6 |
+
100,medium,6.0075,0.667,57.0
|
| 7 |
+
120,medium,6.4008,0.667,32.7
|
| 8 |
+
140,medium,16.2833,1.0,6.3
|
| 9 |
+
160,medium,16.5733,1.0,8.3
|
| 10 |
+
180,medium,16.3967,1.0,8.0
|
| 11 |
+
200,medium,6.8067,0.667,14.7
|
artifacts/pyre_ppo_fixed_training.log
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
frontend/node_modules/@babel/code-frame/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining
|
| 6 |
+
a copy of this software and associated documentation files (the
|
| 7 |
+
"Software"), to deal in the Software without restriction, including
|
| 8 |
+
without limitation the rights to use, copy, modify, merge, publish,
|
| 9 |
+
distribute, sublicense, and/or sell copies of the Software, and to
|
| 10 |
+
permit persons to whom the Software is furnished to do so, subject to
|
| 11 |
+
the following conditions:
|
| 12 |
+
|
| 13 |
+
The above copyright notice and this permission notice shall be
|
| 14 |
+
included in all copies or substantial portions of the Software.
|
| 15 |
+
|
| 16 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 17 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 18 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
| 19 |
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
| 20 |
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
| 21 |
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
| 22 |
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
frontend/node_modules/@babel/code-frame/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# @babel/code-frame
|
| 2 |
+
|
| 3 |
+
> Generate errors that contain a code frame that point to source locations.
|
| 4 |
+
|
| 5 |
+
See our website [@babel/code-frame](https://babeljs.io/docs/babel-code-frame) for more information.
|
| 6 |
+
|
| 7 |
+
## Install
|
| 8 |
+
|
| 9 |
+
Using npm:
|
| 10 |
+
|
| 11 |
+
```sh
|
| 12 |
+
npm install --save-dev @babel/code-frame
|
| 13 |
+
```
|
| 14 |
+
|
| 15 |
+
or using yarn:
|
| 16 |
+
|
| 17 |
+
```sh
|
| 18 |
+
yarn add @babel/code-frame --dev
|
| 19 |
+
```
|
frontend/node_modules/@babel/code-frame/lib/index.js
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
'use strict';
|
| 2 |
+
|
| 3 |
+
Object.defineProperty(exports, '__esModule', { value: true });
|
| 4 |
+
|
| 5 |
+
var picocolors = require('picocolors');
|
| 6 |
+
var jsTokens = require('js-tokens');
|
| 7 |
+
var helperValidatorIdentifier = require('@babel/helper-validator-identifier');
|
| 8 |
+
|
| 9 |
+
function isColorSupported() {
|
| 10 |
+
return (typeof process === "object" && (process.env.FORCE_COLOR === "0" || process.env.FORCE_COLOR === "false") ? false : picocolors.isColorSupported
|
| 11 |
+
);
|
| 12 |
+
}
|
| 13 |
+
const compose = (f, g) => v => f(g(v));
|
| 14 |
+
function buildDefs(colors) {
|
| 15 |
+
return {
|
| 16 |
+
keyword: colors.cyan,
|
| 17 |
+
capitalized: colors.yellow,
|
| 18 |
+
jsxIdentifier: colors.yellow,
|
| 19 |
+
punctuator: colors.yellow,
|
| 20 |
+
number: colors.magenta,
|
| 21 |
+
string: colors.green,
|
| 22 |
+
regex: colors.magenta,
|
| 23 |
+
comment: colors.gray,
|
| 24 |
+
invalid: compose(compose(colors.white, colors.bgRed), colors.bold),
|
| 25 |
+
gutter: colors.gray,
|
| 26 |
+
marker: compose(colors.red, colors.bold),
|
| 27 |
+
message: compose(colors.red, colors.bold),
|
| 28 |
+
reset: colors.reset
|
| 29 |
+
};
|
| 30 |
+
}
|
| 31 |
+
const defsOn = buildDefs(picocolors.createColors(true));
|
| 32 |
+
const defsOff = buildDefs(picocolors.createColors(false));
|
| 33 |
+
function getDefs(enabled) {
|
| 34 |
+
return enabled ? defsOn : defsOff;
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
|
| 38 |
+
const NEWLINE$1 = /\r\n|[\n\r\u2028\u2029]/;
|
| 39 |
+
const BRACKET = /^[()[\]{}]$/;
|
| 40 |
+
let tokenize;
|
| 41 |
+
const JSX_TAG = /^[a-z][\w-]*$/i;
|
| 42 |
+
const getTokenType = function (token, offset, text) {
|
| 43 |
+
if (token.type === "name") {
|
| 44 |
+
const tokenValue = token.value;
|
| 45 |
+
if (helperValidatorIdentifier.isKeyword(tokenValue) || helperValidatorIdentifier.isStrictReservedWord(tokenValue, true) || sometimesKeywords.has(tokenValue)) {
|
| 46 |
+
return "keyword";
|
| 47 |
+
}
|
| 48 |
+
if (JSX_TAG.test(tokenValue) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === "</")) {
|
| 49 |
+
return "jsxIdentifier";
|
| 50 |
+
}
|
| 51 |
+
const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));
|
| 52 |
+
if (firstChar !== firstChar.toLowerCase()) {
|
| 53 |
+
return "capitalized";
|
| 54 |
+
}
|
| 55 |
+
}
|
| 56 |
+
if (token.type === "punctuator" && BRACKET.test(token.value)) {
|
| 57 |
+
return "bracket";
|
| 58 |
+
}
|
| 59 |
+
if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
|
| 60 |
+
return "punctuator";
|
| 61 |
+
}
|
| 62 |
+
return token.type;
|
| 63 |
+
};
|
| 64 |
+
tokenize = function* (text) {
|
| 65 |
+
let match;
|
| 66 |
+
while (match = jsTokens.default.exec(text)) {
|
| 67 |
+
const token = jsTokens.matchToToken(match);
|
| 68 |
+
yield {
|
| 69 |
+
type: getTokenType(token, match.index, text),
|
| 70 |
+
value: token.value
|
| 71 |
+
};
|
| 72 |
+
}
|
| 73 |
+
};
|
| 74 |
+
function highlight(text) {
|
| 75 |
+
if (text === "") return "";
|
| 76 |
+
const defs = getDefs(true);
|
| 77 |
+
let highlighted = "";
|
| 78 |
+
for (const {
|
| 79 |
+
type,
|
| 80 |
+
value
|
| 81 |
+
} of tokenize(text)) {
|
| 82 |
+
if (type in defs) {
|
| 83 |
+
highlighted += value.split(NEWLINE$1).map(str => defs[type](str)).join("\n");
|
| 84 |
+
} else {
|
| 85 |
+
highlighted += value;
|
| 86 |
+
}
|
| 87 |
+
}
|
| 88 |
+
return highlighted;
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
let deprecationWarningShown = false;
|
| 92 |
+
const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
|
| 93 |
+
function getMarkerLines(loc, source, opts, startLineBaseZero) {
|
| 94 |
+
const startLoc = Object.assign({
|
| 95 |
+
column: 0,
|
| 96 |
+
line: -1
|
| 97 |
+
}, loc.start);
|
| 98 |
+
const endLoc = Object.assign({}, startLoc, loc.end);
|
| 99 |
+
const {
|
| 100 |
+
linesAbove = 2,
|
| 101 |
+
linesBelow = 3
|
| 102 |
+
} = opts || {};
|
| 103 |
+
const startLine = startLoc.line - startLineBaseZero;
|
| 104 |
+
const startColumn = startLoc.column;
|
| 105 |
+
const endLine = endLoc.line - startLineBaseZero;
|
| 106 |
+
const endColumn = endLoc.column;
|
| 107 |
+
let start = Math.max(startLine - (linesAbove + 1), 0);
|
| 108 |
+
let end = Math.min(source.length, endLine + linesBelow);
|
| 109 |
+
if (startLine === -1) {
|
| 110 |
+
start = 0;
|
| 111 |
+
}
|
| 112 |
+
if (endLine === -1) {
|
| 113 |
+
end = source.length;
|
| 114 |
+
}
|
| 115 |
+
const lineDiff = endLine - startLine;
|
| 116 |
+
const markerLines = {};
|
| 117 |
+
if (lineDiff) {
|
| 118 |
+
for (let i = 0; i <= lineDiff; i++) {
|
| 119 |
+
const lineNumber = i + startLine;
|
| 120 |
+
if (!startColumn) {
|
| 121 |
+
markerLines[lineNumber] = true;
|
| 122 |
+
} else if (i === 0) {
|
| 123 |
+
const sourceLength = source[lineNumber - 1].length;
|
| 124 |
+
markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
|
| 125 |
+
} else if (i === lineDiff) {
|
| 126 |
+
markerLines[lineNumber] = [0, endColumn];
|
| 127 |
+
} else {
|
| 128 |
+
const sourceLength = source[lineNumber - i].length;
|
| 129 |
+
markerLines[lineNumber] = [0, sourceLength];
|
| 130 |
+
}
|
| 131 |
+
}
|
| 132 |
+
} else {
|
| 133 |
+
if (startColumn === endColumn) {
|
| 134 |
+
if (startColumn) {
|
| 135 |
+
markerLines[startLine] = [startColumn, 0];
|
| 136 |
+
} else {
|
| 137 |
+
markerLines[startLine] = true;
|
| 138 |
+
}
|
| 139 |
+
} else {
|
| 140 |
+
markerLines[startLine] = [startColumn, endColumn - startColumn];
|
| 141 |
+
}
|
| 142 |
+
}
|
| 143 |
+
return {
|
| 144 |
+
start,
|
| 145 |
+
end,
|
| 146 |
+
markerLines
|
| 147 |
+
};
|
| 148 |
+
}
|
| 149 |
+
function codeFrameColumns(rawLines, loc, opts = {}) {
|
| 150 |
+
const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;
|
| 151 |
+
const startLineBaseZero = (opts.startLine || 1) - 1;
|
| 152 |
+
const defs = getDefs(shouldHighlight);
|
| 153 |
+
const lines = rawLines.split(NEWLINE);
|
| 154 |
+
const {
|
| 155 |
+
start,
|
| 156 |
+
end,
|
| 157 |
+
markerLines
|
| 158 |
+
} = getMarkerLines(loc, lines, opts, startLineBaseZero);
|
| 159 |
+
const hasColumns = loc.start && typeof loc.start.column === "number";
|
| 160 |
+
const numberMaxWidth = String(end + startLineBaseZero).length;
|
| 161 |
+
const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;
|
| 162 |
+
let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
|
| 163 |
+
const number = start + 1 + index;
|
| 164 |
+
const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth);
|
| 165 |
+
const gutter = ` ${paddedNumber} |`;
|
| 166 |
+
const hasMarker = markerLines[number];
|
| 167 |
+
const lastMarkerLine = !markerLines[number + 1];
|
| 168 |
+
if (hasMarker) {
|
| 169 |
+
let markerLine = "";
|
| 170 |
+
if (Array.isArray(hasMarker)) {
|
| 171 |
+
const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
|
| 172 |
+
const numberOfMarkers = hasMarker[1] || 1;
|
| 173 |
+
markerLine = ["\n ", defs.gutter(gutter.replace(/\d/g, " ")), " ", markerSpacing, defs.marker("^").repeat(numberOfMarkers)].join("");
|
| 174 |
+
if (lastMarkerLine && opts.message) {
|
| 175 |
+
markerLine += " " + defs.message(opts.message);
|
| 176 |
+
}
|
| 177 |
+
}
|
| 178 |
+
return [defs.marker(">"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
|
| 179 |
+
} else {
|
| 180 |
+
return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : ""}`;
|
| 181 |
+
}
|
| 182 |
+
}).join("\n");
|
| 183 |
+
if (opts.message && !hasColumns) {
|
| 184 |
+
frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
|
| 185 |
+
}
|
| 186 |
+
if (shouldHighlight) {
|
| 187 |
+
return defs.reset(frame);
|
| 188 |
+
} else {
|
| 189 |
+
return frame;
|
| 190 |
+
}
|
| 191 |
+
}
|
| 192 |
+
function index (rawLines, lineNumber, colNumber, opts = {}) {
|
| 193 |
+
if (!deprecationWarningShown) {
|
| 194 |
+
deprecationWarningShown = true;
|
| 195 |
+
const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
|
| 196 |
+
if (process.emitWarning) {
|
| 197 |
+
process.emitWarning(message, "DeprecationWarning");
|
| 198 |
+
} else {
|
| 199 |
+
const deprecationError = new Error(message);
|
| 200 |
+
deprecationError.name = "DeprecationWarning";
|
| 201 |
+
console.warn(new Error(message));
|
| 202 |
+
}
|
| 203 |
+
}
|
| 204 |
+
colNumber = Math.max(colNumber, 0);
|
| 205 |
+
const location = {
|
| 206 |
+
start: {
|
| 207 |
+
column: colNumber,
|
| 208 |
+
line: lineNumber
|
| 209 |
+
}
|
| 210 |
+
};
|
| 211 |
+
return codeFrameColumns(rawLines, location, opts);
|
| 212 |
+
}
|
| 213 |
+
|
| 214 |
+
exports.codeFrameColumns = codeFrameColumns;
|
| 215 |
+
exports.default = index;
|
| 216 |
+
exports.highlight = highlight;
|
| 217 |
+
//# sourceMappingURL=index.js.map
|
frontend/node_modules/@babel/code-frame/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"index.js","sources":["../src/defs.ts","../src/highlight.ts","../src/index.ts"],"sourcesContent":["import picocolors, { createColors } from \"picocolors\";\nimport type { Colors, Formatter } from \"picocolors/types\";\n\nexport function isColorSupported() {\n return (\n // See https://github.com/alexeyraspopov/picocolors/issues/62\n typeof process === \"object\" &&\n (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\")\n ? false\n : picocolors.isColorSupported\n );\n}\n\nexport type InternalTokenType =\n | \"keyword\"\n | \"capitalized\"\n | \"jsxIdentifier\"\n | \"punctuator\"\n | \"number\"\n | \"string\"\n | \"regex\"\n | \"comment\"\n | \"invalid\";\n\ntype UITokens = \"gutter\" | \"marker\" | \"message\";\n\nexport type Defs = Record<InternalTokenType | UITokens | \"reset\", Formatter>;\n\nconst compose: <T, U, V>(f: (gv: U) => V, g: (v: T) => U) => (v: T) => V =\n (f, g) => v =>\n f(g(v));\n\n/**\n * Styles for token types.\n */\nfunction buildDefs(colors: Colors): Defs {\n return {\n keyword: colors.cyan,\n capitalized: colors.yellow,\n jsxIdentifier: colors.yellow,\n punctuator: colors.yellow,\n number: colors.magenta,\n string: colors.green,\n regex: colors.magenta,\n comment: colors.gray,\n invalid: compose(compose(colors.white, colors.bgRed), colors.bold),\n\n gutter: colors.gray,\n marker: compose(colors.red, colors.bold),\n message: compose(colors.red, colors.bold),\n\n reset: colors.reset,\n };\n}\n\nconst defsOn = buildDefs(createColors(true));\nconst defsOff = buildDefs(createColors(false));\n\nexport function getDefs(enabled: boolean): Defs {\n return enabled ? defsOn : defsOff;\n}\n","import type { Token as JSToken, JSXToken } from \"js-tokens\";\nimport jsTokens from \"js-tokens\";\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\nimport {\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nimport { getDefs, type InternalTokenType } from \"./defs.ts\";\n\n/**\n * Names that are always allowed as identifiers, but also appear as keywords\n * within certain syntactic productions.\n *\n * https://tc39.es/ecma262/#sec-keywords-and-reserved-words\n *\n * `target` has been omitted since it is very likely going to be a false\n * positive.\n */\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\ntype Token = {\n type: InternalTokenType | \"uncolored\";\n value: string;\n};\n\n/**\n * RegExp to test for newlines in terminal.\n */\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * RegExp to test for the three types of brackets.\n */\nconst BRACKET = /^[()[\\]{}]$/;\n\nlet tokenize: (\n text: string,\n) => Generator<{ type: InternalTokenType | \"uncolored\"; value: string }>;\n\nif (process.env.BABEL_8_BREAKING) {\n /**\n * Get the type of token, specifying punctuator type.\n */\n const getTokenType = function (\n token: JSToken | JSXToken,\n ): InternalTokenType | \"uncolored\" {\n if (token.type === \"IdentifierName\") {\n const tokenValue = token.value;\n if (\n isKeyword(tokenValue) ||\n isStrictReservedWord(tokenValue, true) ||\n sometimesKeywords.has(tokenValue)\n ) {\n return \"keyword\";\n }\n\n const firstChar = tokenValue.charCodeAt(0);\n if (firstChar < 128) {\n // ASCII characters\n if (\n firstChar >= charCodes.uppercaseA &&\n firstChar <= charCodes.uppercaseZ\n ) {\n return \"capitalized\";\n }\n } else {\n const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));\n if (firstChar !== firstChar.toLowerCase()) {\n return \"capitalized\";\n }\n }\n }\n\n if (token.type === \"Punctuator\" && BRACKET.test(token.value)) {\n return \"uncolored\";\n }\n\n if (token.type === \"Invalid\" && token.value === \"@\") {\n return \"punctuator\";\n }\n\n switch (token.type) {\n case \"NumericLiteral\":\n return \"number\";\n\n case \"StringLiteral\":\n case \"JSXString\":\n case \"NoSubstitutionTemplate\":\n return \"string\";\n\n case \"RegularExpressionLiteral\":\n return \"regex\";\n\n case \"Punctuator\":\n case \"JSXPunctuator\":\n return \"punctuator\";\n\n case \"MultiLineComment\":\n case \"SingleLineComment\":\n return \"comment\";\n\n case \"Invalid\":\n case \"JSXInvalid\":\n return \"invalid\";\n\n case \"JSXIdentifier\":\n return \"jsxIdentifier\";\n\n default:\n return \"uncolored\";\n }\n };\n\n /**\n * Turn a string of JS into an array of objects.\n */\n tokenize = function* (text: string): Generator<Token> {\n for (const token of jsTokens(text, { jsx: true })) {\n switch (token.type) {\n case \"TemplateHead\":\n yield { type: \"string\", value: token.value.slice(0, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateMiddle\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateTail\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1) };\n break;\n\n default:\n yield {\n type: getTokenType(token),\n value: token.value,\n };\n }\n }\n };\n} else {\n /**\n * RegExp to test for what seems to be a JSX tag name.\n */\n const JSX_TAG = /^[a-z][\\w-]*$/i;\n\n // The token here is defined in js-tokens@4. However we don't bother\n // typing it since the whole block will be removed in Babel 8\n const getTokenType = function (token: any, offset: number, text: string) {\n if (token.type === \"name\") {\n const tokenValue = token.value;\n if (\n isKeyword(tokenValue) ||\n isStrictReservedWord(tokenValue, true) ||\n sometimesKeywords.has(tokenValue)\n ) {\n return \"keyword\";\n }\n\n if (\n JSX_TAG.test(tokenValue) &&\n (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) === \"</\")\n ) {\n return \"jsxIdentifier\";\n }\n\n const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));\n if (firstChar !== firstChar.toLowerCase()) {\n return \"capitalized\";\n }\n }\n\n if (token.type === \"punctuator\" && BRACKET.test(token.value)) {\n return \"bracket\";\n }\n\n if (\n token.type === \"invalid\" &&\n (token.value === \"@\" || token.value === \"#\")\n ) {\n return \"punctuator\";\n }\n\n return token.type;\n };\n\n tokenize = function* (text: string) {\n let match;\n while ((match = (jsTokens as any).default.exec(text))) {\n const token = (jsTokens as any).matchToToken(match);\n\n yield {\n type: getTokenType(token, match.index, text),\n value: token.value,\n };\n }\n };\n}\n\nexport function highlight(text: string) {\n if (text === \"\") return \"\";\n\n const defs = getDefs(true);\n\n let highlighted = \"\";\n\n for (const { type, value } of tokenize(text)) {\n if (type in defs) {\n highlighted += value\n .split(NEWLINE)\n .map(str => defs[type as InternalTokenType](str))\n .join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n\n return highlighted;\n}\n","import { getDefs, isColorSupported } from \"./defs.ts\";\nimport { highlight } from \"./highlight.ts\";\n\nexport { highlight };\n\nlet deprecationWarningShown = false;\n\ntype Location = {\n column: number;\n line: number;\n};\n\ntype NodeLocation = {\n end?: Location;\n start: Location;\n};\n\nexport interface Options {\n /** Syntax highlight the code as JavaScript for terminals. default: false */\n highlightCode?: boolean;\n /** The number of lines to show above the error. default: 2 */\n linesAbove?: number;\n /** The number of lines to show below the error. default: 3 */\n linesBelow?: number;\n /** The line number corresponding to the first line in `rawLines`. default: 1 */\n startLine?: number;\n /**\n * Forcibly syntax highlight the code as JavaScript (for non-terminals);\n * overrides highlightCode.\n * default: false\n */\n forceColor?: boolean;\n /**\n * Pass in a string to be displayed inline (if possible) next to the\n * highlighted location in the code. If it can't be positioned inline,\n * it will be placed above the code frame.\n * default: nothing\n */\n message?: string;\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * Extract what lines should be marked and highlighted.\n */\n\ntype MarkerLines = Record<number, true | [number, number]>;\n\nfunction getMarkerLines(\n loc: NodeLocation,\n source: string[],\n opts: Options,\n startLineBaseZero: number,\n): {\n start: number;\n end: number;\n markerLines: MarkerLines;\n} {\n const startLoc: Location = {\n column: 0,\n line: -1,\n ...loc.start,\n };\n const endLoc: Location = {\n ...startLoc,\n ...loc.end,\n };\n const { linesAbove = 2, linesBelow = 3 } = opts || {};\n const startLine = startLoc.line - startLineBaseZero;\n const startColumn = startLoc.column;\n const endLine = endLoc.line - startLineBaseZero;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n\n return { start, end, markerLines };\n}\n\nexport function codeFrameColumns(\n rawLines: string,\n loc: NodeLocation,\n opts: Options = {},\n): string {\n const shouldHighlight =\n opts.forceColor || (isColorSupported() && opts.highlightCode);\n const startLineBaseZero = (opts.startLine || 1) - 1;\n const defs = getDefs(shouldHighlight);\n\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(\n loc,\n lines,\n opts,\n startLineBaseZero,\n );\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const numberMaxWidth = String(end + startLineBaseZero).length;\n\n const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;\n\n let frame = highlightedLines\n .split(NEWLINE, end)\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number + startLineBaseZero}`.slice(\n -numberMaxWidth,\n );\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line\n .slice(0, Math.max(hasMarker[0] - 1, 0))\n .replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\n \"\\n \",\n defs.gutter(gutter.replace(/\\d/g, \" \")),\n \" \",\n markerSpacing,\n defs.marker(\"^\").repeat(numberOfMarkers),\n ].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + defs.message(opts.message);\n }\n }\n return [\n defs.marker(\">\"),\n defs.gutter(gutter),\n line.length > 0 ? ` ${line}` : \"\",\n markerLine,\n ].join(\"\");\n } else {\n return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n })\n .join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n if (shouldHighlight) {\n return defs.reset(frame);\n } else {\n return frame;\n }\n}\n\n/**\n * Create a code frame, adding line numbers, code highlighting, and pointing to a given position.\n */\n\nexport default function (\n rawLines: string,\n lineNumber: number,\n colNumber?: number | null,\n opts: Options = {},\n): string {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n\n const message =\n \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n if (process.emitWarning) {\n // A string is directly supplied to emitWarning, because when supplying an\n // Error object node throws in the tests because of different contexts\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n\n colNumber = Math.max(colNumber, 0);\n\n const location: NodeLocation = {\n start: { column: colNumber, line: lineNumber },\n };\n\n return codeFrameColumns(rawLines, location, opts);\n}\n"],"names":["isColorSupported","process","env","FORCE_COLOR","picocolors","compose","f","g","v","buildDefs","colors","keyword","cyan","capitalized","yellow","jsxIdentifier","punctuator","number","magenta","string","green","regex","comment","gray","invalid","white","bgRed","bold","gutter","marker","red","message","reset","defsOn","createColors","defsOff","getDefs","enabled","sometimesKeywords","Set","NEWLINE","BRACKET","tokenize","JSX_TAG","getTokenType","token","offset","text","type","tokenValue","value","isKeyword","isStrictReservedWord","has","test","slice","firstChar","String","fromCodePoint","codePointAt","toLowerCase","match","jsTokens","default","exec","matchToToken","index","highlight","defs","highlighted","split","map","str","join","deprecationWarningShown","getMarkerLines","loc","source","opts","startLineBaseZero","startLoc","Object","assign","column","line","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","length","lineDiff","markerLines","i","lineNumber","sourceLength","codeFrameColumns","rawLines","shouldHighlight","forceColor","highlightCode","lines","hasColumns","numberMaxWidth","highlightedLines","frame","paddedNumber","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","colNumber","emitWarning","deprecationError","Error","name","console","warn","location"],"mappings":"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"}
|
frontend/node_modules/@babel/code-frame/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "@babel/code-frame",
|
| 3 |
+
"version": "7.29.0",
|
| 4 |
+
"description": "Generate errors that contain a code frame that point to source locations.",
|
| 5 |
+
"author": "The Babel Team (https://babel.dev/team)",
|
| 6 |
+
"homepage": "https://babel.dev/docs/en/next/babel-code-frame",
|
| 7 |
+
"bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen",
|
| 8 |
+
"license": "MIT",
|
| 9 |
+
"publishConfig": {
|
| 10 |
+
"access": "public"
|
| 11 |
+
},
|
| 12 |
+
"repository": {
|
| 13 |
+
"type": "git",
|
| 14 |
+
"url": "https://github.com/babel/babel.git",
|
| 15 |
+
"directory": "packages/babel-code-frame"
|
| 16 |
+
},
|
| 17 |
+
"main": "./lib/index.js",
|
| 18 |
+
"dependencies": {
|
| 19 |
+
"@babel/helper-validator-identifier": "^7.28.5",
|
| 20 |
+
"js-tokens": "^4.0.0",
|
| 21 |
+
"picocolors": "^1.1.1"
|
| 22 |
+
},
|
| 23 |
+
"devDependencies": {
|
| 24 |
+
"charcodes": "^0.2.0",
|
| 25 |
+
"import-meta-resolve": "^4.1.0",
|
| 26 |
+
"strip-ansi": "^4.0.0"
|
| 27 |
+
},
|
| 28 |
+
"engines": {
|
| 29 |
+
"node": ">=6.9.0"
|
| 30 |
+
},
|
| 31 |
+
"type": "commonjs"
|
| 32 |
+
}
|
frontend/node_modules/@babel/compat-data/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining
|
| 6 |
+
a copy of this software and associated documentation files (the
|
| 7 |
+
"Software"), to deal in the Software without restriction, including
|
| 8 |
+
without limitation the rights to use, copy, modify, merge, publish,
|
| 9 |
+
distribute, sublicense, and/or sell copies of the Software, and to
|
| 10 |
+
permit persons to whom the Software is furnished to do so, subject to
|
| 11 |
+
the following conditions:
|
| 12 |
+
|
| 13 |
+
The above copyright notice and this permission notice shall be
|
| 14 |
+
included in all copies or substantial portions of the Software.
|
| 15 |
+
|
| 16 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 17 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 18 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
| 19 |
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
| 20 |
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
| 21 |
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
| 22 |
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
frontend/node_modules/@babel/compat-data/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# @babel/compat-data
|
| 2 |
+
|
| 3 |
+
> The compat-data to determine required Babel plugins
|
| 4 |
+
|
| 5 |
+
See our website [@babel/compat-data](https://babeljs.io/docs/babel-compat-data) for more information.
|
| 6 |
+
|
| 7 |
+
## Install
|
| 8 |
+
|
| 9 |
+
Using npm:
|
| 10 |
+
|
| 11 |
+
```sh
|
| 12 |
+
npm install --save @babel/compat-data
|
| 13 |
+
```
|
| 14 |
+
|
| 15 |
+
or using yarn:
|
| 16 |
+
|
| 17 |
+
```sh
|
| 18 |
+
yarn add @babel/compat-data
|
| 19 |
+
```
|
frontend/node_modules/@babel/compat-data/corejs2-built-ins.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Todo (Babel 8): remove this file as Babel 8 drop support of core-js 2
|
| 2 |
+
module.exports = require("./data/corejs2-built-ins.json");
|
frontend/node_modules/@babel/compat-data/corejs3-shipped-proposals.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Todo (Babel 8): remove this file now that it is included in babel-plugin-polyfill-corejs3
|
| 2 |
+
module.exports = require("./data/corejs3-shipped-proposals.json");
|
frontend/node_modules/@babel/compat-data/data/corejs2-built-ins.json
ADDED
|
@@ -0,0 +1,2106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"es6.array.copy-within": {
|
| 3 |
+
"chrome": "45",
|
| 4 |
+
"opera": "32",
|
| 5 |
+
"edge": "12",
|
| 6 |
+
"firefox": "32",
|
| 7 |
+
"safari": "9",
|
| 8 |
+
"node": "4",
|
| 9 |
+
"deno": "1",
|
| 10 |
+
"ios": "9",
|
| 11 |
+
"samsung": "5",
|
| 12 |
+
"rhino": "1.7.13",
|
| 13 |
+
"opera_mobile": "32",
|
| 14 |
+
"electron": "0.31"
|
| 15 |
+
},
|
| 16 |
+
"es6.array.every": {
|
| 17 |
+
"chrome": "5",
|
| 18 |
+
"opera": "10.10",
|
| 19 |
+
"edge": "12",
|
| 20 |
+
"firefox": "2",
|
| 21 |
+
"safari": "3.1",
|
| 22 |
+
"node": "0.4",
|
| 23 |
+
"deno": "1",
|
| 24 |
+
"ie": "9",
|
| 25 |
+
"android": "4",
|
| 26 |
+
"ios": "6",
|
| 27 |
+
"phantom": "1.9",
|
| 28 |
+
"samsung": "1",
|
| 29 |
+
"rhino": "1.7.13",
|
| 30 |
+
"opera_mobile": "10.1",
|
| 31 |
+
"electron": "0.20"
|
| 32 |
+
},
|
| 33 |
+
"es6.array.fill": {
|
| 34 |
+
"chrome": "45",
|
| 35 |
+
"opera": "32",
|
| 36 |
+
"edge": "12",
|
| 37 |
+
"firefox": "31",
|
| 38 |
+
"safari": "7.1",
|
| 39 |
+
"node": "4",
|
| 40 |
+
"deno": "1",
|
| 41 |
+
"ios": "8",
|
| 42 |
+
"samsung": "5",
|
| 43 |
+
"rhino": "1.7.13",
|
| 44 |
+
"opera_mobile": "32",
|
| 45 |
+
"electron": "0.31"
|
| 46 |
+
},
|
| 47 |
+
"es6.array.filter": {
|
| 48 |
+
"chrome": "51",
|
| 49 |
+
"opera": "38",
|
| 50 |
+
"edge": "13",
|
| 51 |
+
"firefox": "48",
|
| 52 |
+
"safari": "10",
|
| 53 |
+
"node": "6.5",
|
| 54 |
+
"deno": "1",
|
| 55 |
+
"ios": "10",
|
| 56 |
+
"samsung": "5",
|
| 57 |
+
"opera_mobile": "41",
|
| 58 |
+
"electron": "1.2"
|
| 59 |
+
},
|
| 60 |
+
"es6.array.find": {
|
| 61 |
+
"chrome": "45",
|
| 62 |
+
"opera": "32",
|
| 63 |
+
"edge": "12",
|
| 64 |
+
"firefox": "25",
|
| 65 |
+
"safari": "7.1",
|
| 66 |
+
"node": "4",
|
| 67 |
+
"deno": "1",
|
| 68 |
+
"ios": "8",
|
| 69 |
+
"samsung": "5",
|
| 70 |
+
"rhino": "1.7.13",
|
| 71 |
+
"opera_mobile": "32",
|
| 72 |
+
"electron": "0.31"
|
| 73 |
+
},
|
| 74 |
+
"es6.array.find-index": {
|
| 75 |
+
"chrome": "45",
|
| 76 |
+
"opera": "32",
|
| 77 |
+
"edge": "12",
|
| 78 |
+
"firefox": "25",
|
| 79 |
+
"safari": "7.1",
|
| 80 |
+
"node": "4",
|
| 81 |
+
"deno": "1",
|
| 82 |
+
"ios": "8",
|
| 83 |
+
"samsung": "5",
|
| 84 |
+
"rhino": "1.7.13",
|
| 85 |
+
"opera_mobile": "32",
|
| 86 |
+
"electron": "0.31"
|
| 87 |
+
},
|
| 88 |
+
"es7.array.flat-map": {
|
| 89 |
+
"chrome": "69",
|
| 90 |
+
"opera": "56",
|
| 91 |
+
"edge": "79",
|
| 92 |
+
"firefox": "62",
|
| 93 |
+
"safari": "12",
|
| 94 |
+
"node": "11",
|
| 95 |
+
"deno": "1",
|
| 96 |
+
"ios": "12",
|
| 97 |
+
"samsung": "10",
|
| 98 |
+
"rhino": "1.7.15",
|
| 99 |
+
"opera_mobile": "48",
|
| 100 |
+
"electron": "4.0"
|
| 101 |
+
},
|
| 102 |
+
"es6.array.for-each": {
|
| 103 |
+
"chrome": "5",
|
| 104 |
+
"opera": "10.10",
|
| 105 |
+
"edge": "12",
|
| 106 |
+
"firefox": "2",
|
| 107 |
+
"safari": "3.1",
|
| 108 |
+
"node": "0.4",
|
| 109 |
+
"deno": "1",
|
| 110 |
+
"ie": "9",
|
| 111 |
+
"android": "4",
|
| 112 |
+
"ios": "6",
|
| 113 |
+
"phantom": "1.9",
|
| 114 |
+
"samsung": "1",
|
| 115 |
+
"rhino": "1.7.13",
|
| 116 |
+
"opera_mobile": "10.1",
|
| 117 |
+
"electron": "0.20"
|
| 118 |
+
},
|
| 119 |
+
"es6.array.from": {
|
| 120 |
+
"chrome": "51",
|
| 121 |
+
"opera": "38",
|
| 122 |
+
"edge": "15",
|
| 123 |
+
"firefox": "36",
|
| 124 |
+
"safari": "10",
|
| 125 |
+
"node": "6.5",
|
| 126 |
+
"deno": "1",
|
| 127 |
+
"ios": "10",
|
| 128 |
+
"samsung": "5",
|
| 129 |
+
"rhino": "1.7.15",
|
| 130 |
+
"opera_mobile": "41",
|
| 131 |
+
"electron": "1.2"
|
| 132 |
+
},
|
| 133 |
+
"es7.array.includes": {
|
| 134 |
+
"chrome": "47",
|
| 135 |
+
"opera": "34",
|
| 136 |
+
"edge": "14",
|
| 137 |
+
"firefox": "102",
|
| 138 |
+
"safari": "10",
|
| 139 |
+
"node": "6",
|
| 140 |
+
"deno": "1",
|
| 141 |
+
"ios": "10",
|
| 142 |
+
"samsung": "5",
|
| 143 |
+
"rhino": "1.8",
|
| 144 |
+
"opera_mobile": "34",
|
| 145 |
+
"electron": "0.36"
|
| 146 |
+
},
|
| 147 |
+
"es6.array.index-of": {
|
| 148 |
+
"chrome": "5",
|
| 149 |
+
"opera": "10.10",
|
| 150 |
+
"edge": "12",
|
| 151 |
+
"firefox": "2",
|
| 152 |
+
"safari": "3.1",
|
| 153 |
+
"node": "0.4",
|
| 154 |
+
"deno": "1",
|
| 155 |
+
"ie": "9",
|
| 156 |
+
"android": "4",
|
| 157 |
+
"ios": "6",
|
| 158 |
+
"phantom": "1.9",
|
| 159 |
+
"samsung": "1",
|
| 160 |
+
"rhino": "1.7.13",
|
| 161 |
+
"opera_mobile": "10.1",
|
| 162 |
+
"electron": "0.20"
|
| 163 |
+
},
|
| 164 |
+
"es6.array.is-array": {
|
| 165 |
+
"chrome": "5",
|
| 166 |
+
"opera": "10.50",
|
| 167 |
+
"edge": "12",
|
| 168 |
+
"firefox": "4",
|
| 169 |
+
"safari": "4",
|
| 170 |
+
"node": "0.4",
|
| 171 |
+
"deno": "1",
|
| 172 |
+
"ie": "9",
|
| 173 |
+
"android": "4",
|
| 174 |
+
"ios": "6",
|
| 175 |
+
"phantom": "1.9",
|
| 176 |
+
"samsung": "1",
|
| 177 |
+
"rhino": "1.7.13",
|
| 178 |
+
"opera_mobile": "10.1",
|
| 179 |
+
"electron": "0.20"
|
| 180 |
+
},
|
| 181 |
+
"es6.array.iterator": {
|
| 182 |
+
"chrome": "66",
|
| 183 |
+
"opera": "53",
|
| 184 |
+
"edge": "12",
|
| 185 |
+
"firefox": "60",
|
| 186 |
+
"safari": "9",
|
| 187 |
+
"node": "10",
|
| 188 |
+
"deno": "1",
|
| 189 |
+
"ios": "9",
|
| 190 |
+
"samsung": "9",
|
| 191 |
+
"rhino": "1.7.13",
|
| 192 |
+
"opera_mobile": "47",
|
| 193 |
+
"electron": "3.0"
|
| 194 |
+
},
|
| 195 |
+
"es6.array.last-index-of": {
|
| 196 |
+
"chrome": "5",
|
| 197 |
+
"opera": "10.10",
|
| 198 |
+
"edge": "12",
|
| 199 |
+
"firefox": "2",
|
| 200 |
+
"safari": "3.1",
|
| 201 |
+
"node": "0.4",
|
| 202 |
+
"deno": "1",
|
| 203 |
+
"ie": "9",
|
| 204 |
+
"android": "4",
|
| 205 |
+
"ios": "6",
|
| 206 |
+
"phantom": "1.9",
|
| 207 |
+
"samsung": "1",
|
| 208 |
+
"rhino": "1.7.13",
|
| 209 |
+
"opera_mobile": "10.1",
|
| 210 |
+
"electron": "0.20"
|
| 211 |
+
},
|
| 212 |
+
"es6.array.map": {
|
| 213 |
+
"chrome": "51",
|
| 214 |
+
"opera": "38",
|
| 215 |
+
"edge": "13",
|
| 216 |
+
"firefox": "48",
|
| 217 |
+
"safari": "10",
|
| 218 |
+
"node": "6.5",
|
| 219 |
+
"deno": "1",
|
| 220 |
+
"ios": "10",
|
| 221 |
+
"samsung": "5",
|
| 222 |
+
"opera_mobile": "41",
|
| 223 |
+
"electron": "1.2"
|
| 224 |
+
},
|
| 225 |
+
"es6.array.of": {
|
| 226 |
+
"chrome": "45",
|
| 227 |
+
"opera": "32",
|
| 228 |
+
"edge": "12",
|
| 229 |
+
"firefox": "25",
|
| 230 |
+
"safari": "9",
|
| 231 |
+
"node": "4",
|
| 232 |
+
"deno": "1",
|
| 233 |
+
"ios": "9",
|
| 234 |
+
"samsung": "5",
|
| 235 |
+
"rhino": "1.7.13",
|
| 236 |
+
"opera_mobile": "32",
|
| 237 |
+
"electron": "0.31"
|
| 238 |
+
},
|
| 239 |
+
"es6.array.reduce": {
|
| 240 |
+
"chrome": "5",
|
| 241 |
+
"opera": "10.50",
|
| 242 |
+
"edge": "12",
|
| 243 |
+
"firefox": "3",
|
| 244 |
+
"safari": "4",
|
| 245 |
+
"node": "0.4",
|
| 246 |
+
"deno": "1",
|
| 247 |
+
"ie": "9",
|
| 248 |
+
"android": "4",
|
| 249 |
+
"ios": "6",
|
| 250 |
+
"phantom": "1.9",
|
| 251 |
+
"samsung": "1",
|
| 252 |
+
"rhino": "1.7.13",
|
| 253 |
+
"opera_mobile": "10.1",
|
| 254 |
+
"electron": "0.20"
|
| 255 |
+
},
|
| 256 |
+
"es6.array.reduce-right": {
|
| 257 |
+
"chrome": "5",
|
| 258 |
+
"opera": "10.50",
|
| 259 |
+
"edge": "12",
|
| 260 |
+
"firefox": "3",
|
| 261 |
+
"safari": "4",
|
| 262 |
+
"node": "0.4",
|
| 263 |
+
"deno": "1",
|
| 264 |
+
"ie": "9",
|
| 265 |
+
"android": "4",
|
| 266 |
+
"ios": "6",
|
| 267 |
+
"phantom": "1.9",
|
| 268 |
+
"samsung": "1",
|
| 269 |
+
"rhino": "1.7.13",
|
| 270 |
+
"opera_mobile": "10.1",
|
| 271 |
+
"electron": "0.20"
|
| 272 |
+
},
|
| 273 |
+
"es6.array.slice": {
|
| 274 |
+
"chrome": "51",
|
| 275 |
+
"opera": "38",
|
| 276 |
+
"edge": "13",
|
| 277 |
+
"firefox": "48",
|
| 278 |
+
"safari": "10",
|
| 279 |
+
"node": "6.5",
|
| 280 |
+
"deno": "1",
|
| 281 |
+
"ios": "10",
|
| 282 |
+
"samsung": "5",
|
| 283 |
+
"opera_mobile": "41",
|
| 284 |
+
"electron": "1.2"
|
| 285 |
+
},
|
| 286 |
+
"es6.array.some": {
|
| 287 |
+
"chrome": "5",
|
| 288 |
+
"opera": "10.10",
|
| 289 |
+
"edge": "12",
|
| 290 |
+
"firefox": "2",
|
| 291 |
+
"safari": "3.1",
|
| 292 |
+
"node": "0.4",
|
| 293 |
+
"deno": "1",
|
| 294 |
+
"ie": "9",
|
| 295 |
+
"android": "4",
|
| 296 |
+
"ios": "6",
|
| 297 |
+
"phantom": "1.9",
|
| 298 |
+
"samsung": "1",
|
| 299 |
+
"rhino": "1.7.13",
|
| 300 |
+
"opera_mobile": "10.1",
|
| 301 |
+
"electron": "0.20"
|
| 302 |
+
},
|
| 303 |
+
"es6.array.sort": {
|
| 304 |
+
"chrome": "63",
|
| 305 |
+
"opera": "50",
|
| 306 |
+
"edge": "12",
|
| 307 |
+
"firefox": "5",
|
| 308 |
+
"safari": "12",
|
| 309 |
+
"node": "10",
|
| 310 |
+
"deno": "1",
|
| 311 |
+
"ie": "9",
|
| 312 |
+
"ios": "12",
|
| 313 |
+
"samsung": "8",
|
| 314 |
+
"rhino": "1.7.13",
|
| 315 |
+
"opera_mobile": "46",
|
| 316 |
+
"electron": "3.0"
|
| 317 |
+
},
|
| 318 |
+
"es6.array.species": {
|
| 319 |
+
"chrome": "51",
|
| 320 |
+
"opera": "38",
|
| 321 |
+
"edge": "13",
|
| 322 |
+
"firefox": "48",
|
| 323 |
+
"safari": "10",
|
| 324 |
+
"node": "6.5",
|
| 325 |
+
"deno": "1",
|
| 326 |
+
"ios": "10",
|
| 327 |
+
"samsung": "5",
|
| 328 |
+
"rhino": "1.7.15",
|
| 329 |
+
"opera_mobile": "41",
|
| 330 |
+
"electron": "1.2"
|
| 331 |
+
},
|
| 332 |
+
"es6.date.now": {
|
| 333 |
+
"chrome": "5",
|
| 334 |
+
"opera": "10.50",
|
| 335 |
+
"edge": "12",
|
| 336 |
+
"firefox": "2",
|
| 337 |
+
"safari": "4",
|
| 338 |
+
"node": "0.4",
|
| 339 |
+
"deno": "1",
|
| 340 |
+
"ie": "9",
|
| 341 |
+
"android": "4",
|
| 342 |
+
"ios": "6",
|
| 343 |
+
"phantom": "1.9",
|
| 344 |
+
"samsung": "1",
|
| 345 |
+
"rhino": "1.7.13",
|
| 346 |
+
"opera_mobile": "10.1",
|
| 347 |
+
"electron": "0.20"
|
| 348 |
+
},
|
| 349 |
+
"es6.date.to-iso-string": {
|
| 350 |
+
"chrome": "5",
|
| 351 |
+
"opera": "10.50",
|
| 352 |
+
"edge": "12",
|
| 353 |
+
"firefox": "3.5",
|
| 354 |
+
"safari": "4",
|
| 355 |
+
"node": "0.4",
|
| 356 |
+
"deno": "1",
|
| 357 |
+
"ie": "9",
|
| 358 |
+
"android": "4",
|
| 359 |
+
"ios": "6",
|
| 360 |
+
"phantom": "1.9",
|
| 361 |
+
"samsung": "1",
|
| 362 |
+
"rhino": "1.7.13",
|
| 363 |
+
"opera_mobile": "10.1",
|
| 364 |
+
"electron": "0.20"
|
| 365 |
+
},
|
| 366 |
+
"es6.date.to-json": {
|
| 367 |
+
"chrome": "5",
|
| 368 |
+
"opera": "12.10",
|
| 369 |
+
"edge": "12",
|
| 370 |
+
"firefox": "4",
|
| 371 |
+
"safari": "10",
|
| 372 |
+
"node": "0.4",
|
| 373 |
+
"deno": "1",
|
| 374 |
+
"ie": "9",
|
| 375 |
+
"android": "4",
|
| 376 |
+
"ios": "10",
|
| 377 |
+
"samsung": "1",
|
| 378 |
+
"rhino": "1.7.13",
|
| 379 |
+
"opera_mobile": "12.1",
|
| 380 |
+
"electron": "0.20"
|
| 381 |
+
},
|
| 382 |
+
"es6.date.to-primitive": {
|
| 383 |
+
"chrome": "47",
|
| 384 |
+
"opera": "34",
|
| 385 |
+
"edge": "15",
|
| 386 |
+
"firefox": "44",
|
| 387 |
+
"safari": "10",
|
| 388 |
+
"node": "6",
|
| 389 |
+
"deno": "1",
|
| 390 |
+
"ios": "10",
|
| 391 |
+
"samsung": "5",
|
| 392 |
+
"rhino": "1.8",
|
| 393 |
+
"opera_mobile": "34",
|
| 394 |
+
"electron": "0.36"
|
| 395 |
+
},
|
| 396 |
+
"es6.date.to-string": {
|
| 397 |
+
"chrome": "5",
|
| 398 |
+
"opera": "10.50",
|
| 399 |
+
"edge": "12",
|
| 400 |
+
"firefox": "2",
|
| 401 |
+
"safari": "3.1",
|
| 402 |
+
"node": "0.4",
|
| 403 |
+
"deno": "1",
|
| 404 |
+
"ie": "10",
|
| 405 |
+
"android": "4",
|
| 406 |
+
"ios": "6",
|
| 407 |
+
"phantom": "1.9",
|
| 408 |
+
"samsung": "1",
|
| 409 |
+
"rhino": "1.7.13",
|
| 410 |
+
"opera_mobile": "10.1",
|
| 411 |
+
"electron": "0.20"
|
| 412 |
+
},
|
| 413 |
+
"es6.function.bind": {
|
| 414 |
+
"chrome": "7",
|
| 415 |
+
"opera": "12",
|
| 416 |
+
"edge": "12",
|
| 417 |
+
"firefox": "4",
|
| 418 |
+
"safari": "5.1",
|
| 419 |
+
"node": "0.4",
|
| 420 |
+
"deno": "1",
|
| 421 |
+
"ie": "9",
|
| 422 |
+
"android": "4",
|
| 423 |
+
"ios": "6",
|
| 424 |
+
"phantom": "1.9",
|
| 425 |
+
"samsung": "1",
|
| 426 |
+
"rhino": "1.7.13",
|
| 427 |
+
"opera_mobile": "12",
|
| 428 |
+
"electron": "0.20"
|
| 429 |
+
},
|
| 430 |
+
"es6.function.has-instance": {
|
| 431 |
+
"chrome": "51",
|
| 432 |
+
"opera": "38",
|
| 433 |
+
"edge": "15",
|
| 434 |
+
"firefox": "50",
|
| 435 |
+
"safari": "10",
|
| 436 |
+
"node": "6.5",
|
| 437 |
+
"deno": "1",
|
| 438 |
+
"ios": "10",
|
| 439 |
+
"samsung": "5",
|
| 440 |
+
"opera_mobile": "41",
|
| 441 |
+
"electron": "1.2"
|
| 442 |
+
},
|
| 443 |
+
"es6.function.name": {
|
| 444 |
+
"chrome": "5",
|
| 445 |
+
"opera": "10.50",
|
| 446 |
+
"edge": "14",
|
| 447 |
+
"firefox": "2",
|
| 448 |
+
"safari": "4",
|
| 449 |
+
"node": "0.4",
|
| 450 |
+
"deno": "1",
|
| 451 |
+
"android": "4",
|
| 452 |
+
"ios": "6",
|
| 453 |
+
"phantom": "1.9",
|
| 454 |
+
"samsung": "1",
|
| 455 |
+
"rhino": "1.7.13",
|
| 456 |
+
"opera_mobile": "10.1",
|
| 457 |
+
"electron": "0.20"
|
| 458 |
+
},
|
| 459 |
+
"es6.map": {
|
| 460 |
+
"chrome": "51",
|
| 461 |
+
"opera": "38",
|
| 462 |
+
"edge": "15",
|
| 463 |
+
"firefox": "53",
|
| 464 |
+
"safari": "10",
|
| 465 |
+
"node": "6.5",
|
| 466 |
+
"deno": "1",
|
| 467 |
+
"ios": "10",
|
| 468 |
+
"samsung": "5",
|
| 469 |
+
"opera_mobile": "41",
|
| 470 |
+
"electron": "1.2"
|
| 471 |
+
},
|
| 472 |
+
"es6.math.acosh": {
|
| 473 |
+
"chrome": "38",
|
| 474 |
+
"opera": "25",
|
| 475 |
+
"edge": "12",
|
| 476 |
+
"firefox": "25",
|
| 477 |
+
"safari": "7.1",
|
| 478 |
+
"node": "0.12",
|
| 479 |
+
"deno": "1",
|
| 480 |
+
"ios": "8",
|
| 481 |
+
"samsung": "3",
|
| 482 |
+
"rhino": "1.7.13",
|
| 483 |
+
"opera_mobile": "25",
|
| 484 |
+
"electron": "0.20"
|
| 485 |
+
},
|
| 486 |
+
"es6.math.asinh": {
|
| 487 |
+
"chrome": "38",
|
| 488 |
+
"opera": "25",
|
| 489 |
+
"edge": "12",
|
| 490 |
+
"firefox": "25",
|
| 491 |
+
"safari": "7.1",
|
| 492 |
+
"node": "0.12",
|
| 493 |
+
"deno": "1",
|
| 494 |
+
"ios": "8",
|
| 495 |
+
"samsung": "3",
|
| 496 |
+
"rhino": "1.7.13",
|
| 497 |
+
"opera_mobile": "25",
|
| 498 |
+
"electron": "0.20"
|
| 499 |
+
},
|
| 500 |
+
"es6.math.atanh": {
|
| 501 |
+
"chrome": "38",
|
| 502 |
+
"opera": "25",
|
| 503 |
+
"edge": "12",
|
| 504 |
+
"firefox": "25",
|
| 505 |
+
"safari": "7.1",
|
| 506 |
+
"node": "0.12",
|
| 507 |
+
"deno": "1",
|
| 508 |
+
"ios": "8",
|
| 509 |
+
"samsung": "3",
|
| 510 |
+
"rhino": "1.7.13",
|
| 511 |
+
"opera_mobile": "25",
|
| 512 |
+
"electron": "0.20"
|
| 513 |
+
},
|
| 514 |
+
"es6.math.cbrt": {
|
| 515 |
+
"chrome": "38",
|
| 516 |
+
"opera": "25",
|
| 517 |
+
"edge": "12",
|
| 518 |
+
"firefox": "25",
|
| 519 |
+
"safari": "7.1",
|
| 520 |
+
"node": "0.12",
|
| 521 |
+
"deno": "1",
|
| 522 |
+
"ios": "8",
|
| 523 |
+
"samsung": "3",
|
| 524 |
+
"rhino": "1.7.13",
|
| 525 |
+
"opera_mobile": "25",
|
| 526 |
+
"electron": "0.20"
|
| 527 |
+
},
|
| 528 |
+
"es6.math.clz32": {
|
| 529 |
+
"chrome": "38",
|
| 530 |
+
"opera": "25",
|
| 531 |
+
"edge": "12",
|
| 532 |
+
"firefox": "31",
|
| 533 |
+
"safari": "9",
|
| 534 |
+
"node": "0.12",
|
| 535 |
+
"deno": "1",
|
| 536 |
+
"ios": "9",
|
| 537 |
+
"samsung": "3",
|
| 538 |
+
"rhino": "1.7.13",
|
| 539 |
+
"opera_mobile": "25",
|
| 540 |
+
"electron": "0.20"
|
| 541 |
+
},
|
| 542 |
+
"es6.math.cosh": {
|
| 543 |
+
"chrome": "38",
|
| 544 |
+
"opera": "25",
|
| 545 |
+
"edge": "12",
|
| 546 |
+
"firefox": "25",
|
| 547 |
+
"safari": "7.1",
|
| 548 |
+
"node": "0.12",
|
| 549 |
+
"deno": "1",
|
| 550 |
+
"ios": "8",
|
| 551 |
+
"samsung": "3",
|
| 552 |
+
"rhino": "1.7.13",
|
| 553 |
+
"opera_mobile": "25",
|
| 554 |
+
"electron": "0.20"
|
| 555 |
+
},
|
| 556 |
+
"es6.math.expm1": {
|
| 557 |
+
"chrome": "38",
|
| 558 |
+
"opera": "25",
|
| 559 |
+
"edge": "12",
|
| 560 |
+
"firefox": "25",
|
| 561 |
+
"safari": "7.1",
|
| 562 |
+
"node": "0.12",
|
| 563 |
+
"deno": "1",
|
| 564 |
+
"ios": "8",
|
| 565 |
+
"samsung": "3",
|
| 566 |
+
"rhino": "1.7.13",
|
| 567 |
+
"opera_mobile": "25",
|
| 568 |
+
"electron": "0.20"
|
| 569 |
+
},
|
| 570 |
+
"es6.math.fround": {
|
| 571 |
+
"chrome": "38",
|
| 572 |
+
"opera": "25",
|
| 573 |
+
"edge": "12",
|
| 574 |
+
"firefox": "26",
|
| 575 |
+
"safari": "7.1",
|
| 576 |
+
"node": "0.12",
|
| 577 |
+
"deno": "1",
|
| 578 |
+
"ios": "8",
|
| 579 |
+
"samsung": "3",
|
| 580 |
+
"rhino": "1.7.13",
|
| 581 |
+
"opera_mobile": "25",
|
| 582 |
+
"electron": "0.20"
|
| 583 |
+
},
|
| 584 |
+
"es6.math.hypot": {
|
| 585 |
+
"chrome": "38",
|
| 586 |
+
"opera": "25",
|
| 587 |
+
"edge": "12",
|
| 588 |
+
"firefox": "27",
|
| 589 |
+
"safari": "7.1",
|
| 590 |
+
"node": "0.12",
|
| 591 |
+
"deno": "1",
|
| 592 |
+
"ios": "8",
|
| 593 |
+
"samsung": "3",
|
| 594 |
+
"rhino": "1.7.13",
|
| 595 |
+
"opera_mobile": "25",
|
| 596 |
+
"electron": "0.20"
|
| 597 |
+
},
|
| 598 |
+
"es6.math.imul": {
|
| 599 |
+
"chrome": "30",
|
| 600 |
+
"opera": "17",
|
| 601 |
+
"edge": "12",
|
| 602 |
+
"firefox": "23",
|
| 603 |
+
"safari": "7",
|
| 604 |
+
"node": "0.12",
|
| 605 |
+
"deno": "1",
|
| 606 |
+
"android": "4.4",
|
| 607 |
+
"ios": "7",
|
| 608 |
+
"samsung": "2",
|
| 609 |
+
"rhino": "1.7.13",
|
| 610 |
+
"opera_mobile": "18",
|
| 611 |
+
"electron": "0.20"
|
| 612 |
+
},
|
| 613 |
+
"es6.math.log1p": {
|
| 614 |
+
"chrome": "38",
|
| 615 |
+
"opera": "25",
|
| 616 |
+
"edge": "12",
|
| 617 |
+
"firefox": "25",
|
| 618 |
+
"safari": "7.1",
|
| 619 |
+
"node": "0.12",
|
| 620 |
+
"deno": "1",
|
| 621 |
+
"ios": "8",
|
| 622 |
+
"samsung": "3",
|
| 623 |
+
"rhino": "1.7.13",
|
| 624 |
+
"opera_mobile": "25",
|
| 625 |
+
"electron": "0.20"
|
| 626 |
+
},
|
| 627 |
+
"es6.math.log10": {
|
| 628 |
+
"chrome": "38",
|
| 629 |
+
"opera": "25",
|
| 630 |
+
"edge": "12",
|
| 631 |
+
"firefox": "25",
|
| 632 |
+
"safari": "7.1",
|
| 633 |
+
"node": "0.12",
|
| 634 |
+
"deno": "1",
|
| 635 |
+
"ios": "8",
|
| 636 |
+
"samsung": "3",
|
| 637 |
+
"rhino": "1.7.13",
|
| 638 |
+
"opera_mobile": "25",
|
| 639 |
+
"electron": "0.20"
|
| 640 |
+
},
|
| 641 |
+
"es6.math.log2": {
|
| 642 |
+
"chrome": "38",
|
| 643 |
+
"opera": "25",
|
| 644 |
+
"edge": "12",
|
| 645 |
+
"firefox": "25",
|
| 646 |
+
"safari": "7.1",
|
| 647 |
+
"node": "0.12",
|
| 648 |
+
"deno": "1",
|
| 649 |
+
"ios": "8",
|
| 650 |
+
"samsung": "3",
|
| 651 |
+
"rhino": "1.7.13",
|
| 652 |
+
"opera_mobile": "25",
|
| 653 |
+
"electron": "0.20"
|
| 654 |
+
},
|
| 655 |
+
"es6.math.sign": {
|
| 656 |
+
"chrome": "38",
|
| 657 |
+
"opera": "25",
|
| 658 |
+
"edge": "12",
|
| 659 |
+
"firefox": "25",
|
| 660 |
+
"safari": "9",
|
| 661 |
+
"node": "0.12",
|
| 662 |
+
"deno": "1",
|
| 663 |
+
"ios": "9",
|
| 664 |
+
"samsung": "3",
|
| 665 |
+
"rhino": "1.7.13",
|
| 666 |
+
"opera_mobile": "25",
|
| 667 |
+
"electron": "0.20"
|
| 668 |
+
},
|
| 669 |
+
"es6.math.sinh": {
|
| 670 |
+
"chrome": "38",
|
| 671 |
+
"opera": "25",
|
| 672 |
+
"edge": "12",
|
| 673 |
+
"firefox": "25",
|
| 674 |
+
"safari": "7.1",
|
| 675 |
+
"node": "0.12",
|
| 676 |
+
"deno": "1",
|
| 677 |
+
"ios": "8",
|
| 678 |
+
"samsung": "3",
|
| 679 |
+
"rhino": "1.7.13",
|
| 680 |
+
"opera_mobile": "25",
|
| 681 |
+
"electron": "0.20"
|
| 682 |
+
},
|
| 683 |
+
"es6.math.tanh": {
|
| 684 |
+
"chrome": "38",
|
| 685 |
+
"opera": "25",
|
| 686 |
+
"edge": "12",
|
| 687 |
+
"firefox": "25",
|
| 688 |
+
"safari": "7.1",
|
| 689 |
+
"node": "0.12",
|
| 690 |
+
"deno": "1",
|
| 691 |
+
"ios": "8",
|
| 692 |
+
"samsung": "3",
|
| 693 |
+
"rhino": "1.7.13",
|
| 694 |
+
"opera_mobile": "25",
|
| 695 |
+
"electron": "0.20"
|
| 696 |
+
},
|
| 697 |
+
"es6.math.trunc": {
|
| 698 |
+
"chrome": "38",
|
| 699 |
+
"opera": "25",
|
| 700 |
+
"edge": "12",
|
| 701 |
+
"firefox": "25",
|
| 702 |
+
"safari": "7.1",
|
| 703 |
+
"node": "0.12",
|
| 704 |
+
"deno": "1",
|
| 705 |
+
"ios": "8",
|
| 706 |
+
"samsung": "3",
|
| 707 |
+
"rhino": "1.7.13",
|
| 708 |
+
"opera_mobile": "25",
|
| 709 |
+
"electron": "0.20"
|
| 710 |
+
},
|
| 711 |
+
"es6.number.constructor": {
|
| 712 |
+
"chrome": "41",
|
| 713 |
+
"opera": "28",
|
| 714 |
+
"edge": "12",
|
| 715 |
+
"firefox": "36",
|
| 716 |
+
"safari": "9",
|
| 717 |
+
"node": "4",
|
| 718 |
+
"deno": "1",
|
| 719 |
+
"ios": "9",
|
| 720 |
+
"samsung": "3.4",
|
| 721 |
+
"rhino": "1.7.13",
|
| 722 |
+
"opera_mobile": "28",
|
| 723 |
+
"electron": "0.21"
|
| 724 |
+
},
|
| 725 |
+
"es6.number.epsilon": {
|
| 726 |
+
"chrome": "34",
|
| 727 |
+
"opera": "21",
|
| 728 |
+
"edge": "12",
|
| 729 |
+
"firefox": "25",
|
| 730 |
+
"safari": "9",
|
| 731 |
+
"node": "0.12",
|
| 732 |
+
"deno": "1",
|
| 733 |
+
"ios": "9",
|
| 734 |
+
"samsung": "2",
|
| 735 |
+
"rhino": "1.7.14",
|
| 736 |
+
"opera_mobile": "21",
|
| 737 |
+
"electron": "0.20"
|
| 738 |
+
},
|
| 739 |
+
"es6.number.is-finite": {
|
| 740 |
+
"chrome": "19",
|
| 741 |
+
"opera": "15",
|
| 742 |
+
"edge": "12",
|
| 743 |
+
"firefox": "16",
|
| 744 |
+
"safari": "9",
|
| 745 |
+
"node": "0.8",
|
| 746 |
+
"deno": "1",
|
| 747 |
+
"android": "4.1",
|
| 748 |
+
"ios": "9",
|
| 749 |
+
"samsung": "1.5",
|
| 750 |
+
"rhino": "1.7.13",
|
| 751 |
+
"opera_mobile": "14",
|
| 752 |
+
"electron": "0.20"
|
| 753 |
+
},
|
| 754 |
+
"es6.number.is-integer": {
|
| 755 |
+
"chrome": "34",
|
| 756 |
+
"opera": "21",
|
| 757 |
+
"edge": "12",
|
| 758 |
+
"firefox": "16",
|
| 759 |
+
"safari": "9",
|
| 760 |
+
"node": "0.12",
|
| 761 |
+
"deno": "1",
|
| 762 |
+
"ios": "9",
|
| 763 |
+
"samsung": "2",
|
| 764 |
+
"rhino": "1.7.13",
|
| 765 |
+
"opera_mobile": "21",
|
| 766 |
+
"electron": "0.20"
|
| 767 |
+
},
|
| 768 |
+
"es6.number.is-nan": {
|
| 769 |
+
"chrome": "19",
|
| 770 |
+
"opera": "15",
|
| 771 |
+
"edge": "12",
|
| 772 |
+
"firefox": "15",
|
| 773 |
+
"safari": "9",
|
| 774 |
+
"node": "0.8",
|
| 775 |
+
"deno": "1",
|
| 776 |
+
"android": "4.1",
|
| 777 |
+
"ios": "9",
|
| 778 |
+
"samsung": "1.5",
|
| 779 |
+
"rhino": "1.7.13",
|
| 780 |
+
"opera_mobile": "14",
|
| 781 |
+
"electron": "0.20"
|
| 782 |
+
},
|
| 783 |
+
"es6.number.is-safe-integer": {
|
| 784 |
+
"chrome": "34",
|
| 785 |
+
"opera": "21",
|
| 786 |
+
"edge": "12",
|
| 787 |
+
"firefox": "32",
|
| 788 |
+
"safari": "9",
|
| 789 |
+
"node": "0.12",
|
| 790 |
+
"deno": "1",
|
| 791 |
+
"ios": "9",
|
| 792 |
+
"samsung": "2",
|
| 793 |
+
"rhino": "1.7.13",
|
| 794 |
+
"opera_mobile": "21",
|
| 795 |
+
"electron": "0.20"
|
| 796 |
+
},
|
| 797 |
+
"es6.number.max-safe-integer": {
|
| 798 |
+
"chrome": "34",
|
| 799 |
+
"opera": "21",
|
| 800 |
+
"edge": "12",
|
| 801 |
+
"firefox": "31",
|
| 802 |
+
"safari": "9",
|
| 803 |
+
"node": "0.12",
|
| 804 |
+
"deno": "1",
|
| 805 |
+
"ios": "9",
|
| 806 |
+
"samsung": "2",
|
| 807 |
+
"rhino": "1.7.13",
|
| 808 |
+
"opera_mobile": "21",
|
| 809 |
+
"electron": "0.20"
|
| 810 |
+
},
|
| 811 |
+
"es6.number.min-safe-integer": {
|
| 812 |
+
"chrome": "34",
|
| 813 |
+
"opera": "21",
|
| 814 |
+
"edge": "12",
|
| 815 |
+
"firefox": "31",
|
| 816 |
+
"safari": "9",
|
| 817 |
+
"node": "0.12",
|
| 818 |
+
"deno": "1",
|
| 819 |
+
"ios": "9",
|
| 820 |
+
"samsung": "2",
|
| 821 |
+
"rhino": "1.7.13",
|
| 822 |
+
"opera_mobile": "21",
|
| 823 |
+
"electron": "0.20"
|
| 824 |
+
},
|
| 825 |
+
"es6.number.parse-float": {
|
| 826 |
+
"chrome": "34",
|
| 827 |
+
"opera": "21",
|
| 828 |
+
"edge": "12",
|
| 829 |
+
"firefox": "25",
|
| 830 |
+
"safari": "9",
|
| 831 |
+
"node": "0.12",
|
| 832 |
+
"deno": "1",
|
| 833 |
+
"ios": "9",
|
| 834 |
+
"samsung": "2",
|
| 835 |
+
"rhino": "1.7.14",
|
| 836 |
+
"opera_mobile": "21",
|
| 837 |
+
"electron": "0.20"
|
| 838 |
+
},
|
| 839 |
+
"es6.number.parse-int": {
|
| 840 |
+
"chrome": "34",
|
| 841 |
+
"opera": "21",
|
| 842 |
+
"edge": "12",
|
| 843 |
+
"firefox": "25",
|
| 844 |
+
"safari": "9",
|
| 845 |
+
"node": "0.12",
|
| 846 |
+
"deno": "1",
|
| 847 |
+
"ios": "9",
|
| 848 |
+
"samsung": "2",
|
| 849 |
+
"rhino": "1.7.14",
|
| 850 |
+
"opera_mobile": "21",
|
| 851 |
+
"electron": "0.20"
|
| 852 |
+
},
|
| 853 |
+
"es6.object.assign": {
|
| 854 |
+
"chrome": "49",
|
| 855 |
+
"opera": "36",
|
| 856 |
+
"edge": "13",
|
| 857 |
+
"firefox": "36",
|
| 858 |
+
"safari": "10",
|
| 859 |
+
"node": "6",
|
| 860 |
+
"deno": "1",
|
| 861 |
+
"ios": "10",
|
| 862 |
+
"samsung": "5",
|
| 863 |
+
"rhino": "1.8",
|
| 864 |
+
"opera_mobile": "36",
|
| 865 |
+
"electron": "0.37"
|
| 866 |
+
},
|
| 867 |
+
"es6.object.create": {
|
| 868 |
+
"chrome": "5",
|
| 869 |
+
"opera": "12",
|
| 870 |
+
"edge": "12",
|
| 871 |
+
"firefox": "4",
|
| 872 |
+
"safari": "4",
|
| 873 |
+
"node": "0.4",
|
| 874 |
+
"deno": "1",
|
| 875 |
+
"ie": "9",
|
| 876 |
+
"android": "4",
|
| 877 |
+
"ios": "6",
|
| 878 |
+
"phantom": "1.9",
|
| 879 |
+
"samsung": "1",
|
| 880 |
+
"rhino": "1.7.13",
|
| 881 |
+
"opera_mobile": "12",
|
| 882 |
+
"electron": "0.20"
|
| 883 |
+
},
|
| 884 |
+
"es7.object.define-getter": {
|
| 885 |
+
"chrome": "62",
|
| 886 |
+
"opera": "49",
|
| 887 |
+
"edge": "16",
|
| 888 |
+
"firefox": "48",
|
| 889 |
+
"safari": "9",
|
| 890 |
+
"node": "8.10",
|
| 891 |
+
"deno": "1",
|
| 892 |
+
"ios": "9",
|
| 893 |
+
"samsung": "8",
|
| 894 |
+
"opera_mobile": "46",
|
| 895 |
+
"electron": "3.0"
|
| 896 |
+
},
|
| 897 |
+
"es7.object.define-setter": {
|
| 898 |
+
"chrome": "62",
|
| 899 |
+
"opera": "49",
|
| 900 |
+
"edge": "16",
|
| 901 |
+
"firefox": "48",
|
| 902 |
+
"safari": "9",
|
| 903 |
+
"node": "8.10",
|
| 904 |
+
"deno": "1",
|
| 905 |
+
"ios": "9",
|
| 906 |
+
"samsung": "8",
|
| 907 |
+
"opera_mobile": "46",
|
| 908 |
+
"electron": "3.0"
|
| 909 |
+
},
|
| 910 |
+
"es6.object.define-property": {
|
| 911 |
+
"chrome": "5",
|
| 912 |
+
"opera": "12",
|
| 913 |
+
"edge": "12",
|
| 914 |
+
"firefox": "4",
|
| 915 |
+
"safari": "5.1",
|
| 916 |
+
"node": "0.4",
|
| 917 |
+
"deno": "1",
|
| 918 |
+
"ie": "9",
|
| 919 |
+
"android": "4",
|
| 920 |
+
"ios": "6",
|
| 921 |
+
"phantom": "1.9",
|
| 922 |
+
"samsung": "1",
|
| 923 |
+
"rhino": "1.7.13",
|
| 924 |
+
"opera_mobile": "12",
|
| 925 |
+
"electron": "0.20"
|
| 926 |
+
},
|
| 927 |
+
"es6.object.define-properties": {
|
| 928 |
+
"chrome": "5",
|
| 929 |
+
"opera": "12",
|
| 930 |
+
"edge": "12",
|
| 931 |
+
"firefox": "4",
|
| 932 |
+
"safari": "4",
|
| 933 |
+
"node": "0.4",
|
| 934 |
+
"deno": "1",
|
| 935 |
+
"ie": "9",
|
| 936 |
+
"android": "4",
|
| 937 |
+
"ios": "6",
|
| 938 |
+
"phantom": "1.9",
|
| 939 |
+
"samsung": "1",
|
| 940 |
+
"rhino": "1.7.13",
|
| 941 |
+
"opera_mobile": "12",
|
| 942 |
+
"electron": "0.20"
|
| 943 |
+
},
|
| 944 |
+
"es7.object.entries": {
|
| 945 |
+
"chrome": "54",
|
| 946 |
+
"opera": "41",
|
| 947 |
+
"edge": "14",
|
| 948 |
+
"firefox": "47",
|
| 949 |
+
"safari": "10.1",
|
| 950 |
+
"node": "7",
|
| 951 |
+
"deno": "1",
|
| 952 |
+
"ios": "10.3",
|
| 953 |
+
"samsung": "6",
|
| 954 |
+
"rhino": "1.7.14",
|
| 955 |
+
"opera_mobile": "41",
|
| 956 |
+
"electron": "1.4"
|
| 957 |
+
},
|
| 958 |
+
"es6.object.freeze": {
|
| 959 |
+
"chrome": "44",
|
| 960 |
+
"opera": "31",
|
| 961 |
+
"edge": "12",
|
| 962 |
+
"firefox": "35",
|
| 963 |
+
"safari": "9",
|
| 964 |
+
"node": "4",
|
| 965 |
+
"deno": "1",
|
| 966 |
+
"ios": "9",
|
| 967 |
+
"samsung": "4",
|
| 968 |
+
"rhino": "1.7.13",
|
| 969 |
+
"opera_mobile": "32",
|
| 970 |
+
"electron": "0.30"
|
| 971 |
+
},
|
| 972 |
+
"es6.object.get-own-property-descriptor": {
|
| 973 |
+
"chrome": "44",
|
| 974 |
+
"opera": "31",
|
| 975 |
+
"edge": "12",
|
| 976 |
+
"firefox": "35",
|
| 977 |
+
"safari": "9",
|
| 978 |
+
"node": "4",
|
| 979 |
+
"deno": "1",
|
| 980 |
+
"ios": "9",
|
| 981 |
+
"samsung": "4",
|
| 982 |
+
"rhino": "1.7.13",
|
| 983 |
+
"opera_mobile": "32",
|
| 984 |
+
"electron": "0.30"
|
| 985 |
+
},
|
| 986 |
+
"es7.object.get-own-property-descriptors": {
|
| 987 |
+
"chrome": "54",
|
| 988 |
+
"opera": "41",
|
| 989 |
+
"edge": "15",
|
| 990 |
+
"firefox": "50",
|
| 991 |
+
"safari": "10.1",
|
| 992 |
+
"node": "7",
|
| 993 |
+
"deno": "1",
|
| 994 |
+
"ios": "10.3",
|
| 995 |
+
"samsung": "6",
|
| 996 |
+
"rhino": "1.8",
|
| 997 |
+
"opera_mobile": "41",
|
| 998 |
+
"electron": "1.4"
|
| 999 |
+
},
|
| 1000 |
+
"es6.object.get-own-property-names": {
|
| 1001 |
+
"chrome": "40",
|
| 1002 |
+
"opera": "27",
|
| 1003 |
+
"edge": "12",
|
| 1004 |
+
"firefox": "33",
|
| 1005 |
+
"safari": "9",
|
| 1006 |
+
"node": "4",
|
| 1007 |
+
"deno": "1",
|
| 1008 |
+
"ios": "9",
|
| 1009 |
+
"samsung": "3.4",
|
| 1010 |
+
"rhino": "1.7.13",
|
| 1011 |
+
"opera_mobile": "27",
|
| 1012 |
+
"electron": "0.21"
|
| 1013 |
+
},
|
| 1014 |
+
"es6.object.get-prototype-of": {
|
| 1015 |
+
"chrome": "44",
|
| 1016 |
+
"opera": "31",
|
| 1017 |
+
"edge": "12",
|
| 1018 |
+
"firefox": "35",
|
| 1019 |
+
"safari": "9",
|
| 1020 |
+
"node": "4",
|
| 1021 |
+
"deno": "1",
|
| 1022 |
+
"ios": "9",
|
| 1023 |
+
"samsung": "4",
|
| 1024 |
+
"rhino": "1.7.13",
|
| 1025 |
+
"opera_mobile": "32",
|
| 1026 |
+
"electron": "0.30"
|
| 1027 |
+
},
|
| 1028 |
+
"es7.object.lookup-getter": {
|
| 1029 |
+
"chrome": "62",
|
| 1030 |
+
"opera": "49",
|
| 1031 |
+
"edge": "79",
|
| 1032 |
+
"firefox": "36",
|
| 1033 |
+
"safari": "9",
|
| 1034 |
+
"node": "8.10",
|
| 1035 |
+
"deno": "1",
|
| 1036 |
+
"ios": "9",
|
| 1037 |
+
"samsung": "8",
|
| 1038 |
+
"opera_mobile": "46",
|
| 1039 |
+
"electron": "3.0"
|
| 1040 |
+
},
|
| 1041 |
+
"es7.object.lookup-setter": {
|
| 1042 |
+
"chrome": "62",
|
| 1043 |
+
"opera": "49",
|
| 1044 |
+
"edge": "79",
|
| 1045 |
+
"firefox": "36",
|
| 1046 |
+
"safari": "9",
|
| 1047 |
+
"node": "8.10",
|
| 1048 |
+
"deno": "1",
|
| 1049 |
+
"ios": "9",
|
| 1050 |
+
"samsung": "8",
|
| 1051 |
+
"opera_mobile": "46",
|
| 1052 |
+
"electron": "3.0"
|
| 1053 |
+
},
|
| 1054 |
+
"es6.object.prevent-extensions": {
|
| 1055 |
+
"chrome": "44",
|
| 1056 |
+
"opera": "31",
|
| 1057 |
+
"edge": "12",
|
| 1058 |
+
"firefox": "35",
|
| 1059 |
+
"safari": "9",
|
| 1060 |
+
"node": "4",
|
| 1061 |
+
"deno": "1",
|
| 1062 |
+
"ios": "9",
|
| 1063 |
+
"samsung": "4",
|
| 1064 |
+
"rhino": "1.7.13",
|
| 1065 |
+
"opera_mobile": "32",
|
| 1066 |
+
"electron": "0.30"
|
| 1067 |
+
},
|
| 1068 |
+
"es6.object.to-string": {
|
| 1069 |
+
"chrome": "57",
|
| 1070 |
+
"opera": "44",
|
| 1071 |
+
"edge": "15",
|
| 1072 |
+
"firefox": "51",
|
| 1073 |
+
"safari": "10",
|
| 1074 |
+
"node": "8",
|
| 1075 |
+
"deno": "1",
|
| 1076 |
+
"ios": "10",
|
| 1077 |
+
"samsung": "7",
|
| 1078 |
+
"opera_mobile": "43",
|
| 1079 |
+
"electron": "1.7"
|
| 1080 |
+
},
|
| 1081 |
+
"es6.object.is": {
|
| 1082 |
+
"chrome": "19",
|
| 1083 |
+
"opera": "15",
|
| 1084 |
+
"edge": "12",
|
| 1085 |
+
"firefox": "22",
|
| 1086 |
+
"safari": "9",
|
| 1087 |
+
"node": "0.8",
|
| 1088 |
+
"deno": "1",
|
| 1089 |
+
"android": "4.1",
|
| 1090 |
+
"ios": "9",
|
| 1091 |
+
"samsung": "1.5",
|
| 1092 |
+
"rhino": "1.7.13",
|
| 1093 |
+
"opera_mobile": "14",
|
| 1094 |
+
"electron": "0.20"
|
| 1095 |
+
},
|
| 1096 |
+
"es6.object.is-frozen": {
|
| 1097 |
+
"chrome": "44",
|
| 1098 |
+
"opera": "31",
|
| 1099 |
+
"edge": "12",
|
| 1100 |
+
"firefox": "35",
|
| 1101 |
+
"safari": "9",
|
| 1102 |
+
"node": "4",
|
| 1103 |
+
"deno": "1",
|
| 1104 |
+
"ios": "9",
|
| 1105 |
+
"samsung": "4",
|
| 1106 |
+
"rhino": "1.7.13",
|
| 1107 |
+
"opera_mobile": "32",
|
| 1108 |
+
"electron": "0.30"
|
| 1109 |
+
},
|
| 1110 |
+
"es6.object.is-sealed": {
|
| 1111 |
+
"chrome": "44",
|
| 1112 |
+
"opera": "31",
|
| 1113 |
+
"edge": "12",
|
| 1114 |
+
"firefox": "35",
|
| 1115 |
+
"safari": "9",
|
| 1116 |
+
"node": "4",
|
| 1117 |
+
"deno": "1",
|
| 1118 |
+
"ios": "9",
|
| 1119 |
+
"samsung": "4",
|
| 1120 |
+
"rhino": "1.7.13",
|
| 1121 |
+
"opera_mobile": "32",
|
| 1122 |
+
"electron": "0.30"
|
| 1123 |
+
},
|
| 1124 |
+
"es6.object.is-extensible": {
|
| 1125 |
+
"chrome": "44",
|
| 1126 |
+
"opera": "31",
|
| 1127 |
+
"edge": "12",
|
| 1128 |
+
"firefox": "35",
|
| 1129 |
+
"safari": "9",
|
| 1130 |
+
"node": "4",
|
| 1131 |
+
"deno": "1",
|
| 1132 |
+
"ios": "9",
|
| 1133 |
+
"samsung": "4",
|
| 1134 |
+
"rhino": "1.7.13",
|
| 1135 |
+
"opera_mobile": "32",
|
| 1136 |
+
"electron": "0.30"
|
| 1137 |
+
},
|
| 1138 |
+
"es6.object.keys": {
|
| 1139 |
+
"chrome": "40",
|
| 1140 |
+
"opera": "27",
|
| 1141 |
+
"edge": "12",
|
| 1142 |
+
"firefox": "35",
|
| 1143 |
+
"safari": "9",
|
| 1144 |
+
"node": "4",
|
| 1145 |
+
"deno": "1",
|
| 1146 |
+
"ios": "9",
|
| 1147 |
+
"samsung": "3.4",
|
| 1148 |
+
"rhino": "1.7.13",
|
| 1149 |
+
"opera_mobile": "27",
|
| 1150 |
+
"electron": "0.21"
|
| 1151 |
+
},
|
| 1152 |
+
"es6.object.seal": {
|
| 1153 |
+
"chrome": "44",
|
| 1154 |
+
"opera": "31",
|
| 1155 |
+
"edge": "12",
|
| 1156 |
+
"firefox": "35",
|
| 1157 |
+
"safari": "9",
|
| 1158 |
+
"node": "4",
|
| 1159 |
+
"deno": "1",
|
| 1160 |
+
"ios": "9",
|
| 1161 |
+
"samsung": "4",
|
| 1162 |
+
"rhino": "1.7.13",
|
| 1163 |
+
"opera_mobile": "32",
|
| 1164 |
+
"electron": "0.30"
|
| 1165 |
+
},
|
| 1166 |
+
"es6.object.set-prototype-of": {
|
| 1167 |
+
"chrome": "34",
|
| 1168 |
+
"opera": "21",
|
| 1169 |
+
"edge": "12",
|
| 1170 |
+
"firefox": "31",
|
| 1171 |
+
"safari": "9",
|
| 1172 |
+
"node": "0.12",
|
| 1173 |
+
"deno": "1",
|
| 1174 |
+
"ie": "11",
|
| 1175 |
+
"ios": "9",
|
| 1176 |
+
"samsung": "2",
|
| 1177 |
+
"rhino": "1.7.13",
|
| 1178 |
+
"opera_mobile": "21",
|
| 1179 |
+
"electron": "0.20"
|
| 1180 |
+
},
|
| 1181 |
+
"es7.object.values": {
|
| 1182 |
+
"chrome": "54",
|
| 1183 |
+
"opera": "41",
|
| 1184 |
+
"edge": "14",
|
| 1185 |
+
"firefox": "47",
|
| 1186 |
+
"safari": "10.1",
|
| 1187 |
+
"node": "7",
|
| 1188 |
+
"deno": "1",
|
| 1189 |
+
"ios": "10.3",
|
| 1190 |
+
"samsung": "6",
|
| 1191 |
+
"rhino": "1.7.14",
|
| 1192 |
+
"opera_mobile": "41",
|
| 1193 |
+
"electron": "1.4"
|
| 1194 |
+
},
|
| 1195 |
+
"es6.promise": {
|
| 1196 |
+
"chrome": "51",
|
| 1197 |
+
"opera": "38",
|
| 1198 |
+
"edge": "14",
|
| 1199 |
+
"firefox": "45",
|
| 1200 |
+
"safari": "10",
|
| 1201 |
+
"node": "6.5",
|
| 1202 |
+
"deno": "1",
|
| 1203 |
+
"ios": "10",
|
| 1204 |
+
"samsung": "5",
|
| 1205 |
+
"rhino": "1.7.15",
|
| 1206 |
+
"opera_mobile": "41",
|
| 1207 |
+
"electron": "1.2"
|
| 1208 |
+
},
|
| 1209 |
+
"es7.promise.finally": {
|
| 1210 |
+
"chrome": "63",
|
| 1211 |
+
"opera": "50",
|
| 1212 |
+
"edge": "18",
|
| 1213 |
+
"firefox": "58",
|
| 1214 |
+
"safari": "11.1",
|
| 1215 |
+
"node": "10",
|
| 1216 |
+
"deno": "1",
|
| 1217 |
+
"ios": "11.3",
|
| 1218 |
+
"samsung": "8",
|
| 1219 |
+
"rhino": "1.7.15",
|
| 1220 |
+
"opera_mobile": "46",
|
| 1221 |
+
"electron": "3.0"
|
| 1222 |
+
},
|
| 1223 |
+
"es6.reflect.apply": {
|
| 1224 |
+
"chrome": "49",
|
| 1225 |
+
"opera": "36",
|
| 1226 |
+
"edge": "12",
|
| 1227 |
+
"firefox": "42",
|
| 1228 |
+
"safari": "10",
|
| 1229 |
+
"node": "6",
|
| 1230 |
+
"deno": "1",
|
| 1231 |
+
"ios": "10",
|
| 1232 |
+
"samsung": "5",
|
| 1233 |
+
"rhino": "1.8",
|
| 1234 |
+
"opera_mobile": "36",
|
| 1235 |
+
"electron": "0.37"
|
| 1236 |
+
},
|
| 1237 |
+
"es6.reflect.construct": {
|
| 1238 |
+
"chrome": "49",
|
| 1239 |
+
"opera": "36",
|
| 1240 |
+
"edge": "13",
|
| 1241 |
+
"firefox": "49",
|
| 1242 |
+
"safari": "10",
|
| 1243 |
+
"node": "6",
|
| 1244 |
+
"deno": "1",
|
| 1245 |
+
"ios": "10",
|
| 1246 |
+
"samsung": "5",
|
| 1247 |
+
"opera_mobile": "36",
|
| 1248 |
+
"electron": "0.37"
|
| 1249 |
+
},
|
| 1250 |
+
"es6.reflect.define-property": {
|
| 1251 |
+
"chrome": "49",
|
| 1252 |
+
"opera": "36",
|
| 1253 |
+
"edge": "13",
|
| 1254 |
+
"firefox": "42",
|
| 1255 |
+
"safari": "10",
|
| 1256 |
+
"node": "6",
|
| 1257 |
+
"deno": "1",
|
| 1258 |
+
"ios": "10",
|
| 1259 |
+
"samsung": "5",
|
| 1260 |
+
"rhino": "1.8",
|
| 1261 |
+
"opera_mobile": "36",
|
| 1262 |
+
"electron": "0.37"
|
| 1263 |
+
},
|
| 1264 |
+
"es6.reflect.delete-property": {
|
| 1265 |
+
"chrome": "49",
|
| 1266 |
+
"opera": "36",
|
| 1267 |
+
"edge": "12",
|
| 1268 |
+
"firefox": "42",
|
| 1269 |
+
"safari": "10",
|
| 1270 |
+
"node": "6",
|
| 1271 |
+
"deno": "1",
|
| 1272 |
+
"ios": "10",
|
| 1273 |
+
"samsung": "5",
|
| 1274 |
+
"rhino": "1.8",
|
| 1275 |
+
"opera_mobile": "36",
|
| 1276 |
+
"electron": "0.37"
|
| 1277 |
+
},
|
| 1278 |
+
"es6.reflect.get": {
|
| 1279 |
+
"chrome": "49",
|
| 1280 |
+
"opera": "36",
|
| 1281 |
+
"edge": "12",
|
| 1282 |
+
"firefox": "42",
|
| 1283 |
+
"safari": "10",
|
| 1284 |
+
"node": "6",
|
| 1285 |
+
"deno": "1",
|
| 1286 |
+
"ios": "10",
|
| 1287 |
+
"samsung": "5",
|
| 1288 |
+
"rhino": "1.8",
|
| 1289 |
+
"opera_mobile": "36",
|
| 1290 |
+
"electron": "0.37"
|
| 1291 |
+
},
|
| 1292 |
+
"es6.reflect.get-own-property-descriptor": {
|
| 1293 |
+
"chrome": "49",
|
| 1294 |
+
"opera": "36",
|
| 1295 |
+
"edge": "12",
|
| 1296 |
+
"firefox": "42",
|
| 1297 |
+
"safari": "10",
|
| 1298 |
+
"node": "6",
|
| 1299 |
+
"deno": "1",
|
| 1300 |
+
"ios": "10",
|
| 1301 |
+
"samsung": "5",
|
| 1302 |
+
"rhino": "1.8",
|
| 1303 |
+
"opera_mobile": "36",
|
| 1304 |
+
"electron": "0.37"
|
| 1305 |
+
},
|
| 1306 |
+
"es6.reflect.get-prototype-of": {
|
| 1307 |
+
"chrome": "49",
|
| 1308 |
+
"opera": "36",
|
| 1309 |
+
"edge": "12",
|
| 1310 |
+
"firefox": "42",
|
| 1311 |
+
"safari": "10",
|
| 1312 |
+
"node": "6",
|
| 1313 |
+
"deno": "1",
|
| 1314 |
+
"ios": "10",
|
| 1315 |
+
"samsung": "5",
|
| 1316 |
+
"rhino": "1.8",
|
| 1317 |
+
"opera_mobile": "36",
|
| 1318 |
+
"electron": "0.37"
|
| 1319 |
+
},
|
| 1320 |
+
"es6.reflect.has": {
|
| 1321 |
+
"chrome": "49",
|
| 1322 |
+
"opera": "36",
|
| 1323 |
+
"edge": "12",
|
| 1324 |
+
"firefox": "42",
|
| 1325 |
+
"safari": "10",
|
| 1326 |
+
"node": "6",
|
| 1327 |
+
"deno": "1",
|
| 1328 |
+
"ios": "10",
|
| 1329 |
+
"samsung": "5",
|
| 1330 |
+
"rhino": "1.8",
|
| 1331 |
+
"opera_mobile": "36",
|
| 1332 |
+
"electron": "0.37"
|
| 1333 |
+
},
|
| 1334 |
+
"es6.reflect.is-extensible": {
|
| 1335 |
+
"chrome": "49",
|
| 1336 |
+
"opera": "36",
|
| 1337 |
+
"edge": "12",
|
| 1338 |
+
"firefox": "42",
|
| 1339 |
+
"safari": "10",
|
| 1340 |
+
"node": "6",
|
| 1341 |
+
"deno": "1",
|
| 1342 |
+
"ios": "10",
|
| 1343 |
+
"samsung": "5",
|
| 1344 |
+
"rhino": "1.8",
|
| 1345 |
+
"opera_mobile": "36",
|
| 1346 |
+
"electron": "0.37"
|
| 1347 |
+
},
|
| 1348 |
+
"es6.reflect.own-keys": {
|
| 1349 |
+
"chrome": "49",
|
| 1350 |
+
"opera": "36",
|
| 1351 |
+
"edge": "12",
|
| 1352 |
+
"firefox": "42",
|
| 1353 |
+
"safari": "10",
|
| 1354 |
+
"node": "6",
|
| 1355 |
+
"deno": "1",
|
| 1356 |
+
"ios": "10",
|
| 1357 |
+
"samsung": "5",
|
| 1358 |
+
"rhino": "1.8",
|
| 1359 |
+
"opera_mobile": "36",
|
| 1360 |
+
"electron": "0.37"
|
| 1361 |
+
},
|
| 1362 |
+
"es6.reflect.prevent-extensions": {
|
| 1363 |
+
"chrome": "49",
|
| 1364 |
+
"opera": "36",
|
| 1365 |
+
"edge": "12",
|
| 1366 |
+
"firefox": "42",
|
| 1367 |
+
"safari": "10",
|
| 1368 |
+
"node": "6",
|
| 1369 |
+
"deno": "1",
|
| 1370 |
+
"ios": "10",
|
| 1371 |
+
"samsung": "5",
|
| 1372 |
+
"rhino": "1.8",
|
| 1373 |
+
"opera_mobile": "36",
|
| 1374 |
+
"electron": "0.37"
|
| 1375 |
+
},
|
| 1376 |
+
"es6.reflect.set": {
|
| 1377 |
+
"chrome": "49",
|
| 1378 |
+
"opera": "36",
|
| 1379 |
+
"edge": "12",
|
| 1380 |
+
"firefox": "42",
|
| 1381 |
+
"safari": "10",
|
| 1382 |
+
"node": "6",
|
| 1383 |
+
"deno": "1",
|
| 1384 |
+
"ios": "10",
|
| 1385 |
+
"samsung": "5",
|
| 1386 |
+
"rhino": "1.8",
|
| 1387 |
+
"opera_mobile": "36",
|
| 1388 |
+
"electron": "0.37"
|
| 1389 |
+
},
|
| 1390 |
+
"es6.reflect.set-prototype-of": {
|
| 1391 |
+
"chrome": "49",
|
| 1392 |
+
"opera": "36",
|
| 1393 |
+
"edge": "12",
|
| 1394 |
+
"firefox": "42",
|
| 1395 |
+
"safari": "10",
|
| 1396 |
+
"node": "6",
|
| 1397 |
+
"deno": "1",
|
| 1398 |
+
"ios": "10",
|
| 1399 |
+
"samsung": "5",
|
| 1400 |
+
"rhino": "1.8",
|
| 1401 |
+
"opera_mobile": "36",
|
| 1402 |
+
"electron": "0.37"
|
| 1403 |
+
},
|
| 1404 |
+
"es6.regexp.constructor": {
|
| 1405 |
+
"chrome": "50",
|
| 1406 |
+
"opera": "37",
|
| 1407 |
+
"edge": "79",
|
| 1408 |
+
"firefox": "40",
|
| 1409 |
+
"safari": "10",
|
| 1410 |
+
"node": "6",
|
| 1411 |
+
"deno": "1",
|
| 1412 |
+
"ios": "10",
|
| 1413 |
+
"samsung": "5",
|
| 1414 |
+
"opera_mobile": "37",
|
| 1415 |
+
"electron": "1.1"
|
| 1416 |
+
},
|
| 1417 |
+
"es6.regexp.flags": {
|
| 1418 |
+
"chrome": "49",
|
| 1419 |
+
"opera": "36",
|
| 1420 |
+
"edge": "79",
|
| 1421 |
+
"firefox": "37",
|
| 1422 |
+
"safari": "9",
|
| 1423 |
+
"node": "6",
|
| 1424 |
+
"deno": "1",
|
| 1425 |
+
"ios": "9",
|
| 1426 |
+
"samsung": "5",
|
| 1427 |
+
"rhino": "1.7.15",
|
| 1428 |
+
"opera_mobile": "36",
|
| 1429 |
+
"electron": "0.37"
|
| 1430 |
+
},
|
| 1431 |
+
"es6.regexp.match": {
|
| 1432 |
+
"chrome": "50",
|
| 1433 |
+
"opera": "37",
|
| 1434 |
+
"edge": "79",
|
| 1435 |
+
"firefox": "49",
|
| 1436 |
+
"safari": "10",
|
| 1437 |
+
"node": "6",
|
| 1438 |
+
"deno": "1",
|
| 1439 |
+
"ios": "10",
|
| 1440 |
+
"samsung": "5",
|
| 1441 |
+
"rhino": "1.7.13",
|
| 1442 |
+
"opera_mobile": "37",
|
| 1443 |
+
"electron": "1.1"
|
| 1444 |
+
},
|
| 1445 |
+
"es6.regexp.replace": {
|
| 1446 |
+
"chrome": "50",
|
| 1447 |
+
"opera": "37",
|
| 1448 |
+
"edge": "79",
|
| 1449 |
+
"firefox": "49",
|
| 1450 |
+
"safari": "10",
|
| 1451 |
+
"node": "6",
|
| 1452 |
+
"deno": "1",
|
| 1453 |
+
"ios": "10",
|
| 1454 |
+
"samsung": "5",
|
| 1455 |
+
"opera_mobile": "37",
|
| 1456 |
+
"electron": "1.1"
|
| 1457 |
+
},
|
| 1458 |
+
"es6.regexp.split": {
|
| 1459 |
+
"chrome": "50",
|
| 1460 |
+
"opera": "37",
|
| 1461 |
+
"edge": "79",
|
| 1462 |
+
"firefox": "49",
|
| 1463 |
+
"safari": "10",
|
| 1464 |
+
"node": "6",
|
| 1465 |
+
"deno": "1",
|
| 1466 |
+
"ios": "10",
|
| 1467 |
+
"samsung": "5",
|
| 1468 |
+
"opera_mobile": "37",
|
| 1469 |
+
"electron": "1.1"
|
| 1470 |
+
},
|
| 1471 |
+
"es6.regexp.search": {
|
| 1472 |
+
"chrome": "50",
|
| 1473 |
+
"opera": "37",
|
| 1474 |
+
"edge": "79",
|
| 1475 |
+
"firefox": "49",
|
| 1476 |
+
"safari": "10",
|
| 1477 |
+
"node": "6",
|
| 1478 |
+
"deno": "1",
|
| 1479 |
+
"ios": "10",
|
| 1480 |
+
"samsung": "5",
|
| 1481 |
+
"rhino": "1.7.13",
|
| 1482 |
+
"opera_mobile": "37",
|
| 1483 |
+
"electron": "1.1"
|
| 1484 |
+
},
|
| 1485 |
+
"es6.regexp.to-string": {
|
| 1486 |
+
"chrome": "50",
|
| 1487 |
+
"opera": "37",
|
| 1488 |
+
"edge": "79",
|
| 1489 |
+
"firefox": "39",
|
| 1490 |
+
"safari": "10",
|
| 1491 |
+
"node": "6",
|
| 1492 |
+
"deno": "1",
|
| 1493 |
+
"ios": "10",
|
| 1494 |
+
"samsung": "5",
|
| 1495 |
+
"rhino": "1.7.15",
|
| 1496 |
+
"opera_mobile": "37",
|
| 1497 |
+
"electron": "1.1"
|
| 1498 |
+
},
|
| 1499 |
+
"es6.set": {
|
| 1500 |
+
"chrome": "51",
|
| 1501 |
+
"opera": "38",
|
| 1502 |
+
"edge": "15",
|
| 1503 |
+
"firefox": "53",
|
| 1504 |
+
"safari": "10",
|
| 1505 |
+
"node": "6.5",
|
| 1506 |
+
"deno": "1",
|
| 1507 |
+
"ios": "10",
|
| 1508 |
+
"samsung": "5",
|
| 1509 |
+
"opera_mobile": "41",
|
| 1510 |
+
"electron": "1.2"
|
| 1511 |
+
},
|
| 1512 |
+
"es6.symbol": {
|
| 1513 |
+
"chrome": "51",
|
| 1514 |
+
"opera": "38",
|
| 1515 |
+
"edge": "79",
|
| 1516 |
+
"firefox": "51",
|
| 1517 |
+
"safari": "10",
|
| 1518 |
+
"node": "6.5",
|
| 1519 |
+
"deno": "1",
|
| 1520 |
+
"ios": "10",
|
| 1521 |
+
"samsung": "5",
|
| 1522 |
+
"opera_mobile": "41",
|
| 1523 |
+
"electron": "1.2"
|
| 1524 |
+
},
|
| 1525 |
+
"es7.symbol.async-iterator": {
|
| 1526 |
+
"chrome": "63",
|
| 1527 |
+
"opera": "50",
|
| 1528 |
+
"edge": "79",
|
| 1529 |
+
"firefox": "57",
|
| 1530 |
+
"safari": "12",
|
| 1531 |
+
"node": "10",
|
| 1532 |
+
"deno": "1",
|
| 1533 |
+
"ios": "12",
|
| 1534 |
+
"samsung": "8",
|
| 1535 |
+
"opera_mobile": "46",
|
| 1536 |
+
"electron": "3.0"
|
| 1537 |
+
},
|
| 1538 |
+
"es6.string.anchor": {
|
| 1539 |
+
"chrome": "5",
|
| 1540 |
+
"opera": "15",
|
| 1541 |
+
"edge": "12",
|
| 1542 |
+
"firefox": "17",
|
| 1543 |
+
"safari": "6",
|
| 1544 |
+
"node": "0.4",
|
| 1545 |
+
"deno": "1",
|
| 1546 |
+
"android": "4",
|
| 1547 |
+
"ios": "7",
|
| 1548 |
+
"phantom": "1.9",
|
| 1549 |
+
"samsung": "1",
|
| 1550 |
+
"rhino": "1.7.14",
|
| 1551 |
+
"opera_mobile": "14",
|
| 1552 |
+
"electron": "0.20"
|
| 1553 |
+
},
|
| 1554 |
+
"es6.string.big": {
|
| 1555 |
+
"chrome": "5",
|
| 1556 |
+
"opera": "15",
|
| 1557 |
+
"edge": "12",
|
| 1558 |
+
"firefox": "17",
|
| 1559 |
+
"safari": "6",
|
| 1560 |
+
"node": "0.4",
|
| 1561 |
+
"deno": "1",
|
| 1562 |
+
"android": "4",
|
| 1563 |
+
"ios": "7",
|
| 1564 |
+
"phantom": "1.9",
|
| 1565 |
+
"samsung": "1",
|
| 1566 |
+
"rhino": "1.7.14",
|
| 1567 |
+
"opera_mobile": "14",
|
| 1568 |
+
"electron": "0.20"
|
| 1569 |
+
},
|
| 1570 |
+
"es6.string.blink": {
|
| 1571 |
+
"chrome": "5",
|
| 1572 |
+
"opera": "15",
|
| 1573 |
+
"edge": "12",
|
| 1574 |
+
"firefox": "17",
|
| 1575 |
+
"safari": "6",
|
| 1576 |
+
"node": "0.4",
|
| 1577 |
+
"deno": "1",
|
| 1578 |
+
"android": "4",
|
| 1579 |
+
"ios": "7",
|
| 1580 |
+
"phantom": "1.9",
|
| 1581 |
+
"samsung": "1",
|
| 1582 |
+
"rhino": "1.7.14",
|
| 1583 |
+
"opera_mobile": "14",
|
| 1584 |
+
"electron": "0.20"
|
| 1585 |
+
},
|
| 1586 |
+
"es6.string.bold": {
|
| 1587 |
+
"chrome": "5",
|
| 1588 |
+
"opera": "15",
|
| 1589 |
+
"edge": "12",
|
| 1590 |
+
"firefox": "17",
|
| 1591 |
+
"safari": "6",
|
| 1592 |
+
"node": "0.4",
|
| 1593 |
+
"deno": "1",
|
| 1594 |
+
"android": "4",
|
| 1595 |
+
"ios": "7",
|
| 1596 |
+
"phantom": "1.9",
|
| 1597 |
+
"samsung": "1",
|
| 1598 |
+
"rhino": "1.7.14",
|
| 1599 |
+
"opera_mobile": "14",
|
| 1600 |
+
"electron": "0.20"
|
| 1601 |
+
},
|
| 1602 |
+
"es6.string.code-point-at": {
|
| 1603 |
+
"chrome": "41",
|
| 1604 |
+
"opera": "28",
|
| 1605 |
+
"edge": "12",
|
| 1606 |
+
"firefox": "29",
|
| 1607 |
+
"safari": "9",
|
| 1608 |
+
"node": "4",
|
| 1609 |
+
"deno": "1",
|
| 1610 |
+
"ios": "9",
|
| 1611 |
+
"samsung": "3.4",
|
| 1612 |
+
"rhino": "1.7.13",
|
| 1613 |
+
"opera_mobile": "28",
|
| 1614 |
+
"electron": "0.21"
|
| 1615 |
+
},
|
| 1616 |
+
"es6.string.ends-with": {
|
| 1617 |
+
"chrome": "41",
|
| 1618 |
+
"opera": "28",
|
| 1619 |
+
"edge": "12",
|
| 1620 |
+
"firefox": "29",
|
| 1621 |
+
"safari": "9",
|
| 1622 |
+
"node": "4",
|
| 1623 |
+
"deno": "1",
|
| 1624 |
+
"ios": "9",
|
| 1625 |
+
"samsung": "3.4",
|
| 1626 |
+
"rhino": "1.7.13",
|
| 1627 |
+
"opera_mobile": "28",
|
| 1628 |
+
"electron": "0.21"
|
| 1629 |
+
},
|
| 1630 |
+
"es6.string.fixed": {
|
| 1631 |
+
"chrome": "5",
|
| 1632 |
+
"opera": "15",
|
| 1633 |
+
"edge": "12",
|
| 1634 |
+
"firefox": "17",
|
| 1635 |
+
"safari": "6",
|
| 1636 |
+
"node": "0.4",
|
| 1637 |
+
"deno": "1",
|
| 1638 |
+
"android": "4",
|
| 1639 |
+
"ios": "7",
|
| 1640 |
+
"phantom": "1.9",
|
| 1641 |
+
"samsung": "1",
|
| 1642 |
+
"rhino": "1.7.14",
|
| 1643 |
+
"opera_mobile": "14",
|
| 1644 |
+
"electron": "0.20"
|
| 1645 |
+
},
|
| 1646 |
+
"es6.string.fontcolor": {
|
| 1647 |
+
"chrome": "5",
|
| 1648 |
+
"opera": "15",
|
| 1649 |
+
"edge": "12",
|
| 1650 |
+
"firefox": "17",
|
| 1651 |
+
"safari": "6",
|
| 1652 |
+
"node": "0.4",
|
| 1653 |
+
"deno": "1",
|
| 1654 |
+
"android": "4",
|
| 1655 |
+
"ios": "7",
|
| 1656 |
+
"phantom": "1.9",
|
| 1657 |
+
"samsung": "1",
|
| 1658 |
+
"rhino": "1.7.14",
|
| 1659 |
+
"opera_mobile": "14",
|
| 1660 |
+
"electron": "0.20"
|
| 1661 |
+
},
|
| 1662 |
+
"es6.string.fontsize": {
|
| 1663 |
+
"chrome": "5",
|
| 1664 |
+
"opera": "15",
|
| 1665 |
+
"edge": "12",
|
| 1666 |
+
"firefox": "17",
|
| 1667 |
+
"safari": "6",
|
| 1668 |
+
"node": "0.4",
|
| 1669 |
+
"deno": "1",
|
| 1670 |
+
"android": "4",
|
| 1671 |
+
"ios": "7",
|
| 1672 |
+
"phantom": "1.9",
|
| 1673 |
+
"samsung": "1",
|
| 1674 |
+
"rhino": "1.7.14",
|
| 1675 |
+
"opera_mobile": "14",
|
| 1676 |
+
"electron": "0.20"
|
| 1677 |
+
},
|
| 1678 |
+
"es6.string.from-code-point": {
|
| 1679 |
+
"chrome": "41",
|
| 1680 |
+
"opera": "28",
|
| 1681 |
+
"edge": "12",
|
| 1682 |
+
"firefox": "29",
|
| 1683 |
+
"safari": "9",
|
| 1684 |
+
"node": "4",
|
| 1685 |
+
"deno": "1",
|
| 1686 |
+
"ios": "9",
|
| 1687 |
+
"samsung": "3.4",
|
| 1688 |
+
"rhino": "1.7.13",
|
| 1689 |
+
"opera_mobile": "28",
|
| 1690 |
+
"electron": "0.21"
|
| 1691 |
+
},
|
| 1692 |
+
"es6.string.includes": {
|
| 1693 |
+
"chrome": "41",
|
| 1694 |
+
"opera": "28",
|
| 1695 |
+
"edge": "12",
|
| 1696 |
+
"firefox": "40",
|
| 1697 |
+
"safari": "9",
|
| 1698 |
+
"node": "4",
|
| 1699 |
+
"deno": "1",
|
| 1700 |
+
"ios": "9",
|
| 1701 |
+
"samsung": "3.4",
|
| 1702 |
+
"rhino": "1.7.13",
|
| 1703 |
+
"opera_mobile": "28",
|
| 1704 |
+
"electron": "0.21"
|
| 1705 |
+
},
|
| 1706 |
+
"es6.string.italics": {
|
| 1707 |
+
"chrome": "5",
|
| 1708 |
+
"opera": "15",
|
| 1709 |
+
"edge": "12",
|
| 1710 |
+
"firefox": "17",
|
| 1711 |
+
"safari": "6",
|
| 1712 |
+
"node": "0.4",
|
| 1713 |
+
"deno": "1",
|
| 1714 |
+
"android": "4",
|
| 1715 |
+
"ios": "7",
|
| 1716 |
+
"phantom": "1.9",
|
| 1717 |
+
"samsung": "1",
|
| 1718 |
+
"rhino": "1.7.14",
|
| 1719 |
+
"opera_mobile": "14",
|
| 1720 |
+
"electron": "0.20"
|
| 1721 |
+
},
|
| 1722 |
+
"es6.string.iterator": {
|
| 1723 |
+
"chrome": "38",
|
| 1724 |
+
"opera": "25",
|
| 1725 |
+
"edge": "12",
|
| 1726 |
+
"firefox": "36",
|
| 1727 |
+
"safari": "9",
|
| 1728 |
+
"node": "0.12",
|
| 1729 |
+
"deno": "1",
|
| 1730 |
+
"ios": "9",
|
| 1731 |
+
"samsung": "3",
|
| 1732 |
+
"rhino": "1.7.13",
|
| 1733 |
+
"opera_mobile": "25",
|
| 1734 |
+
"electron": "0.20"
|
| 1735 |
+
},
|
| 1736 |
+
"es6.string.link": {
|
| 1737 |
+
"chrome": "5",
|
| 1738 |
+
"opera": "15",
|
| 1739 |
+
"edge": "12",
|
| 1740 |
+
"firefox": "17",
|
| 1741 |
+
"safari": "6",
|
| 1742 |
+
"node": "0.4",
|
| 1743 |
+
"deno": "1",
|
| 1744 |
+
"android": "4",
|
| 1745 |
+
"ios": "7",
|
| 1746 |
+
"phantom": "1.9",
|
| 1747 |
+
"samsung": "1",
|
| 1748 |
+
"rhino": "1.7.14",
|
| 1749 |
+
"opera_mobile": "14",
|
| 1750 |
+
"electron": "0.20"
|
| 1751 |
+
},
|
| 1752 |
+
"es7.string.pad-start": {
|
| 1753 |
+
"chrome": "57",
|
| 1754 |
+
"opera": "44",
|
| 1755 |
+
"edge": "15",
|
| 1756 |
+
"firefox": "48",
|
| 1757 |
+
"safari": "10",
|
| 1758 |
+
"node": "8",
|
| 1759 |
+
"deno": "1",
|
| 1760 |
+
"ios": "10",
|
| 1761 |
+
"samsung": "7",
|
| 1762 |
+
"rhino": "1.7.13",
|
| 1763 |
+
"opera_mobile": "43",
|
| 1764 |
+
"electron": "1.7"
|
| 1765 |
+
},
|
| 1766 |
+
"es7.string.pad-end": {
|
| 1767 |
+
"chrome": "57",
|
| 1768 |
+
"opera": "44",
|
| 1769 |
+
"edge": "15",
|
| 1770 |
+
"firefox": "48",
|
| 1771 |
+
"safari": "10",
|
| 1772 |
+
"node": "8",
|
| 1773 |
+
"deno": "1",
|
| 1774 |
+
"ios": "10",
|
| 1775 |
+
"samsung": "7",
|
| 1776 |
+
"rhino": "1.7.13",
|
| 1777 |
+
"opera_mobile": "43",
|
| 1778 |
+
"electron": "1.7"
|
| 1779 |
+
},
|
| 1780 |
+
"es6.string.raw": {
|
| 1781 |
+
"chrome": "41",
|
| 1782 |
+
"opera": "28",
|
| 1783 |
+
"edge": "12",
|
| 1784 |
+
"firefox": "34",
|
| 1785 |
+
"safari": "9",
|
| 1786 |
+
"node": "4",
|
| 1787 |
+
"deno": "1",
|
| 1788 |
+
"ios": "9",
|
| 1789 |
+
"samsung": "3.4",
|
| 1790 |
+
"rhino": "1.7.14",
|
| 1791 |
+
"opera_mobile": "28",
|
| 1792 |
+
"electron": "0.21"
|
| 1793 |
+
},
|
| 1794 |
+
"es6.string.repeat": {
|
| 1795 |
+
"chrome": "41",
|
| 1796 |
+
"opera": "28",
|
| 1797 |
+
"edge": "12",
|
| 1798 |
+
"firefox": "24",
|
| 1799 |
+
"safari": "9",
|
| 1800 |
+
"node": "4",
|
| 1801 |
+
"deno": "1",
|
| 1802 |
+
"ios": "9",
|
| 1803 |
+
"samsung": "3.4",
|
| 1804 |
+
"rhino": "1.7.13",
|
| 1805 |
+
"opera_mobile": "28",
|
| 1806 |
+
"electron": "0.21"
|
| 1807 |
+
},
|
| 1808 |
+
"es6.string.small": {
|
| 1809 |
+
"chrome": "5",
|
| 1810 |
+
"opera": "15",
|
| 1811 |
+
"edge": "12",
|
| 1812 |
+
"firefox": "17",
|
| 1813 |
+
"safari": "6",
|
| 1814 |
+
"node": "0.4",
|
| 1815 |
+
"deno": "1",
|
| 1816 |
+
"android": "4",
|
| 1817 |
+
"ios": "7",
|
| 1818 |
+
"phantom": "1.9",
|
| 1819 |
+
"samsung": "1",
|
| 1820 |
+
"rhino": "1.7.14",
|
| 1821 |
+
"opera_mobile": "14",
|
| 1822 |
+
"electron": "0.20"
|
| 1823 |
+
},
|
| 1824 |
+
"es6.string.starts-with": {
|
| 1825 |
+
"chrome": "41",
|
| 1826 |
+
"opera": "28",
|
| 1827 |
+
"edge": "12",
|
| 1828 |
+
"firefox": "29",
|
| 1829 |
+
"safari": "9",
|
| 1830 |
+
"node": "4",
|
| 1831 |
+
"deno": "1",
|
| 1832 |
+
"ios": "9",
|
| 1833 |
+
"samsung": "3.4",
|
| 1834 |
+
"rhino": "1.7.13",
|
| 1835 |
+
"opera_mobile": "28",
|
| 1836 |
+
"electron": "0.21"
|
| 1837 |
+
},
|
| 1838 |
+
"es6.string.strike": {
|
| 1839 |
+
"chrome": "5",
|
| 1840 |
+
"opera": "15",
|
| 1841 |
+
"edge": "12",
|
| 1842 |
+
"firefox": "17",
|
| 1843 |
+
"safari": "6",
|
| 1844 |
+
"node": "0.4",
|
| 1845 |
+
"deno": "1",
|
| 1846 |
+
"android": "4",
|
| 1847 |
+
"ios": "7",
|
| 1848 |
+
"phantom": "1.9",
|
| 1849 |
+
"samsung": "1",
|
| 1850 |
+
"rhino": "1.7.14",
|
| 1851 |
+
"opera_mobile": "14",
|
| 1852 |
+
"electron": "0.20"
|
| 1853 |
+
},
|
| 1854 |
+
"es6.string.sub": {
|
| 1855 |
+
"chrome": "5",
|
| 1856 |
+
"opera": "15",
|
| 1857 |
+
"edge": "12",
|
| 1858 |
+
"firefox": "17",
|
| 1859 |
+
"safari": "6",
|
| 1860 |
+
"node": "0.4",
|
| 1861 |
+
"deno": "1",
|
| 1862 |
+
"android": "4",
|
| 1863 |
+
"ios": "7",
|
| 1864 |
+
"phantom": "1.9",
|
| 1865 |
+
"samsung": "1",
|
| 1866 |
+
"rhino": "1.7.14",
|
| 1867 |
+
"opera_mobile": "14",
|
| 1868 |
+
"electron": "0.20"
|
| 1869 |
+
},
|
| 1870 |
+
"es6.string.sup": {
|
| 1871 |
+
"chrome": "5",
|
| 1872 |
+
"opera": "15",
|
| 1873 |
+
"edge": "12",
|
| 1874 |
+
"firefox": "17",
|
| 1875 |
+
"safari": "6",
|
| 1876 |
+
"node": "0.4",
|
| 1877 |
+
"deno": "1",
|
| 1878 |
+
"android": "4",
|
| 1879 |
+
"ios": "7",
|
| 1880 |
+
"phantom": "1.9",
|
| 1881 |
+
"samsung": "1",
|
| 1882 |
+
"rhino": "1.7.14",
|
| 1883 |
+
"opera_mobile": "14",
|
| 1884 |
+
"electron": "0.20"
|
| 1885 |
+
},
|
| 1886 |
+
"es6.string.trim": {
|
| 1887 |
+
"chrome": "5",
|
| 1888 |
+
"opera": "10.50",
|
| 1889 |
+
"edge": "12",
|
| 1890 |
+
"firefox": "3.5",
|
| 1891 |
+
"safari": "4",
|
| 1892 |
+
"node": "0.4",
|
| 1893 |
+
"deno": "1",
|
| 1894 |
+
"ie": "9",
|
| 1895 |
+
"android": "4",
|
| 1896 |
+
"ios": "6",
|
| 1897 |
+
"phantom": "1.9",
|
| 1898 |
+
"samsung": "1",
|
| 1899 |
+
"rhino": "1.7.13",
|
| 1900 |
+
"opera_mobile": "10.1",
|
| 1901 |
+
"electron": "0.20"
|
| 1902 |
+
},
|
| 1903 |
+
"es7.string.trim-left": {
|
| 1904 |
+
"chrome": "66",
|
| 1905 |
+
"opera": "53",
|
| 1906 |
+
"edge": "79",
|
| 1907 |
+
"firefox": "61",
|
| 1908 |
+
"safari": "12",
|
| 1909 |
+
"node": "10",
|
| 1910 |
+
"deno": "1",
|
| 1911 |
+
"ios": "12",
|
| 1912 |
+
"samsung": "9",
|
| 1913 |
+
"rhino": "1.7.13",
|
| 1914 |
+
"opera_mobile": "47",
|
| 1915 |
+
"electron": "3.0"
|
| 1916 |
+
},
|
| 1917 |
+
"es7.string.trim-right": {
|
| 1918 |
+
"chrome": "66",
|
| 1919 |
+
"opera": "53",
|
| 1920 |
+
"edge": "79",
|
| 1921 |
+
"firefox": "61",
|
| 1922 |
+
"safari": "12",
|
| 1923 |
+
"node": "10",
|
| 1924 |
+
"deno": "1",
|
| 1925 |
+
"ios": "12",
|
| 1926 |
+
"samsung": "9",
|
| 1927 |
+
"rhino": "1.7.13",
|
| 1928 |
+
"opera_mobile": "47",
|
| 1929 |
+
"electron": "3.0"
|
| 1930 |
+
},
|
| 1931 |
+
"es6.typed.array-buffer": {
|
| 1932 |
+
"chrome": "51",
|
| 1933 |
+
"opera": "38",
|
| 1934 |
+
"edge": "13",
|
| 1935 |
+
"firefox": "48",
|
| 1936 |
+
"safari": "10",
|
| 1937 |
+
"node": "6.5",
|
| 1938 |
+
"deno": "1",
|
| 1939 |
+
"ios": "10",
|
| 1940 |
+
"samsung": "5",
|
| 1941 |
+
"opera_mobile": "41",
|
| 1942 |
+
"electron": "1.2"
|
| 1943 |
+
},
|
| 1944 |
+
"es6.typed.data-view": {
|
| 1945 |
+
"chrome": "5",
|
| 1946 |
+
"opera": "12",
|
| 1947 |
+
"edge": "12",
|
| 1948 |
+
"firefox": "15",
|
| 1949 |
+
"safari": "5.1",
|
| 1950 |
+
"node": "0.4",
|
| 1951 |
+
"deno": "1",
|
| 1952 |
+
"ie": "10",
|
| 1953 |
+
"android": "4",
|
| 1954 |
+
"ios": "6",
|
| 1955 |
+
"phantom": "1.9",
|
| 1956 |
+
"samsung": "1",
|
| 1957 |
+
"rhino": "1.7.13",
|
| 1958 |
+
"opera_mobile": "12",
|
| 1959 |
+
"electron": "0.20"
|
| 1960 |
+
},
|
| 1961 |
+
"es6.typed.int8-array": {
|
| 1962 |
+
"chrome": "51",
|
| 1963 |
+
"opera": "38",
|
| 1964 |
+
"edge": "13",
|
| 1965 |
+
"firefox": "48",
|
| 1966 |
+
"safari": "10",
|
| 1967 |
+
"node": "6.5",
|
| 1968 |
+
"deno": "1",
|
| 1969 |
+
"ios": "10",
|
| 1970 |
+
"samsung": "5",
|
| 1971 |
+
"opera_mobile": "41",
|
| 1972 |
+
"electron": "1.2"
|
| 1973 |
+
},
|
| 1974 |
+
"es6.typed.uint8-array": {
|
| 1975 |
+
"chrome": "51",
|
| 1976 |
+
"opera": "38",
|
| 1977 |
+
"edge": "13",
|
| 1978 |
+
"firefox": "48",
|
| 1979 |
+
"safari": "10",
|
| 1980 |
+
"node": "6.5",
|
| 1981 |
+
"deno": "1",
|
| 1982 |
+
"ios": "10",
|
| 1983 |
+
"samsung": "5",
|
| 1984 |
+
"opera_mobile": "41",
|
| 1985 |
+
"electron": "1.2"
|
| 1986 |
+
},
|
| 1987 |
+
"es6.typed.uint8-clamped-array": {
|
| 1988 |
+
"chrome": "51",
|
| 1989 |
+
"opera": "38",
|
| 1990 |
+
"edge": "13",
|
| 1991 |
+
"firefox": "48",
|
| 1992 |
+
"safari": "10",
|
| 1993 |
+
"node": "6.5",
|
| 1994 |
+
"deno": "1",
|
| 1995 |
+
"ios": "10",
|
| 1996 |
+
"samsung": "5",
|
| 1997 |
+
"opera_mobile": "41",
|
| 1998 |
+
"electron": "1.2"
|
| 1999 |
+
},
|
| 2000 |
+
"es6.typed.int16-array": {
|
| 2001 |
+
"chrome": "51",
|
| 2002 |
+
"opera": "38",
|
| 2003 |
+
"edge": "13",
|
| 2004 |
+
"firefox": "48",
|
| 2005 |
+
"safari": "10",
|
| 2006 |
+
"node": "6.5",
|
| 2007 |
+
"deno": "1",
|
| 2008 |
+
"ios": "10",
|
| 2009 |
+
"samsung": "5",
|
| 2010 |
+
"opera_mobile": "41",
|
| 2011 |
+
"electron": "1.2"
|
| 2012 |
+
},
|
| 2013 |
+
"es6.typed.uint16-array": {
|
| 2014 |
+
"chrome": "51",
|
| 2015 |
+
"opera": "38",
|
| 2016 |
+
"edge": "13",
|
| 2017 |
+
"firefox": "48",
|
| 2018 |
+
"safari": "10",
|
| 2019 |
+
"node": "6.5",
|
| 2020 |
+
"deno": "1",
|
| 2021 |
+
"ios": "10",
|
| 2022 |
+
"samsung": "5",
|
| 2023 |
+
"opera_mobile": "41",
|
| 2024 |
+
"electron": "1.2"
|
| 2025 |
+
},
|
| 2026 |
+
"es6.typed.int32-array": {
|
| 2027 |
+
"chrome": "51",
|
| 2028 |
+
"opera": "38",
|
| 2029 |
+
"edge": "13",
|
| 2030 |
+
"firefox": "48",
|
| 2031 |
+
"safari": "10",
|
| 2032 |
+
"node": "6.5",
|
| 2033 |
+
"deno": "1",
|
| 2034 |
+
"ios": "10",
|
| 2035 |
+
"samsung": "5",
|
| 2036 |
+
"opera_mobile": "41",
|
| 2037 |
+
"electron": "1.2"
|
| 2038 |
+
},
|
| 2039 |
+
"es6.typed.uint32-array": {
|
| 2040 |
+
"chrome": "51",
|
| 2041 |
+
"opera": "38",
|
| 2042 |
+
"edge": "13",
|
| 2043 |
+
"firefox": "48",
|
| 2044 |
+
"safari": "10",
|
| 2045 |
+
"node": "6.5",
|
| 2046 |
+
"deno": "1",
|
| 2047 |
+
"ios": "10",
|
| 2048 |
+
"samsung": "5",
|
| 2049 |
+
"opera_mobile": "41",
|
| 2050 |
+
"electron": "1.2"
|
| 2051 |
+
},
|
| 2052 |
+
"es6.typed.float32-array": {
|
| 2053 |
+
"chrome": "51",
|
| 2054 |
+
"opera": "38",
|
| 2055 |
+
"edge": "13",
|
| 2056 |
+
"firefox": "48",
|
| 2057 |
+
"safari": "10",
|
| 2058 |
+
"node": "6.5",
|
| 2059 |
+
"deno": "1",
|
| 2060 |
+
"ios": "10",
|
| 2061 |
+
"samsung": "5",
|
| 2062 |
+
"opera_mobile": "41",
|
| 2063 |
+
"electron": "1.2"
|
| 2064 |
+
},
|
| 2065 |
+
"es6.typed.float64-array": {
|
| 2066 |
+
"chrome": "51",
|
| 2067 |
+
"opera": "38",
|
| 2068 |
+
"edge": "13",
|
| 2069 |
+
"firefox": "48",
|
| 2070 |
+
"safari": "10",
|
| 2071 |
+
"node": "6.5",
|
| 2072 |
+
"deno": "1",
|
| 2073 |
+
"ios": "10",
|
| 2074 |
+
"samsung": "5",
|
| 2075 |
+
"opera_mobile": "41",
|
| 2076 |
+
"electron": "1.2"
|
| 2077 |
+
},
|
| 2078 |
+
"es6.weak-map": {
|
| 2079 |
+
"chrome": "51",
|
| 2080 |
+
"opera": "38",
|
| 2081 |
+
"edge": "15",
|
| 2082 |
+
"firefox": "53",
|
| 2083 |
+
"safari": "9",
|
| 2084 |
+
"node": "6.5",
|
| 2085 |
+
"deno": "1",
|
| 2086 |
+
"ios": "9",
|
| 2087 |
+
"samsung": "5",
|
| 2088 |
+
"rhino": "1.7.15",
|
| 2089 |
+
"opera_mobile": "41",
|
| 2090 |
+
"electron": "1.2"
|
| 2091 |
+
},
|
| 2092 |
+
"es6.weak-set": {
|
| 2093 |
+
"chrome": "51",
|
| 2094 |
+
"opera": "38",
|
| 2095 |
+
"edge": "15",
|
| 2096 |
+
"firefox": "53",
|
| 2097 |
+
"safari": "9",
|
| 2098 |
+
"node": "6.5",
|
| 2099 |
+
"deno": "1",
|
| 2100 |
+
"ios": "9",
|
| 2101 |
+
"samsung": "5",
|
| 2102 |
+
"rhino": "1.7.15",
|
| 2103 |
+
"opera_mobile": "41",
|
| 2104 |
+
"electron": "1.2"
|
| 2105 |
+
}
|
| 2106 |
+
}
|
frontend/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
"esnext.promise.all-settled",
|
| 3 |
+
"esnext.string.match-all",
|
| 4 |
+
"esnext.global-this"
|
| 5 |
+
]
|
frontend/node_modules/@babel/compat-data/data/native-modules.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"es6.module": {
|
| 3 |
+
"chrome": "61",
|
| 4 |
+
"and_chr": "61",
|
| 5 |
+
"edge": "16",
|
| 6 |
+
"firefox": "60",
|
| 7 |
+
"and_ff": "60",
|
| 8 |
+
"node": "13.2.0",
|
| 9 |
+
"opera": "48",
|
| 10 |
+
"op_mob": "45",
|
| 11 |
+
"safari": "10.1",
|
| 12 |
+
"ios": "10.3",
|
| 13 |
+
"samsung": "8.2",
|
| 14 |
+
"android": "61",
|
| 15 |
+
"electron": "2.0",
|
| 16 |
+
"ios_saf": "10.3"
|
| 17 |
+
}
|
| 18 |
+
}
|
frontend/node_modules/@babel/compat-data/data/overlapping-plugins.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"transform-async-to-generator": [
|
| 3 |
+
"bugfix/transform-async-arrows-in-class"
|
| 4 |
+
],
|
| 5 |
+
"transform-parameters": [
|
| 6 |
+
"bugfix/transform-edge-default-parameters",
|
| 7 |
+
"bugfix/transform-safari-id-destructuring-collision-in-function-expression"
|
| 8 |
+
],
|
| 9 |
+
"transform-function-name": [
|
| 10 |
+
"bugfix/transform-edge-function-name"
|
| 11 |
+
],
|
| 12 |
+
"transform-block-scoping": [
|
| 13 |
+
"bugfix/transform-safari-block-shadowing",
|
| 14 |
+
"bugfix/transform-safari-for-shadowing"
|
| 15 |
+
],
|
| 16 |
+
"transform-template-literals": [
|
| 17 |
+
"bugfix/transform-tagged-template-caching"
|
| 18 |
+
],
|
| 19 |
+
"transform-optional-chaining": [
|
| 20 |
+
"bugfix/transform-v8-spread-parameters-in-optional-chaining"
|
| 21 |
+
],
|
| 22 |
+
"proposal-optional-chaining": [
|
| 23 |
+
"bugfix/transform-v8-spread-parameters-in-optional-chaining"
|
| 24 |
+
],
|
| 25 |
+
"transform-class-properties": [
|
| 26 |
+
"bugfix/transform-v8-static-class-fields-redefine-readonly",
|
| 27 |
+
"bugfix/transform-firefox-class-in-computed-class-key",
|
| 28 |
+
"bugfix/transform-safari-class-field-initializer-scope"
|
| 29 |
+
],
|
| 30 |
+
"proposal-class-properties": [
|
| 31 |
+
"bugfix/transform-v8-static-class-fields-redefine-readonly",
|
| 32 |
+
"bugfix/transform-firefox-class-in-computed-class-key",
|
| 33 |
+
"bugfix/transform-safari-class-field-initializer-scope"
|
| 34 |
+
]
|
| 35 |
+
}
|
frontend/node_modules/@babel/compat-data/data/plugin-bugfixes.json
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"bugfix/transform-async-arrows-in-class": {
|
| 3 |
+
"chrome": "55",
|
| 4 |
+
"opera": "42",
|
| 5 |
+
"edge": "15",
|
| 6 |
+
"firefox": "52",
|
| 7 |
+
"safari": "11",
|
| 8 |
+
"node": "7.6",
|
| 9 |
+
"deno": "1",
|
| 10 |
+
"ios": "11",
|
| 11 |
+
"samsung": "6",
|
| 12 |
+
"opera_mobile": "42",
|
| 13 |
+
"electron": "1.6"
|
| 14 |
+
},
|
| 15 |
+
"bugfix/transform-edge-default-parameters": {
|
| 16 |
+
"chrome": "49",
|
| 17 |
+
"opera": "36",
|
| 18 |
+
"edge": "18",
|
| 19 |
+
"firefox": "52",
|
| 20 |
+
"safari": "10",
|
| 21 |
+
"node": "6",
|
| 22 |
+
"deno": "1",
|
| 23 |
+
"ios": "10",
|
| 24 |
+
"samsung": "5",
|
| 25 |
+
"opera_mobile": "36",
|
| 26 |
+
"electron": "0.37"
|
| 27 |
+
},
|
| 28 |
+
"bugfix/transform-edge-function-name": {
|
| 29 |
+
"chrome": "51",
|
| 30 |
+
"opera": "38",
|
| 31 |
+
"edge": "79",
|
| 32 |
+
"firefox": "53",
|
| 33 |
+
"safari": "10",
|
| 34 |
+
"node": "6.5",
|
| 35 |
+
"deno": "1",
|
| 36 |
+
"ios": "10",
|
| 37 |
+
"samsung": "5",
|
| 38 |
+
"opera_mobile": "41",
|
| 39 |
+
"electron": "1.2"
|
| 40 |
+
},
|
| 41 |
+
"bugfix/transform-safari-block-shadowing": {
|
| 42 |
+
"chrome": "49",
|
| 43 |
+
"opera": "36",
|
| 44 |
+
"edge": "12",
|
| 45 |
+
"firefox": "44",
|
| 46 |
+
"safari": "11",
|
| 47 |
+
"node": "6",
|
| 48 |
+
"deno": "1",
|
| 49 |
+
"ie": "11",
|
| 50 |
+
"ios": "11",
|
| 51 |
+
"samsung": "5",
|
| 52 |
+
"opera_mobile": "36",
|
| 53 |
+
"electron": "0.37"
|
| 54 |
+
},
|
| 55 |
+
"bugfix/transform-safari-for-shadowing": {
|
| 56 |
+
"chrome": "49",
|
| 57 |
+
"opera": "36",
|
| 58 |
+
"edge": "12",
|
| 59 |
+
"firefox": "4",
|
| 60 |
+
"safari": "11",
|
| 61 |
+
"node": "6",
|
| 62 |
+
"deno": "1",
|
| 63 |
+
"ie": "11",
|
| 64 |
+
"ios": "11",
|
| 65 |
+
"samsung": "5",
|
| 66 |
+
"rhino": "1.7.13",
|
| 67 |
+
"opera_mobile": "36",
|
| 68 |
+
"electron": "0.37"
|
| 69 |
+
},
|
| 70 |
+
"bugfix/transform-safari-id-destructuring-collision-in-function-expression": {
|
| 71 |
+
"chrome": "49",
|
| 72 |
+
"opera": "36",
|
| 73 |
+
"edge": "14",
|
| 74 |
+
"firefox": "2",
|
| 75 |
+
"safari": "16.3",
|
| 76 |
+
"node": "6",
|
| 77 |
+
"deno": "1",
|
| 78 |
+
"ios": "16.3",
|
| 79 |
+
"samsung": "5",
|
| 80 |
+
"opera_mobile": "36",
|
| 81 |
+
"electron": "0.37"
|
| 82 |
+
},
|
| 83 |
+
"bugfix/transform-tagged-template-caching": {
|
| 84 |
+
"chrome": "41",
|
| 85 |
+
"opera": "28",
|
| 86 |
+
"edge": "12",
|
| 87 |
+
"firefox": "34",
|
| 88 |
+
"safari": "13",
|
| 89 |
+
"node": "4",
|
| 90 |
+
"deno": "1",
|
| 91 |
+
"ios": "13",
|
| 92 |
+
"samsung": "3.4",
|
| 93 |
+
"rhino": "1.7.14",
|
| 94 |
+
"opera_mobile": "28",
|
| 95 |
+
"electron": "0.21"
|
| 96 |
+
},
|
| 97 |
+
"bugfix/transform-v8-spread-parameters-in-optional-chaining": {
|
| 98 |
+
"chrome": "91",
|
| 99 |
+
"opera": "77",
|
| 100 |
+
"edge": "91",
|
| 101 |
+
"firefox": "74",
|
| 102 |
+
"safari": "13.1",
|
| 103 |
+
"node": "16.9",
|
| 104 |
+
"deno": "1.9",
|
| 105 |
+
"ios": "13.4",
|
| 106 |
+
"samsung": "16",
|
| 107 |
+
"opera_mobile": "64",
|
| 108 |
+
"electron": "13.0"
|
| 109 |
+
},
|
| 110 |
+
"transform-optional-chaining": {
|
| 111 |
+
"chrome": "80",
|
| 112 |
+
"opera": "67",
|
| 113 |
+
"edge": "80",
|
| 114 |
+
"firefox": "74",
|
| 115 |
+
"safari": "13.1",
|
| 116 |
+
"node": "14",
|
| 117 |
+
"deno": "1",
|
| 118 |
+
"ios": "13.4",
|
| 119 |
+
"samsung": "13",
|
| 120 |
+
"rhino": "1.8",
|
| 121 |
+
"opera_mobile": "57",
|
| 122 |
+
"electron": "8.0"
|
| 123 |
+
},
|
| 124 |
+
"proposal-optional-chaining": {
|
| 125 |
+
"chrome": "80",
|
| 126 |
+
"opera": "67",
|
| 127 |
+
"edge": "80",
|
| 128 |
+
"firefox": "74",
|
| 129 |
+
"safari": "13.1",
|
| 130 |
+
"node": "14",
|
| 131 |
+
"deno": "1",
|
| 132 |
+
"ios": "13.4",
|
| 133 |
+
"samsung": "13",
|
| 134 |
+
"rhino": "1.8",
|
| 135 |
+
"opera_mobile": "57",
|
| 136 |
+
"electron": "8.0"
|
| 137 |
+
},
|
| 138 |
+
"transform-parameters": {
|
| 139 |
+
"chrome": "49",
|
| 140 |
+
"opera": "36",
|
| 141 |
+
"edge": "15",
|
| 142 |
+
"firefox": "52",
|
| 143 |
+
"safari": "10",
|
| 144 |
+
"node": "6",
|
| 145 |
+
"deno": "1",
|
| 146 |
+
"ios": "10",
|
| 147 |
+
"samsung": "5",
|
| 148 |
+
"opera_mobile": "36",
|
| 149 |
+
"electron": "0.37"
|
| 150 |
+
},
|
| 151 |
+
"transform-async-to-generator": {
|
| 152 |
+
"chrome": "55",
|
| 153 |
+
"opera": "42",
|
| 154 |
+
"edge": "15",
|
| 155 |
+
"firefox": "52",
|
| 156 |
+
"safari": "10.1",
|
| 157 |
+
"node": "7.6",
|
| 158 |
+
"deno": "1",
|
| 159 |
+
"ios": "10.3",
|
| 160 |
+
"samsung": "6",
|
| 161 |
+
"opera_mobile": "42",
|
| 162 |
+
"electron": "1.6"
|
| 163 |
+
},
|
| 164 |
+
"transform-template-literals": {
|
| 165 |
+
"chrome": "41",
|
| 166 |
+
"opera": "28",
|
| 167 |
+
"edge": "13",
|
| 168 |
+
"firefox": "34",
|
| 169 |
+
"safari": "9",
|
| 170 |
+
"node": "4",
|
| 171 |
+
"deno": "1",
|
| 172 |
+
"ios": "9",
|
| 173 |
+
"samsung": "3.4",
|
| 174 |
+
"opera_mobile": "28",
|
| 175 |
+
"electron": "0.21"
|
| 176 |
+
},
|
| 177 |
+
"transform-function-name": {
|
| 178 |
+
"chrome": "51",
|
| 179 |
+
"opera": "38",
|
| 180 |
+
"edge": "14",
|
| 181 |
+
"firefox": "53",
|
| 182 |
+
"safari": "10",
|
| 183 |
+
"node": "6.5",
|
| 184 |
+
"deno": "1",
|
| 185 |
+
"ios": "10",
|
| 186 |
+
"samsung": "5",
|
| 187 |
+
"opera_mobile": "41",
|
| 188 |
+
"electron": "1.2"
|
| 189 |
+
},
|
| 190 |
+
"transform-block-scoping": {
|
| 191 |
+
"chrome": "50",
|
| 192 |
+
"opera": "37",
|
| 193 |
+
"edge": "14",
|
| 194 |
+
"firefox": "53",
|
| 195 |
+
"safari": "10",
|
| 196 |
+
"node": "6",
|
| 197 |
+
"deno": "1",
|
| 198 |
+
"ios": "10",
|
| 199 |
+
"samsung": "5",
|
| 200 |
+
"opera_mobile": "37",
|
| 201 |
+
"electron": "1.1"
|
| 202 |
+
}
|
| 203 |
+
}
|
frontend/node_modules/@babel/compat-data/data/plugins.json
ADDED
|
@@ -0,0 +1,838 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"transform-explicit-resource-management": {
|
| 3 |
+
"chrome": "134",
|
| 4 |
+
"edge": "134",
|
| 5 |
+
"firefox": "141",
|
| 6 |
+
"node": "24",
|
| 7 |
+
"electron": "35.0"
|
| 8 |
+
},
|
| 9 |
+
"transform-duplicate-named-capturing-groups-regex": {
|
| 10 |
+
"chrome": "126",
|
| 11 |
+
"opera": "112",
|
| 12 |
+
"edge": "126",
|
| 13 |
+
"firefox": "129",
|
| 14 |
+
"safari": "17.4",
|
| 15 |
+
"node": "23",
|
| 16 |
+
"ios": "17.4",
|
| 17 |
+
"electron": "31.0"
|
| 18 |
+
},
|
| 19 |
+
"transform-regexp-modifiers": {
|
| 20 |
+
"chrome": "125",
|
| 21 |
+
"opera": "111",
|
| 22 |
+
"edge": "125",
|
| 23 |
+
"firefox": "132",
|
| 24 |
+
"node": "23",
|
| 25 |
+
"samsung": "27",
|
| 26 |
+
"electron": "31.0"
|
| 27 |
+
},
|
| 28 |
+
"transform-unicode-sets-regex": {
|
| 29 |
+
"chrome": "112",
|
| 30 |
+
"opera": "98",
|
| 31 |
+
"edge": "112",
|
| 32 |
+
"firefox": "116",
|
| 33 |
+
"safari": "17",
|
| 34 |
+
"node": "20",
|
| 35 |
+
"deno": "1.32",
|
| 36 |
+
"ios": "17",
|
| 37 |
+
"samsung": "23",
|
| 38 |
+
"opera_mobile": "75",
|
| 39 |
+
"electron": "24.0"
|
| 40 |
+
},
|
| 41 |
+
"bugfix/transform-v8-static-class-fields-redefine-readonly": {
|
| 42 |
+
"chrome": "98",
|
| 43 |
+
"opera": "84",
|
| 44 |
+
"edge": "98",
|
| 45 |
+
"firefox": "75",
|
| 46 |
+
"safari": "15",
|
| 47 |
+
"node": "12",
|
| 48 |
+
"deno": "1.18",
|
| 49 |
+
"ios": "15",
|
| 50 |
+
"samsung": "11",
|
| 51 |
+
"opera_mobile": "52",
|
| 52 |
+
"electron": "17.0"
|
| 53 |
+
},
|
| 54 |
+
"bugfix/transform-firefox-class-in-computed-class-key": {
|
| 55 |
+
"chrome": "74",
|
| 56 |
+
"opera": "62",
|
| 57 |
+
"edge": "79",
|
| 58 |
+
"firefox": "126",
|
| 59 |
+
"safari": "16",
|
| 60 |
+
"node": "12",
|
| 61 |
+
"deno": "1",
|
| 62 |
+
"ios": "16",
|
| 63 |
+
"samsung": "11",
|
| 64 |
+
"opera_mobile": "53",
|
| 65 |
+
"electron": "6.0"
|
| 66 |
+
},
|
| 67 |
+
"bugfix/transform-safari-class-field-initializer-scope": {
|
| 68 |
+
"chrome": "74",
|
| 69 |
+
"opera": "62",
|
| 70 |
+
"edge": "79",
|
| 71 |
+
"firefox": "69",
|
| 72 |
+
"safari": "16",
|
| 73 |
+
"node": "12",
|
| 74 |
+
"deno": "1",
|
| 75 |
+
"ios": "16",
|
| 76 |
+
"samsung": "11",
|
| 77 |
+
"opera_mobile": "53",
|
| 78 |
+
"electron": "6.0"
|
| 79 |
+
},
|
| 80 |
+
"transform-class-static-block": {
|
| 81 |
+
"chrome": "94",
|
| 82 |
+
"opera": "80",
|
| 83 |
+
"edge": "94",
|
| 84 |
+
"firefox": "93",
|
| 85 |
+
"safari": "16.4",
|
| 86 |
+
"node": "16.11",
|
| 87 |
+
"deno": "1.14",
|
| 88 |
+
"ios": "16.4",
|
| 89 |
+
"samsung": "17",
|
| 90 |
+
"opera_mobile": "66",
|
| 91 |
+
"electron": "15.0"
|
| 92 |
+
},
|
| 93 |
+
"proposal-class-static-block": {
|
| 94 |
+
"chrome": "94",
|
| 95 |
+
"opera": "80",
|
| 96 |
+
"edge": "94",
|
| 97 |
+
"firefox": "93",
|
| 98 |
+
"safari": "16.4",
|
| 99 |
+
"node": "16.11",
|
| 100 |
+
"deno": "1.14",
|
| 101 |
+
"ios": "16.4",
|
| 102 |
+
"samsung": "17",
|
| 103 |
+
"opera_mobile": "66",
|
| 104 |
+
"electron": "15.0"
|
| 105 |
+
},
|
| 106 |
+
"transform-private-property-in-object": {
|
| 107 |
+
"chrome": "91",
|
| 108 |
+
"opera": "77",
|
| 109 |
+
"edge": "91",
|
| 110 |
+
"firefox": "90",
|
| 111 |
+
"safari": "15",
|
| 112 |
+
"node": "16.9",
|
| 113 |
+
"deno": "1.9",
|
| 114 |
+
"ios": "15",
|
| 115 |
+
"samsung": "16",
|
| 116 |
+
"opera_mobile": "64",
|
| 117 |
+
"electron": "13.0"
|
| 118 |
+
},
|
| 119 |
+
"proposal-private-property-in-object": {
|
| 120 |
+
"chrome": "91",
|
| 121 |
+
"opera": "77",
|
| 122 |
+
"edge": "91",
|
| 123 |
+
"firefox": "90",
|
| 124 |
+
"safari": "15",
|
| 125 |
+
"node": "16.9",
|
| 126 |
+
"deno": "1.9",
|
| 127 |
+
"ios": "15",
|
| 128 |
+
"samsung": "16",
|
| 129 |
+
"opera_mobile": "64",
|
| 130 |
+
"electron": "13.0"
|
| 131 |
+
},
|
| 132 |
+
"transform-class-properties": {
|
| 133 |
+
"chrome": "74",
|
| 134 |
+
"opera": "62",
|
| 135 |
+
"edge": "79",
|
| 136 |
+
"firefox": "90",
|
| 137 |
+
"safari": "14.1",
|
| 138 |
+
"node": "12",
|
| 139 |
+
"deno": "1",
|
| 140 |
+
"ios": "14.5",
|
| 141 |
+
"samsung": "11",
|
| 142 |
+
"opera_mobile": "53",
|
| 143 |
+
"electron": "6.0"
|
| 144 |
+
},
|
| 145 |
+
"proposal-class-properties": {
|
| 146 |
+
"chrome": "74",
|
| 147 |
+
"opera": "62",
|
| 148 |
+
"edge": "79",
|
| 149 |
+
"firefox": "90",
|
| 150 |
+
"safari": "14.1",
|
| 151 |
+
"node": "12",
|
| 152 |
+
"deno": "1",
|
| 153 |
+
"ios": "14.5",
|
| 154 |
+
"samsung": "11",
|
| 155 |
+
"opera_mobile": "53",
|
| 156 |
+
"electron": "6.0"
|
| 157 |
+
},
|
| 158 |
+
"transform-private-methods": {
|
| 159 |
+
"chrome": "84",
|
| 160 |
+
"opera": "70",
|
| 161 |
+
"edge": "84",
|
| 162 |
+
"firefox": "90",
|
| 163 |
+
"safari": "15",
|
| 164 |
+
"node": "14.6",
|
| 165 |
+
"deno": "1",
|
| 166 |
+
"ios": "15",
|
| 167 |
+
"samsung": "14",
|
| 168 |
+
"opera_mobile": "60",
|
| 169 |
+
"electron": "10.0"
|
| 170 |
+
},
|
| 171 |
+
"proposal-private-methods": {
|
| 172 |
+
"chrome": "84",
|
| 173 |
+
"opera": "70",
|
| 174 |
+
"edge": "84",
|
| 175 |
+
"firefox": "90",
|
| 176 |
+
"safari": "15",
|
| 177 |
+
"node": "14.6",
|
| 178 |
+
"deno": "1",
|
| 179 |
+
"ios": "15",
|
| 180 |
+
"samsung": "14",
|
| 181 |
+
"opera_mobile": "60",
|
| 182 |
+
"electron": "10.0"
|
| 183 |
+
},
|
| 184 |
+
"transform-numeric-separator": {
|
| 185 |
+
"chrome": "75",
|
| 186 |
+
"opera": "62",
|
| 187 |
+
"edge": "79",
|
| 188 |
+
"firefox": "70",
|
| 189 |
+
"safari": "13",
|
| 190 |
+
"node": "12.5",
|
| 191 |
+
"deno": "1",
|
| 192 |
+
"ios": "13",
|
| 193 |
+
"samsung": "11",
|
| 194 |
+
"rhino": "1.7.14",
|
| 195 |
+
"opera_mobile": "54",
|
| 196 |
+
"electron": "6.0"
|
| 197 |
+
},
|
| 198 |
+
"proposal-numeric-separator": {
|
| 199 |
+
"chrome": "75",
|
| 200 |
+
"opera": "62",
|
| 201 |
+
"edge": "79",
|
| 202 |
+
"firefox": "70",
|
| 203 |
+
"safari": "13",
|
| 204 |
+
"node": "12.5",
|
| 205 |
+
"deno": "1",
|
| 206 |
+
"ios": "13",
|
| 207 |
+
"samsung": "11",
|
| 208 |
+
"rhino": "1.7.14",
|
| 209 |
+
"opera_mobile": "54",
|
| 210 |
+
"electron": "6.0"
|
| 211 |
+
},
|
| 212 |
+
"transform-logical-assignment-operators": {
|
| 213 |
+
"chrome": "85",
|
| 214 |
+
"opera": "71",
|
| 215 |
+
"edge": "85",
|
| 216 |
+
"firefox": "79",
|
| 217 |
+
"safari": "14",
|
| 218 |
+
"node": "15",
|
| 219 |
+
"deno": "1.2",
|
| 220 |
+
"ios": "14",
|
| 221 |
+
"samsung": "14",
|
| 222 |
+
"opera_mobile": "60",
|
| 223 |
+
"electron": "10.0"
|
| 224 |
+
},
|
| 225 |
+
"proposal-logical-assignment-operators": {
|
| 226 |
+
"chrome": "85",
|
| 227 |
+
"opera": "71",
|
| 228 |
+
"edge": "85",
|
| 229 |
+
"firefox": "79",
|
| 230 |
+
"safari": "14",
|
| 231 |
+
"node": "15",
|
| 232 |
+
"deno": "1.2",
|
| 233 |
+
"ios": "14",
|
| 234 |
+
"samsung": "14",
|
| 235 |
+
"opera_mobile": "60",
|
| 236 |
+
"electron": "10.0"
|
| 237 |
+
},
|
| 238 |
+
"transform-nullish-coalescing-operator": {
|
| 239 |
+
"chrome": "80",
|
| 240 |
+
"opera": "67",
|
| 241 |
+
"edge": "80",
|
| 242 |
+
"firefox": "72",
|
| 243 |
+
"safari": "13.1",
|
| 244 |
+
"node": "14",
|
| 245 |
+
"deno": "1",
|
| 246 |
+
"ios": "13.4",
|
| 247 |
+
"samsung": "13",
|
| 248 |
+
"rhino": "1.8",
|
| 249 |
+
"opera_mobile": "57",
|
| 250 |
+
"electron": "8.0"
|
| 251 |
+
},
|
| 252 |
+
"proposal-nullish-coalescing-operator": {
|
| 253 |
+
"chrome": "80",
|
| 254 |
+
"opera": "67",
|
| 255 |
+
"edge": "80",
|
| 256 |
+
"firefox": "72",
|
| 257 |
+
"safari": "13.1",
|
| 258 |
+
"node": "14",
|
| 259 |
+
"deno": "1",
|
| 260 |
+
"ios": "13.4",
|
| 261 |
+
"samsung": "13",
|
| 262 |
+
"rhino": "1.8",
|
| 263 |
+
"opera_mobile": "57",
|
| 264 |
+
"electron": "8.0"
|
| 265 |
+
},
|
| 266 |
+
"transform-optional-chaining": {
|
| 267 |
+
"chrome": "91",
|
| 268 |
+
"opera": "77",
|
| 269 |
+
"edge": "91",
|
| 270 |
+
"firefox": "74",
|
| 271 |
+
"safari": "13.1",
|
| 272 |
+
"node": "16.9",
|
| 273 |
+
"deno": "1.9",
|
| 274 |
+
"ios": "13.4",
|
| 275 |
+
"samsung": "16",
|
| 276 |
+
"opera_mobile": "64",
|
| 277 |
+
"electron": "13.0"
|
| 278 |
+
},
|
| 279 |
+
"proposal-optional-chaining": {
|
| 280 |
+
"chrome": "91",
|
| 281 |
+
"opera": "77",
|
| 282 |
+
"edge": "91",
|
| 283 |
+
"firefox": "74",
|
| 284 |
+
"safari": "13.1",
|
| 285 |
+
"node": "16.9",
|
| 286 |
+
"deno": "1.9",
|
| 287 |
+
"ios": "13.4",
|
| 288 |
+
"samsung": "16",
|
| 289 |
+
"opera_mobile": "64",
|
| 290 |
+
"electron": "13.0"
|
| 291 |
+
},
|
| 292 |
+
"transform-json-strings": {
|
| 293 |
+
"chrome": "66",
|
| 294 |
+
"opera": "53",
|
| 295 |
+
"edge": "79",
|
| 296 |
+
"firefox": "62",
|
| 297 |
+
"safari": "12",
|
| 298 |
+
"node": "10",
|
| 299 |
+
"deno": "1",
|
| 300 |
+
"ios": "12",
|
| 301 |
+
"samsung": "9",
|
| 302 |
+
"rhino": "1.7.14",
|
| 303 |
+
"opera_mobile": "47",
|
| 304 |
+
"electron": "3.0"
|
| 305 |
+
},
|
| 306 |
+
"proposal-json-strings": {
|
| 307 |
+
"chrome": "66",
|
| 308 |
+
"opera": "53",
|
| 309 |
+
"edge": "79",
|
| 310 |
+
"firefox": "62",
|
| 311 |
+
"safari": "12",
|
| 312 |
+
"node": "10",
|
| 313 |
+
"deno": "1",
|
| 314 |
+
"ios": "12",
|
| 315 |
+
"samsung": "9",
|
| 316 |
+
"rhino": "1.7.14",
|
| 317 |
+
"opera_mobile": "47",
|
| 318 |
+
"electron": "3.0"
|
| 319 |
+
},
|
| 320 |
+
"transform-optional-catch-binding": {
|
| 321 |
+
"chrome": "66",
|
| 322 |
+
"opera": "53",
|
| 323 |
+
"edge": "79",
|
| 324 |
+
"firefox": "58",
|
| 325 |
+
"safari": "11.1",
|
| 326 |
+
"node": "10",
|
| 327 |
+
"deno": "1",
|
| 328 |
+
"ios": "11.3",
|
| 329 |
+
"samsung": "9",
|
| 330 |
+
"opera_mobile": "47",
|
| 331 |
+
"electron": "3.0"
|
| 332 |
+
},
|
| 333 |
+
"proposal-optional-catch-binding": {
|
| 334 |
+
"chrome": "66",
|
| 335 |
+
"opera": "53",
|
| 336 |
+
"edge": "79",
|
| 337 |
+
"firefox": "58",
|
| 338 |
+
"safari": "11.1",
|
| 339 |
+
"node": "10",
|
| 340 |
+
"deno": "1",
|
| 341 |
+
"ios": "11.3",
|
| 342 |
+
"samsung": "9",
|
| 343 |
+
"opera_mobile": "47",
|
| 344 |
+
"electron": "3.0"
|
| 345 |
+
},
|
| 346 |
+
"transform-parameters": {
|
| 347 |
+
"chrome": "49",
|
| 348 |
+
"opera": "36",
|
| 349 |
+
"edge": "18",
|
| 350 |
+
"firefox": "52",
|
| 351 |
+
"safari": "16.3",
|
| 352 |
+
"node": "6",
|
| 353 |
+
"deno": "1",
|
| 354 |
+
"ios": "16.3",
|
| 355 |
+
"samsung": "5",
|
| 356 |
+
"opera_mobile": "36",
|
| 357 |
+
"electron": "0.37"
|
| 358 |
+
},
|
| 359 |
+
"transform-async-generator-functions": {
|
| 360 |
+
"chrome": "63",
|
| 361 |
+
"opera": "50",
|
| 362 |
+
"edge": "79",
|
| 363 |
+
"firefox": "57",
|
| 364 |
+
"safari": "12",
|
| 365 |
+
"node": "10",
|
| 366 |
+
"deno": "1",
|
| 367 |
+
"ios": "12",
|
| 368 |
+
"samsung": "8",
|
| 369 |
+
"opera_mobile": "46",
|
| 370 |
+
"electron": "3.0"
|
| 371 |
+
},
|
| 372 |
+
"proposal-async-generator-functions": {
|
| 373 |
+
"chrome": "63",
|
| 374 |
+
"opera": "50",
|
| 375 |
+
"edge": "79",
|
| 376 |
+
"firefox": "57",
|
| 377 |
+
"safari": "12",
|
| 378 |
+
"node": "10",
|
| 379 |
+
"deno": "1",
|
| 380 |
+
"ios": "12",
|
| 381 |
+
"samsung": "8",
|
| 382 |
+
"opera_mobile": "46",
|
| 383 |
+
"electron": "3.0"
|
| 384 |
+
},
|
| 385 |
+
"transform-object-rest-spread": {
|
| 386 |
+
"chrome": "60",
|
| 387 |
+
"opera": "47",
|
| 388 |
+
"edge": "79",
|
| 389 |
+
"firefox": "55",
|
| 390 |
+
"safari": "11.1",
|
| 391 |
+
"node": "8.3",
|
| 392 |
+
"deno": "1",
|
| 393 |
+
"ios": "11.3",
|
| 394 |
+
"samsung": "8",
|
| 395 |
+
"opera_mobile": "44",
|
| 396 |
+
"electron": "2.0"
|
| 397 |
+
},
|
| 398 |
+
"proposal-object-rest-spread": {
|
| 399 |
+
"chrome": "60",
|
| 400 |
+
"opera": "47",
|
| 401 |
+
"edge": "79",
|
| 402 |
+
"firefox": "55",
|
| 403 |
+
"safari": "11.1",
|
| 404 |
+
"node": "8.3",
|
| 405 |
+
"deno": "1",
|
| 406 |
+
"ios": "11.3",
|
| 407 |
+
"samsung": "8",
|
| 408 |
+
"opera_mobile": "44",
|
| 409 |
+
"electron": "2.0"
|
| 410 |
+
},
|
| 411 |
+
"transform-dotall-regex": {
|
| 412 |
+
"chrome": "62",
|
| 413 |
+
"opera": "49",
|
| 414 |
+
"edge": "79",
|
| 415 |
+
"firefox": "78",
|
| 416 |
+
"safari": "11.1",
|
| 417 |
+
"node": "8.10",
|
| 418 |
+
"deno": "1",
|
| 419 |
+
"ios": "11.3",
|
| 420 |
+
"samsung": "8",
|
| 421 |
+
"rhino": "1.7.15",
|
| 422 |
+
"opera_mobile": "46",
|
| 423 |
+
"electron": "3.0"
|
| 424 |
+
},
|
| 425 |
+
"transform-unicode-property-regex": {
|
| 426 |
+
"chrome": "64",
|
| 427 |
+
"opera": "51",
|
| 428 |
+
"edge": "79",
|
| 429 |
+
"firefox": "78",
|
| 430 |
+
"safari": "11.1",
|
| 431 |
+
"node": "10",
|
| 432 |
+
"deno": "1",
|
| 433 |
+
"ios": "11.3",
|
| 434 |
+
"samsung": "9",
|
| 435 |
+
"opera_mobile": "47",
|
| 436 |
+
"electron": "3.0"
|
| 437 |
+
},
|
| 438 |
+
"proposal-unicode-property-regex": {
|
| 439 |
+
"chrome": "64",
|
| 440 |
+
"opera": "51",
|
| 441 |
+
"edge": "79",
|
| 442 |
+
"firefox": "78",
|
| 443 |
+
"safari": "11.1",
|
| 444 |
+
"node": "10",
|
| 445 |
+
"deno": "1",
|
| 446 |
+
"ios": "11.3",
|
| 447 |
+
"samsung": "9",
|
| 448 |
+
"opera_mobile": "47",
|
| 449 |
+
"electron": "3.0"
|
| 450 |
+
},
|
| 451 |
+
"transform-named-capturing-groups-regex": {
|
| 452 |
+
"chrome": "64",
|
| 453 |
+
"opera": "51",
|
| 454 |
+
"edge": "79",
|
| 455 |
+
"firefox": "78",
|
| 456 |
+
"safari": "11.1",
|
| 457 |
+
"node": "10",
|
| 458 |
+
"deno": "1",
|
| 459 |
+
"ios": "11.3",
|
| 460 |
+
"samsung": "9",
|
| 461 |
+
"opera_mobile": "47",
|
| 462 |
+
"electron": "3.0"
|
| 463 |
+
},
|
| 464 |
+
"transform-async-to-generator": {
|
| 465 |
+
"chrome": "55",
|
| 466 |
+
"opera": "42",
|
| 467 |
+
"edge": "15",
|
| 468 |
+
"firefox": "52",
|
| 469 |
+
"safari": "11",
|
| 470 |
+
"node": "7.6",
|
| 471 |
+
"deno": "1",
|
| 472 |
+
"ios": "11",
|
| 473 |
+
"samsung": "6",
|
| 474 |
+
"opera_mobile": "42",
|
| 475 |
+
"electron": "1.6"
|
| 476 |
+
},
|
| 477 |
+
"transform-exponentiation-operator": {
|
| 478 |
+
"chrome": "52",
|
| 479 |
+
"opera": "39",
|
| 480 |
+
"edge": "14",
|
| 481 |
+
"firefox": "52",
|
| 482 |
+
"safari": "10.1",
|
| 483 |
+
"node": "7",
|
| 484 |
+
"deno": "1",
|
| 485 |
+
"ios": "10.3",
|
| 486 |
+
"samsung": "6",
|
| 487 |
+
"rhino": "1.7.14",
|
| 488 |
+
"opera_mobile": "41",
|
| 489 |
+
"electron": "1.3"
|
| 490 |
+
},
|
| 491 |
+
"transform-template-literals": {
|
| 492 |
+
"chrome": "41",
|
| 493 |
+
"opera": "28",
|
| 494 |
+
"edge": "13",
|
| 495 |
+
"firefox": "34",
|
| 496 |
+
"safari": "13",
|
| 497 |
+
"node": "4",
|
| 498 |
+
"deno": "1",
|
| 499 |
+
"ios": "13",
|
| 500 |
+
"samsung": "3.4",
|
| 501 |
+
"opera_mobile": "28",
|
| 502 |
+
"electron": "0.21"
|
| 503 |
+
},
|
| 504 |
+
"transform-literals": {
|
| 505 |
+
"chrome": "44",
|
| 506 |
+
"opera": "31",
|
| 507 |
+
"edge": "12",
|
| 508 |
+
"firefox": "53",
|
| 509 |
+
"safari": "9",
|
| 510 |
+
"node": "4",
|
| 511 |
+
"deno": "1",
|
| 512 |
+
"ios": "9",
|
| 513 |
+
"samsung": "4",
|
| 514 |
+
"rhino": "1.7.15",
|
| 515 |
+
"opera_mobile": "32",
|
| 516 |
+
"electron": "0.30"
|
| 517 |
+
},
|
| 518 |
+
"transform-function-name": {
|
| 519 |
+
"chrome": "51",
|
| 520 |
+
"opera": "38",
|
| 521 |
+
"edge": "79",
|
| 522 |
+
"firefox": "53",
|
| 523 |
+
"safari": "10",
|
| 524 |
+
"node": "6.5",
|
| 525 |
+
"deno": "1",
|
| 526 |
+
"ios": "10",
|
| 527 |
+
"samsung": "5",
|
| 528 |
+
"opera_mobile": "41",
|
| 529 |
+
"electron": "1.2"
|
| 530 |
+
},
|
| 531 |
+
"transform-arrow-functions": {
|
| 532 |
+
"chrome": "47",
|
| 533 |
+
"opera": "34",
|
| 534 |
+
"edge": "13",
|
| 535 |
+
"firefox": "43",
|
| 536 |
+
"safari": "10",
|
| 537 |
+
"node": "6",
|
| 538 |
+
"deno": "1",
|
| 539 |
+
"ios": "10",
|
| 540 |
+
"samsung": "5",
|
| 541 |
+
"rhino": "1.7.13",
|
| 542 |
+
"opera_mobile": "34",
|
| 543 |
+
"electron": "0.36"
|
| 544 |
+
},
|
| 545 |
+
"transform-block-scoped-functions": {
|
| 546 |
+
"chrome": "41",
|
| 547 |
+
"opera": "28",
|
| 548 |
+
"edge": "12",
|
| 549 |
+
"firefox": "46",
|
| 550 |
+
"safari": "10",
|
| 551 |
+
"node": "4",
|
| 552 |
+
"deno": "1",
|
| 553 |
+
"ie": "11",
|
| 554 |
+
"ios": "10",
|
| 555 |
+
"samsung": "3.4",
|
| 556 |
+
"opera_mobile": "28",
|
| 557 |
+
"electron": "0.21"
|
| 558 |
+
},
|
| 559 |
+
"transform-classes": {
|
| 560 |
+
"chrome": "46",
|
| 561 |
+
"opera": "33",
|
| 562 |
+
"edge": "13",
|
| 563 |
+
"firefox": "45",
|
| 564 |
+
"safari": "10",
|
| 565 |
+
"node": "5",
|
| 566 |
+
"deno": "1",
|
| 567 |
+
"ios": "10",
|
| 568 |
+
"samsung": "5",
|
| 569 |
+
"opera_mobile": "33",
|
| 570 |
+
"electron": "0.36"
|
| 571 |
+
},
|
| 572 |
+
"transform-object-super": {
|
| 573 |
+
"chrome": "46",
|
| 574 |
+
"opera": "33",
|
| 575 |
+
"edge": "13",
|
| 576 |
+
"firefox": "45",
|
| 577 |
+
"safari": "10",
|
| 578 |
+
"node": "5",
|
| 579 |
+
"deno": "1",
|
| 580 |
+
"ios": "10",
|
| 581 |
+
"samsung": "5",
|
| 582 |
+
"opera_mobile": "33",
|
| 583 |
+
"electron": "0.36"
|
| 584 |
+
},
|
| 585 |
+
"transform-shorthand-properties": {
|
| 586 |
+
"chrome": "43",
|
| 587 |
+
"opera": "30",
|
| 588 |
+
"edge": "12",
|
| 589 |
+
"firefox": "33",
|
| 590 |
+
"safari": "9",
|
| 591 |
+
"node": "4",
|
| 592 |
+
"deno": "1",
|
| 593 |
+
"ios": "9",
|
| 594 |
+
"samsung": "4",
|
| 595 |
+
"rhino": "1.7.14",
|
| 596 |
+
"opera_mobile": "30",
|
| 597 |
+
"electron": "0.27"
|
| 598 |
+
},
|
| 599 |
+
"transform-duplicate-keys": {
|
| 600 |
+
"chrome": "42",
|
| 601 |
+
"opera": "29",
|
| 602 |
+
"edge": "12",
|
| 603 |
+
"firefox": "34",
|
| 604 |
+
"safari": "9",
|
| 605 |
+
"node": "4",
|
| 606 |
+
"deno": "1",
|
| 607 |
+
"ios": "9",
|
| 608 |
+
"samsung": "3.4",
|
| 609 |
+
"opera_mobile": "29",
|
| 610 |
+
"electron": "0.25"
|
| 611 |
+
},
|
| 612 |
+
"transform-computed-properties": {
|
| 613 |
+
"chrome": "44",
|
| 614 |
+
"opera": "31",
|
| 615 |
+
"edge": "12",
|
| 616 |
+
"firefox": "34",
|
| 617 |
+
"safari": "7.1",
|
| 618 |
+
"node": "4",
|
| 619 |
+
"deno": "1",
|
| 620 |
+
"ios": "8",
|
| 621 |
+
"samsung": "4",
|
| 622 |
+
"rhino": "1.8",
|
| 623 |
+
"opera_mobile": "32",
|
| 624 |
+
"electron": "0.30"
|
| 625 |
+
},
|
| 626 |
+
"transform-for-of": {
|
| 627 |
+
"chrome": "51",
|
| 628 |
+
"opera": "38",
|
| 629 |
+
"edge": "15",
|
| 630 |
+
"firefox": "53",
|
| 631 |
+
"safari": "10",
|
| 632 |
+
"node": "6.5",
|
| 633 |
+
"deno": "1",
|
| 634 |
+
"ios": "10",
|
| 635 |
+
"samsung": "5",
|
| 636 |
+
"opera_mobile": "41",
|
| 637 |
+
"electron": "1.2"
|
| 638 |
+
},
|
| 639 |
+
"transform-sticky-regex": {
|
| 640 |
+
"chrome": "49",
|
| 641 |
+
"opera": "36",
|
| 642 |
+
"edge": "13",
|
| 643 |
+
"firefox": "3",
|
| 644 |
+
"safari": "10",
|
| 645 |
+
"node": "6",
|
| 646 |
+
"deno": "1",
|
| 647 |
+
"ios": "10",
|
| 648 |
+
"samsung": "5",
|
| 649 |
+
"rhino": "1.7.15",
|
| 650 |
+
"opera_mobile": "36",
|
| 651 |
+
"electron": "0.37"
|
| 652 |
+
},
|
| 653 |
+
"transform-unicode-escapes": {
|
| 654 |
+
"chrome": "44",
|
| 655 |
+
"opera": "31",
|
| 656 |
+
"edge": "12",
|
| 657 |
+
"firefox": "53",
|
| 658 |
+
"safari": "9",
|
| 659 |
+
"node": "4",
|
| 660 |
+
"deno": "1",
|
| 661 |
+
"ios": "9",
|
| 662 |
+
"samsung": "4",
|
| 663 |
+
"rhino": "1.7.15",
|
| 664 |
+
"opera_mobile": "32",
|
| 665 |
+
"electron": "0.30"
|
| 666 |
+
},
|
| 667 |
+
"transform-unicode-regex": {
|
| 668 |
+
"chrome": "50",
|
| 669 |
+
"opera": "37",
|
| 670 |
+
"edge": "13",
|
| 671 |
+
"firefox": "46",
|
| 672 |
+
"safari": "12",
|
| 673 |
+
"node": "6",
|
| 674 |
+
"deno": "1",
|
| 675 |
+
"ios": "12",
|
| 676 |
+
"samsung": "5",
|
| 677 |
+
"opera_mobile": "37",
|
| 678 |
+
"electron": "1.1"
|
| 679 |
+
},
|
| 680 |
+
"transform-spread": {
|
| 681 |
+
"chrome": "46",
|
| 682 |
+
"opera": "33",
|
| 683 |
+
"edge": "13",
|
| 684 |
+
"firefox": "45",
|
| 685 |
+
"safari": "10",
|
| 686 |
+
"node": "5",
|
| 687 |
+
"deno": "1",
|
| 688 |
+
"ios": "10",
|
| 689 |
+
"samsung": "5",
|
| 690 |
+
"opera_mobile": "33",
|
| 691 |
+
"electron": "0.36"
|
| 692 |
+
},
|
| 693 |
+
"transform-destructuring": {
|
| 694 |
+
"chrome": "51",
|
| 695 |
+
"opera": "38",
|
| 696 |
+
"edge": "15",
|
| 697 |
+
"firefox": "53",
|
| 698 |
+
"safari": "10",
|
| 699 |
+
"node": "6.5",
|
| 700 |
+
"deno": "1",
|
| 701 |
+
"ios": "10",
|
| 702 |
+
"samsung": "5",
|
| 703 |
+
"opera_mobile": "41",
|
| 704 |
+
"electron": "1.2"
|
| 705 |
+
},
|
| 706 |
+
"transform-block-scoping": {
|
| 707 |
+
"chrome": "50",
|
| 708 |
+
"opera": "37",
|
| 709 |
+
"edge": "14",
|
| 710 |
+
"firefox": "53",
|
| 711 |
+
"safari": "11",
|
| 712 |
+
"node": "6",
|
| 713 |
+
"deno": "1",
|
| 714 |
+
"ios": "11",
|
| 715 |
+
"samsung": "5",
|
| 716 |
+
"opera_mobile": "37",
|
| 717 |
+
"electron": "1.1"
|
| 718 |
+
},
|
| 719 |
+
"transform-typeof-symbol": {
|
| 720 |
+
"chrome": "48",
|
| 721 |
+
"opera": "35",
|
| 722 |
+
"edge": "12",
|
| 723 |
+
"firefox": "36",
|
| 724 |
+
"safari": "9",
|
| 725 |
+
"node": "6",
|
| 726 |
+
"deno": "1",
|
| 727 |
+
"ios": "9",
|
| 728 |
+
"samsung": "5",
|
| 729 |
+
"rhino": "1.8",
|
| 730 |
+
"opera_mobile": "35",
|
| 731 |
+
"electron": "0.37"
|
| 732 |
+
},
|
| 733 |
+
"transform-new-target": {
|
| 734 |
+
"chrome": "46",
|
| 735 |
+
"opera": "33",
|
| 736 |
+
"edge": "14",
|
| 737 |
+
"firefox": "41",
|
| 738 |
+
"safari": "10",
|
| 739 |
+
"node": "5",
|
| 740 |
+
"deno": "1",
|
| 741 |
+
"ios": "10",
|
| 742 |
+
"samsung": "5",
|
| 743 |
+
"opera_mobile": "33",
|
| 744 |
+
"electron": "0.36"
|
| 745 |
+
},
|
| 746 |
+
"transform-regenerator": {
|
| 747 |
+
"chrome": "50",
|
| 748 |
+
"opera": "37",
|
| 749 |
+
"edge": "13",
|
| 750 |
+
"firefox": "53",
|
| 751 |
+
"safari": "10",
|
| 752 |
+
"node": "6",
|
| 753 |
+
"deno": "1",
|
| 754 |
+
"ios": "10",
|
| 755 |
+
"samsung": "5",
|
| 756 |
+
"opera_mobile": "37",
|
| 757 |
+
"electron": "1.1"
|
| 758 |
+
},
|
| 759 |
+
"transform-member-expression-literals": {
|
| 760 |
+
"chrome": "7",
|
| 761 |
+
"opera": "12",
|
| 762 |
+
"edge": "12",
|
| 763 |
+
"firefox": "2",
|
| 764 |
+
"safari": "5.1",
|
| 765 |
+
"node": "0.4",
|
| 766 |
+
"deno": "1",
|
| 767 |
+
"ie": "9",
|
| 768 |
+
"android": "4",
|
| 769 |
+
"ios": "6",
|
| 770 |
+
"phantom": "1.9",
|
| 771 |
+
"samsung": "1",
|
| 772 |
+
"rhino": "1.7.13",
|
| 773 |
+
"opera_mobile": "12",
|
| 774 |
+
"electron": "0.20"
|
| 775 |
+
},
|
| 776 |
+
"transform-property-literals": {
|
| 777 |
+
"chrome": "7",
|
| 778 |
+
"opera": "12",
|
| 779 |
+
"edge": "12",
|
| 780 |
+
"firefox": "2",
|
| 781 |
+
"safari": "5.1",
|
| 782 |
+
"node": "0.4",
|
| 783 |
+
"deno": "1",
|
| 784 |
+
"ie": "9",
|
| 785 |
+
"android": "4",
|
| 786 |
+
"ios": "6",
|
| 787 |
+
"phantom": "1.9",
|
| 788 |
+
"samsung": "1",
|
| 789 |
+
"rhino": "1.7.13",
|
| 790 |
+
"opera_mobile": "12",
|
| 791 |
+
"electron": "0.20"
|
| 792 |
+
},
|
| 793 |
+
"transform-reserved-words": {
|
| 794 |
+
"chrome": "13",
|
| 795 |
+
"opera": "10.50",
|
| 796 |
+
"edge": "12",
|
| 797 |
+
"firefox": "2",
|
| 798 |
+
"safari": "3.1",
|
| 799 |
+
"node": "0.6",
|
| 800 |
+
"deno": "1",
|
| 801 |
+
"ie": "9",
|
| 802 |
+
"android": "4.4",
|
| 803 |
+
"ios": "6",
|
| 804 |
+
"phantom": "1.9",
|
| 805 |
+
"samsung": "1",
|
| 806 |
+
"rhino": "1.7.13",
|
| 807 |
+
"opera_mobile": "10.1",
|
| 808 |
+
"electron": "0.20"
|
| 809 |
+
},
|
| 810 |
+
"transform-export-namespace-from": {
|
| 811 |
+
"chrome": "72",
|
| 812 |
+
"deno": "1.0",
|
| 813 |
+
"edge": "79",
|
| 814 |
+
"firefox": "80",
|
| 815 |
+
"node": "13.2.0",
|
| 816 |
+
"opera": "60",
|
| 817 |
+
"opera_mobile": "51",
|
| 818 |
+
"safari": "14.1",
|
| 819 |
+
"ios": "14.5",
|
| 820 |
+
"samsung": "11.0",
|
| 821 |
+
"android": "72",
|
| 822 |
+
"electron": "5.0"
|
| 823 |
+
},
|
| 824 |
+
"proposal-export-namespace-from": {
|
| 825 |
+
"chrome": "72",
|
| 826 |
+
"deno": "1.0",
|
| 827 |
+
"edge": "79",
|
| 828 |
+
"firefox": "80",
|
| 829 |
+
"node": "13.2.0",
|
| 830 |
+
"opera": "60",
|
| 831 |
+
"opera_mobile": "51",
|
| 832 |
+
"safari": "14.1",
|
| 833 |
+
"ios": "14.5",
|
| 834 |
+
"samsung": "11.0",
|
| 835 |
+
"android": "72",
|
| 836 |
+
"electron": "5.0"
|
| 837 |
+
}
|
| 838 |
+
}
|
frontend/node_modules/@babel/compat-data/native-modules.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
| 2 |
+
module.exports = require("./data/native-modules.json");
|
frontend/node_modules/@babel/compat-data/overlapping-plugins.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
| 2 |
+
module.exports = require("./data/overlapping-plugins.json");
|
frontend/node_modules/@babel/compat-data/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "@babel/compat-data",
|
| 3 |
+
"version": "7.29.0",
|
| 4 |
+
"author": "The Babel Team (https://babel.dev/team)",
|
| 5 |
+
"license": "MIT",
|
| 6 |
+
"description": "The compat-data to determine required Babel plugins",
|
| 7 |
+
"repository": {
|
| 8 |
+
"type": "git",
|
| 9 |
+
"url": "https://github.com/babel/babel.git",
|
| 10 |
+
"directory": "packages/babel-compat-data"
|
| 11 |
+
},
|
| 12 |
+
"publishConfig": {
|
| 13 |
+
"access": "public"
|
| 14 |
+
},
|
| 15 |
+
"exports": {
|
| 16 |
+
"./plugins": "./plugins.js",
|
| 17 |
+
"./native-modules": "./native-modules.js",
|
| 18 |
+
"./corejs2-built-ins": "./corejs2-built-ins.js",
|
| 19 |
+
"./corejs3-shipped-proposals": "./corejs3-shipped-proposals.js",
|
| 20 |
+
"./overlapping-plugins": "./overlapping-plugins.js",
|
| 21 |
+
"./plugin-bugfixes": "./plugin-bugfixes.js"
|
| 22 |
+
},
|
| 23 |
+
"scripts": {
|
| 24 |
+
"build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.mjs && node ./scripts/build-modules-support.mjs && node ./scripts/build-bugfixes-targets.mjs"
|
| 25 |
+
},
|
| 26 |
+
"keywords": [
|
| 27 |
+
"babel",
|
| 28 |
+
"compat-table",
|
| 29 |
+
"compat-data"
|
| 30 |
+
],
|
| 31 |
+
"devDependencies": {
|
| 32 |
+
"@mdn/browser-compat-data": "^6.0.8",
|
| 33 |
+
"core-js-compat": "^3.48.0",
|
| 34 |
+
"electron-to-chromium": "^1.5.278"
|
| 35 |
+
},
|
| 36 |
+
"engines": {
|
| 37 |
+
"node": ">=6.9.0"
|
| 38 |
+
},
|
| 39 |
+
"type": "commonjs"
|
| 40 |
+
}
|
frontend/node_modules/@babel/compat-data/plugin-bugfixes.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
| 2 |
+
module.exports = require("./data/plugin-bugfixes.json");
|
frontend/node_modules/@babel/compat-data/plugins.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
| 2 |
+
module.exports = require("./data/plugins.json");
|
frontend/node_modules/@babel/core/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining
|
| 6 |
+
a copy of this software and associated documentation files (the
|
| 7 |
+
"Software"), to deal in the Software without restriction, including
|
| 8 |
+
without limitation the rights to use, copy, modify, merge, publish,
|
| 9 |
+
distribute, sublicense, and/or sell copies of the Software, and to
|
| 10 |
+
permit persons to whom the Software is furnished to do so, subject to
|
| 11 |
+
the following conditions:
|
| 12 |
+
|
| 13 |
+
The above copyright notice and this permission notice shall be
|
| 14 |
+
included in all copies or substantial portions of the Software.
|
| 15 |
+
|
| 16 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 17 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 18 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
| 19 |
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
| 20 |
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
| 21 |
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
| 22 |
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
frontend/node_modules/@babel/core/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# @babel/core
|
| 2 |
+
|
| 3 |
+
> Babel compiler core.
|
| 4 |
+
|
| 5 |
+
See our website [@babel/core](https://babeljs.io/docs/babel-core) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen) associated with this package.
|
| 6 |
+
|
| 7 |
+
## Install
|
| 8 |
+
|
| 9 |
+
Using npm:
|
| 10 |
+
|
| 11 |
+
```sh
|
| 12 |
+
npm install --save-dev @babel/core
|
| 13 |
+
```
|
| 14 |
+
|
| 15 |
+
or using yarn:
|
| 16 |
+
|
| 17 |
+
```sh
|
| 18 |
+
yarn add @babel/core --dev
|
| 19 |
+
```
|
frontend/node_modules/@babel/core/lib/config/cache-contexts.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"use strict";
|
| 2 |
+
|
| 3 |
+
0 && 0;
|
| 4 |
+
|
| 5 |
+
//# sourceMappingURL=cache-contexts.js.map
|
frontend/node_modules/@babel/core/lib/config/cache-contexts.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"names":[],"sources":["../../src/config/cache-contexts.ts"],"sourcesContent":["import type { ConfigContext } from \"./config-chain.ts\";\nimport type {\n CallerMetadata,\n TargetsListOrObject,\n} from \"./validation/options.ts\";\n\nexport type { ConfigContext as FullConfig };\n\nexport type FullPreset = {\n targets: TargetsListOrObject;\n} & ConfigContext;\nexport type FullPlugin = {\n assumptions: Record<string, boolean>;\n} & FullPreset;\n\n// Context not including filename since it is used in places that cannot\n// process 'ignore'/'only' and other filename-based logic.\nexport type SimpleConfig = {\n envName: string;\n caller: CallerMetadata | undefined;\n};\nexport type SimplePreset = {\n targets: TargetsListOrObject;\n} & SimpleConfig;\nexport type SimplePlugin = {\n assumptions: Record<string, boolean>;\n} & SimplePreset;\n"],"mappings":"","ignoreList":[]}
|
frontend/node_modules/@babel/core/lib/config/caching.js
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"use strict";
|
| 2 |
+
|
| 3 |
+
Object.defineProperty(exports, "__esModule", {
|
| 4 |
+
value: true
|
| 5 |
+
});
|
| 6 |
+
exports.assertSimpleType = assertSimpleType;
|
| 7 |
+
exports.makeStrongCache = makeStrongCache;
|
| 8 |
+
exports.makeStrongCacheSync = makeStrongCacheSync;
|
| 9 |
+
exports.makeWeakCache = makeWeakCache;
|
| 10 |
+
exports.makeWeakCacheSync = makeWeakCacheSync;
|
| 11 |
+
function _gensync() {
|
| 12 |
+
const data = require("gensync");
|
| 13 |
+
_gensync = function () {
|
| 14 |
+
return data;
|
| 15 |
+
};
|
| 16 |
+
return data;
|
| 17 |
+
}
|
| 18 |
+
var _async = require("../gensync-utils/async.js");
|
| 19 |
+
var _util = require("./util.js");
|
| 20 |
+
const synchronize = gen => {
|
| 21 |
+
return _gensync()(gen).sync;
|
| 22 |
+
};
|
| 23 |
+
function* genTrue() {
|
| 24 |
+
return true;
|
| 25 |
+
}
|
| 26 |
+
function makeWeakCache(handler) {
|
| 27 |
+
return makeCachedFunction(WeakMap, handler);
|
| 28 |
+
}
|
| 29 |
+
function makeWeakCacheSync(handler) {
|
| 30 |
+
return synchronize(makeWeakCache(handler));
|
| 31 |
+
}
|
| 32 |
+
function makeStrongCache(handler) {
|
| 33 |
+
return makeCachedFunction(Map, handler);
|
| 34 |
+
}
|
| 35 |
+
function makeStrongCacheSync(handler) {
|
| 36 |
+
return synchronize(makeStrongCache(handler));
|
| 37 |
+
}
|
| 38 |
+
function makeCachedFunction(CallCache, handler) {
|
| 39 |
+
const callCacheSync = new CallCache();
|
| 40 |
+
const callCacheAsync = new CallCache();
|
| 41 |
+
const futureCache = new CallCache();
|
| 42 |
+
return function* cachedFunction(arg, data) {
|
| 43 |
+
const asyncContext = yield* (0, _async.isAsync)();
|
| 44 |
+
const callCache = asyncContext ? callCacheAsync : callCacheSync;
|
| 45 |
+
const cached = yield* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data);
|
| 46 |
+
if (cached.valid) return cached.value;
|
| 47 |
+
const cache = new CacheConfigurator(data);
|
| 48 |
+
const handlerResult = handler(arg, cache);
|
| 49 |
+
let finishLock;
|
| 50 |
+
let value;
|
| 51 |
+
if ((0, _util.isIterableIterator)(handlerResult)) {
|
| 52 |
+
value = yield* (0, _async.onFirstPause)(handlerResult, () => {
|
| 53 |
+
finishLock = setupAsyncLocks(cache, futureCache, arg);
|
| 54 |
+
});
|
| 55 |
+
} else {
|
| 56 |
+
value = handlerResult;
|
| 57 |
+
}
|
| 58 |
+
updateFunctionCache(callCache, cache, arg, value);
|
| 59 |
+
if (finishLock) {
|
| 60 |
+
futureCache.delete(arg);
|
| 61 |
+
finishLock.release(value);
|
| 62 |
+
}
|
| 63 |
+
return value;
|
| 64 |
+
};
|
| 65 |
+
}
|
| 66 |
+
function* getCachedValue(cache, arg, data) {
|
| 67 |
+
const cachedValue = cache.get(arg);
|
| 68 |
+
if (cachedValue) {
|
| 69 |
+
for (const {
|
| 70 |
+
value,
|
| 71 |
+
valid
|
| 72 |
+
} of cachedValue) {
|
| 73 |
+
if (yield* valid(data)) return {
|
| 74 |
+
valid: true,
|
| 75 |
+
value
|
| 76 |
+
};
|
| 77 |
+
}
|
| 78 |
+
}
|
| 79 |
+
return {
|
| 80 |
+
valid: false,
|
| 81 |
+
value: null
|
| 82 |
+
};
|
| 83 |
+
}
|
| 84 |
+
function* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) {
|
| 85 |
+
const cached = yield* getCachedValue(callCache, arg, data);
|
| 86 |
+
if (cached.valid) {
|
| 87 |
+
return cached;
|
| 88 |
+
}
|
| 89 |
+
if (asyncContext) {
|
| 90 |
+
const cached = yield* getCachedValue(futureCache, arg, data);
|
| 91 |
+
if (cached.valid) {
|
| 92 |
+
const value = yield* (0, _async.waitFor)(cached.value.promise);
|
| 93 |
+
return {
|
| 94 |
+
valid: true,
|
| 95 |
+
value
|
| 96 |
+
};
|
| 97 |
+
}
|
| 98 |
+
}
|
| 99 |
+
return {
|
| 100 |
+
valid: false,
|
| 101 |
+
value: null
|
| 102 |
+
};
|
| 103 |
+
}
|
| 104 |
+
function setupAsyncLocks(config, futureCache, arg) {
|
| 105 |
+
const finishLock = new Lock();
|
| 106 |
+
updateFunctionCache(futureCache, config, arg, finishLock);
|
| 107 |
+
return finishLock;
|
| 108 |
+
}
|
| 109 |
+
function updateFunctionCache(cache, config, arg, value) {
|
| 110 |
+
if (!config.configured()) config.forever();
|
| 111 |
+
let cachedValue = cache.get(arg);
|
| 112 |
+
config.deactivate();
|
| 113 |
+
switch (config.mode()) {
|
| 114 |
+
case "forever":
|
| 115 |
+
cachedValue = [{
|
| 116 |
+
value,
|
| 117 |
+
valid: genTrue
|
| 118 |
+
}];
|
| 119 |
+
cache.set(arg, cachedValue);
|
| 120 |
+
break;
|
| 121 |
+
case "invalidate":
|
| 122 |
+
cachedValue = [{
|
| 123 |
+
value,
|
| 124 |
+
valid: config.validator()
|
| 125 |
+
}];
|
| 126 |
+
cache.set(arg, cachedValue);
|
| 127 |
+
break;
|
| 128 |
+
case "valid":
|
| 129 |
+
if (cachedValue) {
|
| 130 |
+
cachedValue.push({
|
| 131 |
+
value,
|
| 132 |
+
valid: config.validator()
|
| 133 |
+
});
|
| 134 |
+
} else {
|
| 135 |
+
cachedValue = [{
|
| 136 |
+
value,
|
| 137 |
+
valid: config.validator()
|
| 138 |
+
}];
|
| 139 |
+
cache.set(arg, cachedValue);
|
| 140 |
+
}
|
| 141 |
+
}
|
| 142 |
+
}
|
| 143 |
+
class CacheConfigurator {
|
| 144 |
+
constructor(data) {
|
| 145 |
+
this._active = true;
|
| 146 |
+
this._never = false;
|
| 147 |
+
this._forever = false;
|
| 148 |
+
this._invalidate = false;
|
| 149 |
+
this._configured = false;
|
| 150 |
+
this._pairs = [];
|
| 151 |
+
this._data = void 0;
|
| 152 |
+
this._data = data;
|
| 153 |
+
}
|
| 154 |
+
simple() {
|
| 155 |
+
return makeSimpleConfigurator(this);
|
| 156 |
+
}
|
| 157 |
+
mode() {
|
| 158 |
+
if (this._never) return "never";
|
| 159 |
+
if (this._forever) return "forever";
|
| 160 |
+
if (this._invalidate) return "invalidate";
|
| 161 |
+
return "valid";
|
| 162 |
+
}
|
| 163 |
+
forever() {
|
| 164 |
+
if (!this._active) {
|
| 165 |
+
throw new Error("Cannot change caching after evaluation has completed.");
|
| 166 |
+
}
|
| 167 |
+
if (this._never) {
|
| 168 |
+
throw new Error("Caching has already been configured with .never()");
|
| 169 |
+
}
|
| 170 |
+
this._forever = true;
|
| 171 |
+
this._configured = true;
|
| 172 |
+
}
|
| 173 |
+
never() {
|
| 174 |
+
if (!this._active) {
|
| 175 |
+
throw new Error("Cannot change caching after evaluation has completed.");
|
| 176 |
+
}
|
| 177 |
+
if (this._forever) {
|
| 178 |
+
throw new Error("Caching has already been configured with .forever()");
|
| 179 |
+
}
|
| 180 |
+
this._never = true;
|
| 181 |
+
this._configured = true;
|
| 182 |
+
}
|
| 183 |
+
using(handler) {
|
| 184 |
+
if (!this._active) {
|
| 185 |
+
throw new Error("Cannot change caching after evaluation has completed.");
|
| 186 |
+
}
|
| 187 |
+
if (this._never || this._forever) {
|
| 188 |
+
throw new Error("Caching has already been configured with .never or .forever()");
|
| 189 |
+
}
|
| 190 |
+
this._configured = true;
|
| 191 |
+
const key = handler(this._data);
|
| 192 |
+
const fn = (0, _async.maybeAsync)(handler, `You appear to be using an async cache handler, but Babel has been called synchronously`);
|
| 193 |
+
if ((0, _async.isThenable)(key)) {
|
| 194 |
+
return key.then(key => {
|
| 195 |
+
this._pairs.push([key, fn]);
|
| 196 |
+
return key;
|
| 197 |
+
});
|
| 198 |
+
}
|
| 199 |
+
this._pairs.push([key, fn]);
|
| 200 |
+
return key;
|
| 201 |
+
}
|
| 202 |
+
invalidate(handler) {
|
| 203 |
+
this._invalidate = true;
|
| 204 |
+
return this.using(handler);
|
| 205 |
+
}
|
| 206 |
+
validator() {
|
| 207 |
+
const pairs = this._pairs;
|
| 208 |
+
return function* (data) {
|
| 209 |
+
for (const [key, fn] of pairs) {
|
| 210 |
+
if (key !== (yield* fn(data))) return false;
|
| 211 |
+
}
|
| 212 |
+
return true;
|
| 213 |
+
};
|
| 214 |
+
}
|
| 215 |
+
deactivate() {
|
| 216 |
+
this._active = false;
|
| 217 |
+
}
|
| 218 |
+
configured() {
|
| 219 |
+
return this._configured;
|
| 220 |
+
}
|
| 221 |
+
}
|
| 222 |
+
function makeSimpleConfigurator(cache) {
|
| 223 |
+
function cacheFn(val) {
|
| 224 |
+
if (typeof val === "boolean") {
|
| 225 |
+
if (val) cache.forever();else cache.never();
|
| 226 |
+
return;
|
| 227 |
+
}
|
| 228 |
+
return cache.using(() => assertSimpleType(val()));
|
| 229 |
+
}
|
| 230 |
+
cacheFn.forever = () => cache.forever();
|
| 231 |
+
cacheFn.never = () => cache.never();
|
| 232 |
+
cacheFn.using = cb => cache.using(() => assertSimpleType(cb()));
|
| 233 |
+
cacheFn.invalidate = cb => cache.invalidate(() => assertSimpleType(cb()));
|
| 234 |
+
return cacheFn;
|
| 235 |
+
}
|
| 236 |
+
function assertSimpleType(value) {
|
| 237 |
+
if ((0, _async.isThenable)(value)) {
|
| 238 |
+
throw new Error(`You appear to be using an async cache handler, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously handle your caching logic.`);
|
| 239 |
+
}
|
| 240 |
+
if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") {
|
| 241 |
+
throw new Error("Cache keys must be either string, boolean, number, null, or undefined.");
|
| 242 |
+
}
|
| 243 |
+
return value;
|
| 244 |
+
}
|
| 245 |
+
class Lock {
|
| 246 |
+
constructor() {
|
| 247 |
+
this.released = false;
|
| 248 |
+
this.promise = void 0;
|
| 249 |
+
this._resolve = void 0;
|
| 250 |
+
this.promise = new Promise(resolve => {
|
| 251 |
+
this._resolve = resolve;
|
| 252 |
+
});
|
| 253 |
+
}
|
| 254 |
+
release(value) {
|
| 255 |
+
this.released = true;
|
| 256 |
+
this._resolve(value);
|
| 257 |
+
}
|
| 258 |
+
}
|
| 259 |
+
0 && 0;
|
| 260 |
+
|
| 261 |
+
//# sourceMappingURL=caching.js.map
|
frontend/node_modules/@babel/core/lib/config/caching.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"names":["_gensync","data","require","_async","_util","synchronize","gen","gensync","sync","genTrue","makeWeakCache","handler","makeCachedFunction","WeakMap","makeWeakCacheSync","makeStrongCache","Map","makeStrongCacheSync","CallCache","callCacheSync","callCacheAsync","futureCache","cachedFunction","arg","asyncContext","isAsync","callCache","cached","getCachedValueOrWait","valid","value","cache","CacheConfigurator","handlerResult","finishLock","isIterableIterator","onFirstPause","setupAsyncLocks","updateFunctionCache","delete","release","getCachedValue","cachedValue","get","waitFor","promise","config","Lock","configured","forever","deactivate","mode","set","validator","push","constructor","_active","_never","_forever","_invalidate","_configured","_pairs","_data","simple","makeSimpleConfigurator","Error","never","using","key","fn","maybeAsync","isThenable","then","invalidate","pairs","cacheFn","val","assertSimpleType","cb","released","_resolve","Promise","resolve"],"sources":["../../src/config/caching.ts"],"sourcesContent":["import gensync from \"gensync\";\nimport type { Handler } from \"gensync\";\nimport {\n maybeAsync,\n isAsync,\n onFirstPause,\n waitFor,\n isThenable,\n} from \"../gensync-utils/async.ts\";\nimport { isIterableIterator } from \"./util.ts\";\n\nexport type { CacheConfigurator };\n\nexport type SimpleCacheConfigurator = {\n (forever: boolean): void;\n <T extends SimpleType>(handler: () => T): T;\n\n forever: () => void;\n never: () => void;\n using: <T extends SimpleType>(handler: () => T) => T;\n invalidate: <T extends SimpleType>(handler: () => T) => T;\n};\n\nexport type CacheEntry<ResultT, SideChannel> = {\n value: ResultT;\n valid: (channel: SideChannel) => Handler<boolean>;\n}[];\n\nconst synchronize = <ArgsT extends unknown[], ResultT>(\n gen: (...args: ArgsT) => Handler<ResultT>,\n): ((...args: ArgsT) => ResultT) => {\n return gensync(gen).sync;\n};\n\n// eslint-disable-next-line require-yield\nfunction* genTrue() {\n return true;\n}\n\nexport function makeWeakCache<ArgT extends object, ResultT, SideChannel>(\n handler: (\n arg: ArgT,\n cache: CacheConfigurator<SideChannel>,\n ) => Handler<ResultT> | ResultT,\n): (arg: ArgT, data: SideChannel) => Handler<ResultT> {\n return makeCachedFunction<ArgT, ResultT, SideChannel>(WeakMap, handler);\n}\n\nexport function makeWeakCacheSync<ArgT extends object, ResultT, SideChannel>(\n handler: (arg: ArgT, cache?: CacheConfigurator<SideChannel>) => ResultT,\n): (arg: ArgT, data?: SideChannel) => ResultT {\n return synchronize<[ArgT, SideChannel], ResultT>(\n makeWeakCache<ArgT, ResultT, SideChannel>(handler),\n );\n}\n\nexport function makeStrongCache<ArgT, ResultT, SideChannel>(\n handler: (\n arg: ArgT,\n cache: CacheConfigurator<SideChannel>,\n ) => Handler<ResultT> | ResultT,\n): (arg: ArgT, data: SideChannel) => Handler<ResultT> {\n return makeCachedFunction<ArgT, ResultT, SideChannel>(Map, handler);\n}\n\nexport function makeStrongCacheSync<ArgT, ResultT, SideChannel>(\n handler: (arg: ArgT, cache?: CacheConfigurator<SideChannel>) => ResultT,\n): (arg: ArgT, data?: SideChannel) => ResultT {\n return synchronize<[ArgT, SideChannel], ResultT>(\n makeStrongCache<ArgT, ResultT, SideChannel>(handler),\n );\n}\n\n/* NOTE: Part of the logic explained in this comment is explained in the\n * getCachedValueOrWait and setupAsyncLocks functions.\n *\n * > There are only two hard things in Computer Science: cache invalidation and naming things.\n * > -- Phil Karlton\n *\n * I don't know if Phil was also thinking about handling a cache whose invalidation function is\n * defined asynchronously is considered, but it is REALLY hard to do correctly.\n *\n * The implemented logic (only when gensync is run asynchronously) is the following:\n * 1. If there is a valid cache associated to the current \"arg\" parameter,\n * a. RETURN the cached value\n * 3. If there is a FinishLock associated to the current \"arg\" parameter representing a valid cache,\n * a. Wait for that lock to be released\n * b. RETURN the value associated with that lock\n * 5. Start executing the function to be cached\n * a. If it pauses on a promise, then\n * i. Let FinishLock be a new lock\n * ii. Store FinishLock as associated to the current \"arg\" parameter\n * iii. Wait for the function to finish executing\n * iv. Release FinishLock\n * v. Send the function result to anyone waiting on FinishLock\n * 6. Store the result in the cache\n * 7. RETURN the result\n */\nfunction makeCachedFunction<ArgT, ResultT, SideChannel>(\n CallCache: new <Cached>() => CacheMap<ArgT, Cached, SideChannel>,\n handler: (\n arg: ArgT,\n cache: CacheConfigurator<SideChannel>,\n ) => Handler<ResultT> | ResultT,\n): (arg: ArgT, data: SideChannel) => Handler<ResultT> {\n const callCacheSync = new CallCache<ResultT>();\n const callCacheAsync = new CallCache<ResultT>();\n const futureCache = new CallCache<Lock<ResultT>>();\n\n return function* cachedFunction(arg: ArgT, data: SideChannel) {\n const asyncContext = yield* isAsync();\n const callCache = asyncContext ? callCacheAsync : callCacheSync;\n\n const cached = yield* getCachedValueOrWait<ArgT, ResultT, SideChannel>(\n asyncContext,\n callCache,\n futureCache,\n arg,\n data,\n );\n if (cached.valid) return cached.value;\n\n const cache = new CacheConfigurator(data);\n\n const handlerResult: Handler<ResultT> | ResultT = handler(arg, cache);\n\n let finishLock: Lock<ResultT>;\n let value: ResultT;\n\n if (isIterableIterator(handlerResult)) {\n value = yield* onFirstPause(handlerResult, () => {\n finishLock = setupAsyncLocks(cache, futureCache, arg);\n });\n } else {\n value = handlerResult;\n }\n\n updateFunctionCache(callCache, cache, arg, value);\n\n if (finishLock) {\n futureCache.delete(arg);\n finishLock.release(value);\n }\n\n return value;\n };\n}\n\ntype CacheMap<ArgT, ResultT, SideChannel> =\n | Map<ArgT, CacheEntry<ResultT, SideChannel>>\n // @ts-expect-error todo(flow->ts): add `extends object` constraint to ArgT\n | WeakMap<ArgT, CacheEntry<ResultT, SideChannel>>;\n\nfunction* getCachedValue<ArgT, ResultT, SideChannel>(\n cache: CacheMap<ArgT, ResultT, SideChannel>,\n arg: ArgT,\n data: SideChannel,\n): Handler<{ valid: true; value: ResultT } | { valid: false; value: null }> {\n const cachedValue: CacheEntry<ResultT, SideChannel> | void = cache.get(arg);\n\n if (cachedValue) {\n for (const { value, valid } of cachedValue) {\n if (yield* valid(data)) return { valid: true, value };\n }\n }\n\n return { valid: false, value: null };\n}\n\nfunction* getCachedValueOrWait<ArgT, ResultT, SideChannel>(\n asyncContext: boolean,\n callCache: CacheMap<ArgT, ResultT, SideChannel>,\n futureCache: CacheMap<ArgT, Lock<ResultT>, SideChannel>,\n arg: ArgT,\n data: SideChannel,\n): Handler<{ valid: true; value: ResultT } | { valid: false; value: null }> {\n const cached = yield* getCachedValue(callCache, arg, data);\n if (cached.valid) {\n return cached;\n }\n\n if (asyncContext) {\n const cached = yield* getCachedValue(futureCache, arg, data);\n if (cached.valid) {\n const value = yield* waitFor<ResultT>(cached.value.promise);\n return { valid: true, value };\n }\n }\n\n return { valid: false, value: null };\n}\n\nfunction setupAsyncLocks<ArgT, ResultT, SideChannel>(\n config: CacheConfigurator<SideChannel>,\n futureCache: CacheMap<ArgT, Lock<ResultT>, SideChannel>,\n arg: ArgT,\n): Lock<ResultT> {\n const finishLock = new Lock<ResultT>();\n\n updateFunctionCache(futureCache, config, arg, finishLock);\n\n return finishLock;\n}\n\nfunction updateFunctionCache<\n ArgT,\n ResultT,\n SideChannel,\n Cache extends CacheMap<ArgT, ResultT, SideChannel>,\n>(\n cache: Cache,\n config: CacheConfigurator<SideChannel>,\n arg: ArgT,\n value: ResultT,\n) {\n if (!config.configured()) config.forever();\n\n let cachedValue: CacheEntry<ResultT, SideChannel> | void = cache.get(arg);\n\n config.deactivate();\n\n switch (config.mode()) {\n case \"forever\":\n cachedValue = [{ value, valid: genTrue }];\n cache.set(arg, cachedValue);\n break;\n case \"invalidate\":\n cachedValue = [{ value, valid: config.validator() }];\n cache.set(arg, cachedValue);\n break;\n case \"valid\":\n if (cachedValue) {\n cachedValue.push({ value, valid: config.validator() });\n } else {\n cachedValue = [{ value, valid: config.validator() }];\n cache.set(arg, cachedValue);\n }\n }\n}\n\nclass CacheConfigurator<SideChannel = void> {\n _active: boolean = true;\n _never: boolean = false;\n _forever: boolean = false;\n _invalidate: boolean = false;\n\n _configured: boolean = false;\n\n _pairs: [\n cachedValue: unknown,\n handler: (data: SideChannel) => Handler<unknown>,\n ][] = [];\n\n _data: SideChannel;\n\n constructor(data: SideChannel) {\n this._data = data;\n }\n\n simple() {\n return makeSimpleConfigurator(this);\n }\n\n mode() {\n if (this._never) return \"never\";\n if (this._forever) return \"forever\";\n if (this._invalidate) return \"invalidate\";\n return \"valid\";\n }\n\n forever() {\n if (!this._active) {\n throw new Error(\"Cannot change caching after evaluation has completed.\");\n }\n if (this._never) {\n throw new Error(\"Caching has already been configured with .never()\");\n }\n this._forever = true;\n this._configured = true;\n }\n\n never() {\n if (!this._active) {\n throw new Error(\"Cannot change caching after evaluation has completed.\");\n }\n if (this._forever) {\n throw new Error(\"Caching has already been configured with .forever()\");\n }\n this._never = true;\n this._configured = true;\n }\n\n using<T>(handler: (data: SideChannel) => T): T {\n if (!this._active) {\n throw new Error(\"Cannot change caching after evaluation has completed.\");\n }\n if (this._never || this._forever) {\n throw new Error(\n \"Caching has already been configured with .never or .forever()\",\n );\n }\n this._configured = true;\n\n const key = handler(this._data);\n\n const fn = maybeAsync(\n handler,\n `You appear to be using an async cache handler, but Babel has been called synchronously`,\n );\n\n if (isThenable(key)) {\n // @ts-expect-error todo(flow->ts): improve function return type annotation\n return key.then((key: unknown) => {\n this._pairs.push([key, fn]);\n return key;\n });\n }\n\n this._pairs.push([key, fn]);\n return key;\n }\n\n invalidate<T>(handler: (data: SideChannel) => T): T {\n this._invalidate = true;\n return this.using(handler);\n }\n\n validator(): (data: SideChannel) => Handler<boolean> {\n const pairs = this._pairs;\n return function* (data: SideChannel) {\n for (const [key, fn] of pairs) {\n if (key !== (yield* fn(data))) return false;\n }\n return true;\n };\n }\n\n deactivate() {\n this._active = false;\n }\n\n configured() {\n return this._configured;\n }\n}\n\nfunction makeSimpleConfigurator(\n cache: CacheConfigurator<any>,\n): SimpleCacheConfigurator {\n function cacheFn(val: any) {\n if (typeof val === \"boolean\") {\n if (val) cache.forever();\n else cache.never();\n return;\n }\n\n return cache.using(() => assertSimpleType(val()));\n }\n cacheFn.forever = () => cache.forever();\n cacheFn.never = () => cache.never();\n cacheFn.using = (cb: () => SimpleType) =>\n cache.using(() => assertSimpleType(cb()));\n cacheFn.invalidate = (cb: () => SimpleType) =>\n cache.invalidate(() => assertSimpleType(cb()));\n\n return cacheFn as any;\n}\n\n// Types are limited here so that in the future these values can be used\n// as part of Babel's caching logic.\nexport type SimpleType =\n | string\n | boolean\n | number\n | null\n | void\n | Promise<SimpleType>;\nexport function assertSimpleType(value: unknown): SimpleType {\n if (isThenable(value)) {\n throw new Error(\n `You appear to be using an async cache handler, ` +\n `which your current version of Babel does not support. ` +\n `We may add support for this in the future, ` +\n `but if you're on the most recent version of @babel/core and still ` +\n `seeing this error, then you'll need to synchronously handle your caching logic.`,\n );\n }\n\n if (\n value != null &&\n typeof value !== \"string\" &&\n typeof value !== \"boolean\" &&\n typeof value !== \"number\"\n ) {\n throw new Error(\n \"Cache keys must be either string, boolean, number, null, or undefined.\",\n );\n }\n // @ts-expect-error Type 'unknown' is not assignable to type 'SimpleType'. This can be removed\n // when strictNullCheck is enabled\n return value;\n}\n\nclass Lock<T> {\n released: boolean = false;\n promise: Promise<T>;\n _resolve: (value: T) => void;\n\n constructor() {\n this.promise = new Promise(resolve => {\n this._resolve = resolve;\n });\n }\n\n release(value: T) {\n this.released = true;\n this._resolve(value);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
frontend/node_modules/@babel/core/lib/config/config-chain.js
ADDED
|
@@ -0,0 +1,469 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"use strict";
|
| 2 |
+
|
| 3 |
+
Object.defineProperty(exports, "__esModule", {
|
| 4 |
+
value: true
|
| 5 |
+
});
|
| 6 |
+
exports.buildPresetChain = buildPresetChain;
|
| 7 |
+
exports.buildPresetChainWalker = void 0;
|
| 8 |
+
exports.buildRootChain = buildRootChain;
|
| 9 |
+
function _path() {
|
| 10 |
+
const data = require("path");
|
| 11 |
+
_path = function () {
|
| 12 |
+
return data;
|
| 13 |
+
};
|
| 14 |
+
return data;
|
| 15 |
+
}
|
| 16 |
+
function _debug() {
|
| 17 |
+
const data = require("debug");
|
| 18 |
+
_debug = function () {
|
| 19 |
+
return data;
|
| 20 |
+
};
|
| 21 |
+
return data;
|
| 22 |
+
}
|
| 23 |
+
var _options = require("./validation/options.js");
|
| 24 |
+
var _patternToRegex = require("./pattern-to-regex.js");
|
| 25 |
+
var _printer = require("./printer.js");
|
| 26 |
+
var _rewriteStackTrace = require("../errors/rewrite-stack-trace.js");
|
| 27 |
+
var _configError = require("../errors/config-error.js");
|
| 28 |
+
var _index = require("./files/index.js");
|
| 29 |
+
var _caching = require("./caching.js");
|
| 30 |
+
var _configDescriptors = require("./config-descriptors.js");
|
| 31 |
+
const debug = _debug()("babel:config:config-chain");
|
| 32 |
+
function* buildPresetChain(arg, context) {
|
| 33 |
+
const chain = yield* buildPresetChainWalker(arg, context);
|
| 34 |
+
if (!chain) return null;
|
| 35 |
+
return {
|
| 36 |
+
plugins: dedupDescriptors(chain.plugins),
|
| 37 |
+
presets: dedupDescriptors(chain.presets),
|
| 38 |
+
options: chain.options.map(o => createConfigChainOptions(o)),
|
| 39 |
+
files: new Set()
|
| 40 |
+
};
|
| 41 |
+
}
|
| 42 |
+
const buildPresetChainWalker = exports.buildPresetChainWalker = makeChainWalker({
|
| 43 |
+
root: preset => loadPresetDescriptors(preset),
|
| 44 |
+
env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName),
|
| 45 |
+
overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index),
|
| 46 |
+
overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName),
|
| 47 |
+
createLogger: () => () => {}
|
| 48 |
+
});
|
| 49 |
+
const loadPresetDescriptors = (0, _caching.makeWeakCacheSync)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors));
|
| 50 |
+
const loadPresetEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName)));
|
| 51 |
+
const loadPresetOverridesDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index)));
|
| 52 |
+
const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName))));
|
| 53 |
+
function* buildRootChain(opts, context) {
|
| 54 |
+
let configReport, babelRcReport;
|
| 55 |
+
const programmaticLogger = new _printer.ConfigPrinter();
|
| 56 |
+
const programmaticChain = yield* loadProgrammaticChain({
|
| 57 |
+
options: opts,
|
| 58 |
+
dirname: context.cwd
|
| 59 |
+
}, context, undefined, programmaticLogger);
|
| 60 |
+
if (!programmaticChain) return null;
|
| 61 |
+
const programmaticReport = yield* programmaticLogger.output();
|
| 62 |
+
let configFile;
|
| 63 |
+
if (typeof opts.configFile === "string") {
|
| 64 |
+
configFile = yield* (0, _index.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller);
|
| 65 |
+
} else if (opts.configFile !== false) {
|
| 66 |
+
configFile = yield* (0, _index.findRootConfig)(context.root, context.envName, context.caller);
|
| 67 |
+
}
|
| 68 |
+
let {
|
| 69 |
+
babelrc,
|
| 70 |
+
babelrcRoots
|
| 71 |
+
} = opts;
|
| 72 |
+
let babelrcRootsDirectory = context.cwd;
|
| 73 |
+
const configFileChain = emptyChain();
|
| 74 |
+
const configFileLogger = new _printer.ConfigPrinter();
|
| 75 |
+
if (configFile) {
|
| 76 |
+
const validatedFile = validateConfigFile(configFile);
|
| 77 |
+
const result = yield* loadFileChain(validatedFile, context, undefined, configFileLogger);
|
| 78 |
+
if (!result) return null;
|
| 79 |
+
configReport = yield* configFileLogger.output();
|
| 80 |
+
if (babelrc === undefined) {
|
| 81 |
+
babelrc = validatedFile.options.babelrc;
|
| 82 |
+
}
|
| 83 |
+
if (babelrcRoots === undefined) {
|
| 84 |
+
babelrcRootsDirectory = validatedFile.dirname;
|
| 85 |
+
babelrcRoots = validatedFile.options.babelrcRoots;
|
| 86 |
+
}
|
| 87 |
+
mergeChain(configFileChain, result);
|
| 88 |
+
}
|
| 89 |
+
let ignoreFile, babelrcFile;
|
| 90 |
+
let isIgnored = false;
|
| 91 |
+
const fileChain = emptyChain();
|
| 92 |
+
if ((babelrc === true || babelrc === undefined) && typeof context.filename === "string") {
|
| 93 |
+
const pkgData = yield* (0, _index.findPackageData)(context.filename);
|
| 94 |
+
if (pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) {
|
| 95 |
+
({
|
| 96 |
+
ignore: ignoreFile,
|
| 97 |
+
config: babelrcFile
|
| 98 |
+
} = yield* (0, _index.findRelativeConfig)(pkgData, context.envName, context.caller));
|
| 99 |
+
if (ignoreFile) {
|
| 100 |
+
fileChain.files.add(ignoreFile.filepath);
|
| 101 |
+
}
|
| 102 |
+
if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) {
|
| 103 |
+
isIgnored = true;
|
| 104 |
+
}
|
| 105 |
+
if (babelrcFile && !isIgnored) {
|
| 106 |
+
const validatedFile = validateBabelrcFile(babelrcFile);
|
| 107 |
+
const babelrcLogger = new _printer.ConfigPrinter();
|
| 108 |
+
const result = yield* loadFileChain(validatedFile, context, undefined, babelrcLogger);
|
| 109 |
+
if (!result) {
|
| 110 |
+
isIgnored = true;
|
| 111 |
+
} else {
|
| 112 |
+
babelRcReport = yield* babelrcLogger.output();
|
| 113 |
+
mergeChain(fileChain, result);
|
| 114 |
+
}
|
| 115 |
+
}
|
| 116 |
+
if (babelrcFile && isIgnored) {
|
| 117 |
+
fileChain.files.add(babelrcFile.filepath);
|
| 118 |
+
}
|
| 119 |
+
}
|
| 120 |
+
}
|
| 121 |
+
if (context.showConfig) {
|
| 122 |
+
console.log(`Babel configs on "${context.filename}" (ascending priority):\n` + [configReport, babelRcReport, programmaticReport].filter(x => !!x).join("\n\n") + "\n-----End Babel configs-----");
|
| 123 |
+
}
|
| 124 |
+
const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain);
|
| 125 |
+
return {
|
| 126 |
+
plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),
|
| 127 |
+
presets: isIgnored ? [] : dedupDescriptors(chain.presets),
|
| 128 |
+
options: isIgnored ? [] : chain.options.map(o => createConfigChainOptions(o)),
|
| 129 |
+
fileHandling: isIgnored ? "ignored" : "transpile",
|
| 130 |
+
ignore: ignoreFile || undefined,
|
| 131 |
+
babelrc: babelrcFile || undefined,
|
| 132 |
+
config: configFile || undefined,
|
| 133 |
+
files: chain.files
|
| 134 |
+
};
|
| 135 |
+
}
|
| 136 |
+
function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) {
|
| 137 |
+
if (typeof babelrcRoots === "boolean") return babelrcRoots;
|
| 138 |
+
const absoluteRoot = context.root;
|
| 139 |
+
if (babelrcRoots === undefined) {
|
| 140 |
+
return pkgData.directories.includes(absoluteRoot);
|
| 141 |
+
}
|
| 142 |
+
let babelrcPatterns = babelrcRoots;
|
| 143 |
+
if (!Array.isArray(babelrcPatterns)) {
|
| 144 |
+
babelrcPatterns = [babelrcPatterns];
|
| 145 |
+
}
|
| 146 |
+
babelrcPatterns = babelrcPatterns.map(pat => {
|
| 147 |
+
return typeof pat === "string" ? _path().resolve(babelrcRootsDirectory, pat) : pat;
|
| 148 |
+
});
|
| 149 |
+
if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {
|
| 150 |
+
return pkgData.directories.includes(absoluteRoot);
|
| 151 |
+
}
|
| 152 |
+
return babelrcPatterns.some(pat => {
|
| 153 |
+
if (typeof pat === "string") {
|
| 154 |
+
pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory);
|
| 155 |
+
}
|
| 156 |
+
return pkgData.directories.some(directory => {
|
| 157 |
+
return matchPattern(pat, babelrcRootsDirectory, directory, context);
|
| 158 |
+
});
|
| 159 |
+
});
|
| 160 |
+
}
|
| 161 |
+
const validateConfigFile = (0, _caching.makeWeakCacheSync)(file => ({
|
| 162 |
+
filepath: file.filepath,
|
| 163 |
+
dirname: file.dirname,
|
| 164 |
+
options: (0, _options.validate)("configfile", file.options, file.filepath)
|
| 165 |
+
}));
|
| 166 |
+
const validateBabelrcFile = (0, _caching.makeWeakCacheSync)(file => ({
|
| 167 |
+
filepath: file.filepath,
|
| 168 |
+
dirname: file.dirname,
|
| 169 |
+
options: (0, _options.validate)("babelrcfile", file.options, file.filepath)
|
| 170 |
+
}));
|
| 171 |
+
const validateExtendFile = (0, _caching.makeWeakCacheSync)(file => ({
|
| 172 |
+
filepath: file.filepath,
|
| 173 |
+
dirname: file.dirname,
|
| 174 |
+
options: (0, _options.validate)("extendsfile", file.options, file.filepath)
|
| 175 |
+
}));
|
| 176 |
+
const loadProgrammaticChain = makeChainWalker({
|
| 177 |
+
root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors),
|
| 178 |
+
env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName),
|
| 179 |
+
overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index),
|
| 180 |
+
overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName),
|
| 181 |
+
createLogger: (input, context, baseLogger) => buildProgrammaticLogger(input, context, baseLogger)
|
| 182 |
+
});
|
| 183 |
+
const loadFileChainWalker = makeChainWalker({
|
| 184 |
+
root: file => loadFileDescriptors(file),
|
| 185 |
+
env: (file, envName) => loadFileEnvDescriptors(file)(envName),
|
| 186 |
+
overrides: (file, index) => loadFileOverridesDescriptors(file)(index),
|
| 187 |
+
overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName),
|
| 188 |
+
createLogger: (file, context, baseLogger) => buildFileLogger(file.filepath, context, baseLogger)
|
| 189 |
+
});
|
| 190 |
+
function* loadFileChain(input, context, files, baseLogger) {
|
| 191 |
+
const chain = yield* loadFileChainWalker(input, context, files, baseLogger);
|
| 192 |
+
chain == null || chain.files.add(input.filepath);
|
| 193 |
+
return chain;
|
| 194 |
+
}
|
| 195 |
+
const loadFileDescriptors = (0, _caching.makeWeakCacheSync)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors));
|
| 196 |
+
const loadFileEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName)));
|
| 197 |
+
const loadFileOverridesDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index)));
|
| 198 |
+
const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName))));
|
| 199 |
+
function buildFileLogger(filepath, context, baseLogger) {
|
| 200 |
+
if (!baseLogger) {
|
| 201 |
+
return () => {};
|
| 202 |
+
}
|
| 203 |
+
return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Config, {
|
| 204 |
+
filepath
|
| 205 |
+
});
|
| 206 |
+
}
|
| 207 |
+
function buildRootDescriptors({
|
| 208 |
+
dirname,
|
| 209 |
+
options
|
| 210 |
+
}, alias, descriptors) {
|
| 211 |
+
return descriptors(dirname, options, alias);
|
| 212 |
+
}
|
| 213 |
+
function buildProgrammaticLogger(_, context, baseLogger) {
|
| 214 |
+
var _context$caller;
|
| 215 |
+
if (!baseLogger) {
|
| 216 |
+
return () => {};
|
| 217 |
+
}
|
| 218 |
+
return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Programmatic, {
|
| 219 |
+
callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name
|
| 220 |
+
});
|
| 221 |
+
}
|
| 222 |
+
function buildEnvDescriptors({
|
| 223 |
+
dirname,
|
| 224 |
+
options
|
| 225 |
+
}, alias, descriptors, envName) {
|
| 226 |
+
var _options$env;
|
| 227 |
+
const opts = (_options$env = options.env) == null ? void 0 : _options$env[envName];
|
| 228 |
+
return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null;
|
| 229 |
+
}
|
| 230 |
+
function buildOverrideDescriptors({
|
| 231 |
+
dirname,
|
| 232 |
+
options
|
| 233 |
+
}, alias, descriptors, index) {
|
| 234 |
+
var _options$overrides;
|
| 235 |
+
const opts = (_options$overrides = options.overrides) == null ? void 0 : _options$overrides[index];
|
| 236 |
+
if (!opts) throw new Error("Assertion failure - missing override");
|
| 237 |
+
return descriptors(dirname, opts, `${alias}.overrides[${index}]`);
|
| 238 |
+
}
|
| 239 |
+
function buildOverrideEnvDescriptors({
|
| 240 |
+
dirname,
|
| 241 |
+
options
|
| 242 |
+
}, alias, descriptors, index, envName) {
|
| 243 |
+
var _options$overrides2, _override$env;
|
| 244 |
+
const override = (_options$overrides2 = options.overrides) == null ? void 0 : _options$overrides2[index];
|
| 245 |
+
if (!override) throw new Error("Assertion failure - missing override");
|
| 246 |
+
const opts = (_override$env = override.env) == null ? void 0 : _override$env[envName];
|
| 247 |
+
return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null;
|
| 248 |
+
}
|
| 249 |
+
function makeChainWalker({
|
| 250 |
+
root,
|
| 251 |
+
env,
|
| 252 |
+
overrides,
|
| 253 |
+
overridesEnv,
|
| 254 |
+
createLogger
|
| 255 |
+
}) {
|
| 256 |
+
return function* chainWalker(input, context, files = new Set(), baseLogger) {
|
| 257 |
+
const {
|
| 258 |
+
dirname
|
| 259 |
+
} = input;
|
| 260 |
+
const flattenedConfigs = [];
|
| 261 |
+
const rootOpts = root(input);
|
| 262 |
+
if (configIsApplicable(rootOpts, dirname, context, input.filepath)) {
|
| 263 |
+
flattenedConfigs.push({
|
| 264 |
+
config: rootOpts,
|
| 265 |
+
envName: undefined,
|
| 266 |
+
index: undefined
|
| 267 |
+
});
|
| 268 |
+
const envOpts = env(input, context.envName);
|
| 269 |
+
if (envOpts && configIsApplicable(envOpts, dirname, context, input.filepath)) {
|
| 270 |
+
flattenedConfigs.push({
|
| 271 |
+
config: envOpts,
|
| 272 |
+
envName: context.envName,
|
| 273 |
+
index: undefined
|
| 274 |
+
});
|
| 275 |
+
}
|
| 276 |
+
(rootOpts.options.overrides || []).forEach((_, index) => {
|
| 277 |
+
const overrideOps = overrides(input, index);
|
| 278 |
+
if (configIsApplicable(overrideOps, dirname, context, input.filepath)) {
|
| 279 |
+
flattenedConfigs.push({
|
| 280 |
+
config: overrideOps,
|
| 281 |
+
index,
|
| 282 |
+
envName: undefined
|
| 283 |
+
});
|
| 284 |
+
const overrideEnvOpts = overridesEnv(input, index, context.envName);
|
| 285 |
+
if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context, input.filepath)) {
|
| 286 |
+
flattenedConfigs.push({
|
| 287 |
+
config: overrideEnvOpts,
|
| 288 |
+
index,
|
| 289 |
+
envName: context.envName
|
| 290 |
+
});
|
| 291 |
+
}
|
| 292 |
+
}
|
| 293 |
+
});
|
| 294 |
+
}
|
| 295 |
+
if (flattenedConfigs.some(({
|
| 296 |
+
config: {
|
| 297 |
+
options: {
|
| 298 |
+
ignore,
|
| 299 |
+
only
|
| 300 |
+
}
|
| 301 |
+
}
|
| 302 |
+
}) => shouldIgnore(context, ignore, only, dirname))) {
|
| 303 |
+
return null;
|
| 304 |
+
}
|
| 305 |
+
const chain = emptyChain();
|
| 306 |
+
const logger = createLogger(input, context, baseLogger);
|
| 307 |
+
for (const {
|
| 308 |
+
config,
|
| 309 |
+
index,
|
| 310 |
+
envName
|
| 311 |
+
} of flattenedConfigs) {
|
| 312 |
+
if (!(yield* mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger))) {
|
| 313 |
+
return null;
|
| 314 |
+
}
|
| 315 |
+
logger(config, index, envName);
|
| 316 |
+
yield* mergeChainOpts(chain, config);
|
| 317 |
+
}
|
| 318 |
+
return chain;
|
| 319 |
+
};
|
| 320 |
+
}
|
| 321 |
+
function* mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) {
|
| 322 |
+
if (opts.extends === undefined) return true;
|
| 323 |
+
const file = yield* (0, _index.loadConfig)(opts.extends, dirname, context.envName, context.caller);
|
| 324 |
+
if (files.has(file)) {
|
| 325 |
+
throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n"));
|
| 326 |
+
}
|
| 327 |
+
files.add(file);
|
| 328 |
+
const fileChain = yield* loadFileChain(validateExtendFile(file), context, files, baseLogger);
|
| 329 |
+
files.delete(file);
|
| 330 |
+
if (!fileChain) return false;
|
| 331 |
+
mergeChain(chain, fileChain);
|
| 332 |
+
return true;
|
| 333 |
+
}
|
| 334 |
+
function mergeChain(target, source) {
|
| 335 |
+
target.options.push(...source.options);
|
| 336 |
+
target.plugins.push(...source.plugins);
|
| 337 |
+
target.presets.push(...source.presets);
|
| 338 |
+
for (const file of source.files) {
|
| 339 |
+
target.files.add(file);
|
| 340 |
+
}
|
| 341 |
+
return target;
|
| 342 |
+
}
|
| 343 |
+
function* mergeChainOpts(target, {
|
| 344 |
+
options,
|
| 345 |
+
plugins,
|
| 346 |
+
presets
|
| 347 |
+
}) {
|
| 348 |
+
target.options.push(options);
|
| 349 |
+
target.plugins.push(...(yield* plugins()));
|
| 350 |
+
target.presets.push(...(yield* presets()));
|
| 351 |
+
return target;
|
| 352 |
+
}
|
| 353 |
+
function emptyChain() {
|
| 354 |
+
return {
|
| 355 |
+
options: [],
|
| 356 |
+
presets: [],
|
| 357 |
+
plugins: [],
|
| 358 |
+
files: new Set()
|
| 359 |
+
};
|
| 360 |
+
}
|
| 361 |
+
function createConfigChainOptions(opts) {
|
| 362 |
+
const options = Object.assign({}, opts);
|
| 363 |
+
delete options.extends;
|
| 364 |
+
delete options.env;
|
| 365 |
+
delete options.overrides;
|
| 366 |
+
delete options.plugins;
|
| 367 |
+
delete options.presets;
|
| 368 |
+
delete options.passPerPreset;
|
| 369 |
+
delete options.ignore;
|
| 370 |
+
delete options.only;
|
| 371 |
+
delete options.test;
|
| 372 |
+
delete options.include;
|
| 373 |
+
delete options.exclude;
|
| 374 |
+
if (hasOwnProperty.call(options, "sourceMap")) {
|
| 375 |
+
options.sourceMaps = options.sourceMap;
|
| 376 |
+
delete options.sourceMap;
|
| 377 |
+
}
|
| 378 |
+
return options;
|
| 379 |
+
}
|
| 380 |
+
function dedupDescriptors(items) {
|
| 381 |
+
const map = new Map();
|
| 382 |
+
const descriptors = [];
|
| 383 |
+
for (const item of items) {
|
| 384 |
+
if (typeof item.value === "function") {
|
| 385 |
+
const fnKey = item.value;
|
| 386 |
+
let nameMap = map.get(fnKey);
|
| 387 |
+
if (!nameMap) {
|
| 388 |
+
nameMap = new Map();
|
| 389 |
+
map.set(fnKey, nameMap);
|
| 390 |
+
}
|
| 391 |
+
let desc = nameMap.get(item.name);
|
| 392 |
+
if (!desc) {
|
| 393 |
+
desc = {
|
| 394 |
+
value: item
|
| 395 |
+
};
|
| 396 |
+
descriptors.push(desc);
|
| 397 |
+
if (!item.ownPass) nameMap.set(item.name, desc);
|
| 398 |
+
} else {
|
| 399 |
+
desc.value = item;
|
| 400 |
+
}
|
| 401 |
+
} else {
|
| 402 |
+
descriptors.push({
|
| 403 |
+
value: item
|
| 404 |
+
});
|
| 405 |
+
}
|
| 406 |
+
}
|
| 407 |
+
return descriptors.reduce((acc, desc) => {
|
| 408 |
+
acc.push(desc.value);
|
| 409 |
+
return acc;
|
| 410 |
+
}, []);
|
| 411 |
+
}
|
| 412 |
+
function configIsApplicable({
|
| 413 |
+
options
|
| 414 |
+
}, dirname, context, configName) {
|
| 415 |
+
return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname, configName)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname, configName)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname, configName));
|
| 416 |
+
}
|
| 417 |
+
function configFieldIsApplicable(context, test, dirname, configName) {
|
| 418 |
+
const patterns = Array.isArray(test) ? test : [test];
|
| 419 |
+
return matchesPatterns(context, patterns, dirname, configName);
|
| 420 |
+
}
|
| 421 |
+
function ignoreListReplacer(_key, value) {
|
| 422 |
+
if (value instanceof RegExp) {
|
| 423 |
+
return String(value);
|
| 424 |
+
}
|
| 425 |
+
return value;
|
| 426 |
+
}
|
| 427 |
+
function shouldIgnore(context, ignore, only, dirname) {
|
| 428 |
+
if (ignore && matchesPatterns(context, ignore, dirname)) {
|
| 429 |
+
var _context$filename;
|
| 430 |
+
const message = `No config is applied to "${(_context$filename = context.filename) != null ? _context$filename : "(unknown)"}" because it matches one of \`ignore: ${JSON.stringify(ignore, ignoreListReplacer)}\` from "${dirname}"`;
|
| 431 |
+
debug(message);
|
| 432 |
+
if (context.showConfig) {
|
| 433 |
+
console.log(message);
|
| 434 |
+
}
|
| 435 |
+
return true;
|
| 436 |
+
}
|
| 437 |
+
if (only && !matchesPatterns(context, only, dirname)) {
|
| 438 |
+
var _context$filename2;
|
| 439 |
+
const message = `No config is applied to "${(_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)"}" because it fails to match one of \`only: ${JSON.stringify(only, ignoreListReplacer)}\` from "${dirname}"`;
|
| 440 |
+
debug(message);
|
| 441 |
+
if (context.showConfig) {
|
| 442 |
+
console.log(message);
|
| 443 |
+
}
|
| 444 |
+
return true;
|
| 445 |
+
}
|
| 446 |
+
return false;
|
| 447 |
+
}
|
| 448 |
+
function matchesPatterns(context, patterns, dirname, configName) {
|
| 449 |
+
return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context, configName));
|
| 450 |
+
}
|
| 451 |
+
function matchPattern(pattern, dirname, pathToTest, context, configName) {
|
| 452 |
+
if (typeof pattern === "function") {
|
| 453 |
+
return !!(0, _rewriteStackTrace.endHiddenCallStack)(pattern)(pathToTest, {
|
| 454 |
+
dirname,
|
| 455 |
+
envName: context.envName,
|
| 456 |
+
caller: context.caller
|
| 457 |
+
});
|
| 458 |
+
}
|
| 459 |
+
if (typeof pathToTest !== "string") {
|
| 460 |
+
throw new _configError.default(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`, configName);
|
| 461 |
+
}
|
| 462 |
+
if (typeof pattern === "string") {
|
| 463 |
+
pattern = (0, _patternToRegex.default)(pattern, dirname);
|
| 464 |
+
}
|
| 465 |
+
return pattern.test(pathToTest);
|
| 466 |
+
}
|
| 467 |
+
0 && 0;
|
| 468 |
+
|
| 469 |
+
//# sourceMappingURL=config-chain.js.map
|
frontend/node_modules/@babel/core/lib/config/config-chain.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"names":["_path","data","require","_debug","_options","_patternToRegex","_printer","_rewriteStackTrace","_configError","_index","_caching","_configDescriptors","debug","buildDebug","buildPresetChain","arg","context","chain","buildPresetChainWalker","plugins","dedupDescriptors","presets","options","map","o","createConfigChainOptions","files","Set","exports","makeChainWalker","root","preset","loadPresetDescriptors","env","envName","loadPresetEnvDescriptors","overrides","index","loadPresetOverridesDescriptors","overridesEnv","loadPresetOverridesEnvDescriptors","createLogger","makeWeakCacheSync","buildRootDescriptors","alias","createUncachedDescriptors","makeStrongCacheSync","buildEnvDescriptors","buildOverrideDescriptors","buildOverrideEnvDescriptors","buildRootChain","opts","configReport","babelRcReport","programmaticLogger","ConfigPrinter","programmaticChain","loadProgrammaticChain","dirname","cwd","undefined","programmaticReport","output","configFile","loadConfig","caller","findRootConfig","babelrc","babelrcRoots","babelrcRootsDirectory","configFileChain","emptyChain","configFileLogger","validatedFile","validateConfigFile","result","loadFileChain","mergeChain","ignoreFile","babelrcFile","isIgnored","fileChain","filename","pkgData","findPackageData","babelrcLoadEnabled","ignore","config","findRelativeConfig","add","filepath","shouldIgnore","validateBabelrcFile","babelrcLogger","showConfig","console","log","filter","x","join","fileHandling","absoluteRoot","directories","includes","babelrcPatterns","Array","isArray","pat","path","resolve","length","some","pathPatternToRegex","directory","matchPattern","file","validate","validateExtendFile","input","createCachedDescriptors","baseLogger","buildProgrammaticLogger","loadFileChainWalker","loadFileDescriptors","loadFileEnvDescriptors","loadFileOverridesDescriptors","loadFileOverridesEnvDescriptors","buildFileLogger","configure","ChainFormatter","Config","descriptors","_","_context$caller","Programmatic","callerName","name","_options$env","_options$overrides","Error","_options$overrides2","_override$env","override","chainWalker","flattenedConfigs","rootOpts","configIsApplicable","push","envOpts","forEach","overrideOps","overrideEnvOpts","only","logger","mergeExtendsChain","mergeChainOpts","extends","has","from","delete","target","source","Object","assign","passPerPreset","test","include","exclude","hasOwnProperty","call","sourceMaps","sourceMap","items","Map","item","value","fnKey","nameMap","get","set","desc","ownPass","reduce","acc","configName","configFieldIsApplicable","patterns","matchesPatterns","ignoreListReplacer","_key","RegExp","String","_context$filename","message","JSON","stringify","_context$filename2","pattern","pathToTest","endHiddenCallStack","ConfigError"],"sources":["../../src/config/config-chain.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport path from \"node:path\";\nimport buildDebug from \"debug\";\nimport type { Handler } from \"gensync\";\nimport { validate } from \"./validation/options.ts\";\nimport type {\n ConfigApplicableTest,\n BabelrcSearch,\n CallerMetadata,\n MatchItem,\n InputOptions,\n ConfigChainOptions,\n} from \"./validation/options.ts\";\nimport pathPatternToRegex from \"./pattern-to-regex.ts\";\nimport { ConfigPrinter, ChainFormatter } from \"./printer.ts\";\nimport type { ReadonlyDeepArray } from \"./helpers/deep-array.ts\";\n\nimport { endHiddenCallStack } from \"../errors/rewrite-stack-trace.ts\";\nimport ConfigError from \"../errors/config-error.ts\";\nimport type { PluginAPI, PresetAPI } from \"./helpers/config-api.ts\";\n\nconst debug = buildDebug(\"babel:config:config-chain\");\n\nimport {\n findPackageData,\n findRelativeConfig,\n findRootConfig,\n loadConfig,\n} from \"./files/index.ts\";\nimport type { ConfigFile, IgnoreFile, FilePackageData } from \"./files/index.ts\";\n\nimport { makeWeakCacheSync, makeStrongCacheSync } from \"./caching.ts\";\n\nimport {\n createCachedDescriptors,\n createUncachedDescriptors,\n} from \"./config-descriptors.ts\";\nimport type {\n UnloadedDescriptor,\n OptionsAndDescriptors,\n ValidatedFile,\n} from \"./config-descriptors.ts\";\n\nexport type ConfigChain = {\n plugins: UnloadedDescriptor<PluginAPI>[];\n presets: UnloadedDescriptor<PresetAPI>[];\n options: ConfigChainOptions[];\n files: Set<string>;\n};\n\nexport type PresetInstance = {\n options: InputOptions;\n alias: string;\n dirname: string;\n externalDependencies: ReadonlyDeepArray<string>;\n};\n\nexport type ConfigContext = {\n filename: string | undefined;\n cwd: string;\n root: string;\n envName: string;\n caller: CallerMetadata | undefined;\n showConfig: boolean;\n};\n\n/**\n * Build a config chain for a given preset.\n */\nexport function* buildPresetChain(\n arg: PresetInstance,\n context: any,\n): Handler<ConfigChain | null> {\n const chain = yield* buildPresetChainWalker(arg, context);\n if (!chain) return null;\n\n return {\n plugins: dedupDescriptors(chain.plugins),\n presets: dedupDescriptors(chain.presets),\n options: chain.options.map(o => createConfigChainOptions(o)),\n files: new Set(),\n };\n}\n\nexport const buildPresetChainWalker = makeChainWalker<PresetInstance>({\n root: preset => loadPresetDescriptors(preset),\n env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName),\n overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index),\n overridesEnv: (preset, index, envName) =>\n loadPresetOverridesEnvDescriptors(preset)(index)(envName),\n createLogger: () => () => {}, // Currently we don't support logging how preset is expanded\n});\nconst loadPresetDescriptors = makeWeakCacheSync((preset: PresetInstance) =>\n buildRootDescriptors(preset, preset.alias, createUncachedDescriptors),\n);\nconst loadPresetEnvDescriptors = makeWeakCacheSync((preset: PresetInstance) =>\n makeStrongCacheSync((envName: string) =>\n buildEnvDescriptors(\n preset,\n preset.alias,\n createUncachedDescriptors,\n envName,\n ),\n ),\n);\nconst loadPresetOverridesDescriptors = makeWeakCacheSync(\n (preset: PresetInstance) =>\n makeStrongCacheSync((index: number) =>\n buildOverrideDescriptors(\n preset,\n preset.alias,\n createUncachedDescriptors,\n index,\n ),\n ),\n);\nconst loadPresetOverridesEnvDescriptors = makeWeakCacheSync(\n (preset: PresetInstance) =>\n makeStrongCacheSync((index: number) =>\n makeStrongCacheSync((envName: string) =>\n buildOverrideEnvDescriptors(\n preset,\n preset.alias,\n createUncachedDescriptors,\n index,\n envName,\n ),\n ),\n ),\n);\n\nexport type FileHandling = \"transpile\" | \"ignored\" | \"unsupported\";\nexport type RootConfigChain = ConfigChain & {\n babelrc: ConfigFile | undefined;\n config: ConfigFile | undefined;\n ignore: IgnoreFile | undefined;\n fileHandling: FileHandling;\n files: Set<string>;\n};\n\n/**\n * Build a config chain for Babel's full root configuration.\n */\nexport function* buildRootChain(\n opts: InputOptions,\n context: ConfigContext,\n): Handler<RootConfigChain | null> {\n let configReport, babelRcReport;\n const programmaticLogger = new ConfigPrinter();\n const programmaticChain = yield* loadProgrammaticChain(\n {\n options: opts,\n dirname: context.cwd,\n },\n context,\n undefined,\n programmaticLogger,\n );\n if (!programmaticChain) return null;\n const programmaticReport = yield* programmaticLogger.output();\n\n let configFile;\n if (typeof opts.configFile === \"string\") {\n configFile = yield* loadConfig(\n opts.configFile,\n context.cwd,\n context.envName,\n context.caller,\n );\n } else if (opts.configFile !== false) {\n configFile = yield* findRootConfig(\n context.root,\n context.envName,\n context.caller,\n );\n }\n\n let { babelrc, babelrcRoots } = opts;\n let babelrcRootsDirectory = context.cwd;\n\n const configFileChain = emptyChain();\n const configFileLogger = new ConfigPrinter();\n if (configFile) {\n const validatedFile = validateConfigFile(configFile);\n const result = yield* loadFileChain(\n validatedFile,\n context,\n undefined,\n configFileLogger,\n );\n if (!result) return null;\n configReport = yield* configFileLogger.output();\n\n // Allow config files to toggle `.babelrc` resolution on and off and\n // specify where the roots are.\n if (babelrc === undefined) {\n babelrc = validatedFile.options.babelrc;\n }\n if (babelrcRoots === undefined) {\n babelrcRootsDirectory = validatedFile.dirname;\n babelrcRoots = validatedFile.options.babelrcRoots;\n }\n\n mergeChain(configFileChain, result);\n }\n\n let ignoreFile, babelrcFile;\n let isIgnored = false;\n const fileChain = emptyChain();\n // resolve all .babelrc files\n if (\n (babelrc === true || babelrc === undefined) &&\n typeof context.filename === \"string\"\n ) {\n const pkgData = yield* findPackageData(context.filename);\n\n if (\n pkgData &&\n babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)\n ) {\n ({ ignore: ignoreFile, config: babelrcFile } = yield* findRelativeConfig(\n pkgData,\n context.envName,\n context.caller,\n ));\n\n if (ignoreFile) {\n fileChain.files.add(ignoreFile.filepath);\n }\n\n if (\n ignoreFile &&\n shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)\n ) {\n isIgnored = true;\n }\n\n if (babelrcFile && !isIgnored) {\n const validatedFile = validateBabelrcFile(babelrcFile);\n const babelrcLogger = new ConfigPrinter();\n const result = yield* loadFileChain(\n validatedFile,\n context,\n undefined,\n babelrcLogger,\n );\n if (!result) {\n isIgnored = true;\n } else {\n babelRcReport = yield* babelrcLogger.output();\n mergeChain(fileChain, result);\n }\n }\n\n if (babelrcFile && isIgnored) {\n fileChain.files.add(babelrcFile.filepath);\n }\n }\n }\n\n if (context.showConfig) {\n console.log(\n `Babel configs on \"${context.filename}\" (ascending priority):\\n` +\n // print config by the order of ascending priority\n [configReport, babelRcReport, programmaticReport]\n .filter(x => !!x)\n .join(\"\\n\\n\") +\n \"\\n-----End Babel configs-----\",\n );\n }\n // Insert file chain in front so programmatic options have priority\n // over configuration file chain items.\n const chain = mergeChain(\n mergeChain(mergeChain(emptyChain(), configFileChain), fileChain),\n programmaticChain,\n );\n\n return {\n plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),\n presets: isIgnored ? [] : dedupDescriptors(chain.presets),\n options: isIgnored\n ? []\n : chain.options.map(o => createConfigChainOptions(o)),\n fileHandling: isIgnored ? \"ignored\" : \"transpile\",\n ignore: ignoreFile || undefined,\n babelrc: babelrcFile || undefined,\n config: configFile || undefined,\n files: chain.files,\n };\n}\n\nfunction babelrcLoadEnabled(\n context: ConfigContext,\n pkgData: FilePackageData,\n babelrcRoots: BabelrcSearch | undefined,\n babelrcRootsDirectory: string,\n): boolean {\n if (typeof babelrcRoots === \"boolean\") return babelrcRoots;\n\n const absoluteRoot = context.root;\n\n // Fast path to avoid having to match patterns if the babelrc is just\n // loading in the standard root directory.\n if (babelrcRoots === undefined) {\n return pkgData.directories.includes(absoluteRoot);\n }\n\n let babelrcPatterns = babelrcRoots;\n if (!Array.isArray(babelrcPatterns)) {\n babelrcPatterns = [babelrcPatterns];\n }\n babelrcPatterns = babelrcPatterns.map(pat => {\n return typeof pat === \"string\"\n ? path.resolve(babelrcRootsDirectory, pat)\n : pat;\n });\n\n // Fast path to avoid having to match patterns if the babelrc is just\n // loading in the standard root directory.\n if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {\n return pkgData.directories.includes(absoluteRoot);\n }\n\n return babelrcPatterns.some(pat => {\n if (typeof pat === \"string\") {\n pat = pathPatternToRegex(pat, babelrcRootsDirectory);\n }\n\n return pkgData.directories.some(directory => {\n return matchPattern(pat, babelrcRootsDirectory, directory, context);\n });\n });\n}\n\nconst validateConfigFile = makeWeakCacheSync(\n (file: ConfigFile): ValidatedFile => ({\n filepath: file.filepath,\n dirname: file.dirname,\n options: validate(\"configfile\", file.options, file.filepath),\n }),\n);\n\nconst validateBabelrcFile = makeWeakCacheSync(\n (file: ConfigFile): ValidatedFile => ({\n filepath: file.filepath,\n dirname: file.dirname,\n options: validate(\"babelrcfile\", file.options, file.filepath),\n }),\n);\n\nconst validateExtendFile = makeWeakCacheSync(\n (file: ConfigFile): ValidatedFile => ({\n filepath: file.filepath,\n dirname: file.dirname,\n options: validate(\"extendsfile\", file.options, file.filepath),\n }),\n);\n\n/**\n * Build a config chain for just the programmatic options passed into Babel.\n */\nconst loadProgrammaticChain = makeChainWalker({\n root: input => buildRootDescriptors(input, \"base\", createCachedDescriptors),\n env: (input, envName) =>\n buildEnvDescriptors(input, \"base\", createCachedDescriptors, envName),\n overrides: (input, index) =>\n buildOverrideDescriptors(input, \"base\", createCachedDescriptors, index),\n overridesEnv: (input, index, envName) =>\n buildOverrideEnvDescriptors(\n input,\n \"base\",\n createCachedDescriptors,\n index,\n envName,\n ),\n createLogger: (input, context, baseLogger) =>\n buildProgrammaticLogger(input, context, baseLogger),\n});\n\n/**\n * Build a config chain for a given file.\n */\nconst loadFileChainWalker = makeChainWalker<ValidatedFile>({\n root: file => loadFileDescriptors(file),\n env: (file, envName) => loadFileEnvDescriptors(file)(envName),\n overrides: (file, index) => loadFileOverridesDescriptors(file)(index),\n overridesEnv: (file, index, envName) =>\n loadFileOverridesEnvDescriptors(file)(index)(envName),\n createLogger: (file, context, baseLogger) =>\n buildFileLogger(file.filepath, context, baseLogger),\n});\n\nfunction* loadFileChain(\n input: ValidatedFile,\n context: ConfigContext,\n files: Set<ConfigFile>,\n baseLogger: ConfigPrinter,\n) {\n const chain = yield* loadFileChainWalker(input, context, files, baseLogger);\n chain?.files.add(input.filepath);\n\n return chain;\n}\n\nconst loadFileDescriptors = makeWeakCacheSync((file: ValidatedFile) =>\n buildRootDescriptors(file, file.filepath, createUncachedDescriptors),\n);\nconst loadFileEnvDescriptors = makeWeakCacheSync((file: ValidatedFile) =>\n makeStrongCacheSync((envName: string) =>\n buildEnvDescriptors(\n file,\n file.filepath,\n createUncachedDescriptors,\n envName,\n ),\n ),\n);\nconst loadFileOverridesDescriptors = makeWeakCacheSync((file: ValidatedFile) =>\n makeStrongCacheSync((index: number) =>\n buildOverrideDescriptors(\n file,\n file.filepath,\n createUncachedDescriptors,\n index,\n ),\n ),\n);\nconst loadFileOverridesEnvDescriptors = makeWeakCacheSync(\n (file: ValidatedFile) =>\n makeStrongCacheSync((index: number) =>\n makeStrongCacheSync((envName: string) =>\n buildOverrideEnvDescriptors(\n file,\n file.filepath,\n createUncachedDescriptors,\n index,\n envName,\n ),\n ),\n ),\n);\n\nfunction buildFileLogger(\n filepath: string,\n context: ConfigContext,\n baseLogger: ConfigPrinter | void,\n) {\n if (!baseLogger) {\n return () => {};\n }\n return baseLogger.configure(context.showConfig, ChainFormatter.Config, {\n filepath,\n });\n}\n\nfunction buildRootDescriptors(\n { dirname, options }: Partial<ValidatedFile>,\n alias: string,\n descriptors: (\n dirname: string,\n options: InputOptions,\n alias: string,\n ) => OptionsAndDescriptors,\n) {\n return descriptors(dirname, options, alias);\n}\n\nfunction buildProgrammaticLogger(\n _: unknown,\n context: ConfigContext,\n baseLogger: ConfigPrinter | void,\n) {\n if (!baseLogger) {\n return () => {};\n }\n return baseLogger.configure(context.showConfig, ChainFormatter.Programmatic, {\n callerName: context.caller?.name,\n });\n}\n\nfunction buildEnvDescriptors(\n { dirname, options }: Partial<ValidatedFile>,\n alias: string,\n descriptors: (\n dirname: string,\n options: InputOptions,\n alias: string,\n ) => OptionsAndDescriptors,\n envName: string,\n) {\n const opts = options.env?.[envName];\n return opts ? descriptors(dirname, opts, `${alias}.env[\"${envName}\"]`) : null;\n}\n\nfunction buildOverrideDescriptors(\n { dirname, options }: Partial<ValidatedFile>,\n alias: string,\n descriptors: (\n dirname: string,\n options: InputOptions,\n alias: string,\n ) => OptionsAndDescriptors,\n index: number,\n) {\n const opts = options.overrides?.[index];\n if (!opts) throw new Error(\"Assertion failure - missing override\");\n\n return descriptors(dirname, opts, `${alias}.overrides[${index}]`);\n}\n\nfunction buildOverrideEnvDescriptors(\n { dirname, options }: Partial<ValidatedFile>,\n alias: string,\n descriptors: (\n dirname: string,\n options: InputOptions,\n alias: string,\n ) => OptionsAndDescriptors,\n index: number,\n envName: string,\n) {\n const override = options.overrides?.[index];\n if (!override) throw new Error(\"Assertion failure - missing override\");\n\n const opts = override.env?.[envName];\n return opts\n ? descriptors(\n dirname,\n opts,\n `${alias}.overrides[${index}].env[\"${envName}\"]`,\n )\n : null;\n}\n\nfunction makeChainWalker<\n ArgT extends {\n options: InputOptions;\n dirname: string;\n filepath?: string;\n },\n>({\n root,\n env,\n overrides,\n overridesEnv,\n createLogger,\n}: {\n root: (configEntry: ArgT) => OptionsAndDescriptors;\n env: (configEntry: ArgT, env: string) => OptionsAndDescriptors | null;\n overrides: (configEntry: ArgT, index: number) => OptionsAndDescriptors;\n overridesEnv: (\n configEntry: ArgT,\n index: number,\n env: string,\n ) => OptionsAndDescriptors | null;\n createLogger: (\n configEntry: ArgT,\n context: ConfigContext,\n printer: ConfigPrinter | void,\n ) => (\n opts: OptionsAndDescriptors,\n index?: number | null,\n env?: string | null,\n ) => void;\n}): (\n configEntry: ArgT,\n context: ConfigContext,\n files?: Set<ConfigFile>,\n baseLogger?: ConfigPrinter,\n) => Handler<ConfigChain | null> {\n return function* chainWalker(input, context, files = new Set(), baseLogger) {\n const { dirname } = input;\n\n const flattenedConfigs: {\n config: OptionsAndDescriptors;\n index: number | undefined | null;\n envName: string | undefined | null;\n }[] = [];\n\n const rootOpts = root(input);\n if (configIsApplicable(rootOpts, dirname, context, input.filepath)) {\n flattenedConfigs.push({\n config: rootOpts,\n envName: undefined,\n index: undefined,\n });\n\n const envOpts = env(input, context.envName);\n if (\n envOpts &&\n configIsApplicable(envOpts, dirname, context, input.filepath)\n ) {\n flattenedConfigs.push({\n config: envOpts,\n envName: context.envName,\n index: undefined,\n });\n }\n\n (rootOpts.options.overrides || []).forEach((_, index) => {\n const overrideOps = overrides(input, index);\n if (configIsApplicable(overrideOps, dirname, context, input.filepath)) {\n flattenedConfigs.push({\n config: overrideOps,\n index,\n envName: undefined,\n });\n\n const overrideEnvOpts = overridesEnv(input, index, context.envName);\n if (\n overrideEnvOpts &&\n configIsApplicable(\n overrideEnvOpts,\n dirname,\n context,\n input.filepath,\n )\n ) {\n flattenedConfigs.push({\n config: overrideEnvOpts,\n index,\n envName: context.envName,\n });\n }\n }\n });\n }\n\n // Process 'ignore' and 'only' before 'extends' items are processed so\n // that we don't do extra work loading extended configs if a file is\n // ignored.\n if (\n flattenedConfigs.some(\n ({\n config: {\n options: { ignore, only },\n },\n }) => shouldIgnore(context, ignore, only, dirname),\n )\n ) {\n return null;\n }\n\n const chain = emptyChain();\n const logger = createLogger(input, context, baseLogger);\n\n for (const { config, index, envName } of flattenedConfigs) {\n if (\n !(yield* mergeExtendsChain(\n chain,\n config.options,\n dirname,\n context,\n files,\n baseLogger,\n ))\n ) {\n return null;\n }\n\n logger(config, index, envName);\n yield* mergeChainOpts(chain, config);\n }\n return chain;\n };\n}\n\nfunction* mergeExtendsChain(\n chain: ConfigChain,\n opts: InputOptions,\n dirname: string,\n context: ConfigContext,\n files: Set<ConfigFile>,\n baseLogger?: ConfigPrinter,\n): Handler<boolean> {\n if (opts.extends === undefined) return true;\n\n const file = yield* loadConfig(\n opts.extends,\n dirname,\n context.envName,\n context.caller,\n );\n\n if (files.has(file)) {\n throw new Error(\n `Configuration cycle detected loading ${file.filepath}.\\n` +\n `File already loaded following the config chain:\\n` +\n Array.from(files, file => ` - ${file.filepath}`).join(\"\\n\"),\n );\n }\n\n files.add(file);\n const fileChain = yield* loadFileChain(\n validateExtendFile(file),\n context,\n files,\n baseLogger,\n );\n files.delete(file);\n\n if (!fileChain) return false;\n\n mergeChain(chain, fileChain);\n\n return true;\n}\n\nfunction mergeChain(target: ConfigChain, source: ConfigChain): ConfigChain {\n target.options.push(...source.options);\n target.plugins.push(...source.plugins);\n target.presets.push(...source.presets);\n for (const file of source.files) {\n target.files.add(file);\n }\n\n return target;\n}\n\nfunction* mergeChainOpts(\n target: ConfigChain,\n { options, plugins, presets }: OptionsAndDescriptors,\n): Handler<ConfigChain> {\n target.options.push(options);\n target.plugins.push(...(yield* plugins()));\n target.presets.push(...(yield* presets()));\n\n return target;\n}\n\nfunction emptyChain(): ConfigChain {\n return {\n options: [],\n presets: [],\n plugins: [],\n files: new Set(),\n };\n}\n\nfunction createConfigChainOptions(opts: InputOptions): ConfigChainOptions {\n const options = {\n ...opts,\n };\n delete options.extends;\n delete options.env;\n delete options.overrides;\n delete options.plugins;\n delete options.presets;\n delete options.passPerPreset;\n delete options.ignore;\n delete options.only;\n delete options.test;\n delete options.include;\n delete options.exclude;\n\n // \"sourceMap\" is just aliased to sourceMap, so copy it over as\n // we merge the options together.\n if (Object.hasOwn(options, \"sourceMap\")) {\n options.sourceMaps = options.sourceMap;\n delete options.sourceMap;\n }\n return options;\n}\n\nfunction dedupDescriptors<API>(\n items: UnloadedDescriptor<API>[],\n): UnloadedDescriptor<API>[] {\n const map = new Map<\n Function,\n Map<string | void, { value: UnloadedDescriptor<API> }>\n >();\n\n const descriptors = [];\n\n for (const item of items) {\n if (typeof item.value === \"function\") {\n const fnKey = item.value;\n let nameMap = map.get(fnKey);\n if (!nameMap) {\n nameMap = new Map();\n map.set(fnKey, nameMap);\n }\n let desc = nameMap.get(item.name);\n if (!desc) {\n desc = { value: item };\n descriptors.push(desc);\n\n // Treat passPerPreset presets as unique, skipping them\n // in the merge processing steps.\n if (!item.ownPass) nameMap.set(item.name, desc);\n } else {\n desc.value = item;\n }\n } else {\n descriptors.push({ value: item });\n }\n }\n\n return descriptors.reduce((acc, desc) => {\n acc.push(desc.value);\n return acc;\n }, []);\n}\n\nfunction configIsApplicable(\n { options }: OptionsAndDescriptors,\n dirname: string,\n context: ConfigContext,\n configName: string,\n): boolean {\n return (\n (options.test === undefined ||\n configFieldIsApplicable(context, options.test, dirname, configName)) &&\n (options.include === undefined ||\n configFieldIsApplicable(context, options.include, dirname, configName)) &&\n (options.exclude === undefined ||\n !configFieldIsApplicable(context, options.exclude, dirname, configName))\n );\n}\n\nfunction configFieldIsApplicable(\n context: ConfigContext,\n test: ConfigApplicableTest,\n dirname: string,\n configName: string,\n): boolean {\n const patterns = Array.isArray(test) ? test : [test];\n\n return matchesPatterns(context, patterns, dirname, configName);\n}\n\n/**\n * Print the ignoreList-values in a more helpful way than the default.\n */\nfunction ignoreListReplacer(\n _key: string,\n value: MatchItem[] | MatchItem,\n): MatchItem[] | MatchItem | string {\n if (value instanceof RegExp) {\n return String(value);\n }\n\n return value;\n}\n\n/**\n * Tests if a filename should be ignored based on \"ignore\" and \"only\" options.\n */\nfunction shouldIgnore(\n context: ConfigContext,\n ignore: MatchItem[] | undefined | null,\n only: MatchItem[] | undefined | null,\n dirname: string,\n): boolean {\n if (ignore && matchesPatterns(context, ignore, dirname)) {\n const message = `No config is applied to \"${\n context.filename ?? \"(unknown)\"\n }\" because it matches one of \\`ignore: ${JSON.stringify(\n ignore,\n ignoreListReplacer,\n )}\\` from \"${dirname}\"`;\n debug(message);\n if (context.showConfig) {\n console.log(message);\n }\n return true;\n }\n\n if (only && !matchesPatterns(context, only, dirname)) {\n const message = `No config is applied to \"${\n context.filename ?? \"(unknown)\"\n }\" because it fails to match one of \\`only: ${JSON.stringify(\n only,\n ignoreListReplacer,\n )}\\` from \"${dirname}\"`;\n debug(message);\n if (context.showConfig) {\n console.log(message);\n }\n return true;\n }\n\n return false;\n}\n\n/**\n * Returns result of calling function with filename if pattern is a function.\n * Otherwise returns result of matching pattern Regex with filename.\n */\nfunction matchesPatterns(\n context: ConfigContext,\n patterns: MatchItem[],\n dirname: string,\n configName?: string,\n): boolean {\n return patterns.some(pattern =>\n matchPattern(pattern, dirname, context.filename, context, configName),\n );\n}\n\nfunction matchPattern(\n pattern: MatchItem,\n dirname: string,\n pathToTest: string | undefined,\n context: ConfigContext,\n configName?: string,\n): boolean {\n if (typeof pattern === \"function\") {\n return !!endHiddenCallStack(pattern)(pathToTest, {\n dirname,\n envName: context.envName,\n caller: context.caller,\n });\n }\n\n if (typeof pathToTest !== \"string\") {\n throw new ConfigError(\n `Configuration contains string/RegExp pattern, but no filename was passed to Babel`,\n configName,\n );\n }\n\n if (typeof pattern === \"string\") {\n pattern = pathPatternToRegex(pattern, dirname);\n }\n return pattern.test(pathToTest);\n}\n"],"mappings":";;;;;;;;AAEA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,OAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,IAAAG,QAAA,GAAAF,OAAA;AASA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAGA,IAAAK,kBAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AAKA,IAAAO,MAAA,GAAAP,OAAA;AAQA,IAAAQ,QAAA,GAAAR,OAAA;AAEA,IAAAS,kBAAA,GAAAT,OAAA;AAZA,MAAMU,KAAK,GAAGC,OAASA,CAAC,CAAC,2BAA2B,CAAC;AAgD9C,UAAUC,gBAAgBA,CAC/BC,GAAmB,EACnBC,OAAY,EACiB;EAC7B,MAAMC,KAAK,GAAG,OAAOC,sBAAsB,CAACH,GAAG,EAAEC,OAAO,CAAC;EACzD,IAAI,CAACC,KAAK,EAAE,OAAO,IAAI;EAEvB,OAAO;IACLE,OAAO,EAAEC,gBAAgB,CAACH,KAAK,CAACE,OAAO,CAAC;IACxCE,OAAO,EAAED,gBAAgB,CAACH,KAAK,CAACI,OAAO,CAAC;IACxCC,OAAO,EAAEL,KAAK,CAACK,OAAO,CAACC,GAAG,CAACC,CAAC,IAAIC,wBAAwB,CAACD,CAAC,CAAC,CAAC;IAC5DE,KAAK,EAAE,IAAIC,GAAG,CAAC;EACjB,CAAC;AACH;AAEO,MAAMT,sBAAsB,GAAAU,OAAA,CAAAV,sBAAA,GAAGW,eAAe,CAAiB;EACpEC,IAAI,EAAEC,MAAM,IAAIC,qBAAqB,CAACD,MAAM,CAAC;EAC7CE,GAAG,EAAEA,CAACF,MAAM,EAAEG,OAAO,KAAKC,wBAAwB,CAACJ,MAAM,CAAC,CAACG,OAAO,CAAC;EACnEE,SAAS,EAAEA,CAACL,MAAM,EAAEM,KAAK,KAAKC,8BAA8B,CAACP,MAAM,CAAC,CAACM,KAAK,CAAC;EAC3EE,YAAY,EAAEA,CAACR,MAAM,EAAEM,KAAK,EAAEH,OAAO,KACnCM,iCAAiC,CAACT,MAAM,CAAC,CAACM,KAAK,CAAC,CAACH,OAAO,CAAC;EAC3DO,YAAY,EAAEA,CAAA,KAAM,MAAM,CAAC;AAC7B,CAAC,CAAC;AACF,MAAMT,qBAAqB,GAAG,IAAAU,0BAAiB,EAAEX,MAAsB,IACrEY,oBAAoB,CAACZ,MAAM,EAAEA,MAAM,CAACa,KAAK,EAAEC,4CAAyB,CACtE,CAAC;AACD,MAAMV,wBAAwB,GAAG,IAAAO,0BAAiB,EAAEX,MAAsB,IACxE,IAAAe,4BAAmB,EAAEZ,OAAe,IAClCa,mBAAmB,CACjBhB,MAAM,EACNA,MAAM,CAACa,KAAK,EACZC,4CAAyB,EACzBX,OACF,CACF,CACF,CAAC;AACD,MAAMI,8BAA8B,GAAG,IAAAI,0BAAiB,EACrDX,MAAsB,IACrB,IAAAe,4BAAmB,EAAET,KAAa,IAChCW,wBAAwB,CACtBjB,MAAM,EACNA,MAAM,CAACa,KAAK,EACZC,4CAAyB,EACzBR,KACF,CACF,CACJ,CAAC;AACD,MAAMG,iCAAiC,GAAG,IAAAE,0BAAiB,EACxDX,MAAsB,IACrB,IAAAe,4BAAmB,EAAET,KAAa,IAChC,IAAAS,4BAAmB,EAAEZ,OAAe,IAClCe,2BAA2B,CACzBlB,MAAM,EACNA,MAAM,CAACa,KAAK,EACZC,4CAAyB,EACzBR,KAAK,EACLH,OACF,CACF,CACF,CACJ,CAAC;AAcM,UAAUgB,cAAcA,CAC7BC,IAAkB,EAClBnC,OAAsB,EACW;EACjC,IAAIoC,YAAY,EAAEC,aAAa;EAC/B,MAAMC,kBAAkB,GAAG,IAAIC,sBAAa,CAAC,CAAC;EAC9C,MAAMC,iBAAiB,GAAG,OAAOC,qBAAqB,CACpD;IACEnC,OAAO,EAAE6B,IAAI;IACbO,OAAO,EAAE1C,OAAO,CAAC2C;EACnB,CAAC,EACD3C,OAAO,EACP4C,SAAS,EACTN,kBACF,CAAC;EACD,IAAI,CAACE,iBAAiB,EAAE,OAAO,IAAI;EACnC,MAAMK,kBAAkB,GAAG,OAAOP,kBAAkB,CAACQ,MAAM,CAAC,CAAC;EAE7D,IAAIC,UAAU;EACd,IAAI,OAAOZ,IAAI,CAACY,UAAU,KAAK,QAAQ,EAAE;IACvCA,UAAU,GAAG,OAAO,IAAAC,iBAAU,EAC5Bb,IAAI,CAACY,UAAU,EACf/C,OAAO,CAAC2C,GAAG,EACX3C,OAAO,CAACkB,OAAO,EACflB,OAAO,CAACiD,MACV,CAAC;EACH,CAAC,MAAM,IAAId,IAAI,CAACY,UAAU,KAAK,KAAK,EAAE;IACpCA,UAAU,GAAG,OAAO,IAAAG,qBAAc,EAChClD,OAAO,CAACc,IAAI,EACZd,OAAO,CAACkB,OAAO,EACflB,OAAO,CAACiD,MACV,CAAC;EACH;EAEA,IAAI;IAAEE,OAAO;IAAEC;EAAa,CAAC,GAAGjB,IAAI;EACpC,IAAIkB,qBAAqB,GAAGrD,OAAO,CAAC2C,GAAG;EAEvC,MAAMW,eAAe,GAAGC,UAAU,CAAC,CAAC;EACpC,MAAMC,gBAAgB,GAAG,IAAIjB,sBAAa,CAAC,CAAC;EAC5C,IAAIQ,UAAU,EAAE;IACd,MAAMU,aAAa,GAAGC,kBAAkB,CAACX,UAAU,CAAC;IACpD,MAAMY,MAAM,GAAG,OAAOC,aAAa,CACjCH,aAAa,EACbzD,OAAO,EACP4C,SAAS,EACTY,gBACF,CAAC;IACD,IAAI,CAACG,MAAM,EAAE,OAAO,IAAI;IACxBvB,YAAY,GAAG,OAAOoB,gBAAgB,CAACV,MAAM,CAAC,CAAC;IAI/C,IAAIK,OAAO,KAAKP,SAAS,EAAE;MACzBO,OAAO,GAAGM,aAAa,CAACnD,OAAO,CAAC6C,OAAO;IACzC;IACA,IAAIC,YAAY,KAAKR,SAAS,EAAE;MAC9BS,qBAAqB,GAAGI,aAAa,CAACf,OAAO;MAC7CU,YAAY,GAAGK,aAAa,CAACnD,OAAO,CAAC8C,YAAY;IACnD;IAEAS,UAAU,CAACP,eAAe,EAAEK,MAAM,CAAC;EACrC;EAEA,IAAIG,UAAU,EAAEC,WAAW;EAC3B,IAAIC,SAAS,GAAG,KAAK;EACrB,MAAMC,SAAS,GAAGV,UAAU,CAAC,CAAC;EAE9B,IACE,CAACJ,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAKP,SAAS,KAC1C,OAAO5C,OAAO,CAACkE,QAAQ,KAAK,QAAQ,EACpC;IACA,MAAMC,OAAO,GAAG,OAAO,IAAAC,sBAAe,EAACpE,OAAO,CAACkE,QAAQ,CAAC;IAExD,IACEC,OAAO,IACPE,kBAAkB,CAACrE,OAAO,EAAEmE,OAAO,EAAEf,YAAY,EAAEC,qBAAqB,CAAC,EACzE;MACA,CAAC;QAAEiB,MAAM,EAAER,UAAU;QAAES,MAAM,EAAER;MAAY,CAAC,GAAG,OAAO,IAAAS,yBAAkB,EACtEL,OAAO,EACPnE,OAAO,CAACkB,OAAO,EACflB,OAAO,CAACiD,MACV,CAAC;MAED,IAAIa,UAAU,EAAE;QACdG,SAAS,CAACvD,KAAK,CAAC+D,GAAG,CAACX,UAAU,CAACY,QAAQ,CAAC;MAC1C;MAEA,IACEZ,UAAU,IACVa,YAAY,CAAC3E,OAAO,EAAE8D,UAAU,CAACQ,MAAM,EAAE,IAAI,EAAER,UAAU,CAACpB,OAAO,CAAC,EAClE;QACAsB,SAAS,GAAG,IAAI;MAClB;MAEA,IAAID,WAAW,IAAI,CAACC,SAAS,EAAE;QAC7B,MAAMP,aAAa,GAAGmB,mBAAmB,CAACb,WAAW,CAAC;QACtD,MAAMc,aAAa,GAAG,IAAItC,sBAAa,CAAC,CAAC;QACzC,MAAMoB,MAAM,GAAG,OAAOC,aAAa,CACjCH,aAAa,EACbzD,OAAO,EACP4C,SAAS,EACTiC,aACF,CAAC;QACD,IAAI,CAAClB,MAAM,EAAE;UACXK,SAAS,GAAG,IAAI;QAClB,CAAC,MAAM;UACL3B,aAAa,GAAG,OAAOwC,aAAa,CAAC/B,MAAM,CAAC,CAAC;UAC7Ce,UAAU,CAACI,SAAS,EAAEN,MAAM,CAAC;QAC/B;MACF;MAEA,IAAII,WAAW,IAAIC,SAAS,EAAE;QAC5BC,SAAS,CAACvD,KAAK,CAAC+D,GAAG,CAACV,WAAW,CAACW,QAAQ,CAAC;MAC3C;IACF;EACF;EAEA,IAAI1E,OAAO,CAAC8E,UAAU,EAAE;IACtBC,OAAO,CAACC,GAAG,CACT,qBAAqBhF,OAAO,CAACkE,QAAQ,2BAA2B,GAE9D,CAAC9B,YAAY,EAAEC,aAAa,EAAEQ,kBAAkB,CAAC,CAC9CoC,MAAM,CAACC,CAAC,IAAI,CAAC,CAACA,CAAC,CAAC,CAChBC,IAAI,CAAC,MAAM,CAAC,GACf,+BACJ,CAAC;EACH;EAGA,MAAMlF,KAAK,GAAG4D,UAAU,CACtBA,UAAU,CAACA,UAAU,CAACN,UAAU,CAAC,CAAC,EAAED,eAAe,CAAC,EAAEW,SAAS,CAAC,EAChEzB,iBACF,CAAC;EAED,OAAO;IACLrC,OAAO,EAAE6D,SAAS,GAAG,EAAE,GAAG5D,gBAAgB,CAACH,KAAK,CAACE,OAAO,CAAC;IACzDE,OAAO,EAAE2D,SAAS,GAAG,EAAE,GAAG5D,gBAAgB,CAACH,KAAK,CAACI,OAAO,CAAC;IACzDC,OAAO,EAAE0D,SAAS,GACd,EAAE,GACF/D,KAAK,CAACK,OAAO,CAACC,GAAG,CAACC,CAAC,IAAIC,wBAAwB,CAACD,CAAC,CAAC,CAAC;IACvD4E,YAAY,EAAEpB,SAAS,GAAG,SAAS,GAAG,WAAW;IACjDM,MAAM,EAAER,UAAU,IAAIlB,SAAS;IAC/BO,OAAO,EAAEY,WAAW,IAAInB,SAAS;IACjC2B,MAAM,EAAExB,UAAU,IAAIH,SAAS;IAC/BlC,KAAK,EAAET,KAAK,CAACS;EACf,CAAC;AACH;AAEA,SAAS2D,kBAAkBA,CACzBrE,OAAsB,EACtBmE,OAAwB,EACxBf,YAAuC,EACvCC,qBAA6B,EACpB;EACT,IAAI,OAAOD,YAAY,KAAK,SAAS,EAAE,OAAOA,YAAY;EAE1D,MAAMiC,YAAY,GAAGrF,OAAO,CAACc,IAAI;EAIjC,IAAIsC,YAAY,KAAKR,SAAS,EAAE;IAC9B,OAAOuB,OAAO,CAACmB,WAAW,CAACC,QAAQ,CAACF,YAAY,CAAC;EACnD;EAEA,IAAIG,eAAe,GAAGpC,YAAY;EAClC,IAAI,CAACqC,KAAK,CAACC,OAAO,CAACF,eAAe,CAAC,EAAE;IACnCA,eAAe,GAAG,CAACA,eAAe,CAAC;EACrC;EACAA,eAAe,GAAGA,eAAe,CAACjF,GAAG,CAACoF,GAAG,IAAI;IAC3C,OAAO,OAAOA,GAAG,KAAK,QAAQ,GAC1BC,MAAGA,CAAC,CAACC,OAAO,CAACxC,qBAAqB,EAAEsC,GAAG,CAAC,GACxCA,GAAG;EACT,CAAC,CAAC;EAIF,IAAIH,eAAe,CAACM,MAAM,KAAK,CAAC,IAAIN,eAAe,CAAC,CAAC,CAAC,KAAKH,YAAY,EAAE;IACvE,OAAOlB,OAAO,CAACmB,WAAW,CAACC,QAAQ,CAACF,YAAY,CAAC;EACnD;EAEA,OAAOG,eAAe,CAACO,IAAI,CAACJ,GAAG,IAAI;IACjC,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;MAC3BA,GAAG,GAAG,IAAAK,uBAAkB,EAACL,GAAG,EAAEtC,qBAAqB,CAAC;IACtD;IAEA,OAAOc,OAAO,CAACmB,WAAW,CAACS,IAAI,CAACE,SAAS,IAAI;MAC3C,OAAOC,YAAY,CAACP,GAAG,EAAEtC,qBAAqB,EAAE4C,SAAS,EAAEjG,OAAO,CAAC;IACrE,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,MAAM0D,kBAAkB,GAAG,IAAAhC,0BAAiB,EACzCyE,IAAgB,KAAqB;EACpCzB,QAAQ,EAAEyB,IAAI,CAACzB,QAAQ;EACvBhC,OAAO,EAAEyD,IAAI,CAACzD,OAAO;EACrBpC,OAAO,EAAE,IAAA8F,iBAAQ,EAAC,YAAY,EAAED,IAAI,CAAC7F,OAAO,EAAE6F,IAAI,CAACzB,QAAQ;AAC7D,CAAC,CACH,CAAC;AAED,MAAME,mBAAmB,GAAG,IAAAlD,0BAAiB,EAC1CyE,IAAgB,KAAqB;EACpCzB,QAAQ,EAAEyB,IAAI,CAACzB,QAAQ;EACvBhC,OAAO,EAAEyD,IAAI,CAACzD,OAAO;EACrBpC,OAAO,EAAE,IAAA8F,iBAAQ,EAAC,aAAa,EAAED,IAAI,CAAC7F,OAAO,EAAE6F,IAAI,CAACzB,QAAQ;AAC9D,CAAC,CACH,CAAC;AAED,MAAM2B,kBAAkB,GAAG,IAAA3E,0BAAiB,EACzCyE,IAAgB,KAAqB;EACpCzB,QAAQ,EAAEyB,IAAI,CAACzB,QAAQ;EACvBhC,OAAO,EAAEyD,IAAI,CAACzD,OAAO;EACrBpC,OAAO,EAAE,IAAA8F,iBAAQ,EAAC,aAAa,EAAED,IAAI,CAAC7F,OAAO,EAAE6F,IAAI,CAACzB,QAAQ;AAC9D,CAAC,CACH,CAAC;AAKD,MAAMjC,qBAAqB,GAAG5B,eAAe,CAAC;EAC5CC,IAAI,EAAEwF,KAAK,IAAI3E,oBAAoB,CAAC2E,KAAK,EAAE,MAAM,EAAEC,0CAAuB,CAAC;EAC3EtF,GAAG,EAAEA,CAACqF,KAAK,EAAEpF,OAAO,KAClBa,mBAAmB,CAACuE,KAAK,EAAE,MAAM,EAAEC,0CAAuB,EAAErF,OAAO,CAAC;EACtEE,SAAS,EAAEA,CAACkF,KAAK,EAAEjF,KAAK,KACtBW,wBAAwB,CAACsE,KAAK,EAAE,MAAM,EAAEC,0CAAuB,EAAElF,KAAK,CAAC;EACzEE,YAAY,EAAEA,CAAC+E,KAAK,EAAEjF,KAAK,EAAEH,OAAO,KAClCe,2BAA2B,CACzBqE,KAAK,EACL,MAAM,EACNC,0CAAuB,EACvBlF,KAAK,EACLH,OACF,CAAC;EACHO,YAAY,EAAEA,CAAC6E,KAAK,EAAEtG,OAAO,EAAEwG,UAAU,KACvCC,uBAAuB,CAACH,KAAK,EAAEtG,OAAO,EAAEwG,UAAU;AACtD,CAAC,CAAC;AAKF,MAAME,mBAAmB,GAAG7F,eAAe,CAAgB;EACzDC,IAAI,EAAEqF,IAAI,IAAIQ,mBAAmB,CAACR,IAAI,CAAC;EACvClF,GAAG,EAAEA,CAACkF,IAAI,EAAEjF,OAAO,KAAK0F,sBAAsB,CAACT,IAAI,CAAC,CAACjF,OAAO,CAAC;EAC7DE,SAAS,EAAEA,CAAC+E,IAAI,EAAE9E,KAAK,KAAKwF,4BAA4B,CAACV,IAAI,CAAC,CAAC9E,KAAK,CAAC;EACrEE,YAAY,EAAEA,CAAC4E,IAAI,EAAE9E,KAAK,EAAEH,OAAO,KACjC4F,+BAA+B,CAACX,IAAI,CAAC,CAAC9E,KAAK,CAAC,CAACH,OAAO,CAAC;EACvDO,YAAY,EAAEA,CAAC0E,IAAI,EAAEnG,OAAO,EAAEwG,UAAU,KACtCO,eAAe,CAACZ,IAAI,CAACzB,QAAQ,EAAE1E,OAAO,EAAEwG,UAAU;AACtD,CAAC,CAAC;AAEF,UAAU5C,aAAaA,CACrB0C,KAAoB,EACpBtG,OAAsB,EACtBU,KAAsB,EACtB8F,UAAyB,EACzB;EACA,MAAMvG,KAAK,GAAG,OAAOyG,mBAAmB,CAACJ,KAAK,EAAEtG,OAAO,EAAEU,KAAK,EAAE8F,UAAU,CAAC;EAC3EvG,KAAK,YAALA,KAAK,CAAES,KAAK,CAAC+D,GAAG,CAAC6B,KAAK,CAAC5B,QAAQ,CAAC;EAEhC,OAAOzE,KAAK;AACd;AAEA,MAAM0G,mBAAmB,GAAG,IAAAjF,0BAAiB,EAAEyE,IAAmB,IAChExE,oBAAoB,CAACwE,IAAI,EAAEA,IAAI,CAACzB,QAAQ,EAAE7C,4CAAyB,CACrE,CAAC;AACD,MAAM+E,sBAAsB,GAAG,IAAAlF,0BAAiB,EAAEyE,IAAmB,IACnE,IAAArE,4BAAmB,EAAEZ,OAAe,IAClCa,mBAAmB,CACjBoE,IAAI,EACJA,IAAI,CAACzB,QAAQ,EACb7C,4CAAyB,EACzBX,OACF,CACF,CACF,CAAC;AACD,MAAM2F,4BAA4B,GAAG,IAAAnF,0BAAiB,EAAEyE,IAAmB,IACzE,IAAArE,4BAAmB,EAAET,KAAa,IAChCW,wBAAwB,CACtBmE,IAAI,EACJA,IAAI,CAACzB,QAAQ,EACb7C,4CAAyB,EACzBR,KACF,CACF,CACF,CAAC;AACD,MAAMyF,+BAA+B,GAAG,IAAApF,0BAAiB,EACtDyE,IAAmB,IAClB,IAAArE,4BAAmB,EAAET,KAAa,IAChC,IAAAS,4BAAmB,EAAEZ,OAAe,IAClCe,2BAA2B,CACzBkE,IAAI,EACJA,IAAI,CAACzB,QAAQ,EACb7C,4CAAyB,EACzBR,KAAK,EACLH,OACF,CACF,CACF,CACJ,CAAC;AAED,SAAS6F,eAAeA,CACtBrC,QAAgB,EAChB1E,OAAsB,EACtBwG,UAAgC,EAChC;EACA,IAAI,CAACA,UAAU,EAAE;IACf,OAAO,MAAM,CAAC,CAAC;EACjB;EACA,OAAOA,UAAU,CAACQ,SAAS,CAAChH,OAAO,CAAC8E,UAAU,EAAEmC,uBAAc,CAACC,MAAM,EAAE;IACrExC;EACF,CAAC,CAAC;AACJ;AAEA,SAAS/C,oBAAoBA,CAC3B;EAAEe,OAAO;EAAEpC;AAAgC,CAAC,EAC5CsB,KAAa,EACbuF,WAI0B,EAC1B;EACA,OAAOA,WAAW,CAACzE,OAAO,EAAEpC,OAAO,EAAEsB,KAAK,CAAC;AAC7C;AAEA,SAAS6E,uBAAuBA,CAC9BW,CAAU,EACVpH,OAAsB,EACtBwG,UAAgC,EAChC;EAAA,IAAAa,eAAA;EACA,IAAI,CAACb,UAAU,EAAE;IACf,OAAO,MAAM,CAAC,CAAC;EACjB;EACA,OAAOA,UAAU,CAACQ,SAAS,CAAChH,OAAO,CAAC8E,UAAU,EAAEmC,uBAAc,CAACK,YAAY,EAAE;IAC3EC,UAAU,GAAAF,eAAA,GAAErH,OAAO,CAACiD,MAAM,qBAAdoE,eAAA,CAAgBG;EAC9B,CAAC,CAAC;AACJ;AAEA,SAASzF,mBAAmBA,CAC1B;EAAEW,OAAO;EAAEpC;AAAgC,CAAC,EAC5CsB,KAAa,EACbuF,WAI0B,EAC1BjG,OAAe,EACf;EAAA,IAAAuG,YAAA;EACA,MAAMtF,IAAI,IAAAsF,YAAA,GAAGnH,OAAO,CAACW,GAAG,qBAAXwG,YAAA,CAAcvG,OAAO,CAAC;EACnC,OAAOiB,IAAI,GAAGgF,WAAW,CAACzE,OAAO,EAAEP,IAAI,EAAE,GAAGP,KAAK,SAASV,OAAO,IAAI,CAAC,GAAG,IAAI;AAC/E;AAEA,SAASc,wBAAwBA,CAC/B;EAAEU,OAAO;EAAEpC;AAAgC,CAAC,EAC5CsB,KAAa,EACbuF,WAI0B,EAC1B9F,KAAa,EACb;EAAA,IAAAqG,kBAAA;EACA,MAAMvF,IAAI,IAAAuF,kBAAA,GAAGpH,OAAO,CAACc,SAAS,qBAAjBsG,kBAAA,CAAoBrG,KAAK,CAAC;EACvC,IAAI,CAACc,IAAI,EAAE,MAAM,IAAIwF,KAAK,CAAC,sCAAsC,CAAC;EAElE,OAAOR,WAAW,CAACzE,OAAO,EAAEP,IAAI,EAAE,GAAGP,KAAK,cAAcP,KAAK,GAAG,CAAC;AACnE;AAEA,SAASY,2BAA2BA,CAClC;EAAES,OAAO;EAAEpC;AAAgC,CAAC,EAC5CsB,KAAa,EACbuF,WAI0B,EAC1B9F,KAAa,EACbH,OAAe,EACf;EAAA,IAAA0G,mBAAA,EAAAC,aAAA;EACA,MAAMC,QAAQ,IAAAF,mBAAA,GAAGtH,OAAO,CAACc,SAAS,qBAAjBwG,mBAAA,CAAoBvG,KAAK,CAAC;EAC3C,IAAI,CAACyG,QAAQ,EAAE,MAAM,IAAIH,KAAK,CAAC,sCAAsC,CAAC;EAEtE,MAAMxF,IAAI,IAAA0F,aAAA,GAAGC,QAAQ,CAAC7G,GAAG,qBAAZ4G,aAAA,CAAe3G,OAAO,CAAC;EACpC,OAAOiB,IAAI,GACPgF,WAAW,CACTzE,OAAO,EACPP,IAAI,EACJ,GAAGP,KAAK,cAAcP,KAAK,UAAUH,OAAO,IAC9C,CAAC,GACD,IAAI;AACV;AAEA,SAASL,eAAeA,CAMtB;EACAC,IAAI;EACJG,GAAG;EACHG,SAAS;EACTG,YAAY;EACZE;AAmBF,CAAC,EAKgC;EAC/B,OAAO,UAAUsG,WAAWA,CAACzB,KAAK,EAAEtG,OAAO,EAAEU,KAAK,GAAG,IAAIC,GAAG,CAAC,CAAC,EAAE6F,UAAU,EAAE;IAC1E,MAAM;MAAE9D;IAAQ,CAAC,GAAG4D,KAAK;IAEzB,MAAM0B,gBAIH,GAAG,EAAE;IAER,MAAMC,QAAQ,GAAGnH,IAAI,CAACwF,KAAK,CAAC;IAC5B,IAAI4B,kBAAkB,CAACD,QAAQ,EAAEvF,OAAO,EAAE1C,OAAO,EAAEsG,KAAK,CAAC5B,QAAQ,CAAC,EAAE;MAClEsD,gBAAgB,CAACG,IAAI,CAAC;QACpB5D,MAAM,EAAE0D,QAAQ;QAChB/G,OAAO,EAAE0B,SAAS;QAClBvB,KAAK,EAAEuB;MACT,CAAC,CAAC;MAEF,MAAMwF,OAAO,GAAGnH,GAAG,CAACqF,KAAK,EAAEtG,OAAO,CAACkB,OAAO,CAAC;MAC3C,IACEkH,OAAO,IACPF,kBAAkB,CAACE,OAAO,EAAE1F,OAAO,EAAE1C,OAAO,EAAEsG,KAAK,CAAC5B,QAAQ,CAAC,EAC7D;QACAsD,gBAAgB,CAACG,IAAI,CAAC;UACpB5D,MAAM,EAAE6D,OAAO;UACflH,OAAO,EAAElB,OAAO,CAACkB,OAAO;UACxBG,KAAK,EAAEuB;QACT,CAAC,CAAC;MACJ;MAEA,CAACqF,QAAQ,CAAC3H,OAAO,CAACc,SAAS,IAAI,EAAE,EAAEiH,OAAO,CAAC,CAACjB,CAAC,EAAE/F,KAAK,KAAK;QACvD,MAAMiH,WAAW,GAAGlH,SAAS,CAACkF,KAAK,EAAEjF,KAAK,CAAC;QAC3C,IAAI6G,kBAAkB,CAACI,WAAW,EAAE5F,OAAO,EAAE1C,OAAO,EAAEsG,KAAK,CAAC5B,QAAQ,CAAC,EAAE;UACrEsD,gBAAgB,CAACG,IAAI,CAAC;YACpB5D,MAAM,EAAE+D,WAAW;YACnBjH,KAAK;YACLH,OAAO,EAAE0B;UACX,CAAC,CAAC;UAEF,MAAM2F,eAAe,GAAGhH,YAAY,CAAC+E,KAAK,EAAEjF,KAAK,EAAErB,OAAO,CAACkB,OAAO,CAAC;UACnE,IACEqH,eAAe,IACfL,kBAAkB,CAChBK,eAAe,EACf7F,OAAO,EACP1C,OAAO,EACPsG,KAAK,CAAC5B,QACR,CAAC,EACD;YACAsD,gBAAgB,CAACG,IAAI,CAAC;cACpB5D,MAAM,EAAEgE,eAAe;cACvBlH,KAAK;cACLH,OAAO,EAAElB,OAAO,CAACkB;YACnB,CAAC,CAAC;UACJ;QACF;MACF,CAAC,CAAC;IACJ;IAKA,IACE8G,gBAAgB,CAACjC,IAAI,CACnB,CAAC;MACCxB,MAAM,EAAE;QACNjE,OAAO,EAAE;UAAEgE,MAAM;UAAEkE;QAAK;MAC1B;IACF,CAAC,KAAK7D,YAAY,CAAC3E,OAAO,EAAEsE,MAAM,EAAEkE,IAAI,EAAE9F,OAAO,CACnD,CAAC,EACD;MACA,OAAO,IAAI;IACb;IAEA,MAAMzC,KAAK,GAAGsD,UAAU,CAAC,CAAC;IAC1B,MAAMkF,MAAM,GAAGhH,YAAY,CAAC6E,KAAK,EAAEtG,OAAO,EAAEwG,UAAU,CAAC;IAEvD,KAAK,MAAM;MAAEjC,MAAM;MAAElD,KAAK;MAAEH;IAAQ,CAAC,IAAI8G,gBAAgB,EAAE;MACzD,IACE,EAAE,OAAOU,iBAAiB,CACxBzI,KAAK,EACLsE,MAAM,CAACjE,OAAO,EACdoC,OAAO,EACP1C,OAAO,EACPU,KAAK,EACL8F,UACF,CAAC,CAAC,EACF;QACA,OAAO,IAAI;MACb;MAEAiC,MAAM,CAAClE,MAAM,EAAElD,KAAK,EAAEH,OAAO,CAAC;MAC9B,OAAOyH,cAAc,CAAC1I,KAAK,EAAEsE,MAAM,CAAC;IACtC;IACA,OAAOtE,KAAK;EACd,CAAC;AACH;AAEA,UAAUyI,iBAAiBA,CACzBzI,KAAkB,EAClBkC,IAAkB,EAClBO,OAAe,EACf1C,OAAsB,EACtBU,KAAsB,EACtB8F,UAA0B,EACR;EAClB,IAAIrE,IAAI,CAACyG,OAAO,KAAKhG,SAAS,EAAE,OAAO,IAAI;EAE3C,MAAMuD,IAAI,GAAG,OAAO,IAAAnD,iBAAU,EAC5Bb,IAAI,CAACyG,OAAO,EACZlG,OAAO,EACP1C,OAAO,CAACkB,OAAO,EACflB,OAAO,CAACiD,MACV,CAAC;EAED,IAAIvC,KAAK,CAACmI,GAAG,CAAC1C,IAAI,CAAC,EAAE;IACnB,MAAM,IAAIwB,KAAK,CACb,wCAAwCxB,IAAI,CAACzB,QAAQ,KAAK,GACxD,mDAAmD,GACnDe,KAAK,CAACqD,IAAI,CAACpI,KAAK,EAAEyF,IAAI,IAAI,MAAMA,IAAI,CAACzB,QAAQ,EAAE,CAAC,CAACS,IAAI,CAAC,IAAI,CAC9D,CAAC;EACH;EAEAzE,KAAK,CAAC+D,GAAG,CAAC0B,IAAI,CAAC;EACf,MAAMlC,SAAS,GAAG,OAAOL,aAAa,CACpCyC,kBAAkB,CAACF,IAAI,CAAC,EACxBnG,OAAO,EACPU,KAAK,EACL8F,UACF,CAAC;EACD9F,KAAK,CAACqI,MAAM,CAAC5C,IAAI,CAAC;EAElB,IAAI,CAAClC,SAAS,EAAE,OAAO,KAAK;EAE5BJ,UAAU,CAAC5D,KAAK,EAAEgE,SAAS,CAAC;EAE5B,OAAO,IAAI;AACb;AAEA,SAASJ,UAAUA,CAACmF,MAAmB,EAAEC,MAAmB,EAAe;EACzED,MAAM,CAAC1I,OAAO,CAAC6H,IAAI,CAAC,GAAGc,MAAM,CAAC3I,OAAO,CAAC;EACtC0I,MAAM,CAAC7I,OAAO,CAACgI,IAAI,CAAC,GAAGc,MAAM,CAAC9I,OAAO,CAAC;EACtC6I,MAAM,CAAC3I,OAAO,CAAC8H,IAAI,CAAC,GAAGc,MAAM,CAAC5I,OAAO,CAAC;EACtC,KAAK,MAAM8F,IAAI,IAAI8C,MAAM,CAACvI,KAAK,EAAE;IAC/BsI,MAAM,CAACtI,KAAK,CAAC+D,GAAG,CAAC0B,IAAI,CAAC;EACxB;EAEA,OAAO6C,MAAM;AACf;AAEA,UAAUL,cAAcA,CACtBK,MAAmB,EACnB;EAAE1I,OAAO;EAAEH,OAAO;EAAEE;AAA+B,CAAC,EAC9B;EACtB2I,MAAM,CAAC1I,OAAO,CAAC6H,IAAI,CAAC7H,OAAO,CAAC;EAC5B0I,MAAM,CAAC7I,OAAO,CAACgI,IAAI,CAAC,IAAI,OAAOhI,OAAO,CAAC,CAAC,CAAC,CAAC;EAC1C6I,MAAM,CAAC3I,OAAO,CAAC8H,IAAI,CAAC,IAAI,OAAO9H,OAAO,CAAC,CAAC,CAAC,CAAC;EAE1C,OAAO2I,MAAM;AACf;AAEA,SAASzF,UAAUA,CAAA,EAAgB;EACjC,OAAO;IACLjD,OAAO,EAAE,EAAE;IACXD,OAAO,EAAE,EAAE;IACXF,OAAO,EAAE,EAAE;IACXO,KAAK,EAAE,IAAIC,GAAG,CAAC;EACjB,CAAC;AACH;AAEA,SAASF,wBAAwBA,CAAC0B,IAAkB,EAAsB;EACxE,MAAM7B,OAAO,GAAA4I,MAAA,CAAAC,MAAA,KACRhH,IAAI,CACR;EACD,OAAO7B,OAAO,CAACsI,OAAO;EACtB,OAAOtI,OAAO,CAACW,GAAG;EAClB,OAAOX,OAAO,CAACc,SAAS;EACxB,OAAOd,OAAO,CAACH,OAAO;EACtB,OAAOG,OAAO,CAACD,OAAO;EACtB,OAAOC,OAAO,CAAC8I,aAAa;EAC5B,OAAO9I,OAAO,CAACgE,MAAM;EACrB,OAAOhE,OAAO,CAACkI,IAAI;EACnB,OAAOlI,OAAO,CAAC+I,IAAI;EACnB,OAAO/I,OAAO,CAACgJ,OAAO;EACtB,OAAOhJ,OAAO,CAACiJ,OAAO;EAItB,IAAIC,cAAA,CAAAC,IAAA,CAAcnJ,OAAO,EAAE,WAAW,CAAC,EAAE;IACvCA,OAAO,CAACoJ,UAAU,GAAGpJ,OAAO,CAACqJ,SAAS;IACtC,OAAOrJ,OAAO,CAACqJ,SAAS;EAC1B;EACA,OAAOrJ,OAAO;AAChB;AAEA,SAASF,gBAAgBA,CACvBwJ,KAAgC,EACL;EAC3B,MAAMrJ,GAAG,GAAG,IAAIsJ,GAAG,CAGjB,CAAC;EAEH,MAAM1C,WAAW,GAAG,EAAE;EAEtB,KAAK,MAAM2C,IAAI,IAAIF,KAAK,EAAE;IACxB,IAAI,OAAOE,IAAI,CAACC,KAAK,KAAK,UAAU,EAAE;MACpC,MAAMC,KAAK,GAAGF,IAAI,CAACC,KAAK;MACxB,IAAIE,OAAO,GAAG1J,GAAG,CAAC2J,GAAG,CAACF,KAAK,CAAC;MAC5B,IAAI,CAACC,OAAO,EAAE;QACZA,OAAO,GAAG,IAAIJ,GAAG,CAAC,CAAC;QACnBtJ,GAAG,CAAC4J,GAAG,CAACH,KAAK,EAAEC,OAAO,CAAC;MACzB;MACA,IAAIG,IAAI,GAAGH,OAAO,CAACC,GAAG,CAACJ,IAAI,CAACtC,IAAI,CAAC;MACjC,IAAI,CAAC4C,IAAI,EAAE;QACTA,IAAI,GAAG;UAAEL,KAAK,EAAED;QAAK,CAAC;QACtB3C,WAAW,CAACgB,IAAI,CAACiC,IAAI,CAAC;QAItB,IAAI,CAACN,IAAI,CAACO,OAAO,EAAEJ,OAAO,CAACE,GAAG,CAACL,IAAI,CAACtC,IAAI,EAAE4C,IAAI,CAAC;MACjD,CAAC,MAAM;QACLA,IAAI,CAACL,KAAK,GAAGD,IAAI;MACnB;IACF,CAAC,MAAM;MACL3C,WAAW,CAACgB,IAAI,CAAC;QAAE4B,KAAK,EAAED;MAAK,CAAC,CAAC;IACnC;EACF;EAEA,OAAO3C,WAAW,CAACmD,MAAM,CAAC,CAACC,GAAG,EAAEH,IAAI,KAAK;IACvCG,GAAG,CAACpC,IAAI,CAACiC,IAAI,CAACL,KAAK,CAAC;IACpB,OAAOQ,GAAG;EACZ,CAAC,EAAE,EAAE,CAAC;AACR;AAEA,SAASrC,kBAAkBA,CACzB;EAAE5H;AAA+B,CAAC,EAClCoC,OAAe,EACf1C,OAAsB,EACtBwK,UAAkB,EACT;EACT,OACE,CAAClK,OAAO,CAAC+I,IAAI,KAAKzG,SAAS,IACzB6H,uBAAuB,CAACzK,OAAO,EAAEM,OAAO,CAAC+I,IAAI,EAAE3G,OAAO,EAAE8H,UAAU,CAAC,MACpElK,OAAO,CAACgJ,OAAO,KAAK1G,SAAS,IAC5B6H,uBAAuB,CAACzK,OAAO,EAAEM,OAAO,CAACgJ,OAAO,EAAE5G,OAAO,EAAE8H,UAAU,CAAC,CAAC,KACxElK,OAAO,CAACiJ,OAAO,KAAK3G,SAAS,IAC5B,CAAC6H,uBAAuB,CAACzK,OAAO,EAAEM,OAAO,CAACiJ,OAAO,EAAE7G,OAAO,EAAE8H,UAAU,CAAC,CAAC;AAE9E;AAEA,SAASC,uBAAuBA,CAC9BzK,OAAsB,EACtBqJ,IAA0B,EAC1B3G,OAAe,EACf8H,UAAkB,EACT;EACT,MAAME,QAAQ,GAAGjF,KAAK,CAACC,OAAO,CAAC2D,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC;EAEpD,OAAOsB,eAAe,CAAC3K,OAAO,EAAE0K,QAAQ,EAAEhI,OAAO,EAAE8H,UAAU,CAAC;AAChE;AAKA,SAASI,kBAAkBA,CACzBC,IAAY,EACZd,KAA8B,EACI;EAClC,IAAIA,KAAK,YAAYe,MAAM,EAAE;IAC3B,OAAOC,MAAM,CAAChB,KAAK,CAAC;EACtB;EAEA,OAAOA,KAAK;AACd;AAKA,SAASpF,YAAYA,CACnB3E,OAAsB,EACtBsE,MAAsC,EACtCkE,IAAoC,EACpC9F,OAAe,EACN;EACT,IAAI4B,MAAM,IAAIqG,eAAe,CAAC3K,OAAO,EAAEsE,MAAM,EAAE5B,OAAO,CAAC,EAAE;IAAA,IAAAsI,iBAAA;IACvD,MAAMC,OAAO,GAAG,6BAAAD,iBAAA,GACdhL,OAAO,CAACkE,QAAQ,YAAA8G,iBAAA,GAAI,WAAW,yCACQE,IAAI,CAACC,SAAS,CACrD7G,MAAM,EACNsG,kBACF,CAAC,YAAYlI,OAAO,GAAG;IACvB9C,KAAK,CAACqL,OAAO,CAAC;IACd,IAAIjL,OAAO,CAAC8E,UAAU,EAAE;MACtBC,OAAO,CAACC,GAAG,CAACiG,OAAO,CAAC;IACtB;IACA,OAAO,IAAI;EACb;EAEA,IAAIzC,IAAI,IAAI,CAACmC,eAAe,CAAC3K,OAAO,EAAEwI,IAAI,EAAE9F,OAAO,CAAC,EAAE;IAAA,IAAA0I,kBAAA;IACpD,MAAMH,OAAO,GAAG,6BAAAG,kBAAA,GACdpL,OAAO,CAACkE,QAAQ,YAAAkH,kBAAA,GAAI,WAAW,8CACaF,IAAI,CAACC,SAAS,CAC1D3C,IAAI,EACJoC,kBACF,CAAC,YAAYlI,OAAO,GAAG;IACvB9C,KAAK,CAACqL,OAAO,CAAC;IACd,IAAIjL,OAAO,CAAC8E,UAAU,EAAE;MACtBC,OAAO,CAACC,GAAG,CAACiG,OAAO,CAAC;IACtB;IACA,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd;AAMA,SAASN,eAAeA,CACtB3K,OAAsB,EACtB0K,QAAqB,EACrBhI,OAAe,EACf8H,UAAmB,EACV;EACT,OAAOE,QAAQ,CAAC3E,IAAI,CAACsF,OAAO,IAC1BnF,YAAY,CAACmF,OAAO,EAAE3I,OAAO,EAAE1C,OAAO,CAACkE,QAAQ,EAAElE,OAAO,EAAEwK,UAAU,CACtE,CAAC;AACH;AAEA,SAAStE,YAAYA,CACnBmF,OAAkB,EAClB3I,OAAe,EACf4I,UAA8B,EAC9BtL,OAAsB,EACtBwK,UAAmB,EACV;EACT,IAAI,OAAOa,OAAO,KAAK,UAAU,EAAE;IACjC,OAAO,CAAC,CAAC,IAAAE,qCAAkB,EAACF,OAAO,CAAC,CAACC,UAAU,EAAE;MAC/C5I,OAAO;MACPxB,OAAO,EAAElB,OAAO,CAACkB,OAAO;MACxB+B,MAAM,EAAEjD,OAAO,CAACiD;IAClB,CAAC,CAAC;EACJ;EAEA,IAAI,OAAOqI,UAAU,KAAK,QAAQ,EAAE;IAClC,MAAM,IAAIE,oBAAW,CACnB,mFAAmF,EACnFhB,UACF,CAAC;EACH;EAEA,IAAI,OAAOa,OAAO,KAAK,QAAQ,EAAE;IAC/BA,OAAO,GAAG,IAAArF,uBAAkB,EAACqF,OAAO,EAAE3I,OAAO,CAAC;EAChD;EACA,OAAO2I,OAAO,CAAChC,IAAI,CAACiC,UAAU,CAAC;AACjC;AAAC","ignoreList":[]}
|
frontend/node_modules/@babel/core/lib/config/config-descriptors.js
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"use strict";
|
| 2 |
+
|
| 3 |
+
Object.defineProperty(exports, "__esModule", {
|
| 4 |
+
value: true
|
| 5 |
+
});
|
| 6 |
+
exports.createCachedDescriptors = createCachedDescriptors;
|
| 7 |
+
exports.createDescriptor = createDescriptor;
|
| 8 |
+
exports.createUncachedDescriptors = createUncachedDescriptors;
|
| 9 |
+
function _gensync() {
|
| 10 |
+
const data = require("gensync");
|
| 11 |
+
_gensync = function () {
|
| 12 |
+
return data;
|
| 13 |
+
};
|
| 14 |
+
return data;
|
| 15 |
+
}
|
| 16 |
+
var _functional = require("../gensync-utils/functional.js");
|
| 17 |
+
var _index = require("./files/index.js");
|
| 18 |
+
var _item = require("./item.js");
|
| 19 |
+
var _caching = require("./caching.js");
|
| 20 |
+
var _resolveTargets = require("./resolve-targets.js");
|
| 21 |
+
function isEqualDescriptor(a, b) {
|
| 22 |
+
var _a$file, _b$file, _a$file2, _b$file2;
|
| 23 |
+
return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && ((_a$file = a.file) == null ? void 0 : _a$file.request) === ((_b$file = b.file) == null ? void 0 : _b$file.request) && ((_a$file2 = a.file) == null ? void 0 : _a$file2.resolved) === ((_b$file2 = b.file) == null ? void 0 : _b$file2.resolved);
|
| 24 |
+
}
|
| 25 |
+
function* handlerOf(value) {
|
| 26 |
+
return value;
|
| 27 |
+
}
|
| 28 |
+
function optionsWithResolvedBrowserslistConfigFile(options, dirname) {
|
| 29 |
+
if (typeof options.browserslistConfigFile === "string") {
|
| 30 |
+
options.browserslistConfigFile = (0, _resolveTargets.resolveBrowserslistConfigFile)(options.browserslistConfigFile, dirname);
|
| 31 |
+
}
|
| 32 |
+
return options;
|
| 33 |
+
}
|
| 34 |
+
function createCachedDescriptors(dirname, options, alias) {
|
| 35 |
+
const {
|
| 36 |
+
plugins,
|
| 37 |
+
presets,
|
| 38 |
+
passPerPreset
|
| 39 |
+
} = options;
|
| 40 |
+
return {
|
| 41 |
+
options: optionsWithResolvedBrowserslistConfigFile(options, dirname),
|
| 42 |
+
plugins: plugins ? () => createCachedPluginDescriptors(plugins, dirname)(alias) : () => handlerOf([]),
|
| 43 |
+
presets: presets ? () => createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset) : () => handlerOf([])
|
| 44 |
+
};
|
| 45 |
+
}
|
| 46 |
+
function createUncachedDescriptors(dirname, options, alias) {
|
| 47 |
+
return {
|
| 48 |
+
options: optionsWithResolvedBrowserslistConfigFile(options, dirname),
|
| 49 |
+
plugins: (0, _functional.once)(() => createPluginDescriptors(options.plugins || [], dirname, alias)),
|
| 50 |
+
presets: (0, _functional.once)(() => createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset))
|
| 51 |
+
};
|
| 52 |
+
}
|
| 53 |
+
const PRESET_DESCRIPTOR_CACHE = new WeakMap();
|
| 54 |
+
const createCachedPresetDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => {
|
| 55 |
+
const dirname = cache.using(dir => dir);
|
| 56 |
+
return (0, _caching.makeStrongCacheSync)(alias => (0, _caching.makeStrongCache)(function* (passPerPreset) {
|
| 57 |
+
const descriptors = yield* createPresetDescriptors(items, dirname, alias, passPerPreset);
|
| 58 |
+
return descriptors.map(desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc));
|
| 59 |
+
}));
|
| 60 |
+
});
|
| 61 |
+
const PLUGIN_DESCRIPTOR_CACHE = new WeakMap();
|
| 62 |
+
const createCachedPluginDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => {
|
| 63 |
+
const dirname = cache.using(dir => dir);
|
| 64 |
+
return (0, _caching.makeStrongCache)(function* (alias) {
|
| 65 |
+
const descriptors = yield* createPluginDescriptors(items, dirname, alias);
|
| 66 |
+
return descriptors.map(desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc));
|
| 67 |
+
});
|
| 68 |
+
});
|
| 69 |
+
const DEFAULT_OPTIONS = {};
|
| 70 |
+
function loadCachedDescriptor(cache, desc) {
|
| 71 |
+
const {
|
| 72 |
+
value,
|
| 73 |
+
options = DEFAULT_OPTIONS
|
| 74 |
+
} = desc;
|
| 75 |
+
if (options === false) return desc;
|
| 76 |
+
let cacheByOptions = cache.get(value);
|
| 77 |
+
if (!cacheByOptions) {
|
| 78 |
+
cacheByOptions = new WeakMap();
|
| 79 |
+
cache.set(value, cacheByOptions);
|
| 80 |
+
}
|
| 81 |
+
let possibilities = cacheByOptions.get(options);
|
| 82 |
+
if (!possibilities) {
|
| 83 |
+
possibilities = [];
|
| 84 |
+
cacheByOptions.set(options, possibilities);
|
| 85 |
+
}
|
| 86 |
+
if (!possibilities.includes(desc)) {
|
| 87 |
+
const matches = possibilities.filter(possibility => isEqualDescriptor(possibility, desc));
|
| 88 |
+
if (matches.length > 0) {
|
| 89 |
+
return matches[0];
|
| 90 |
+
}
|
| 91 |
+
possibilities.push(desc);
|
| 92 |
+
}
|
| 93 |
+
return desc;
|
| 94 |
+
}
|
| 95 |
+
function* createPresetDescriptors(items, dirname, alias, passPerPreset) {
|
| 96 |
+
return yield* createDescriptors("preset", items, dirname, alias, passPerPreset);
|
| 97 |
+
}
|
| 98 |
+
function* createPluginDescriptors(items, dirname, alias) {
|
| 99 |
+
return yield* createDescriptors("plugin", items, dirname, alias);
|
| 100 |
+
}
|
| 101 |
+
function* createDescriptors(type, items, dirname, alias, ownPass) {
|
| 102 |
+
const descriptors = yield* _gensync().all(items.map((item, index) => createDescriptor(item, dirname, {
|
| 103 |
+
type,
|
| 104 |
+
alias: `${alias}$${index}`,
|
| 105 |
+
ownPass: !!ownPass
|
| 106 |
+
})));
|
| 107 |
+
assertNoDuplicates(descriptors);
|
| 108 |
+
return descriptors;
|
| 109 |
+
}
|
| 110 |
+
function* createDescriptor(pair, dirname, {
|
| 111 |
+
type,
|
| 112 |
+
alias,
|
| 113 |
+
ownPass
|
| 114 |
+
}) {
|
| 115 |
+
const desc = (0, _item.getItemDescriptor)(pair);
|
| 116 |
+
if (desc) {
|
| 117 |
+
return desc;
|
| 118 |
+
}
|
| 119 |
+
let name;
|
| 120 |
+
let options;
|
| 121 |
+
let value = pair;
|
| 122 |
+
if (Array.isArray(value)) {
|
| 123 |
+
if (value.length === 3) {
|
| 124 |
+
[value, options, name] = value;
|
| 125 |
+
} else {
|
| 126 |
+
[value, options] = value;
|
| 127 |
+
}
|
| 128 |
+
}
|
| 129 |
+
let file = undefined;
|
| 130 |
+
let filepath = null;
|
| 131 |
+
if (typeof value === "string") {
|
| 132 |
+
if (typeof type !== "string") {
|
| 133 |
+
throw new Error("To resolve a string-based item, the type of item must be given");
|
| 134 |
+
}
|
| 135 |
+
const resolver = type === "plugin" ? _index.loadPlugin : _index.loadPreset;
|
| 136 |
+
const request = value;
|
| 137 |
+
({
|
| 138 |
+
filepath,
|
| 139 |
+
value
|
| 140 |
+
} = yield* resolver(value, dirname));
|
| 141 |
+
file = {
|
| 142 |
+
request,
|
| 143 |
+
resolved: filepath
|
| 144 |
+
};
|
| 145 |
+
}
|
| 146 |
+
if (!value) {
|
| 147 |
+
throw new Error(`Unexpected falsy value: ${String(value)}`);
|
| 148 |
+
}
|
| 149 |
+
if (typeof value === "object" && value.__esModule) {
|
| 150 |
+
if (value.default) {
|
| 151 |
+
value = value.default;
|
| 152 |
+
} else {
|
| 153 |
+
throw new Error("Must export a default export when using ES6 modules.");
|
| 154 |
+
}
|
| 155 |
+
}
|
| 156 |
+
if (typeof value !== "object" && typeof value !== "function") {
|
| 157 |
+
throw new Error(`Unsupported format: ${typeof value}. Expected an object or a function.`);
|
| 158 |
+
}
|
| 159 |
+
if (filepath !== null && typeof value === "object" && value) {
|
| 160 |
+
throw new Error(`Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`);
|
| 161 |
+
}
|
| 162 |
+
return {
|
| 163 |
+
name,
|
| 164 |
+
alias: filepath || alias,
|
| 165 |
+
value,
|
| 166 |
+
options,
|
| 167 |
+
dirname,
|
| 168 |
+
ownPass,
|
| 169 |
+
file
|
| 170 |
+
};
|
| 171 |
+
}
|
| 172 |
+
function assertNoDuplicates(items) {
|
| 173 |
+
const map = new Map();
|
| 174 |
+
for (const item of items) {
|
| 175 |
+
if (typeof item.value !== "function") continue;
|
| 176 |
+
let nameMap = map.get(item.value);
|
| 177 |
+
if (!nameMap) {
|
| 178 |
+
nameMap = new Set();
|
| 179 |
+
map.set(item.value, nameMap);
|
| 180 |
+
}
|
| 181 |
+
if (nameMap.has(item.name)) {
|
| 182 |
+
const conflicts = items.filter(i => i.value === item.value);
|
| 183 |
+
throw new Error([`Duplicate plugin/preset detected.`, `If you'd like to use two separate instances of a plugin,`, `they need separate names, e.g.`, ``, ` plugins: [`, ` ['some-plugin', {}],`, ` ['some-plugin', {}, 'some unique name'],`, ` ]`, ``, `Duplicates detected are:`, `${JSON.stringify(conflicts, null, 2)}`].join("\n"));
|
| 184 |
+
}
|
| 185 |
+
nameMap.add(item.name);
|
| 186 |
+
}
|
| 187 |
+
}
|
| 188 |
+
0 && 0;
|
| 189 |
+
|
| 190 |
+
//# sourceMappingURL=config-descriptors.js.map
|
frontend/node_modules/@babel/core/lib/config/config-descriptors.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"names":["_gensync","data","require","_functional","_index","_item","_caching","_resolveTargets","isEqualDescriptor","a","b","_a$file","_b$file","_a$file2","_b$file2","name","value","options","dirname","alias","ownPass","file","request","resolved","handlerOf","optionsWithResolvedBrowserslistConfigFile","browserslistConfigFile","resolveBrowserslistConfigFile","createCachedDescriptors","plugins","presets","passPerPreset","createCachedPluginDescriptors","createCachedPresetDescriptors","createUncachedDescriptors","once","createPluginDescriptors","createPresetDescriptors","PRESET_DESCRIPTOR_CACHE","WeakMap","makeWeakCacheSync","items","cache","using","dir","makeStrongCacheSync","makeStrongCache","descriptors","map","desc","loadCachedDescriptor","PLUGIN_DESCRIPTOR_CACHE","DEFAULT_OPTIONS","cacheByOptions","get","set","possibilities","includes","matches","filter","possibility","length","push","createDescriptors","type","gensync","all","item","index","createDescriptor","assertNoDuplicates","pair","getItemDescriptor","Array","isArray","undefined","filepath","Error","resolver","loadPlugin","loadPreset","String","__esModule","default","Map","nameMap","Set","has","conflicts","i","JSON","stringify","join","add"],"sources":["../../src/config/config-descriptors.ts"],"sourcesContent":["import gensync, { type Handler } from \"gensync\";\nimport { once } from \"../gensync-utils/functional.ts\";\n\nimport { loadPlugin, loadPreset } from \"./files/index.ts\";\n\nimport { getItemDescriptor } from \"./item.ts\";\n\nimport {\n makeWeakCacheSync,\n makeStrongCacheSync,\n makeStrongCache,\n} from \"./caching.ts\";\nimport type { CacheConfigurator } from \"./caching.ts\";\n\nimport type {\n PluginItem,\n InputOptions,\n PresetItem,\n} from \"./validation/options.ts\";\n\nimport { resolveBrowserslistConfigFile } from \"./resolve-targets.ts\";\nimport type { PluginAPI, PresetAPI } from \"./helpers/config-api.ts\";\n\n// Represents a config object and functions to lazily load the descriptors\n// for the plugins and presets so we don't load the plugins/presets unless\n// the options object actually ends up being applicable.\nexport type OptionsAndDescriptors = {\n options: InputOptions;\n plugins: () => Handler<UnloadedDescriptor<PluginAPI>[]>;\n presets: () => Handler<UnloadedDescriptor<PresetAPI>[]>;\n};\n\n// Represents a plugin or presets at a given location in a config object.\n// At this point these have been resolved to a specific object or function,\n// but have not yet been executed to call functions with options.\nexport interface UnloadedDescriptor<API, Options = object | undefined> {\n name: string | undefined;\n value: object | ((api: API, options: Options, dirname: string) => unknown);\n options: Options;\n dirname: string;\n alias: string;\n ownPass?: boolean;\n file?: {\n request: string;\n resolved: string;\n };\n}\n\nfunction isEqualDescriptor<API>(\n a: UnloadedDescriptor<API>,\n b: UnloadedDescriptor<API>,\n): boolean {\n return (\n a.name === b.name &&\n a.value === b.value &&\n a.options === b.options &&\n a.dirname === b.dirname &&\n a.alias === b.alias &&\n a.ownPass === b.ownPass &&\n a.file?.request === b.file?.request &&\n a.file?.resolved === b.file?.resolved\n );\n}\n\nexport type ValidatedFile = {\n filepath: string;\n dirname: string;\n options: InputOptions;\n};\n\n// eslint-disable-next-line require-yield\nfunction* handlerOf<T>(value: T): Handler<T> {\n return value;\n}\n\nfunction optionsWithResolvedBrowserslistConfigFile(\n options: InputOptions,\n dirname: string,\n): InputOptions {\n if (typeof options.browserslistConfigFile === \"string\") {\n options.browserslistConfigFile = resolveBrowserslistConfigFile(\n options.browserslistConfigFile,\n dirname,\n );\n }\n return options;\n}\n\n/**\n * Create a set of descriptors from a given options object, preserving\n * descriptor identity based on the identity of the plugin/preset arrays\n * themselves, and potentially on the identity of the plugins/presets + options.\n */\nexport function createCachedDescriptors(\n dirname: string,\n options: InputOptions,\n alias: string,\n): OptionsAndDescriptors {\n const { plugins, presets, passPerPreset } = options;\n return {\n options: optionsWithResolvedBrowserslistConfigFile(options, dirname),\n plugins: plugins\n ? () =>\n // @ts-expect-error todo(flow->ts) ts complains about incorrect arguments\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n createCachedPluginDescriptors(plugins, dirname)(alias)\n : () => handlerOf([]),\n presets: presets\n ? () =>\n // @ts-expect-error todo(flow->ts) ts complains about incorrect arguments\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n createCachedPresetDescriptors(presets, dirname)(alias)(\n !!passPerPreset,\n )\n : () => handlerOf([]),\n };\n}\n\n/**\n * Create a set of descriptors from a given options object, with consistent\n * identity for the descriptors, but not caching based on any specific identity.\n */\nexport function createUncachedDescriptors(\n dirname: string,\n options: InputOptions,\n alias: string,\n): OptionsAndDescriptors {\n return {\n options: optionsWithResolvedBrowserslistConfigFile(options, dirname),\n // The returned result here is cached to represent a config object in\n // memory, so we build and memoize the descriptors to ensure the same\n // values are returned consistently.\n plugins: once(() =>\n createPluginDescriptors(options.plugins || [], dirname, alias),\n ),\n presets: once(() =>\n createPresetDescriptors(\n options.presets || [],\n dirname,\n alias,\n !!options.passPerPreset,\n ),\n ),\n };\n}\n\nconst PRESET_DESCRIPTOR_CACHE = new WeakMap();\nconst createCachedPresetDescriptors = makeWeakCacheSync(\n (items: PresetItem[], cache: CacheConfigurator<string>) => {\n const dirname = cache.using(dir => dir);\n return makeStrongCacheSync((alias: string) =>\n makeStrongCache(function* (\n passPerPreset: boolean,\n ): Handler<UnloadedDescriptor<PresetAPI>[]> {\n const descriptors = yield* createPresetDescriptors(\n items,\n dirname,\n alias,\n passPerPreset,\n );\n return descriptors.map(\n // Items are cached using the overall preset array identity when\n // possibly, but individual descriptors are also cached if a match\n // can be found in the previously-used descriptor lists.\n desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc),\n );\n }),\n );\n },\n);\n\nconst PLUGIN_DESCRIPTOR_CACHE = new WeakMap();\nconst createCachedPluginDescriptors = makeWeakCacheSync(\n (items: PluginItem[], cache: CacheConfigurator<string>) => {\n const dirname = cache.using(dir => dir);\n return makeStrongCache(function* (\n alias: string,\n ): Handler<UnloadedDescriptor<PluginAPI>[]> {\n const descriptors = yield* createPluginDescriptors(items, dirname, alias);\n return descriptors.map(\n // Items are cached using the overall plugin array identity when\n // possibly, but individual descriptors are also cached if a match\n // can be found in the previously-used descriptor lists.\n desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc),\n );\n });\n },\n);\n\n/**\n * When no options object is given in a descriptor, this object is used\n * as a WeakMap key in order to have consistent identity.\n */\nconst DEFAULT_OPTIONS = {};\n\n/**\n * Given the cache and a descriptor, returns a matching descriptor from the\n * cache, or else returns the input descriptor and adds it to the cache for\n * next time.\n */\nfunction loadCachedDescriptor<API>(\n cache: WeakMap<object | Function, WeakMap<object, UnloadedDescriptor<API>[]>>,\n desc: UnloadedDescriptor<API>,\n) {\n const { value, options = DEFAULT_OPTIONS } = desc;\n if (options === false) return desc;\n\n let cacheByOptions = cache.get(value);\n if (!cacheByOptions) {\n cacheByOptions = new WeakMap();\n cache.set(value, cacheByOptions);\n }\n\n let possibilities = cacheByOptions.get(options);\n if (!possibilities) {\n possibilities = [];\n cacheByOptions.set(options, possibilities);\n }\n\n if (!possibilities.includes(desc)) {\n const matches = possibilities.filter(possibility =>\n isEqualDescriptor(possibility, desc),\n );\n if (matches.length > 0) {\n return matches[0];\n }\n\n possibilities.push(desc);\n }\n\n return desc;\n}\n\nfunction* createPresetDescriptors(\n items: PresetItem[],\n dirname: string,\n alias: string,\n passPerPreset: boolean,\n): Handler<UnloadedDescriptor<PresetAPI>[]> {\n return yield* createDescriptors(\n \"preset\",\n items,\n dirname,\n alias,\n passPerPreset,\n );\n}\n\nfunction* createPluginDescriptors(\n items: PluginItem[],\n dirname: string,\n alias: string,\n): Handler<UnloadedDescriptor<PluginAPI>[]> {\n return yield* createDescriptors(\"plugin\", items, dirname, alias);\n}\n\nfunction* createDescriptors<const Type extends \"plugin\" | \"preset\">(\n type: Type,\n items: Type extends \"plugin\" ? PluginItem[] : PresetItem[],\n dirname: string,\n alias: string,\n ownPass?: boolean,\n): Handler<\n UnloadedDescriptor<Type extends \"plugin\" ? PluginAPI : PresetAPI>[]\n> {\n const descriptors = yield* gensync.all(\n items.map((item, index) =>\n createDescriptor(item, dirname, {\n type,\n alias: `${alias}$${index}`,\n ownPass: !!ownPass,\n }),\n ),\n );\n\n assertNoDuplicates(descriptors);\n\n return descriptors;\n}\n\n/**\n * Given a plugin/preset item, resolve it into a standard format.\n */\nexport function* createDescriptor<API>(\n pair: PluginItem | PresetItem,\n dirname: string,\n {\n type,\n alias,\n ownPass,\n }: {\n type?: \"plugin\" | \"preset\";\n alias: string;\n ownPass?: boolean;\n },\n): Handler<UnloadedDescriptor<API>> {\n const desc = getItemDescriptor(pair);\n if (desc) {\n return desc;\n }\n\n let name;\n let options;\n let value = pair;\n if (Array.isArray(value)) {\n if (value.length === 3) {\n [value, options, name] = value;\n } else {\n [value, options] = value;\n }\n }\n\n let file = undefined;\n let filepath = null;\n if (typeof value === \"string\") {\n if (typeof type !== \"string\") {\n throw new Error(\n \"To resolve a string-based item, the type of item must be given\",\n );\n }\n const resolver = type === \"plugin\" ? loadPlugin : loadPreset;\n const request = value;\n\n // @ts-expect-error value must be a PluginItem\n ({ filepath, value } = yield* resolver(value, dirname));\n\n file = {\n request,\n resolved: filepath,\n };\n }\n\n if (!value) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n throw new Error(`Unexpected falsy value: ${String(value)}`);\n }\n\n // @ts-expect-error Handle transpiled ES6 modules.\n if (typeof value === \"object\" && value.__esModule) {\n // @ts-expect-error Handle transpiled ES6 modules.\n if (value.default) {\n // @ts-expect-error Handle transpiled ES6 modules.\n value = value.default;\n } else {\n throw new Error(\"Must export a default export when using ES6 modules.\");\n }\n }\n\n if (typeof value !== \"object\" && typeof value !== \"function\") {\n throw new Error(\n `Unsupported format: ${typeof value}. Expected an object or a function.`,\n );\n }\n\n if (filepath !== null && typeof value === \"object\" && value) {\n // We allow object values for plugins/presets nested directly within a\n // config object, because it can be useful to define them in nested\n // configuration contexts.\n throw new Error(\n `Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`,\n );\n }\n\n return {\n name,\n alias: filepath || alias,\n value,\n options,\n dirname,\n ownPass,\n file,\n };\n}\n\nfunction assertNoDuplicates<API>(items: UnloadedDescriptor<API>[]): void {\n const map = new Map();\n\n for (const item of items) {\n if (typeof item.value !== \"function\") continue;\n\n let nameMap = map.get(item.value);\n if (!nameMap) {\n nameMap = new Set();\n map.set(item.value, nameMap);\n }\n\n if (nameMap.has(item.name)) {\n const conflicts = items.filter(i => i.value === item.value);\n throw new Error(\n [\n `Duplicate plugin/preset detected.`,\n `If you'd like to use two separate instances of a plugin,`,\n `they need separate names, e.g.`,\n ``,\n ` plugins: [`,\n ` ['some-plugin', {}],`,\n ` ['some-plugin', {}, 'some unique name'],`,\n ` ]`,\n ``,\n `Duplicates detected are:`,\n `${JSON.stringify(conflicts, null, 2)}`,\n ].join(\"\\n\"),\n );\n }\n\n nameMap.add(item.name);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
frontend/node_modules/@babel/core/lib/config/files/configuration.js
ADDED
|
@@ -0,0 +1,290 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"use strict";
|
| 2 |
+
|
| 3 |
+
Object.defineProperty(exports, "__esModule", {
|
| 4 |
+
value: true
|
| 5 |
+
});
|
| 6 |
+
exports.ROOT_CONFIG_FILENAMES = void 0;
|
| 7 |
+
exports.findConfigUpwards = findConfigUpwards;
|
| 8 |
+
exports.findRelativeConfig = findRelativeConfig;
|
| 9 |
+
exports.findRootConfig = findRootConfig;
|
| 10 |
+
exports.loadConfig = loadConfig;
|
| 11 |
+
exports.resolveShowConfigPath = resolveShowConfigPath;
|
| 12 |
+
function _debug() {
|
| 13 |
+
const data = require("debug");
|
| 14 |
+
_debug = function () {
|
| 15 |
+
return data;
|
| 16 |
+
};
|
| 17 |
+
return data;
|
| 18 |
+
}
|
| 19 |
+
function _fs() {
|
| 20 |
+
const data = require("fs");
|
| 21 |
+
_fs = function () {
|
| 22 |
+
return data;
|
| 23 |
+
};
|
| 24 |
+
return data;
|
| 25 |
+
}
|
| 26 |
+
function _path() {
|
| 27 |
+
const data = require("path");
|
| 28 |
+
_path = function () {
|
| 29 |
+
return data;
|
| 30 |
+
};
|
| 31 |
+
return data;
|
| 32 |
+
}
|
| 33 |
+
function _json() {
|
| 34 |
+
const data = require("json5");
|
| 35 |
+
_json = function () {
|
| 36 |
+
return data;
|
| 37 |
+
};
|
| 38 |
+
return data;
|
| 39 |
+
}
|
| 40 |
+
function _gensync() {
|
| 41 |
+
const data = require("gensync");
|
| 42 |
+
_gensync = function () {
|
| 43 |
+
return data;
|
| 44 |
+
};
|
| 45 |
+
return data;
|
| 46 |
+
}
|
| 47 |
+
var _caching = require("../caching.js");
|
| 48 |
+
var _configApi = require("../helpers/config-api.js");
|
| 49 |
+
var _utils = require("./utils.js");
|
| 50 |
+
var _moduleTypes = require("./module-types.js");
|
| 51 |
+
var _patternToRegex = require("../pattern-to-regex.js");
|
| 52 |
+
var _configError = require("../../errors/config-error.js");
|
| 53 |
+
var fs = require("../../gensync-utils/fs.js");
|
| 54 |
+
require("module");
|
| 55 |
+
var _rewriteStackTrace = require("../../errors/rewrite-stack-trace.js");
|
| 56 |
+
var _async = require("../../gensync-utils/async.js");
|
| 57 |
+
const debug = _debug()("babel:config:loading:files:configuration");
|
| 58 |
+
const ROOT_CONFIG_FILENAMES = exports.ROOT_CONFIG_FILENAMES = ["babel.config.js", "babel.config.cjs", "babel.config.mjs", "babel.config.json", "babel.config.cts", "babel.config.ts", "babel.config.mts"];
|
| 59 |
+
const RELATIVE_CONFIG_FILENAMES = [".babelrc", ".babelrc.js", ".babelrc.cjs", ".babelrc.mjs", ".babelrc.json", ".babelrc.cts"];
|
| 60 |
+
const BABELIGNORE_FILENAME = ".babelignore";
|
| 61 |
+
const runConfig = (0, _caching.makeWeakCache)(function* runConfig(options, cache) {
|
| 62 |
+
yield* [];
|
| 63 |
+
return {
|
| 64 |
+
options: (0, _rewriteStackTrace.endHiddenCallStack)(options)((0, _configApi.makeConfigAPI)(cache)),
|
| 65 |
+
cacheNeedsConfiguration: !cache.configured()
|
| 66 |
+
};
|
| 67 |
+
});
|
| 68 |
+
function* readConfigCode(filepath, data) {
|
| 69 |
+
if (!_fs().existsSync(filepath)) return null;
|
| 70 |
+
let options = yield* (0, _moduleTypes.default)(filepath, (yield* (0, _async.isAsync)()) ? "auto" : "require", "You appear to be using a native ECMAScript module configuration " + "file, which is only supported when running Babel asynchronously " + "or when using the Node.js `--experimental-require-module` flag.", "You appear to be using a configuration file that contains top-level " + "await, which is only supported when running Babel asynchronously.");
|
| 71 |
+
let cacheNeedsConfiguration = false;
|
| 72 |
+
if (typeof options === "function") {
|
| 73 |
+
({
|
| 74 |
+
options,
|
| 75 |
+
cacheNeedsConfiguration
|
| 76 |
+
} = yield* runConfig(options, data));
|
| 77 |
+
}
|
| 78 |
+
if (!options || typeof options !== "object" || Array.isArray(options)) {
|
| 79 |
+
throw new _configError.default(`Configuration should be an exported JavaScript object.`, filepath);
|
| 80 |
+
}
|
| 81 |
+
if (typeof options.then === "function") {
|
| 82 |
+
options.catch == null || options.catch(() => {});
|
| 83 |
+
throw new _configError.default(`You appear to be using an async configuration, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously return your config.`, filepath);
|
| 84 |
+
}
|
| 85 |
+
if (cacheNeedsConfiguration) throwConfigError(filepath);
|
| 86 |
+
return buildConfigFileObject(options, filepath);
|
| 87 |
+
}
|
| 88 |
+
const cfboaf = new WeakMap();
|
| 89 |
+
function buildConfigFileObject(options, filepath) {
|
| 90 |
+
let configFilesByFilepath = cfboaf.get(options);
|
| 91 |
+
if (!configFilesByFilepath) {
|
| 92 |
+
cfboaf.set(options, configFilesByFilepath = new Map());
|
| 93 |
+
}
|
| 94 |
+
let configFile = configFilesByFilepath.get(filepath);
|
| 95 |
+
if (!configFile) {
|
| 96 |
+
configFile = {
|
| 97 |
+
filepath,
|
| 98 |
+
dirname: _path().dirname(filepath),
|
| 99 |
+
options
|
| 100 |
+
};
|
| 101 |
+
configFilesByFilepath.set(filepath, configFile);
|
| 102 |
+
}
|
| 103 |
+
return configFile;
|
| 104 |
+
}
|
| 105 |
+
const packageToBabelConfig = (0, _caching.makeWeakCacheSync)(file => {
|
| 106 |
+
const babel = file.options.babel;
|
| 107 |
+
if (babel === undefined) return null;
|
| 108 |
+
if (typeof babel !== "object" || Array.isArray(babel) || babel === null) {
|
| 109 |
+
throw new _configError.default(`.babel property must be an object`, file.filepath);
|
| 110 |
+
}
|
| 111 |
+
return {
|
| 112 |
+
filepath: file.filepath,
|
| 113 |
+
dirname: file.dirname,
|
| 114 |
+
options: babel
|
| 115 |
+
};
|
| 116 |
+
});
|
| 117 |
+
const readConfigJSON5 = (0, _utils.makeStaticFileCache)((filepath, content) => {
|
| 118 |
+
let options;
|
| 119 |
+
try {
|
| 120 |
+
options = _json().parse(content);
|
| 121 |
+
} catch (err) {
|
| 122 |
+
throw new _configError.default(`Error while parsing config - ${err.message}`, filepath);
|
| 123 |
+
}
|
| 124 |
+
if (!options) throw new _configError.default(`No config detected`, filepath);
|
| 125 |
+
if (typeof options !== "object") {
|
| 126 |
+
throw new _configError.default(`Config returned typeof ${typeof options}`, filepath);
|
| 127 |
+
}
|
| 128 |
+
if (Array.isArray(options)) {
|
| 129 |
+
throw new _configError.default(`Expected config object but found array`, filepath);
|
| 130 |
+
}
|
| 131 |
+
delete options.$schema;
|
| 132 |
+
return {
|
| 133 |
+
filepath,
|
| 134 |
+
dirname: _path().dirname(filepath),
|
| 135 |
+
options
|
| 136 |
+
};
|
| 137 |
+
});
|
| 138 |
+
const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => {
|
| 139 |
+
const ignoreDir = _path().dirname(filepath);
|
| 140 |
+
const ignorePatterns = content.split("\n").map(line => line.replace(/#.*$/, "").trim()).filter(Boolean);
|
| 141 |
+
for (const pattern of ignorePatterns) {
|
| 142 |
+
if (pattern.startsWith("!")) {
|
| 143 |
+
throw new _configError.default(`Negation of file paths is not supported.`, filepath);
|
| 144 |
+
}
|
| 145 |
+
}
|
| 146 |
+
return {
|
| 147 |
+
filepath,
|
| 148 |
+
dirname: _path().dirname(filepath),
|
| 149 |
+
ignore: ignorePatterns.map(pattern => (0, _patternToRegex.default)(pattern, ignoreDir))
|
| 150 |
+
};
|
| 151 |
+
});
|
| 152 |
+
function findConfigUpwards(rootDir) {
|
| 153 |
+
let dirname = rootDir;
|
| 154 |
+
for (;;) {
|
| 155 |
+
for (const filename of ROOT_CONFIG_FILENAMES) {
|
| 156 |
+
if (_fs().existsSync(_path().join(dirname, filename))) {
|
| 157 |
+
return dirname;
|
| 158 |
+
}
|
| 159 |
+
}
|
| 160 |
+
const nextDir = _path().dirname(dirname);
|
| 161 |
+
if (dirname === nextDir) break;
|
| 162 |
+
dirname = nextDir;
|
| 163 |
+
}
|
| 164 |
+
return null;
|
| 165 |
+
}
|
| 166 |
+
function* findRelativeConfig(packageData, envName, caller) {
|
| 167 |
+
let config = null;
|
| 168 |
+
let ignore = null;
|
| 169 |
+
const dirname = _path().dirname(packageData.filepath);
|
| 170 |
+
for (const loc of packageData.directories) {
|
| 171 |
+
if (!config) {
|
| 172 |
+
var _packageData$pkg;
|
| 173 |
+
config = yield* loadOneConfig(RELATIVE_CONFIG_FILENAMES, loc, envName, caller, ((_packageData$pkg = packageData.pkg) == null ? void 0 : _packageData$pkg.dirname) === loc ? packageToBabelConfig(packageData.pkg) : null);
|
| 174 |
+
}
|
| 175 |
+
if (!ignore) {
|
| 176 |
+
const ignoreLoc = _path().join(loc, BABELIGNORE_FILENAME);
|
| 177 |
+
ignore = yield* readIgnoreConfig(ignoreLoc);
|
| 178 |
+
if (ignore) {
|
| 179 |
+
debug("Found ignore %o from %o.", ignore.filepath, dirname);
|
| 180 |
+
}
|
| 181 |
+
}
|
| 182 |
+
}
|
| 183 |
+
return {
|
| 184 |
+
config,
|
| 185 |
+
ignore
|
| 186 |
+
};
|
| 187 |
+
}
|
| 188 |
+
function findRootConfig(dirname, envName, caller) {
|
| 189 |
+
return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller);
|
| 190 |
+
}
|
| 191 |
+
function* loadOneConfig(names, dirname, envName, caller, previousConfig = null) {
|
| 192 |
+
const configs = yield* _gensync().all(names.map(filename => readConfig(_path().join(dirname, filename), envName, caller)));
|
| 193 |
+
const config = configs.reduce((previousConfig, config) => {
|
| 194 |
+
if (config && previousConfig) {
|
| 195 |
+
throw new _configError.default(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().basename(previousConfig.filepath)}\n` + ` - ${config.filepath}\n` + `from ${dirname}`);
|
| 196 |
+
}
|
| 197 |
+
return config || previousConfig;
|
| 198 |
+
}, previousConfig);
|
| 199 |
+
if (config) {
|
| 200 |
+
debug("Found configuration %o from %o.", config.filepath, dirname);
|
| 201 |
+
}
|
| 202 |
+
return config;
|
| 203 |
+
}
|
| 204 |
+
function* loadConfig(name, dirname, envName, caller) {
|
| 205 |
+
const filepath = (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
|
| 206 |
+
paths: [b]
|
| 207 |
+
}, M = require("module")) => {
|
| 208 |
+
let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
|
| 209 |
+
if (f) return f;
|
| 210 |
+
f = new Error(`Cannot resolve module '${r}'`);
|
| 211 |
+
f.code = "MODULE_NOT_FOUND";
|
| 212 |
+
throw f;
|
| 213 |
+
})(name, {
|
| 214 |
+
paths: [dirname]
|
| 215 |
+
});
|
| 216 |
+
const conf = yield* readConfig(filepath, envName, caller);
|
| 217 |
+
if (!conf) {
|
| 218 |
+
throw new _configError.default(`Config file contains no configuration data`, filepath);
|
| 219 |
+
}
|
| 220 |
+
debug("Loaded config %o from %o.", name, dirname);
|
| 221 |
+
return conf;
|
| 222 |
+
}
|
| 223 |
+
function readConfig(filepath, envName, caller) {
|
| 224 |
+
const ext = _path().extname(filepath);
|
| 225 |
+
switch (ext) {
|
| 226 |
+
case ".js":
|
| 227 |
+
case ".cjs":
|
| 228 |
+
case ".mjs":
|
| 229 |
+
case ".ts":
|
| 230 |
+
case ".cts":
|
| 231 |
+
case ".mts":
|
| 232 |
+
return readConfigCode(filepath, {
|
| 233 |
+
envName,
|
| 234 |
+
caller
|
| 235 |
+
});
|
| 236 |
+
default:
|
| 237 |
+
return readConfigJSON5(filepath);
|
| 238 |
+
}
|
| 239 |
+
}
|
| 240 |
+
function* resolveShowConfigPath(dirname) {
|
| 241 |
+
const targetPath = process.env.BABEL_SHOW_CONFIG_FOR;
|
| 242 |
+
if (targetPath != null) {
|
| 243 |
+
const absolutePath = _path().resolve(dirname, targetPath);
|
| 244 |
+
const stats = yield* fs.stat(absolutePath);
|
| 245 |
+
if (!stats.isFile()) {
|
| 246 |
+
throw new Error(`${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`);
|
| 247 |
+
}
|
| 248 |
+
return absolutePath;
|
| 249 |
+
}
|
| 250 |
+
return null;
|
| 251 |
+
}
|
| 252 |
+
function throwConfigError(filepath) {
|
| 253 |
+
throw new _configError.default(`\
|
| 254 |
+
Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured
|
| 255 |
+
for various types of caching, using the first param of their handler functions:
|
| 256 |
+
|
| 257 |
+
module.exports = function(api) {
|
| 258 |
+
// The API exposes the following:
|
| 259 |
+
|
| 260 |
+
// Cache the returned value forever and don't call this function again.
|
| 261 |
+
api.cache(true);
|
| 262 |
+
|
| 263 |
+
// Don't cache at all. Not recommended because it will be very slow.
|
| 264 |
+
api.cache(false);
|
| 265 |
+
|
| 266 |
+
// Cached based on the value of some function. If this function returns a value different from
|
| 267 |
+
// a previously-encountered value, the plugins will re-evaluate.
|
| 268 |
+
var env = api.cache(() => process.env.NODE_ENV);
|
| 269 |
+
|
| 270 |
+
// If testing for a specific env, we recommend specifics to avoid instantiating a plugin for
|
| 271 |
+
// any possible NODE_ENV value that might come up during plugin execution.
|
| 272 |
+
var isProd = api.cache(() => process.env.NODE_ENV === "production");
|
| 273 |
+
|
| 274 |
+
// .cache(fn) will perform a linear search though instances to find the matching plugin based
|
| 275 |
+
// based on previous instantiated plugins. If you want to recreate the plugin and discard the
|
| 276 |
+
// previous instance whenever something changes, you may use:
|
| 277 |
+
var isProd = api.cache.invalidate(() => process.env.NODE_ENV === "production");
|
| 278 |
+
|
| 279 |
+
// Note, we also expose the following more-verbose versions of the above examples:
|
| 280 |
+
api.cache.forever(); // api.cache(true)
|
| 281 |
+
api.cache.never(); // api.cache(false)
|
| 282 |
+
api.cache.using(fn); // api.cache(fn)
|
| 283 |
+
|
| 284 |
+
// Return the value that will be cached.
|
| 285 |
+
return { };
|
| 286 |
+
};`, filepath);
|
| 287 |
+
}
|
| 288 |
+
0 && 0;
|
| 289 |
+
|
| 290 |
+
//# sourceMappingURL=configuration.js.map
|
frontend/node_modules/@babel/core/lib/config/files/configuration.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"names":["_debug","data","require","_fs","_path","_json","_gensync","_caching","_configApi","_utils","_moduleTypes","_patternToRegex","_configError","fs","_rewriteStackTrace","_async","debug","buildDebug","ROOT_CONFIG_FILENAMES","exports","RELATIVE_CONFIG_FILENAMES","BABELIGNORE_FILENAME","runConfig","makeWeakCache","options","cache","endHiddenCallStack","makeConfigAPI","cacheNeedsConfiguration","configured","readConfigCode","filepath","nodeFs","existsSync","loadCodeDefault","isAsync","Array","isArray","ConfigError","then","catch","throwConfigError","buildConfigFileObject","cfboaf","WeakMap","configFilesByFilepath","get","set","Map","configFile","dirname","path","packageToBabelConfig","makeWeakCacheSync","file","babel","undefined","readConfigJSON5","makeStaticFileCache","content","json5","parse","err","message","$schema","readIgnoreConfig","ignoreDir","ignorePatterns","split","map","line","replace","trim","filter","Boolean","pattern","startsWith","ignore","pathPatternToRegex","findConfigUpwards","rootDir","filename","join","nextDir","findRelativeConfig","packageData","envName","caller","config","loc","directories","_packageData$pkg","loadOneConfig","pkg","ignoreLoc","findRootConfig","names","previousConfig","configs","gensync","all","readConfig","reduce","basename","loadConfig","name","v","w","process","versions","node","resolve","r","paths","b","M","f","_findPath","_nodeModulePaths","concat","Error","code","conf","ext","extname","resolveShowConfigPath","targetPath","env","BABEL_SHOW_CONFIG_FOR","absolutePath","stats","stat","isFile"],"sources":["../../../src/config/files/configuration.ts"],"sourcesContent":["import buildDebug from \"debug\";\nimport nodeFs from \"node:fs\";\nimport path from \"node:path\";\nimport json5 from \"json5\";\nimport gensync from \"gensync\";\nimport type { Handler } from \"gensync\";\nimport { makeWeakCache, makeWeakCacheSync } from \"../caching.ts\";\nimport type { CacheConfigurator } from \"../caching.ts\";\nimport { makeConfigAPI } from \"../helpers/config-api.ts\";\nimport type { ConfigAPI } from \"../helpers/config-api.ts\";\nimport { makeStaticFileCache } from \"./utils.ts\";\nimport loadCodeDefault from \"./module-types.ts\";\nimport pathPatternToRegex from \"../pattern-to-regex.ts\";\nimport type { FilePackageData, RelativeConfig, ConfigFile } from \"./types.ts\";\nimport type { CallerMetadata, InputOptions } from \"../validation/options.ts\";\nimport ConfigError from \"../../errors/config-error.ts\";\n\nimport * as fs from \"../../gensync-utils/fs.ts\";\n\nimport { createRequire } from \"node:module\";\nimport { endHiddenCallStack } from \"../../errors/rewrite-stack-trace.ts\";\nimport { isAsync } from \"../../gensync-utils/async.ts\";\nconst require = createRequire(import.meta.url);\n\nconst debug = buildDebug(\"babel:config:loading:files:configuration\");\n\nexport const ROOT_CONFIG_FILENAMES = [\n \"babel.config.js\",\n \"babel.config.cjs\",\n \"babel.config.mjs\",\n \"babel.config.json\",\n \"babel.config.cts\",\n \"babel.config.ts\",\n \"babel.config.mts\",\n];\nconst RELATIVE_CONFIG_FILENAMES = [\n \".babelrc\",\n \".babelrc.js\",\n \".babelrc.cjs\",\n \".babelrc.mjs\",\n \".babelrc.json\",\n \".babelrc.cts\",\n];\n\nconst BABELIGNORE_FILENAME = \".babelignore\";\n\ntype ConfigCacheData = {\n envName: string;\n caller: CallerMetadata | undefined;\n};\n\nconst runConfig = makeWeakCache(function* runConfig(\n options: Function,\n cache: CacheConfigurator<ConfigCacheData>,\n): Handler<{\n options: InputOptions | null;\n cacheNeedsConfiguration: boolean;\n}> {\n // if we want to make it possible to use async configs\n yield* [];\n\n return {\n options: endHiddenCallStack(options as any as (api: ConfigAPI) => unknown)(\n makeConfigAPI(cache),\n ),\n cacheNeedsConfiguration: !cache.configured(),\n };\n});\n\nfunction* readConfigCode(\n filepath: string,\n data: ConfigCacheData,\n): Handler<ConfigFile | null> {\n if (!nodeFs.existsSync(filepath)) return null;\n\n let options = yield* loadCodeDefault(\n filepath,\n (yield* isAsync()) ? \"auto\" : \"require\",\n \"You appear to be using a native ECMAScript module configuration \" +\n \"file, which is only supported when running Babel asynchronously \" +\n \"or when using the Node.js `--experimental-require-module` flag.\",\n \"You appear to be using a configuration file that contains top-level \" +\n \"await, which is only supported when running Babel asynchronously.\",\n );\n\n let cacheNeedsConfiguration = false;\n if (typeof options === \"function\") {\n ({ options, cacheNeedsConfiguration } = yield* runConfig(options, data));\n }\n\n if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n throw new ConfigError(\n `Configuration should be an exported JavaScript object.`,\n filepath,\n );\n }\n\n // @ts-expect-error todo(flow->ts)\n if (typeof options.then === \"function\") {\n // @ts-expect-error We use ?. in case options is a thenable but not a promise\n options.catch?.(() => {});\n throw new ConfigError(\n `You appear to be using an async configuration, ` +\n `which your current version of Babel does not support. ` +\n `We may add support for this in the future, ` +\n `but if you're on the most recent version of @babel/core and still ` +\n `seeing this error, then you'll need to synchronously return your config.`,\n filepath,\n );\n }\n\n if (cacheNeedsConfiguration) throwConfigError(filepath);\n\n return buildConfigFileObject(options, filepath);\n}\n\n// We cache the generated ConfigFile object rather than creating a new one\n// every time, so that it can be used as a cache key in other functions.\nconst cfboaf /* configFilesByOptionsAndFilepath */ = new WeakMap<\n InputOptions,\n Map<string, ConfigFile>\n>();\nfunction buildConfigFileObject(\n options: InputOptions,\n filepath: string,\n): ConfigFile {\n let configFilesByFilepath = cfboaf.get(options);\n if (!configFilesByFilepath) {\n cfboaf.set(options, (configFilesByFilepath = new Map()));\n }\n\n let configFile = configFilesByFilepath.get(filepath);\n if (!configFile) {\n configFile = {\n filepath,\n dirname: path.dirname(filepath),\n options,\n };\n configFilesByFilepath.set(filepath, configFile);\n }\n\n return configFile;\n}\n\nconst packageToBabelConfig = makeWeakCacheSync(\n (file: ConfigFile): ConfigFile | null => {\n const babel: unknown = file.options.babel;\n\n if (babel === undefined) return null;\n\n if (typeof babel !== \"object\" || Array.isArray(babel) || babel === null) {\n throw new ConfigError(`.babel property must be an object`, file.filepath);\n }\n\n return {\n filepath: file.filepath,\n dirname: file.dirname,\n options: babel,\n };\n },\n);\n\nconst readConfigJSON5 = makeStaticFileCache((filepath, content): ConfigFile => {\n let options;\n try {\n options = json5.parse(content);\n } catch (err) {\n throw new ConfigError(\n `Error while parsing config - ${err.message}`,\n filepath,\n );\n }\n\n if (!options) throw new ConfigError(`No config detected`, filepath);\n\n if (typeof options !== \"object\") {\n throw new ConfigError(`Config returned typeof ${typeof options}`, filepath);\n }\n if (Array.isArray(options)) {\n throw new ConfigError(`Expected config object but found array`, filepath);\n }\n\n delete options.$schema;\n\n return {\n filepath,\n dirname: path.dirname(filepath),\n options,\n };\n});\n\nconst readIgnoreConfig = makeStaticFileCache((filepath, content) => {\n const ignoreDir = path.dirname(filepath);\n const ignorePatterns = content\n .split(\"\\n\")\n .map(line =>\n line.replace(process.env.BABEL_8_BREAKING ? /^#.*$/ : /#.*$/, \"\").trim(),\n )\n .filter(Boolean);\n\n for (const pattern of ignorePatterns) {\n if (pattern.startsWith(\"!\")) {\n throw new ConfigError(\n `Negation of file paths is not supported.`,\n filepath,\n );\n }\n }\n\n return {\n filepath,\n dirname: path.dirname(filepath),\n ignore: ignorePatterns.map(pattern =>\n pathPatternToRegex(pattern, ignoreDir),\n ),\n };\n});\n\nexport function findConfigUpwards(rootDir: string): string | null {\n let dirname = rootDir;\n for (;;) {\n for (const filename of ROOT_CONFIG_FILENAMES) {\n if (nodeFs.existsSync(path.join(dirname, filename))) {\n return dirname;\n }\n }\n\n const nextDir = path.dirname(dirname);\n if (dirname === nextDir) break;\n dirname = nextDir;\n }\n\n return null;\n}\n\nexport function* findRelativeConfig(\n packageData: FilePackageData,\n envName: string,\n caller: CallerMetadata | undefined,\n): Handler<RelativeConfig> {\n let config = null;\n let ignore = null;\n\n const dirname = path.dirname(packageData.filepath);\n\n for (const loc of packageData.directories) {\n if (!config) {\n config = yield* loadOneConfig(\n RELATIVE_CONFIG_FILENAMES,\n loc,\n envName,\n caller,\n packageData.pkg?.dirname === loc\n ? packageToBabelConfig(packageData.pkg)\n : null,\n );\n }\n\n if (!ignore) {\n const ignoreLoc = path.join(loc, BABELIGNORE_FILENAME);\n ignore = yield* readIgnoreConfig(ignoreLoc);\n\n if (ignore) {\n debug(\"Found ignore %o from %o.\", ignore.filepath, dirname);\n }\n }\n }\n\n return { config, ignore };\n}\n\nexport function findRootConfig(\n dirname: string,\n envName: string,\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile | null> {\n return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller);\n}\n\nfunction* loadOneConfig(\n names: string[],\n dirname: string,\n envName: string,\n caller: CallerMetadata | undefined,\n previousConfig: ConfigFile | null = null,\n): Handler<ConfigFile | null> {\n const configs = yield* gensync.all(\n names.map(filename =>\n readConfig(path.join(dirname, filename), envName, caller),\n ),\n );\n const config = configs.reduce((previousConfig: ConfigFile | null, config) => {\n if (config && previousConfig) {\n throw new ConfigError(\n `Multiple configuration files found. Please remove one:\\n` +\n ` - ${path.basename(previousConfig.filepath)}\\n` +\n ` - ${config.filepath}\\n` +\n `from ${dirname}`,\n );\n }\n\n return config || previousConfig;\n }, previousConfig);\n\n if (config) {\n debug(\"Found configuration %o from %o.\", config.filepath, dirname);\n }\n return config;\n}\n\nexport function* loadConfig(\n name: string,\n dirname: string,\n envName: string,\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile> {\n const filepath = require.resolve(name, { paths: [dirname] });\n\n const conf = yield* readConfig(filepath, envName, caller);\n if (!conf) {\n throw new ConfigError(\n `Config file contains no configuration data`,\n filepath,\n );\n }\n\n debug(\"Loaded config %o from %o.\", name, dirname);\n return conf;\n}\n\n/**\n * Read the given config file, returning the result. Returns null if no config was found, but will\n * throw if there are parsing errors while loading a config.\n */\nfunction readConfig(\n filepath: string,\n envName: string,\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile | null> {\n const ext = path.extname(filepath);\n switch (ext) {\n case \".js\":\n case \".cjs\":\n case \".mjs\":\n case \".ts\":\n case \".cts\":\n case \".mts\":\n return readConfigCode(filepath, { envName, caller });\n default:\n return readConfigJSON5(filepath);\n }\n}\n\nexport function* resolveShowConfigPath(\n dirname: string,\n): Handler<string | null> {\n const targetPath = process.env.BABEL_SHOW_CONFIG_FOR;\n if (targetPath != null) {\n const absolutePath = path.resolve(dirname, targetPath);\n const stats = yield* fs.stat(absolutePath);\n if (!stats.isFile()) {\n throw new Error(\n `${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`,\n );\n }\n return absolutePath;\n }\n return null;\n}\n\nfunction throwConfigError(filepath: string): never {\n throw new ConfigError(\n `\\\nCaching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured\nfor various types of caching, using the first param of their handler functions:\n\nmodule.exports = function(api) {\n // The API exposes the following:\n\n // Cache the returned value forever and don't call this function again.\n api.cache(true);\n\n // Don't cache at all. Not recommended because it will be very slow.\n api.cache(false);\n\n // Cached based on the value of some function. If this function returns a value different from\n // a previously-encountered value, the plugins will re-evaluate.\n var env = api.cache(() => process.env.NODE_ENV);\n\n // If testing for a specific env, we recommend specifics to avoid instantiating a plugin for\n // any possible NODE_ENV value that might come up during plugin execution.\n var isProd = api.cache(() => process.env.NODE_ENV === \"production\");\n\n // .cache(fn) will perform a linear search though instances to find the matching plugin based\n // based on previous instantiated plugins. If you want to recreate the plugin and discard the\n // previous instance whenever something changes, you may use:\n var isProd = api.cache.invalidate(() => process.env.NODE_ENV === \"production\");\n\n // Note, we also expose the following more-verbose versions of the above examples:\n api.cache.forever(); // api.cache(true)\n api.cache.never(); // api.cache(false)\n api.cache.using(fn); // api.cache(fn)\n\n // Return the value that will be cached.\n return { };\n};`,\n filepath,\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
frontend/node_modules/@babel/core/lib/config/files/import.cjs
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
module.exports = function import_(filepath) {
|
| 2 |
+
return import(filepath);
|
| 3 |
+
};
|
| 4 |
+
0 && 0;
|
| 5 |
+
|
| 6 |
+
//# sourceMappingURL=import.cjs.map
|
frontend/node_modules/@babel/core/lib/config/files/import.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"names":["module","exports","import_","filepath"],"sources":["../../../src/config/files/import.cjs"],"sourcesContent":["// We keep this in a separate file so that in older node versions, where\n// import() isn't supported, we can try/catch around the require() call\n// when loading this file.\n\nmodule.exports = function import_(filepath) {\n return import(filepath);\n};\n"],"mappings":"AAIAA,MAAM,CAACC,OAAO,GAAG,SAASC,OAAOA,CAACC,QAAQ,EAAE;EAC1C,OAAO,OAAOA,QAAQ,CAAC;AACzB,CAAC;AAAC","ignoreList":[]}
|
frontend/node_modules/@babel/core/lib/config/files/index-browser.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"use strict";
|
| 2 |
+
|
| 3 |
+
Object.defineProperty(exports, "__esModule", {
|
| 4 |
+
value: true
|
| 5 |
+
});
|
| 6 |
+
exports.ROOT_CONFIG_FILENAMES = void 0;
|
| 7 |
+
exports.findConfigUpwards = findConfigUpwards;
|
| 8 |
+
exports.findPackageData = findPackageData;
|
| 9 |
+
exports.findRelativeConfig = findRelativeConfig;
|
| 10 |
+
exports.findRootConfig = findRootConfig;
|
| 11 |
+
exports.loadConfig = loadConfig;
|
| 12 |
+
exports.loadPlugin = loadPlugin;
|
| 13 |
+
exports.loadPreset = loadPreset;
|
| 14 |
+
exports.resolvePlugin = resolvePlugin;
|
| 15 |
+
exports.resolvePreset = resolvePreset;
|
| 16 |
+
exports.resolveShowConfigPath = resolveShowConfigPath;
|
| 17 |
+
function findConfigUpwards(rootDir) {
|
| 18 |
+
return null;
|
| 19 |
+
}
|
| 20 |
+
function* findPackageData(filepath) {
|
| 21 |
+
return {
|
| 22 |
+
filepath,
|
| 23 |
+
directories: [],
|
| 24 |
+
pkg: null,
|
| 25 |
+
isPackage: false
|
| 26 |
+
};
|
| 27 |
+
}
|
| 28 |
+
function* findRelativeConfig(pkgData, envName, caller) {
|
| 29 |
+
return {
|
| 30 |
+
config: null,
|
| 31 |
+
ignore: null
|
| 32 |
+
};
|
| 33 |
+
}
|
| 34 |
+
function* findRootConfig(dirname, envName, caller) {
|
| 35 |
+
return null;
|
| 36 |
+
}
|
| 37 |
+
function* loadConfig(name, dirname, envName, caller) {
|
| 38 |
+
throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);
|
| 39 |
+
}
|
| 40 |
+
function* resolveShowConfigPath(dirname) {
|
| 41 |
+
return null;
|
| 42 |
+
}
|
| 43 |
+
const ROOT_CONFIG_FILENAMES = exports.ROOT_CONFIG_FILENAMES = [];
|
| 44 |
+
function resolvePlugin(name, dirname) {
|
| 45 |
+
return null;
|
| 46 |
+
}
|
| 47 |
+
function resolvePreset(name, dirname) {
|
| 48 |
+
return null;
|
| 49 |
+
}
|
| 50 |
+
function loadPlugin(name, dirname) {
|
| 51 |
+
throw new Error(`Cannot load plugin ${name} relative to ${dirname} in a browser`);
|
| 52 |
+
}
|
| 53 |
+
function loadPreset(name, dirname) {
|
| 54 |
+
throw new Error(`Cannot load preset ${name} relative to ${dirname} in a browser`);
|
| 55 |
+
}
|
| 56 |
+
0 && 0;
|
| 57 |
+
|
| 58 |
+
//# sourceMappingURL=index-browser.js.map
|
frontend/node_modules/@babel/core/lib/config/files/index-browser.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"names":["findConfigUpwards","rootDir","findPackageData","filepath","directories","pkg","isPackage","findRelativeConfig","pkgData","envName","caller","config","ignore","findRootConfig","dirname","loadConfig","name","Error","resolveShowConfigPath","ROOT_CONFIG_FILENAMES","exports","resolvePlugin","resolvePreset","loadPlugin","loadPreset"],"sources":["../../../src/config/files/index-browser.ts"],"sourcesContent":["/* c8 ignore start */\n\nimport type { Handler } from \"gensync\";\n\nimport type {\n ConfigFile,\n IgnoreFile,\n RelativeConfig,\n FilePackageData,\n} from \"./types.ts\";\n\nimport type { CallerMetadata } from \"../validation/options.ts\";\n\nexport type { ConfigFile, IgnoreFile, RelativeConfig, FilePackageData };\n\nexport function findConfigUpwards(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n rootDir: string,\n): string | null {\n return null;\n}\n\n// eslint-disable-next-line require-yield\nexport function* findPackageData(filepath: string): Handler<FilePackageData> {\n return {\n filepath,\n directories: [],\n pkg: null,\n isPackage: false,\n };\n}\n\n// eslint-disable-next-line require-yield\nexport function* findRelativeConfig(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n pkgData: FilePackageData,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n envName: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n caller: CallerMetadata | undefined,\n): Handler<RelativeConfig> {\n return { config: null, ignore: null };\n}\n\n// eslint-disable-next-line require-yield\nexport function* findRootConfig(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dirname: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n envName: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile | null> {\n return null;\n}\n\n// eslint-disable-next-line require-yield\nexport function* loadConfig(\n name: string,\n dirname: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n envName: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile> {\n throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);\n}\n\n// eslint-disable-next-line require-yield\nexport function* resolveShowConfigPath(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dirname: string,\n): Handler<string | null> {\n return null;\n}\n\nexport const ROOT_CONFIG_FILENAMES: string[] = [];\n\ntype Resolved =\n | { loader: \"require\"; filepath: string }\n | { loader: \"import\"; filepath: string };\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function resolvePlugin(name: string, dirname: string): Resolved | null {\n return null;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function resolvePreset(name: string, dirname: string): Resolved | null {\n return null;\n}\n\nexport function loadPlugin(\n name: string,\n dirname: string,\n): Handler<{\n filepath: string;\n value: unknown;\n}> {\n throw new Error(\n `Cannot load plugin ${name} relative to ${dirname} in a browser`,\n );\n}\n\nexport function loadPreset(\n name: string,\n dirname: string,\n): Handler<{\n filepath: string;\n value: unknown;\n}> {\n throw new Error(\n `Cannot load preset ${name} relative to ${dirname} in a browser`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAeO,SAASA,iBAAiBA,CAE/BC,OAAe,EACA;EACf,OAAO,IAAI;AACb;AAGO,UAAUC,eAAeA,CAACC,QAAgB,EAA4B;EAC3E,OAAO;IACLA,QAAQ;IACRC,WAAW,EAAE,EAAE;IACfC,GAAG,EAAE,IAAI;IACTC,SAAS,EAAE;EACb,CAAC;AACH;AAGO,UAAUC,kBAAkBA,CAEjCC,OAAwB,EAExBC,OAAe,EAEfC,MAAkC,EACT;EACzB,OAAO;IAAEC,MAAM,EAAE,IAAI;IAAEC,MAAM,EAAE;EAAK,CAAC;AACvC;AAGO,UAAUC,cAAcA,CAE7BC,OAAe,EAEfL,OAAe,EAEfC,MAAkC,EACN;EAC5B,OAAO,IAAI;AACb;AAGO,UAAUK,UAAUA,CACzBC,IAAY,EACZF,OAAe,EAEfL,OAAe,EAEfC,MAAkC,EACb;EACrB,MAAM,IAAIO,KAAK,CAAC,eAAeD,IAAI,gBAAgBF,OAAO,eAAe,CAAC;AAC5E;AAGO,UAAUI,qBAAqBA,CAEpCJ,OAAe,EACS;EACxB,OAAO,IAAI;AACb;AAEO,MAAMK,qBAA+B,GAAAC,OAAA,CAAAD,qBAAA,GAAG,EAAE;AAO1C,SAASE,aAAaA,CAACL,IAAY,EAAEF,OAAe,EAAmB;EAC5E,OAAO,IAAI;AACb;AAGO,SAASQ,aAAaA,CAACN,IAAY,EAAEF,OAAe,EAAmB;EAC5E,OAAO,IAAI;AACb;AAEO,SAASS,UAAUA,CACxBP,IAAY,EACZF,OAAe,EAId;EACD,MAAM,IAAIG,KAAK,CACb,sBAAsBD,IAAI,gBAAgBF,OAAO,eACnD,CAAC;AACH;AAEO,SAASU,UAAUA,CACxBR,IAAY,EACZF,OAAe,EAId;EACD,MAAM,IAAIG,KAAK,CACb,sBAAsBD,IAAI,gBAAgBF,OAAO,eACnD,CAAC;AACH;AAAC","ignoreList":[]}
|
frontend/node_modules/@babel/core/lib/config/files/index.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"use strict";
|
| 2 |
+
|
| 3 |
+
Object.defineProperty(exports, "__esModule", {
|
| 4 |
+
value: true
|
| 5 |
+
});
|
| 6 |
+
Object.defineProperty(exports, "ROOT_CONFIG_FILENAMES", {
|
| 7 |
+
enumerable: true,
|
| 8 |
+
get: function () {
|
| 9 |
+
return _configuration.ROOT_CONFIG_FILENAMES;
|
| 10 |
+
}
|
| 11 |
+
});
|
| 12 |
+
Object.defineProperty(exports, "findConfigUpwards", {
|
| 13 |
+
enumerable: true,
|
| 14 |
+
get: function () {
|
| 15 |
+
return _configuration.findConfigUpwards;
|
| 16 |
+
}
|
| 17 |
+
});
|
| 18 |
+
Object.defineProperty(exports, "findPackageData", {
|
| 19 |
+
enumerable: true,
|
| 20 |
+
get: function () {
|
| 21 |
+
return _package.findPackageData;
|
| 22 |
+
}
|
| 23 |
+
});
|
| 24 |
+
Object.defineProperty(exports, "findRelativeConfig", {
|
| 25 |
+
enumerable: true,
|
| 26 |
+
get: function () {
|
| 27 |
+
return _configuration.findRelativeConfig;
|
| 28 |
+
}
|
| 29 |
+
});
|
| 30 |
+
Object.defineProperty(exports, "findRootConfig", {
|
| 31 |
+
enumerable: true,
|
| 32 |
+
get: function () {
|
| 33 |
+
return _configuration.findRootConfig;
|
| 34 |
+
}
|
| 35 |
+
});
|
| 36 |
+
Object.defineProperty(exports, "loadConfig", {
|
| 37 |
+
enumerable: true,
|
| 38 |
+
get: function () {
|
| 39 |
+
return _configuration.loadConfig;
|
| 40 |
+
}
|
| 41 |
+
});
|
| 42 |
+
Object.defineProperty(exports, "loadPlugin", {
|
| 43 |
+
enumerable: true,
|
| 44 |
+
get: function () {
|
| 45 |
+
return _plugins.loadPlugin;
|
| 46 |
+
}
|
| 47 |
+
});
|
| 48 |
+
Object.defineProperty(exports, "loadPreset", {
|
| 49 |
+
enumerable: true,
|
| 50 |
+
get: function () {
|
| 51 |
+
return _plugins.loadPreset;
|
| 52 |
+
}
|
| 53 |
+
});
|
| 54 |
+
Object.defineProperty(exports, "resolvePlugin", {
|
| 55 |
+
enumerable: true,
|
| 56 |
+
get: function () {
|
| 57 |
+
return _plugins.resolvePlugin;
|
| 58 |
+
}
|
| 59 |
+
});
|
| 60 |
+
Object.defineProperty(exports, "resolvePreset", {
|
| 61 |
+
enumerable: true,
|
| 62 |
+
get: function () {
|
| 63 |
+
return _plugins.resolvePreset;
|
| 64 |
+
}
|
| 65 |
+
});
|
| 66 |
+
Object.defineProperty(exports, "resolveShowConfigPath", {
|
| 67 |
+
enumerable: true,
|
| 68 |
+
get: function () {
|
| 69 |
+
return _configuration.resolveShowConfigPath;
|
| 70 |
+
}
|
| 71 |
+
});
|
| 72 |
+
var _package = require("./package.js");
|
| 73 |
+
var _configuration = require("./configuration.js");
|
| 74 |
+
var _plugins = require("./plugins.js");
|
| 75 |
+
({});
|
| 76 |
+
0 && 0;
|
| 77 |
+
|
| 78 |
+
//# sourceMappingURL=index.js.map
|
frontend/node_modules/@babel/core/lib/config/files/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"names":["_package","require","_configuration","_plugins"],"sources":["../../../src/config/files/index.ts"],"sourcesContent":["type indexBrowserType = typeof import(\"./index-browser\");\ntype indexType = typeof import(\"./index\");\n\n// Kind of gross, but essentially asserting that the exports of this module are the same as the\n// exports of index-browser, since this file may be replaced at bundle time with index-browser.\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n({}) as any as indexBrowserType as indexType;\n\nexport { findPackageData } from \"./package.ts\";\n\nexport {\n findConfigUpwards,\n findRelativeConfig,\n findRootConfig,\n loadConfig,\n resolveShowConfigPath,\n ROOT_CONFIG_FILENAMES,\n} from \"./configuration.ts\";\nexport type {\n ConfigFile,\n IgnoreFile,\n RelativeConfig,\n FilePackageData,\n} from \"./types.ts\";\nexport {\n loadPlugin,\n loadPreset,\n resolvePlugin,\n resolvePreset,\n} from \"./plugins.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AAcA,IAAAE,QAAA,GAAAF,OAAA;AAlBA,CAAC,CAAC,CAAC;AAA0C","ignoreList":[]}
|