deploy test
This commit is contained in:
parent
410d759edf
commit
cae88256ee
|
@ -1,19 +1,18 @@
|
|||
from sqlmodel import JSON, Column, select
|
||||
from sqlalchemy.inspection import inspect
|
||||
from enum import Enum
|
||||
import os
|
||||
from pydantic import BaseModel
|
||||
from pydantic import validator, root_validator
|
||||
from generateur.generateur_main import generate_from_path
|
||||
from services.exoValidation import get_support_from_path
|
||||
from services.io import add_fast_api_root, get_filename_from_path
|
||||
from services.schema import as_form
|
||||
from typing import Any, List, Optional
|
||||
from sqlmodel import SQLModel, Field, Relationship, Session
|
||||
from database.auth.models import User, UserRead
|
||||
from typing import List
|
||||
from typing import TYPE_CHECKING, Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
from pydantic import validator
|
||||
from sqlalchemy.inspection import inspect
|
||||
from sqlmodel import JSON, Column
|
||||
from sqlmodel import SQLModel, Field, Relationship
|
||||
|
||||
from database.auth.models import User
|
||||
from services.io import get_filename_from_path
|
||||
from services.schema import as_form
|
||||
from .FileField import FileField
|
||||
from database.db import get_session
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from database.auth.models import User
|
||||
|
||||
|
@ -33,8 +32,8 @@ class GeneratorOutput(BaseModel):
|
|||
class Example(BaseModel):
|
||||
type: ExampleEnum = ExampleEnum.undisponible
|
||||
data: List[GeneratorOutput] | None = None
|
||||
|
||||
|
||||
|
||||
|
||||
class ExercicesTagLink(SQLModel, table=True):
|
||||
exercice_id: Optional[int] = Field(
|
||||
default=None, foreign_key='exercice.id', primary_key=True)
|
||||
|
@ -46,14 +45,15 @@ class ExerciceBase(SQLModel):
|
|||
name: str = Field(max_length=50, index=True)
|
||||
consigne: Optional[str] = Field(max_length=200, default=None)
|
||||
private: Optional[bool] = Field(default=False)
|
||||
|
||||
|
||||
|
||||
class Supports(SQLModel):
|
||||
csv: bool
|
||||
pdf: bool
|
||||
web: bool
|
||||
|
||||
class Exercice(ExerciceBase,Supports, table=True):
|
||||
|
||||
class Exercice(ExerciceBase, Supports, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
id_code: str = Field(unique=True, index=True)
|
||||
|
||||
|
@ -71,27 +71,38 @@ class Exercice(ExerciceBase,Supports, table=True):
|
|||
|
||||
tags: List['Tag'] = Relationship(
|
||||
back_populates='exercices', link_model=ExercicesTagLink)
|
||||
|
||||
|
||||
examples: Optional[Example] = Field(
|
||||
sa_column=Column(JSON), default={})
|
||||
|
||||
def dict_relationship(self, *, exclude: List[str], include: List[str]):
|
||||
relationships = inspect(self.__class__).relationships.items()
|
||||
relationsData = {rname: getattr(self, rname) for rname, rp in relationships if rname not in exclude and (rname in include if len(include) != 0 else True)}
|
||||
relationsData = {rname: getattr(self, rname) for rname, rp in relationships if
|
||||
rname not in exclude and (rname in include if len(include) != 0 else True)}
|
||||
return {**self.dict(), **relationsData}
|
||||
|
||||
|
||||
class Config:
|
||||
validate_assignment = True
|
||||
extra='allow'
|
||||
|
||||
extra = 'allow'
|
||||
|
||||
|
||||
# translate the folowing object to python enum
|
||||
|
||||
|
||||
class ColorEnum(Enum):
|
||||
green='#00ff00'
|
||||
red="#ff0000"
|
||||
blue="#0000ff"
|
||||
string="string"
|
||||
|
||||
bleu = "rgb(51,123,255)"
|
||||
vert = "rgb(0,204,0)"
|
||||
rouge = "rgb(255,0,0)"
|
||||
marron = "rgb(153,76,0)"
|
||||
violet = "rgb(204,0,204)"
|
||||
jaune = "rgb(255,255,0)"
|
||||
orange = "rgb(255,128,0)"
|
||||
noir = "rgb(10,10,10)"
|
||||
rose = "rgb(255,102,255)"
|
||||
blanc = "rgb(240,240,240)"
|
||||
blanche = "rgb(240,240,240)"
|
||||
|
||||
|
||||
class TagBase(SQLModel):
|
||||
label: str = Field(max_length=20)
|
||||
color: ColorEnum
|
||||
|
@ -125,28 +136,21 @@ class ExerciceEdit(ExerciceCreate):
|
|||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class Author(SQLModel):
|
||||
username: str
|
||||
|
||||
|
||||
class ExerciceOrigin(SQLModel):
|
||||
#id: int
|
||||
# id: int
|
||||
id_code: str
|
||||
name: str
|
||||
author: str
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def get_source_path_from_name_and_id(name: str, id_code: str):
|
||||
return f'/uploads/{id_code}/{name}'
|
||||
|
||||
|
||||
|
||||
class ExerciceReadBase(ExerciceBase):
|
||||
id_code: str
|
||||
author: Author
|
||||
|
@ -154,30 +158,27 @@ class ExerciceReadBase(ExerciceBase):
|
|||
tags: List[TagRead] = None
|
||||
exo_source: str
|
||||
|
||||
|
||||
examples: Example = None
|
||||
|
||||
is_author: bool = None
|
||||
|
||||
|
||||
@validator('exo_source')
|
||||
def get_exo_source_name(cls, value, values):
|
||||
if value is not None:
|
||||
return get_filename_from_path(value)
|
||||
return value
|
||||
|
||||
|
||||
|
||||
class ExerciceRead(ExerciceBase, Supports):
|
||||
id_code: str
|
||||
id: int
|
||||
author_id:int
|
||||
author_id: int
|
||||
exo_source: str
|
||||
author: User
|
||||
original: Optional[Exercice]
|
||||
tags: List[Tag]
|
||||
examples: Example
|
||||
|
||||
|
||||
|
||||
class ExerciceReadFull(ExerciceReadBase):
|
||||
supports: Supports
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -291,7 +291,7 @@ def serialize_parcours_short(parcours: Parcours, member: Member, db: Session):
|
|||
challenger = getChallenger(parcours, member, db)
|
||||
|
||||
return ParcoursReadShort(name=parcours.name, id_code=parcours.id_code, best_note=challenger.best,
|
||||
validated=challenger.validated)
|
||||
validated=challenger.validated, avg=challenger.avg)
|
||||
|
||||
|
||||
def serialize_challenge(challenge: Challenge):
|
||||
|
@ -344,7 +344,7 @@ def getAvgTops(p: Parcours, db: Session):
|
|||
|
||||
def getRank(c: Challenger, p: Parcours, db: Session):
|
||||
noteRank = db.exec(select([func.count(Challenge.id)]).where(Challenge.parcours_id == p.id_code).order_by(
|
||||
col(Challenge.mistakes), col(Challenge.time)).where(Challenge.mistakes <= c.best,
|
||||
col(Challenge.mistakes), col(Challenge.time)).where(Challenge.mistakes < c.best,
|
||||
Challenge.time < c.best_time)).one()
|
||||
return noteRank + 1
|
||||
|
||||
|
@ -525,7 +525,7 @@ def change_challengers_validation(p: Parcours, validation: int, db: Session):
|
|||
|
||||
|
||||
def change_challenges_validation(p: Parcours, validation: int, db: Session):
|
||||
print('cHANGE')
|
||||
|
||||
challenges = db.exec(select(Challenge).where(
|
||||
Challenge.parcours_id == p.id_code)).all()
|
||||
print('CHALLS', challenges)
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
from uuid import UUID, uuid4
|
||||
from pydantic import root_validator, BaseModel
|
||||
import pydantic.json
|
||||
from typing import List, Optional, TYPE_CHECKING
|
||||
from sqlmodel import SQLModel, Field, Relationship, JSON, Column, ForeignKeyConstraint
|
||||
from database.exercices.models import Example
|
||||
from database.auth.models import UserRead
|
||||
from uuid import UUID, uuid4
|
||||
|
||||
from pydantic import BaseModel
|
||||
from sqlmodel import SQLModel, Field, Relationship, JSON, Column, ForeignKeyConstraint
|
||||
|
||||
from database.exercices.models import Example
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from database.auth.models import User
|
||||
|
@ -132,6 +131,7 @@ class ParcoursReadShort(SQLModel):
|
|||
best_note: str | None = None
|
||||
validated: bool = False
|
||||
id_code: str
|
||||
avg: float | None = None
|
||||
|
||||
class ParcoursReadUpdate(SQLModel):
|
||||
id_code: str
|
||||
|
|
Binary file not shown.
|
@ -5,8 +5,8 @@ def exos(nb, username, password):
|
|||
'password': password, 'password_confirm': password})
|
||||
token = rr.json()['access_token']
|
||||
for i in range(nb):
|
||||
r = requests.post('http://localhost:8002/exercices', data={"name": "FakingTest" + str(i), "consigne": "consigne", "private": False}, files={
|
||||
r = requests.post('http://localhost:8002/exercices', data={"name": "Test" + str(i), "consigne": "consigne", "private": False}, files={
|
||||
'file': ('test.py', open('./tests/testing_exo_source/exo_source.py', 'rb'))}, headers={"Authorization": "Bearer " + token})
|
||||
print('DONE')
|
||||
|
||||
exos(100, "lilianTest", "Pomme937342")
|
||||
exos(100, "lilianTest2", "Pomme937342")
|
|
@ -1,6 +1,7 @@
|
|||
from typing import Any, TYPE_CHECKING, Callable
|
||||
|
||||
from fastapi.websockets import WebSocket
|
||||
from sqlalchemy.orm.exc import StaleDataError
|
||||
from sqlmodel import Session
|
||||
|
||||
from database.auth.crud import get_user_from_token
|
||||
|
@ -22,6 +23,7 @@ class RoomConsumer(Consumer):
|
|||
self.manager = manager
|
||||
self.db = db
|
||||
self.member = None
|
||||
self.banned = False
|
||||
|
||||
# WS Utilities
|
||||
async def send(self, payload: Any | Callable):
|
||||
|
@ -55,20 +57,26 @@ class RoomConsumer(Consumer):
|
|||
if isinstance(self.member, Member):
|
||||
connect_member(self.member, self.db)
|
||||
await self.manager.broadcast(lambda m: {"type": "connect", "data": {
|
||||
"member": serialize_member(self.member, admin=m.is_admin, m2=m)}}, self.room.id_code, exclude=[self])
|
||||
"member": serialize_member(self.member, admin=m.is_admin, m2=m)}}, self.room.id_code, exclude=[self], conditions=[lambda m: m.member.waiting is not True])
|
||||
# await self.broadcast(type="connect", payload={"member": serialize_member(self.member)}, exclude=True)
|
||||
|
||||
async def disconnect_self(self):
|
||||
print(self.manager.active_connections[self.room.id_code])
|
||||
self.manager.remove(self.room.id_code, self)
|
||||
print(self.manager.active_connections[self.room.id_code])
|
||||
if isinstance(self.member, Member):
|
||||
''' self.db.expire(self.member)
|
||||
self.db.refresh(self.member) '''
|
||||
disconnect_member(self.member, self.db)
|
||||
print('MEMBER', self.member)
|
||||
try:
|
||||
disconnect_member(self.member, self.db)
|
||||
except StaleDataError:
|
||||
return
|
||||
if self.member.waiting is False:
|
||||
await self.manager.broadcast(lambda m: {"type": "disconnect", "data": {
|
||||
"member": serialize_member(self.member, admin=m.is_admin, m2=m)}}, self.room.id_code,
|
||||
exclude=[self])
|
||||
exclude=[self], conditions=[lambda m: m.member.waiting is not True])
|
||||
# await self.broadcast(type="disconnect", payload={"member": serialize_member(self.member)})
|
||||
else:
|
||||
|
||||
await self.send_to_admin(type="disconnect_waiter", payload={"waiter": serialize_member(self.member)})
|
||||
|
||||
async def loginMember(self, member: Member):
|
||||
|
@ -166,7 +174,8 @@ class RoomConsumer(Consumer):
|
|||
self.add_to_group()
|
||||
|
||||
if self.room.public is False:
|
||||
await self.direct_send(type="waiting", payload={"waiter": serialize_member(self.member)})
|
||||
await self.direct_send(type="waiting", payload={"waiter": serialize_member(self.member), "room": {
|
||||
"name": self.room.name, "id_code": self.room.id_code}})
|
||||
await self.send_to_admin(type="waiter", payload={"waiter": serialize_member(self.member)})
|
||||
else:
|
||||
await self.manager.broadcast(
|
||||
|
@ -286,10 +295,11 @@ class RoomConsumer(Consumer):
|
|||
return {"waiter_id": waiter_id}
|
||||
|
||||
@Consumer.sending("banned", conditions=[isMember])
|
||||
def banned(self):
|
||||
async def banned(self):
|
||||
self.member = None
|
||||
self.manager.remove(self.room.id, self)
|
||||
self.ws.close()
|
||||
self.manager.remove(self.room.id_code, self)
|
||||
self.banned = True
|
||||
#await self.ws.close()
|
||||
return {}
|
||||
|
||||
@Consumer.sending('ping', conditions=[isMember])
|
||||
|
@ -298,5 +308,10 @@ class RoomConsumer(Consumer):
|
|||
|
||||
async def disconnect(self):
|
||||
print('DISCONNECTED', self.member)
|
||||
self.manager.remove(self.room.id, self)
|
||||
print(self.manager.active_connections[self.room.id_code])
|
||||
self.manager.remove(self.room.id_code, self)
|
||||
|
||||
for p in self.room.parcours:
|
||||
self.manager.remove(p.id_code, self)
|
||||
|
||||
await self.disconnect_self()
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
from typing import TYPE_CHECKING, Dict, List, Callable, Any
|
||||
|
||||
from starlette.websockets import WebSocketState
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from routes.room.consumer import RoomConsumer
|
||||
|
||||
|
@ -16,38 +18,44 @@ class RoomManager:
|
|||
self.active_connections[group].append(member)
|
||||
|
||||
async def _send(self, connection: "RoomConsumer", message, group: str):
|
||||
print("STATE", connection.ws.client_state.__str__())
|
||||
print('SENDING', connection.ws.application_state, connection.ws.client_state)
|
||||
if connection.ws.application_state == WebSocketState.DISCONNECTED or connection.ws.client_state == WebSocketState.DISCONNECTED:
|
||||
self.remove(group, connection)
|
||||
elif connection.ws.application_state == WebSocketState.CONNECTED:
|
||||
await connection.send(message)
|
||||
elif connection.ws.application_state == WebSocketState.CONNECTED and connection.ws.client_state == WebSocketState.CONNECTED:
|
||||
try:
|
||||
await connection.send(message)
|
||||
except:
|
||||
pass
|
||||
|
||||
def remove(self, group: str, member: "RoomConsumer"):
|
||||
if group in self.active_connections:
|
||||
if member in self.active_connections[group]:
|
||||
print("remoied")
|
||||
self.active_connections[group].remove(member)
|
||||
return True
|
||||
|
||||
async def broadcast(self, message: Any | Callable, group: str, conditions: list[Callable] = [], exclude: list["RoomConsumer"] = [], ):
|
||||
print('BROADCaST', message, self.active_connections)
|
||||
|
||||
print('BROADCaST', self.active_connections)
|
||||
|
||||
|
||||
if group in self.active_connections:
|
||||
for connection in list(set(self.active_connections[group])):
|
||||
print(connection, connection.ws.state, connection.ws.client_state, connection.ws.application_state)
|
||||
if connection not in exclude and all(f(connection) for f in conditions ):
|
||||
if connection not in exclude and all(f(connection) for f in conditions):
|
||||
await self._send(connection, message, group)
|
||||
|
||||
async def send_to(self, group, id_code, msg):
|
||||
print('SENDING TO')
|
||||
if group in self.active_connections:
|
||||
members = [c for c in self.active_connections[group]
|
||||
if c.member.id_code == id_code]
|
||||
print('MEM', members)
|
||||
for m in members:
|
||||
await self._send(m, msg, group)
|
||||
|
||||
async def send_to_admin(self, group, msg):
|
||||
if group in self.active_connections:
|
||||
print('MEMBERS', self.active_connections[group], [(c.ws.state, c.ws.client_state, c.ws.application_state) for c in self.active_connections[group]])
|
||||
members = [c for c in self.active_connections[group]
|
||||
if c.member is not None and c.member.is_admin == True]
|
||||
if c.member is not None and c.member.is_admin is True]
|
||||
for m in members:
|
||||
await self._send(m, msg, group)
|
||||
|
|
|
@ -56,18 +56,21 @@ def get_manager():
|
|||
|
||||
|
||||
@router.post('/room', response_model=RoomConnectionInfos)
|
||||
def create_room(room: RoomCreate, username: Optional[str] = Query(default=None, max_length=20), user: User | None = Depends(get_current_user_optional), db: Session = Depends(get_session)):
|
||||
def create_room(room: RoomCreate, username: Optional[str] = Query(default=None, max_length=20),
|
||||
user: User | None = Depends(get_current_user_optional), db: Session = Depends(get_session)):
|
||||
room_obj = create_room_db(room=room, user=user, username=username, db=db)
|
||||
return {'room': room_obj['room'].id_code, "member": getattr(room_obj['member'].anonymous, "reconnect_code", None)}
|
||||
|
||||
|
||||
@router.get('/room/{room_id}', response_model=RoomInfo)
|
||||
def get_room_route(room: Room = Depends(get_room), member: Member = Depends(get_member_dep), db: Session = Depends(get_session)):
|
||||
def get_room_route(room: Room = Depends(get_room), member: Member = Depends(get_member_dep),
|
||||
db: Session = Depends(get_session)):
|
||||
return serialize_room(room, member, db)
|
||||
|
||||
|
||||
@router.post('/room/{room_id}/parcours', response_model=ParcoursRead)
|
||||
async def create_parcours(*, parcours: ParcoursCreate, room_id: str, member: Member = Depends(check_admin), m: RoomManager = Depends(get_manager), db: Session = Depends(get_session)):
|
||||
async def create_parcours(*, parcours: ParcoursCreate, room_id: str, member: Member = Depends(check_admin),
|
||||
m: RoomManager = Depends(get_manager), db: Session = Depends(get_session)):
|
||||
parcours_obj = create_parcours_db(parcours, member.room_id, db)
|
||||
if type(parcours_obj) == str:
|
||||
raise HTTPException(
|
||||
|
@ -80,7 +83,8 @@ async def create_parcours(*, parcours: ParcoursCreate, room_id: str, member: Mem
|
|||
|
||||
|
||||
@router.get('/room/{room_id}/parcours/{parcours_id}', response_model=ParcoursRead)
|
||||
async def get_parcours_route(*, parcours: Parcours = Depends(get_parcours), member: Member = Depends(get_member_dep), db: Session = Depends(get_session)):
|
||||
async def get_parcours_route(*, parcours: Parcours = Depends(get_parcours), member: Member = Depends(get_member_dep),
|
||||
db: Session = Depends(get_session)):
|
||||
return serialize_parcours(parcours, member, db)
|
||||
|
||||
|
||||
|
@ -105,7 +109,8 @@ async def update_parcours(*, room_id: str, parcours: ParcoursCreate, member: Mem
|
|||
|
||||
|
||||
@router.delete('/room/{room_id}/parcours/{parcours_id}', dependencies=[Depends(check_admin)])
|
||||
async def delete_parcours(parcours: Parcours = Depends(get_parcours), m: RoomManager = Depends(get_manager), db: Session = Depends(get_session)):
|
||||
async def delete_parcours(parcours: Parcours = Depends(get_parcours), m: RoomManager = Depends(get_manager),
|
||||
db: Session = Depends(get_session)):
|
||||
delete_parcours_db(parcours, db)
|
||||
await m.broadcast({"type": "del_parcours", "data": {"parcours_id": parcours.id_code}}, parcours.room.id_code)
|
||||
return "ok"
|
||||
|
@ -152,16 +157,21 @@ async def send_challenge(*, challenge: List[CorrectionData], correction: TmpCorr
|
|||
detail={"challenge_error": "Object does not correspond to correction"})
|
||||
chall, challenger = create_challenge(**data, challenger=member,
|
||||
parcours=parcours, time=time, db=db)
|
||||
print('CHALLENGE', chall)
|
||||
await m.broadcast({"type": "challenge", "data": ChallengeInfo(
|
||||
challenger={"name": member.user.username if member.user_id != None else member.anonymous.username,
|
||||
"id_code": member.id_code},
|
||||
challenges=[Challenges(**{**chall.dict(), "canCorrige": chall.data != [], })]).dict()}, parcours.id_code,
|
||||
conditions=[lambda c: c.member.is_admin or c.member.id_code == member.id_code])
|
||||
#TODO : Envoyer que à ceux d'après
|
||||
|
||||
# TODO : Envoyer que à ceux d'après
|
||||
await m.broadcast(lambda m: {"type": "newRanks", "data": {"rank": getMemberRank(m, correction.parcours, db),
|
||||
"avgRank": getMemberAvgRank(m, correction.parcours, db)}},
|
||||
parcours.id_code)
|
||||
print('WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo')
|
||||
await m.send_to(parcours.room.id_code, member.id_code, {"type": "parcours_stats", "data": {
|
||||
"parcours": ParcoursReadShort(name=parcours.name, best_note=challenger.best, validated=challenger.validated,
|
||||
id_code=parcours.id_code, avg=challenger.avg).dict()}})
|
||||
|
||||
print('CHALLENGE', chall)
|
||||
rank, avgRank = getRank(
|
||||
challenger, parcours, db), getAvgRank(challenger, parcours, db)
|
||||
|
@ -229,7 +239,7 @@ async def corrige(*, correction: List[CorrigedData] = Body(), challenge: Challen
|
|||
|
||||
rank, avgRank = getRank(
|
||||
challenger, parcours, db), getAvgRank(challenger, parcours, db)
|
||||
print('Rank', rank, avgRank)
|
||||
|
||||
if rank <= 3 or avgRank <= 3:
|
||||
await m.broadcast({"type": "newTops", "data": {
|
||||
"tops": getTops(parcours, db),
|
||||
|
@ -237,15 +247,17 @@ async def corrige(*, correction: List[CorrigedData] = Body(), challenge: Challen
|
|||
}}, parcours.id_code)
|
||||
|
||||
await m.broadcast({"type": "challenge_change",
|
||||
"data": {"challenge": Challenges(**challenge.dict()).dict(), "member": member.id_code}},
|
||||
"data": {"challenge": Challenges(**challenge.dict()).dict(), "member": member.id_code,
|
||||
"validated": challenger.validated}},
|
||||
parcours.id_code, conditions=[lambda m: m.member.is_admin or m.member.id_code == member.id_code])
|
||||
|
||||
return {**ChallengeRead(**challenge.dict()).dict(), "challenger": {"name": obj.username}}
|
||||
return {**ChallengeRead.from_orm(challenge).dict(), "challenger": {"name": obj.username, }}
|
||||
# return {**ChallengeRead.from_orm(challenge).dict(), "challenger": {"name": obj.username, }}
|
||||
|
||||
|
||||
@router.websocket('/ws/room/{room_id}')
|
||||
async def room_ws(ws: WebSocket, room: Room | None = Depends(check_room), db: Session = Depends(get_session), m: RoomManager = Depends(get_manager)):
|
||||
async def room_ws(ws: WebSocket, room: Room | None = Depends(check_room), db: Session = Depends(get_session),
|
||||
m: RoomManager = Depends(get_manager)):
|
||||
if room is None:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND, detail='Room not found')
|
||||
|
|
|
@ -0,0 +1,311 @@
|
|||
|
||||
// this file is generated — do not edit it
|
||||
|
||||
|
||||
/// <reference types="@sveltejs/kit" />
|
||||
|
||||
/**
|
||||
* Environment variables [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env`. Like [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), this module cannot be imported into client-side code. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env).
|
||||
*
|
||||
* _Unlike_ [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), the values exported from this module are statically injected into your bundle at build time, enabling optimisations like dead code elimination.
|
||||
*
|
||||
* ```ts
|
||||
* import { API_KEY } from '$env/static/private';
|
||||
* ```
|
||||
*
|
||||
* Note that all environment variables referenced in your code should be declared (for example in an `.env` file), even if they don't have a value until the app is deployed:
|
||||
*
|
||||
* ```
|
||||
* MY_FEATURE_FLAG=""
|
||||
* ```
|
||||
*
|
||||
* You can override `.env` values from the command line like so:
|
||||
*
|
||||
* ```bash
|
||||
* MY_FEATURE_FLAG="enabled" npm run dev
|
||||
* ```
|
||||
*/
|
||||
declare module '$env/static/private' {
|
||||
export const KDE_FULL_SESSION: string;
|
||||
export const npm_package_devDependencies_vitest: string;
|
||||
export const USER: string;
|
||||
export const npm_config_user_agent: string;
|
||||
export const XDG_SEAT: string;
|
||||
export const SSH_AGENT_PID: string;
|
||||
export const XDG_SESSION_TYPE: string;
|
||||
export const GIT_ASKPASS: string;
|
||||
export const npm_package_devDependencies_vite: string;
|
||||
export const npm_node_execpath: string;
|
||||
export const XCURSOR_SIZE: string;
|
||||
export const SHLVL: string;
|
||||
export const HOME: string;
|
||||
export const CHROME_DESKTOP: string;
|
||||
export const KDE_APPLICATIONS_AS_SCOPE: string;
|
||||
export const OLDPWD: string;
|
||||
export const npm_package_devDependencies__typescript_eslint_parser: string;
|
||||
export const TERM_PROGRAM_VERSION: string;
|
||||
export const D_DISABLE_RT_SCREEN_SCALE: string;
|
||||
export const DESKTOP_SESSION: string;
|
||||
export const npm_package_devDependencies_eslint_config_prettier: string;
|
||||
export const npm_package_devDependencies_svelte_preprocess: string;
|
||||
export const GTK_RC_FILES: string;
|
||||
export const GTK_MODULES: string;
|
||||
export const XDG_SEAT_PATH: string;
|
||||
export const KDE_SESSION_VERSION: string;
|
||||
export const VSCODE_GIT_ASKPASS_MAIN: string;
|
||||
export const npm_package_devDependencies_svelte_check: string;
|
||||
export const VSCODE_GIT_ASKPASS_NODE: string;
|
||||
export const MANAGERPID: string;
|
||||
export const npm_package_scripts_check: string;
|
||||
export const SYSTEMD_EXEC_PID: string;
|
||||
export const CHROME_EXECUTABLE: string;
|
||||
export const DBUS_SESSION_BUS_ADDRESS: string;
|
||||
export const npm_config_engine_strict: string;
|
||||
export const COLORTERM: string;
|
||||
export const npm_package_devDependencies_typescript: string;
|
||||
export const IM_CONFIG_PHASE: string;
|
||||
export const npm_package_scripts_dev: string;
|
||||
export const npm_package_devDependencies__playwright_test: string;
|
||||
export const npm_package_devDependencies_prettier: string;
|
||||
export const GTK_IM_MODULE: string;
|
||||
export const LOGNAME: string;
|
||||
export const npm_package_type: string;
|
||||
export const QT_AUTO_SCREEN_SCALE_FACTOR: string;
|
||||
export const JOURNAL_STREAM: string;
|
||||
export const _: string;
|
||||
export const npm_package_private: string;
|
||||
export const npm_package_scripts_check_watch: string;
|
||||
export const npm_package_devDependencies_node_sass: string;
|
||||
export const XDG_SESSION_CLASS: string;
|
||||
export const npm_package_scripts_lint: string;
|
||||
export const npm_package_devDependencies__typescript_eslint_eslint_plugin: string;
|
||||
export const npm_config_registry: string;
|
||||
export const TERM: string;
|
||||
export const XDG_SESSION_ID: string;
|
||||
export const npm_package_devDependencies_eslint_plugin_svelte3: string;
|
||||
export const GTK2_RC_FILES: string;
|
||||
export const npm_config_node_gyp: string;
|
||||
export const PATH: string;
|
||||
export const SESSION_MANAGER: string;
|
||||
export const INVOCATION_ID: string;
|
||||
export const GTK3_MODULES: string;
|
||||
export const npm_package_name: string;
|
||||
export const NODE: string;
|
||||
export const XDG_SESSION_PATH: string;
|
||||
export const XDG_RUNTIME_DIR: string;
|
||||
export const XCURSOR_THEME: string;
|
||||
export const GDK_BACKEND: string;
|
||||
export const DISPLAY: string;
|
||||
export const npm_package_scripts_test_unit: string;
|
||||
export const LANG: string;
|
||||
export const XDG_CURRENT_DESKTOP: string;
|
||||
export const npm_package_devDependencies_eslint: string;
|
||||
export const XMODIFIERS: string;
|
||||
export const XDG_SESSION_DESKTOP: string;
|
||||
export const XAUTHORITY: string;
|
||||
export const LS_COLORS: string;
|
||||
export const VSCODE_GIT_IPC_HANDLE: string;
|
||||
export const TERM_PROGRAM: string;
|
||||
export const npm_lifecycle_script: string;
|
||||
export const SSH_AUTH_SOCK: string;
|
||||
export const XDG_GREETER_DATA_DIR: string;
|
||||
export const ORIGINAL_XDG_CURRENT_DESKTOP: string;
|
||||
export const npm_package_scripts_test: string;
|
||||
export const npm_package_devDependencies__sveltejs_kit: string;
|
||||
export const SHELL: string;
|
||||
export const NODE_PATH: string;
|
||||
export const npm_package_version: string;
|
||||
export const npm_lifecycle_event: string;
|
||||
export const QT_ACCESSIBILITY: string;
|
||||
export const GDMSESSION: string;
|
||||
export const npm_package_scripts_build: string;
|
||||
export const npm_package_devDependencies_svelte: string;
|
||||
export const npm_package_devDependencies_tslib: string;
|
||||
export const force_s3tc_enable: string;
|
||||
export const GPG_AGENT_INFO: string;
|
||||
export const npm_package_dependencies_sass: string;
|
||||
export const VSCODE_GIT_ASKPASS_EXTRA_ARGS: string;
|
||||
export const QT_IM_MODULE: string;
|
||||
export const XDG_VTNR: string;
|
||||
export const npm_package_scripts_format: string;
|
||||
export const PWD: string;
|
||||
export const npm_execpath: string;
|
||||
export const XDG_CONFIG_DIRS: string;
|
||||
export const CLUTTER_IM_MODULE: string;
|
||||
export const ANDROID_HOME: string;
|
||||
export const XDG_DATA_DIRS: string;
|
||||
export const npm_package_devDependencies__sveltejs_adapter_auto: string;
|
||||
export const PNPM_SCRIPT_SRC_DIR: string;
|
||||
export const KDE_SESSION_UID: string;
|
||||
export const npm_package_scripts_preview: string;
|
||||
export const npm_package_devDependencies_prettier_plugin_svelte: string;
|
||||
export const PNPM_HOME: string;
|
||||
export const VTE_VERSION: string;
|
||||
export const INIT_CWD: string;
|
||||
export const NODE_ENV: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Similar to [`$env/static/private`](https://kit.svelte.dev/docs/modules#$env-static-private), except that it only includes environment variables that begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code.
|
||||
*
|
||||
* Values are replaced statically at build time.
|
||||
*
|
||||
* ```ts
|
||||
* import { PUBLIC_BASE_URL } from '$env/static/public';
|
||||
* ```
|
||||
*/
|
||||
declare module '$env/static/public' {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This module provides access to runtime environment variables, as defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/master/packages/adapter-node) (or running [`vite preview`](https://kit.svelte.dev/docs/cli)), this is equivalent to `process.env`. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env).
|
||||
*
|
||||
* This module cannot be imported into client-side code.
|
||||
*
|
||||
* ```ts
|
||||
* import { env } from '$env/dynamic/private';
|
||||
* console.log(env.DEPLOYMENT_SPECIFIC_VARIABLE);
|
||||
* ```
|
||||
*
|
||||
* > In `dev`, `$env/dynamic` always includes environment variables from `.env`. In `prod`, this behavior will depend on your adapter.
|
||||
*/
|
||||
declare module '$env/dynamic/private' {
|
||||
export const env: {
|
||||
KDE_FULL_SESSION: string;
|
||||
npm_package_devDependencies_vitest: string;
|
||||
USER: string;
|
||||
npm_config_user_agent: string;
|
||||
XDG_SEAT: string;
|
||||
SSH_AGENT_PID: string;
|
||||
XDG_SESSION_TYPE: string;
|
||||
GIT_ASKPASS: string;
|
||||
npm_package_devDependencies_vite: string;
|
||||
npm_node_execpath: string;
|
||||
XCURSOR_SIZE: string;
|
||||
SHLVL: string;
|
||||
HOME: string;
|
||||
CHROME_DESKTOP: string;
|
||||
KDE_APPLICATIONS_AS_SCOPE: string;
|
||||
OLDPWD: string;
|
||||
npm_package_devDependencies__typescript_eslint_parser: string;
|
||||
TERM_PROGRAM_VERSION: string;
|
||||
D_DISABLE_RT_SCREEN_SCALE: string;
|
||||
DESKTOP_SESSION: string;
|
||||
npm_package_devDependencies_eslint_config_prettier: string;
|
||||
npm_package_devDependencies_svelte_preprocess: string;
|
||||
GTK_RC_FILES: string;
|
||||
GTK_MODULES: string;
|
||||
XDG_SEAT_PATH: string;
|
||||
KDE_SESSION_VERSION: string;
|
||||
VSCODE_GIT_ASKPASS_MAIN: string;
|
||||
npm_package_devDependencies_svelte_check: string;
|
||||
VSCODE_GIT_ASKPASS_NODE: string;
|
||||
MANAGERPID: string;
|
||||
npm_package_scripts_check: string;
|
||||
SYSTEMD_EXEC_PID: string;
|
||||
CHROME_EXECUTABLE: string;
|
||||
DBUS_SESSION_BUS_ADDRESS: string;
|
||||
npm_config_engine_strict: string;
|
||||
COLORTERM: string;
|
||||
npm_package_devDependencies_typescript: string;
|
||||
IM_CONFIG_PHASE: string;
|
||||
npm_package_scripts_dev: string;
|
||||
npm_package_devDependencies__playwright_test: string;
|
||||
npm_package_devDependencies_prettier: string;
|
||||
GTK_IM_MODULE: string;
|
||||
LOGNAME: string;
|
||||
npm_package_type: string;
|
||||
QT_AUTO_SCREEN_SCALE_FACTOR: string;
|
||||
JOURNAL_STREAM: string;
|
||||
_: string;
|
||||
npm_package_private: string;
|
||||
npm_package_scripts_check_watch: string;
|
||||
npm_package_devDependencies_node_sass: string;
|
||||
XDG_SESSION_CLASS: string;
|
||||
npm_package_scripts_lint: string;
|
||||
npm_package_devDependencies__typescript_eslint_eslint_plugin: string;
|
||||
npm_config_registry: string;
|
||||
TERM: string;
|
||||
XDG_SESSION_ID: string;
|
||||
npm_package_devDependencies_eslint_plugin_svelte3: string;
|
||||
GTK2_RC_FILES: string;
|
||||
npm_config_node_gyp: string;
|
||||
PATH: string;
|
||||
SESSION_MANAGER: string;
|
||||
INVOCATION_ID: string;
|
||||
GTK3_MODULES: string;
|
||||
npm_package_name: string;
|
||||
NODE: string;
|
||||
XDG_SESSION_PATH: string;
|
||||
XDG_RUNTIME_DIR: string;
|
||||
XCURSOR_THEME: string;
|
||||
GDK_BACKEND: string;
|
||||
DISPLAY: string;
|
||||
npm_package_scripts_test_unit: string;
|
||||
LANG: string;
|
||||
XDG_CURRENT_DESKTOP: string;
|
||||
npm_package_devDependencies_eslint: string;
|
||||
XMODIFIERS: string;
|
||||
XDG_SESSION_DESKTOP: string;
|
||||
XAUTHORITY: string;
|
||||
LS_COLORS: string;
|
||||
VSCODE_GIT_IPC_HANDLE: string;
|
||||
TERM_PROGRAM: string;
|
||||
npm_lifecycle_script: string;
|
||||
SSH_AUTH_SOCK: string;
|
||||
XDG_GREETER_DATA_DIR: string;
|
||||
ORIGINAL_XDG_CURRENT_DESKTOP: string;
|
||||
npm_package_scripts_test: string;
|
||||
npm_package_devDependencies__sveltejs_kit: string;
|
||||
SHELL: string;
|
||||
NODE_PATH: string;
|
||||
npm_package_version: string;
|
||||
npm_lifecycle_event: string;
|
||||
QT_ACCESSIBILITY: string;
|
||||
GDMSESSION: string;
|
||||
npm_package_scripts_build: string;
|
||||
npm_package_devDependencies_svelte: string;
|
||||
npm_package_devDependencies_tslib: string;
|
||||
force_s3tc_enable: string;
|
||||
GPG_AGENT_INFO: string;
|
||||
npm_package_dependencies_sass: string;
|
||||
VSCODE_GIT_ASKPASS_EXTRA_ARGS: string;
|
||||
QT_IM_MODULE: string;
|
||||
XDG_VTNR: string;
|
||||
npm_package_scripts_format: string;
|
||||
PWD: string;
|
||||
npm_execpath: string;
|
||||
XDG_CONFIG_DIRS: string;
|
||||
CLUTTER_IM_MODULE: string;
|
||||
ANDROID_HOME: string;
|
||||
XDG_DATA_DIRS: string;
|
||||
npm_package_devDependencies__sveltejs_adapter_auto: string;
|
||||
PNPM_SCRIPT_SRC_DIR: string;
|
||||
KDE_SESSION_UID: string;
|
||||
npm_package_scripts_preview: string;
|
||||
npm_package_devDependencies_prettier_plugin_svelte: string;
|
||||
PNPM_HOME: string;
|
||||
VTE_VERSION: string;
|
||||
INIT_CWD: string;
|
||||
NODE_ENV: string;
|
||||
[key: `PUBLIC_${string}`]: undefined;
|
||||
[key: string]: string | undefined;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Similar to [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), but only includes variables that begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code.
|
||||
*
|
||||
* Note that public dynamic environment variables must all be sent from the server to the client, causing larger network requests — when possible, use `$env/static/public` instead.
|
||||
*
|
||||
* ```ts
|
||||
* import { env } from '$env/dynamic/public';
|
||||
* console.log(env.PUBLIC_DEPLOYMENT_SPECIFIC_VARIABLE);
|
||||
* ```
|
||||
*/
|
||||
declare module '$env/dynamic/public' {
|
||||
export const env: {
|
||||
[key: `PUBLIC_${string}`]: string | undefined;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
export { matchers } from './client-matchers.js';
|
||||
|
||||
export const nodes = [() => import('./nodes/0'),
|
||||
() => import('./nodes/1'),
|
||||
() => import('./nodes/2'),
|
||||
() => import('./nodes/3')];
|
||||
|
||||
export const server_loads = [];
|
||||
|
||||
export const dictionary = {
|
||||
"/": [2],
|
||||
"/exercices/[[slug]]": [3]
|
||||
};
|
||||
|
||||
export const hooks = {
|
||||
handleError: (({ error }) => { console.error(error) }),
|
||||
};
|
|
@ -0,0 +1 @@
|
|||
export const matchers = {};
|
|
@ -0,0 +1 @@
|
|||
export { default as component } from "../../../src/routes/+layout.svelte";
|
|
@ -0,0 +1 @@
|
|||
export { default as component } from "../../../node_modules/.pnpm/@sveltejs+kit@1.0.1_svelte@3.55.0+vite@4.0.3/node_modules/@sveltejs/kit/src/runtime/components/error.svelte";
|
|
@ -0,0 +1 @@
|
|||
export { default as component } from "../../../src/routes/+page.svelte";
|
|
@ -0,0 +1,3 @@
|
|||
import * as universal from "../../../src/routes/exercices/[[slug]]/+page.js";
|
||||
export { universal };
|
||||
export { default as component } from "../../../src/routes/exercices/[[slug]]/+page.svelte";
|
|
@ -0,0 +1,53 @@
|
|||
<!-- This file is generated by @sveltejs/kit — do not edit it! -->
|
||||
<script>
|
||||
import { setContext, afterUpdate, onMount } from 'svelte';
|
||||
import { browser } from '$app/environment';
|
||||
|
||||
// stores
|
||||
export let stores;
|
||||
export let page;
|
||||
|
||||
export let components;
|
||||
export let form;
|
||||
export let data_0 = null;
|
||||
export let data_1 = null;
|
||||
|
||||
if (!browser) {
|
||||
setContext('__svelte__', stores);
|
||||
}
|
||||
|
||||
$: stores.page.set(page);
|
||||
afterUpdate(stores.page.notify);
|
||||
|
||||
let mounted = false;
|
||||
let navigated = false;
|
||||
let title = null;
|
||||
|
||||
onMount(() => {
|
||||
const unsubscribe = stores.page.subscribe(() => {
|
||||
if (mounted) {
|
||||
navigated = true;
|
||||
title = document.title || 'untitled page';
|
||||
}
|
||||
});
|
||||
|
||||
mounted = true;
|
||||
return unsubscribe;
|
||||
});
|
||||
</script>
|
||||
|
||||
{#if components[1]}
|
||||
<svelte:component this={components[0]} data={data_0}>
|
||||
<svelte:component this={components[1]} data={data_1} {form} />
|
||||
</svelte:component>
|
||||
{:else}
|
||||
<svelte:component this={components[0]} data={data_0} {form} />
|
||||
{/if}
|
||||
|
||||
{#if mounted}
|
||||
<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px">
|
||||
{#if navigated}
|
||||
{title}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"paths": {},
|
||||
"rootDirs": [
|
||||
"..",
|
||||
"./types"
|
||||
],
|
||||
"importsNotUsedAsValues": "error",
|
||||
"isolatedModules": true,
|
||||
"preserveValueImports": true,
|
||||
"lib": [
|
||||
"esnext",
|
||||
"DOM",
|
||||
"DOM.Iterable"
|
||||
],
|
||||
"moduleResolution": "node",
|
||||
"module": "esnext",
|
||||
"target": "esnext"
|
||||
},
|
||||
"include": [
|
||||
"ambient.d.ts",
|
||||
"./types/**/$types.d.ts",
|
||||
"../vite.config.ts",
|
||||
"../src/**/*.js",
|
||||
"../src/**/*.ts",
|
||||
"../src/**/*.svelte",
|
||||
"../src/**/*.js",
|
||||
"../src/**/*.ts",
|
||||
"../src/**/*.svelte",
|
||||
"../tests/**/*.js",
|
||||
"../tests/**/*.ts",
|
||||
"../tests/**/*.svelte"
|
||||
],
|
||||
"exclude": [
|
||||
"../node_modules/**",
|
||||
"./[!ambient.d.ts]**"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"/": [],
|
||||
"/exercices/[[slug]]": [
|
||||
"src/routes/exercices/[[slug]]/+page.js"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
import type * as Kit from '@sveltejs/kit';
|
||||
|
||||
type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
|
||||
type RouteParams = { }
|
||||
type RouteId = '/';
|
||||
type MaybeWithVoid<T> = {} extends T ? T | void : T;
|
||||
export type RequiredKeys<T> = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T];
|
||||
type OutputDataShape<T> = MaybeWithVoid<Omit<App.PageData, RequiredKeys<T>> & Partial<Pick<App.PageData, keyof T & keyof App.PageData>> & Record<string, any>>
|
||||
type EnsureDefined<T> = T extends null | undefined ? {} : T;
|
||||
type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
|
||||
type PageParentData = EnsureDefined<LayoutData>;
|
||||
type LayoutRouteId = RouteId | "/" | "/exercices/[[slug]]" | null
|
||||
type LayoutParams = RouteParams & { slug?: string }
|
||||
type LayoutParentData = EnsureDefined<{}>;
|
||||
|
||||
export type PageServerData = null;
|
||||
export type PageData = Expand<PageParentData>;
|
||||
export type LayoutServerData = null;
|
||||
export type LayoutData = Expand<LayoutParentData>;
|
|
@ -0,0 +1,14 @@
|
|||
import type * as Kit from '@sveltejs/kit';
|
||||
|
||||
type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
|
||||
type RouteParams = { }
|
||||
type RouteId = '/exercices';
|
||||
type MaybeWithVoid<T> = {} extends T ? T | void : T;
|
||||
export type RequiredKeys<T> = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T];
|
||||
type OutputDataShape<T> = MaybeWithVoid<Omit<App.PageData, RequiredKeys<T>> & Partial<Pick<App.PageData, keyof T & keyof App.PageData>> & Record<string, any>>
|
||||
type EnsureDefined<T> = T extends null | undefined ? {} : T;
|
||||
type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
|
||||
type PageParentData = EnsureDefined<import('../$types.js').LayoutData>;
|
||||
|
||||
export type PageServerData = null;
|
||||
export type PageData = Expand<PageParentData>;
|
|
@ -0,0 +1,16 @@
|
|||
import type * as Kit from '@sveltejs/kit';
|
||||
|
||||
type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
|
||||
type RouteParams = { slug?: string }
|
||||
type RouteId = '/exercices/[[slug]]';
|
||||
type MaybeWithVoid<T> = {} extends T ? T | void : T;
|
||||
export type RequiredKeys<T> = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T];
|
||||
type OutputDataShape<T> = MaybeWithVoid<Omit<App.PageData, RequiredKeys<T>> & Partial<Pick<App.PageData, keyof T & keyof App.PageData>> & Record<string, any>>
|
||||
type EnsureDefined<T> = T extends null | undefined ? {} : T;
|
||||
type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
|
||||
type PageParentData = EnsureDefined<import('../../$types.js').LayoutData>;
|
||||
|
||||
export type PageServerData = null;
|
||||
export type PageLoad<OutputData extends OutputDataShape<PageParentData> = OutputDataShape<PageParentData>> = Kit.Load<RouteParams, PageServerData, PageParentData, OutputData, RouteId>;
|
||||
export type PageLoadEvent = Parameters<PageLoad>[0];
|
||||
export type PageData = Expand<Omit<PageParentData, keyof Kit.AwaitedProperties<Awaited<ReturnType<typeof import('./proxy+page.js').load>>>> & OptionalUnion<EnsureDefined<Kit.AwaitedProperties<Awaited<ReturnType<typeof import('./proxy+page.js').load>>>>>>;
|
|
@ -0,0 +1,11 @@
|
|||
// @ts-nocheck
|
||||
/** @param {Parameters<import('./$types').PageLoad>[0]} event */
|
||||
export function load({params, url}) {
|
||||
return {
|
||||
post: {
|
||||
title: `Title for ${params.slug} goes here`,
|
||||
content: `Content for ${params.slug} goes here ${url.searchParams}`
|
||||
|
||||
}
|
||||
};
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../eslint/bin/eslint.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../eslint/bin/eslint.js" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../eslint-config-prettier/bin/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../eslint-config-prettier/bin/cli.js" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../node-sass/bin/node-sass" "$@"
|
||||
else
|
||||
exec node "$basedir/../node-sass/bin/node-sass" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../@playwright/test/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../@playwright/test/cli.js" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../prettier/bin-prettier.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../prettier/bin-prettier.js" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../sass/sass.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../sass/sass.js" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../svelte-check/bin/svelte-check" "$@"
|
||||
else
|
||||
exec node "$basedir/../svelte-check/bin/svelte-check" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../@sveltejs/kit/svelte-kit.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../@sveltejs/kit/svelte-kit.js" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
|
||||
else
|
||||
exec node "$basedir/../typescript/bin/tsc" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
|
||||
else
|
||||
exec node "$basedir/../typescript/bin/tsserver" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../vite/bin/vite.js" "$@"
|
||||
fi
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -z "$NODE_PATH" ]; then
|
||||
export NODE_PATH="/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
else
|
||||
export NODE_PATH="$NODE_PATH:/home/lilian/Dev/project/fastapi_gen/frontend/node_modules/.pnpm/node_modules"
|
||||
fi
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"
|
||||
else
|
||||
exec node "$basedir/../vitest/vitest.mjs" "$@"
|
||||
fi
|
|
@ -0,0 +1,735 @@
|
|||
hoistPattern:
|
||||
- '*'
|
||||
hoistedDependencies:
|
||||
/@babel/code-frame/7.18.6:
|
||||
'@babel/code-frame': private
|
||||
/@babel/helper-validator-identifier/7.19.1:
|
||||
'@babel/helper-validator-identifier': private
|
||||
/@babel/highlight/7.18.6:
|
||||
'@babel/highlight': private
|
||||
/@esbuild/android-arm/0.16.11:
|
||||
'@esbuild/android-arm': private
|
||||
/@esbuild/android-arm64/0.16.11:
|
||||
'@esbuild/android-arm64': private
|
||||
/@esbuild/android-x64/0.16.11:
|
||||
'@esbuild/android-x64': private
|
||||
/@esbuild/darwin-arm64/0.16.11:
|
||||
'@esbuild/darwin-arm64': private
|
||||
/@esbuild/darwin-x64/0.16.11:
|
||||
'@esbuild/darwin-x64': private
|
||||
/@esbuild/freebsd-arm64/0.16.11:
|
||||
'@esbuild/freebsd-arm64': private
|
||||
/@esbuild/freebsd-x64/0.16.11:
|
||||
'@esbuild/freebsd-x64': private
|
||||
/@esbuild/linux-arm/0.16.11:
|
||||
'@esbuild/linux-arm': private
|
||||
/@esbuild/linux-arm64/0.16.11:
|
||||
'@esbuild/linux-arm64': private
|
||||
/@esbuild/linux-ia32/0.16.11:
|
||||
'@esbuild/linux-ia32': private
|
||||
/@esbuild/linux-loong64/0.16.11:
|
||||
'@esbuild/linux-loong64': private
|
||||
/@esbuild/linux-mips64el/0.16.11:
|
||||
'@esbuild/linux-mips64el': private
|
||||
/@esbuild/linux-ppc64/0.16.11:
|
||||
'@esbuild/linux-ppc64': private
|
||||
/@esbuild/linux-riscv64/0.16.11:
|
||||
'@esbuild/linux-riscv64': private
|
||||
/@esbuild/linux-s390x/0.16.11:
|
||||
'@esbuild/linux-s390x': private
|
||||
/@esbuild/linux-x64/0.16.11:
|
||||