Krooz commited on
Commit
767b82d
·
verified ·
1 Parent(s): 55e47aa

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +9 -0
  2. BLOG.md +242 -0
  3. README.md +436 -69
  4. artifacts/dashboard.png +3 -0
  5. artifacts/illustration1.png +3 -0
  6. artifacts/illustration2.png +3 -0
  7. artifacts/illustration3.png +3 -0
  8. artifacts/illustration4.png +3 -0
  9. artifacts/pyre_ppo_fixed.csv +201 -0
  10. artifacts/pyre_ppo_fixed.png +3 -0
  11. artifacts/pyre_ppo_fixed_eval.csv +11 -0
  12. artifacts/pyre_ppo_fixed_training.log +0 -0
  13. frontend/node_modules/@babel/code-frame/LICENSE +22 -0
  14. frontend/node_modules/@babel/code-frame/README.md +19 -0
  15. frontend/node_modules/@babel/code-frame/lib/index.js +217 -0
  16. frontend/node_modules/@babel/code-frame/lib/index.js.map +1 -0
  17. frontend/node_modules/@babel/code-frame/package.json +32 -0
  18. frontend/node_modules/@babel/compat-data/LICENSE +22 -0
  19. frontend/node_modules/@babel/compat-data/README.md +19 -0
  20. frontend/node_modules/@babel/compat-data/corejs2-built-ins.js +2 -0
  21. frontend/node_modules/@babel/compat-data/corejs3-shipped-proposals.js +2 -0
  22. frontend/node_modules/@babel/compat-data/data/corejs2-built-ins.json +2106 -0
  23. frontend/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json +5 -0
  24. frontend/node_modules/@babel/compat-data/data/native-modules.json +18 -0
  25. frontend/node_modules/@babel/compat-data/data/overlapping-plugins.json +35 -0
  26. frontend/node_modules/@babel/compat-data/data/plugin-bugfixes.json +203 -0
  27. frontend/node_modules/@babel/compat-data/data/plugins.json +838 -0
  28. frontend/node_modules/@babel/compat-data/native-modules.js +2 -0
  29. frontend/node_modules/@babel/compat-data/overlapping-plugins.js +2 -0
  30. frontend/node_modules/@babel/compat-data/package.json +40 -0
  31. frontend/node_modules/@babel/compat-data/plugin-bugfixes.js +2 -0
  32. frontend/node_modules/@babel/compat-data/plugins.js +2 -0
  33. frontend/node_modules/@babel/core/LICENSE +22 -0
  34. frontend/node_modules/@babel/core/README.md +19 -0
  35. frontend/node_modules/@babel/core/lib/config/cache-contexts.js +5 -0
  36. frontend/node_modules/@babel/core/lib/config/cache-contexts.js.map +1 -0
  37. frontend/node_modules/@babel/core/lib/config/caching.js +261 -0
  38. frontend/node_modules/@babel/core/lib/config/caching.js.map +1 -0
  39. frontend/node_modules/@babel/core/lib/config/config-chain.js +469 -0
  40. frontend/node_modules/@babel/core/lib/config/config-chain.js.map +1 -0
  41. frontend/node_modules/@babel/core/lib/config/config-descriptors.js +190 -0
  42. frontend/node_modules/@babel/core/lib/config/config-descriptors.js.map +1 -0
  43. frontend/node_modules/@babel/core/lib/config/files/configuration.js +290 -0
  44. frontend/node_modules/@babel/core/lib/config/files/configuration.js.map +1 -0
  45. frontend/node_modules/@babel/core/lib/config/files/import.cjs +6 -0
  46. frontend/node_modules/@babel/core/lib/config/files/import.cjs.map +1 -0
  47. frontend/node_modules/@babel/core/lib/config/files/index-browser.js +58 -0
  48. frontend/node_modules/@babel/core/lib/config/files/index-browser.js.map +1 -0
  49. frontend/node_modules/@babel/core/lib/config/files/index.js +78 -0
  50. 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
+ ![Episode start — step 2/150. HP 100, wind blowing west, fire smoldering in the lower corners. The blue Minecraft agent stands in the central corridor. Dark cells are unexplored. Two EXIT signs glow at the edges.](artifacts/illustration1.png)
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
+ ![Step 4/150 — fire intensifying. The "IN RANGE" warning appears on the HUD as fire cells grow brighter. The agent's blue trail dots show the path taken. Unexplored cells remain dark.](artifacts/illustration2.png)
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
+ ![Step 21/150 — burnout underway. HP has dropped to 63. Multiple corridor cells have burned completely and become charred obstacles (dark cells with orange crack-glow). The fire has permanently altered the floor plan. The agent has been pushed to the left side near an exit.](artifacts/illustration3.png)
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
+ ![Step 29/150 — "You step through the exit and escape the building!" The entire building is consumed by fire. The agent made it to the left EXIT with HP 63. Field Report confirms successful evacuation.](artifacts/illustration4.png)
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
+ ![Pyre PPO Training — 200 episodes, final success rate 75%. Orange line: reward moving average (MA-20). Teal line: success rate (MA-20). Blue diamonds: deterministic evaluation checkpoints. Green shading: easy phase. Orange shading: medium phase.](artifacts/pyre_ppo_fixed.png)
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
+ ![The full Pyre environment running live on HuggingFace Spaces. Left: the burning building with fog-of-war. Right panel: tactical controls, door states (door_2 closed, door_5 and door_7 failed/burned), agent biometrics (63% HP, Moderate), environment stats (19 hazard cells, Wind W, 12% humidity), and event log with 51 events. Network activity shows the live REST API calls.](artifacts/dashboard.png)
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 and blocks exits.
 
 
 
 
 
 
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 | **8-component composite rubric** |
30
 
31
  *`wildfire_env` trains an agent to fight fires from above; Pyre trains an agent to survive from inside.*
32
 
33
  ---
34
 
35
- ## What the agent sees (narrative observation)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
- Every step the agent receives a first-person text observation:
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') door(target_id='door_1', door_state='open') look(direction='east') wait()
 
48
  ```
49
 
 
 
50
  ---
51
 
52
  ## Action space
53
 
54
  | Action | Parameters | Effect |
55
  |---|---|---|
56
- | `move` | `direction` | Move one cell N/S/E/W |
57
- | `door` | `target_id`, `door_state` | Open or close a nearby door closed doors slow fire spread to 15% |
58
- | `look` | `direction` | Scan up to 5 cells in one direction for detailed zone/fire/smoke info |
59
  | `wait` | — | Skip turn |
60
 
61
  ---
62
 
63
- ## Reward function (composite rubric)
64
 
65
- **Per step:**
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
- **Episode end:**
73
- - `+5.0` agent evacuated alive
74
- - `-10.0` agent incapacitated
75
- - `+0.05 × remaining_steps` time bonus for fast evacuation
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
 
77
  ---
78
 
79
- ## Quick start
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
  ```bash
82
- cd pyre_env
83
- uv sync
84
- uv run server # → http://localhost:8000
 
 
 
 
85
 
86
- # Health check
87
- curl http://localhost:8000/health
88
 
89
- # Reset (difficulty: easy | medium | hard)
90
- curl -X POST http://localhost:8000/reset \
91
- -H "Content-Type: application/json" \
92
- -d '{"difficulty": "medium"}'
93
 
94
- # Step
95
- curl -X POST http://localhost:8000/step \
96
- -H "Content-Type: application/json" \
97
- -d '{"action": "move", "direction": "north"}'
98
 
99
- # Random baseline (5 episodes)
100
- python examples/random_agent.py --episodes 5 --verbose
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  ```
102
 
103
- ### Python client
104
 
105
- ```python
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
- ## Difficulty levels
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
 
119
- | Level | Fire sources | Spread rate | Wind | Humidity | Max steps |
120
- |---|---|---|---|---|---|
121
- | `easy` | 1 | 10–20% | Calm | 30–50% | 200 |
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
- ## Project structure
136
 
137
- ```
138
- pyre_env/
139
- ├── models.py PyreAction, PyreObservation, PyreMapState, PyreState
140
- ├── client.py PyreEnv (EnvClient subclass)
141
- ├── openenv.yaml OpenEnv manifest
142
- ├── pyproject.toml
143
- ├── server/
144
- │ ├── app.py FastAPI bootstrap
145
- │ ├── pyre_env_environment.py Main Environment class
146
- │ ├── floor_plan.py 3 building templates + episode generation
147
- │ ├── fire_sim.py Cellular automaton fire/smoke simulation
148
- │ ├── narrative.py Visibility + first-person text observation renderer
149
- │ └── rubrics.py 8 composable reward components
150
- └── examples/
151
- └── random_agent.py Smoke-test baseline
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
+ ![Pyre PPO Training — 200 episodes, final success rate 75%](artifacts/pyre_ppo_fixed.png)
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

  • SHA256: f61835b54e51177a015b6bb14c1c7b495671ea9be11efe736b014a25fb057901
  • Pointer size: 132 Bytes
  • Size of remote file: 1.02 MB
artifacts/illustration1.png ADDED

Git LFS Details

  • SHA256: 7f6ac972ca226ca5598b7db2c4fe1b6b4f594ab73d70af5fad7c953d159f612d
  • Pointer size: 131 Bytes
  • Size of remote file: 385 kB
artifacts/illustration2.png ADDED

Git LFS Details

  • SHA256: 229d94f840e6a9ae138093bfc34c5c62b33122b7319dff65c626e3064c6e5e86
  • Pointer size: 131 Bytes
  • Size of remote file: 461 kB
artifacts/illustration3.png ADDED

Git LFS Details

  • SHA256: 04966cbf03394a5335476209351b488ebb3b2dddddef2cb5652c5b6e3b50b41c
  • Pointer size: 131 Bytes
  • Size of remote file: 494 kB
artifacts/illustration4.png ADDED

Git LFS Details

  • SHA256: bd404a1a11f1c8d881af8eb9efcba553ea7d9d0d3fcc4593bb512e9a38d5ae1c
  • Pointer size: 131 Bytes
  • Size of remote file: 610 kB
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

  • SHA256: 8874f6dfbcc79b3396b504ccb49dddc7d305dc61b9934358304eabc01ed90299
  • Pointer size: 131 Bytes
  • Size of remote file: 277 kB
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":"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","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":[]}