A website inspired by Last.fm that will keep track of your listening statistics
lastfm music statistics
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Make the project ready for a frontend that will be coupled to the go application via a custom inertia backend implementation. Frontend will consist of svelte components with inertia, tailwind and postcss.

oscar345 7e718a7b 0cd0a9db

+1589 -11
+1
.gitignore
··· 5 5 **production.env 6 6 **/private/database 7 7 **/bin 8 + **/node_modules
+1
config/development.env
··· 1 1 ## App configuration 2 2 PORT=3000 3 3 HOST=127.0.0.1 4 + SECRET_KEY=4252dda7310af4c8c98c98e0f6b4c8a836cad186ef17d72459dcff9abe67e1fd 4 5 5 6 ## Database configuration 6 7 APP_DATABASE_PATH=private/database/app.dev.db
+5 -3
go.mod
··· 4 4 5 5 require ( 6 6 github.com/duckdb/duckdb-go/v2 v2.5.4 7 + github.com/ggicci/httpin v0.20.2 7 8 github.com/go-chi/chi/v5 v5.2.3 9 + github.com/gorilla/csrf v1.7.3 8 10 github.com/joho/godotenv v1.5.1 9 11 github.com/mattn/go-sqlite3 v1.14.33 12 + golang.org/x/sync v0.19.0 13 + golang.org/x/tools v0.40.0 10 14 ) 11 15 12 16 require ( ··· 19 23 github.com/duckdb/duckdb-go-bindings/windows-amd64 v0.1.24 // indirect 20 24 github.com/duckdb/duckdb-go/arrowmapping v0.0.27 // indirect 21 25 github.com/duckdb/duckdb-go/mapping v0.0.27 // indirect 22 - github.com/ggicci/httpin v0.20.2 // indirect 23 26 github.com/ggicci/owl v0.8.2 // indirect 24 27 github.com/go-viper/mapstructure/v2 v2.4.0 // indirect 25 28 github.com/goccy/go-json v0.10.5 // indirect 26 29 github.com/google/flatbuffers v25.9.23+incompatible // indirect 27 30 github.com/google/uuid v1.6.0 // indirect 31 + github.com/gorilla/securecookie v1.1.2 // indirect 28 32 github.com/klauspost/compress v1.18.2 // indirect 29 33 github.com/klauspost/cpuid/v2 v2.3.0 // indirect 30 34 github.com/pierrec/lz4/v4 v4.1.22 // indirect 31 35 github.com/zeebo/xxh3 v1.0.2 // indirect 32 36 golang.org/x/exp v0.0.0-20251209150349-8475f28825e9 // indirect 33 37 golang.org/x/mod v0.31.0 // indirect 34 - golang.org/x/sync v0.19.0 // indirect 35 38 golang.org/x/sys v0.39.0 // indirect 36 39 golang.org/x/telemetry v0.0.0-20251208220230-2638a1023523 // indirect 37 - golang.org/x/tools v0.40.0 // indirect 38 40 golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect 39 41 )
+8
go.sum
··· 40 40 github.com/google/flatbuffers v25.9.23+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= 41 41 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= 42 42 github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 43 + github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= 44 + github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 43 45 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= 44 46 github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 47 + github.com/gorilla/csrf v1.7.3 h1:BHWt6FTLZAb2HtWT5KDBf6qgpZzvtbp9QWDRKZMXJC0= 48 + github.com/gorilla/csrf v1.7.3/go.mod h1:F1Fj3KG23WYHE6gozCmBAezKookxbIvUJT+121wTuLk= 49 + github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA= 50 + github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo= 45 51 github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= 46 52 github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= 53 + github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= 54 + github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= 47 55 github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= 48 56 github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= 49 57 github.com/klauspost/compress v1.18.2 h1:iiPHWW0YrcFgpBYhsA6D1+fqHssJscY/Tm/y2Uqnapk=
+3 -2
internal/config/config.go
··· 47 47 Environment: env, 48 48 49 49 Server: ServerConfig{ 50 - Port: utilities.GetEnvOrDefault("PORT", "3000"), 51 - Host: utilities.GetEnvOrDefault("HOST", "localhost"), 50 + Port: utilities.GetEnvOrDefault("PORT", "3000"), 51 + Host: utilities.GetEnvOrDefault("HOST", "localhost"), 52 + SecretKey: utilities.GetEnvOrPanic("SECRET_KEY"), 52 53 }, 53 54 54 55 AppDatabase: DatabaseConfig{
+3 -2
internal/config/models.go
··· 34 34 } 35 35 36 36 type ServerConfig struct { 37 - Port string 38 - Host string 37 + Port string 38 + Host string 39 + SecretKey string 39 40 } 40 41 41 42 type DatabaseConfig struct {
+1
internal/web/middleware/middleware.go
··· 1 + package middleware
+6 -4
internal/web/router/router.go
··· 3 3 import ( 4 4 "github.com/ggicci/httpin" 5 5 "github.com/go-chi/chi/v5" 6 - "github.com/go-chi/chi/v5/middleware" 6 + chimiddleware "github.com/go-chi/chi/v5/middleware" 7 + "github.com/gorilla/csrf" 7 8 "github.com/oscar345/keeptrack/internal/config" 8 9 "github.com/oscar345/keeptrack/internal/image" 9 10 "github.com/oscar345/keeptrack/internal/repo" ··· 39 40 r := chi.NewRouter() 40 41 41 42 r.Use( 42 - middleware.Logger, 43 - middleware.RequestID, 44 - middleware.CleanPath, 43 + chimiddleware.Logger, 44 + chimiddleware.RequestID, 45 + chimiddleware.CleanPath, 46 + csrf.Protect([]byte(s.config.Server.SecretKey)), 45 47 ) 46 48 47 49 r.Group(s.index())
+30
pkg/inertia/inertia.go
··· 1 + package inertia 2 + 3 + import ( 4 + "html/template" 5 + ) 6 + 7 + type Inertia struct { 8 + Version string 9 + Template *template.Template 10 + } 11 + 12 + func New(tmpl *template.Template, options ...NewInertiaOption) *Inertia { 13 + i := &Inertia{ 14 + Template: tmpl, 15 + } 16 + 17 + for _, option := range options { 18 + option(i) 19 + } 20 + 21 + return i 22 + } 23 + 24 + type NewInertiaOption func(*Inertia) 25 + 26 + func WithVersion(version string) NewInertiaOption { 27 + return func(i *Inertia) { 28 + i.Version = version 29 + } 30 + }
+9
pkg/inertia/page.go
··· 1 + package inertia 2 + 3 + type Page struct { 4 + Component string `json:"component"` 5 + Props map[string]any `json:"props"` 6 + URL string `json:"url"` 7 + Version string `json:"version"` 8 + DeferredProps map[string][]string `json:"deferredProps"` 9 + }
+104
pkg/inertia/prop.go
··· 1 + package inertia 2 + 3 + import ( 4 + "context" 5 + "net/http" 6 + "slices" 7 + ) 8 + 9 + type Props map[string]Prop 10 + 11 + type Prop struct { 12 + Value func() (any, error) 13 + Lazy bool 14 + Optional bool 15 + Always bool 16 + Deferred bool 17 + DeferredKey string 18 + Default bool 19 + isError bool 20 + } 21 + 22 + func (p *Prop) ShouldDefer(r *http.Request) bool { 23 + return true 24 + } 25 + 26 + func (p *Prop) IsReturned(r *http.Request, key string, only []string, except []string) bool { 27 + isFirstLoad := !isInertiaPartialRequest(r) 28 + 29 + if isFirstLoad && p.Deferred { 30 + return false 31 + } 32 + 33 + if slices.Contains(except, key) { 34 + return false 35 + } 36 + 37 + if slices.Contains(only, key) { 38 + return true 39 + } 40 + 41 + if p.Always || p.Default { 42 + return true 43 + } 44 + 45 + if isFirstLoad && p.Lazy { 46 + return true 47 + } 48 + 49 + return false 50 + } 51 + 52 + const PropsCtxKey = "INERTIA_KEY" 53 + 54 + type PropOption func(*Prop) 55 + 56 + // The value is always evaluated during a request, but can be left out of the response when 57 + // the request is a partial request. In other Inertia adapters this would be the same as just 58 + // passing the value. 59 + func Default(value any, opts ...PropOption) Prop { 60 + return Prop{Value: func() (any, error) { return value, nil }, Default: true} 61 + } 62 + 63 + // The value is evaluated and returned for the first request to a page. For all partial request 64 + // to that same page, the value is not evaluated and returned unless the property is specified 65 + // in the `X-Inertia-Partial-Data` header. In other Inertia adapters this would be the same as 66 + // passing a closure. 67 + func Lazy(valuefn func() (any, error), opts ...PropOption) Prop { 68 + return Prop{Value: valuefn, Lazy: true} 69 + } 70 + 71 + // The value is only evaluated during a request when the request is a partial request. The value 72 + // is never returned during the first request from a page. 73 + func Optional(valuefn func() (any, error), opts ...PropOption) Prop { 74 + return Prop{Value: valuefn, Optional: true} 75 + } 76 + 77 + // The value is always returned during a partial request, and the first request from a page. 78 + func Always(value any) Prop { 79 + return Prop{Value: func() (any, error) { return value, nil }, Always: true} 80 + } 81 + 82 + func WithDeferredKey(key string) PropOption { 83 + return func(p *Prop) { 84 + p.DeferredKey = key 85 + } 86 + } 87 + 88 + // Besides setting the props in the handler when rendering the page, you can also set props in the 89 + // middleware. This is useful when you want to set props that are available to all pages. One can 90 + // use the SetProp function to set props. The value will be stored in the request context and will 91 + // be retrieved when rendering the page. 92 + func SetProp(r *http.Request, key string, value Prop) { 93 + props, ok := r.Context().Value(PropsCtxKey).(Props) 94 + 95 + if !ok { 96 + props = make(Props) 97 + } 98 + 99 + props[key] = value 100 + 101 + ctx := context.WithValue(r.Context(), PropsCtxKey, props) 102 + 103 + *r = *r.WithContext(ctx) 104 + }
+33
pkg/inertia/request.go
··· 1 + package inertia 2 + 3 + import ( 4 + "net/http" 5 + "strings" 6 + ) 7 + 8 + type InertiaHeaderKey string 9 + 10 + const ( 11 + InertiaPartialDataHeader InertiaHeaderKey = "X-Inertia-Partial-Data" 12 + InertiaPartialComponentHeader InertiaHeaderKey = "X-Inertia-Partial-Component" 13 + InertiaPartialExceptHeader InertiaHeaderKey = "X-Inertia-Partial-Except" 14 + InertiaVersionHeader InertiaHeaderKey = "X-Inertia-Version" 15 + InertiaLocationHeader InertiaHeaderKey = "X-Inertia-Location" 16 + InertiaHeader InertiaHeaderKey = "X-Inertia" 17 + ) 18 + 19 + func isInertiaRequest(r *http.Request) bool { 20 + return r.Header.Get(string(InertiaHeader)) == "true" 21 + } 22 + 23 + func getInertiaPartialOnlyProps(r *http.Request) []string { 24 + return strings.Split(r.Header.Get(string(InertiaPartialDataHeader)), ",") 25 + } 26 + 27 + func getInertiaPartialExceptProps(r *http.Request) []string { 28 + return strings.Split(r.Header.Get(string(InertiaPartialExceptHeader)), ",") 29 + } 30 + 31 + func isInertiaPartialRequest(r *http.Request) bool { 32 + return r.Header.Get(string(InertiaPartialComponentHeader)) != "" 33 + }
+95
pkg/inertia/response.go
··· 1 + package inertia 2 + 3 + import ( 4 + "encoding/json" 5 + "maps" 6 + "net/http" 7 + ) 8 + 9 + func (in *Inertia) Render(w http.ResponseWriter, r *http.Request, view string, props Props) { 10 + var ( 11 + properties = make(map[string]any) 12 + deferred = make(map[string][]string) 13 + errors = make(map[string][]string) 14 + ) 15 + 16 + only := getInertiaPartialOnlyProps(r) 17 + except := getInertiaPartialExceptProps(r) 18 + 19 + if contextProps, ok := r.Context().Value(PropsCtxKey).(Props); contextProps != nil && ok { 20 + maps.Copy(contextProps, props) 21 + props = contextProps 22 + } 23 + 24 + for key, prop := range props { 25 + if !prop.IsReturned(r, key, only, except) { 26 + if prop.ShouldDefer(r) { 27 + deferredKey := "default" 28 + if prop.DeferredKey != "" { 29 + deferredKey = prop.DeferredKey 30 + } 31 + deferred[deferredKey] = append(deferred[deferredKey], key) 32 + } 33 + continue 34 + } 35 + 36 + value, err := prop.Value() 37 + if err != nil { 38 + errors[key] = append(errors[key], err.Error()) 39 + continue 40 + } 41 + properties[key] = value 42 + } 43 + 44 + properties["errors"] = errors 45 + 46 + page := Page{ 47 + Component: view, 48 + Props: properties, 49 + URL: r.URL.Path, 50 + Version: in.Version, 51 + DeferredProps: deferred, 52 + } 53 + 54 + if isInertiaRequest(r) { 55 + renderJSON(w, page) 56 + } 57 + 58 + renderHTML(in, w, page) 59 + } 60 + 61 + func renderHTML(in *Inertia, w http.ResponseWriter, page Page) error { 62 + data, err := json.Marshal(page) 63 + 64 + if err != nil { 65 + return err 66 + } 67 + 68 + headers := map[string]string{ 69 + "Vary": "Accept", 70 + } 71 + 72 + for key, value := range headers { 73 + w.Header().Set(key, value) 74 + } 75 + 76 + w.WriteHeader(http.StatusOK) 77 + 78 + return in.Template.Execute(w, map[string]any{"Data": string(data)}) 79 + } 80 + 81 + func renderJSON(w http.ResponseWriter, page Page) error { 82 + headers := map[string]string{ 83 + string(InertiaHeader): "true", 84 + "Vary": "Accept", 85 + "Content-Type": "application/json", 86 + } 87 + 88 + for key, value := range headers { 89 + w.Header().Set(key, value) 90 + } 91 + 92 + w.WriteHeader(http.StatusOK) 93 + 94 + return json.NewEncoder(w).Encode(page) 95 + }
+36
web/esbuild.config.ts
··· 1 + import * as esbuild from "esbuild"; 2 + import svelte from "esbuild-svelte"; 3 + import { sveltePreprocess } from "svelte-preprocess"; 4 + 5 + const args = process.argv.slice(2); 6 + let watch = args.includes("--watch"); 7 + let deploy = args.includes("--deploy"); 8 + 9 + const options: esbuild.BuildOptions = { 10 + bundle: true, 11 + minify: deploy, 12 + sourcemap: !deploy, 13 + splitting: deploy, 14 + treeShaking: deploy, 15 + format: "esm", 16 + tsconfig: "tsconfig.json", 17 + target: "firefox118", 18 + outdir: "../public/assets", 19 + alias: { 20 + $components: "./components", 21 + }, 22 + chunkNames: "chunks/[name]-[hash]", 23 + entryPoints: ["src/main.ts"], 24 + conditions: ["svelte", "browser"], 25 + plugins: [ 26 + svelte({ 27 + preprocess: sveltePreprocess(), 28 + }), 29 + ], 30 + }; 31 + 32 + if (watch) { 33 + esbuild.context(options).then((ctx) => ctx.watch()); 34 + } else { 35 + esbuild.build(options); 36 + }
+1208
web/package-lock.json
··· 1 + { 2 + "name": "web", 3 + "lockfileVersion": 3, 4 + "requires": true, 5 + "packages": { 6 + "": { 7 + "dependencies": { 8 + "@inertiajs/svelte": "^2.3.8", 9 + "esbuild-svelte": "^0.9.4", 10 + "svelte-preprocess": "^6.0.3" 11 + }, 12 + "devDependencies": { 13 + "@types/node": "^25.0.3", 14 + "esbuild": "0.27.2" 15 + } 16 + }, 17 + "node_modules/@esbuild/aix-ppc64": { 18 + "version": "0.27.2", 19 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", 20 + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", 21 + "cpu": [ 22 + "ppc64" 23 + ], 24 + "license": "MIT", 25 + "optional": true, 26 + "os": [ 27 + "aix" 28 + ], 29 + "engines": { 30 + "node": ">=18" 31 + } 32 + }, 33 + "node_modules/@esbuild/android-arm": { 34 + "version": "0.27.2", 35 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", 36 + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", 37 + "cpu": [ 38 + "arm" 39 + ], 40 + "license": "MIT", 41 + "optional": true, 42 + "os": [ 43 + "android" 44 + ], 45 + "engines": { 46 + "node": ">=18" 47 + } 48 + }, 49 + "node_modules/@esbuild/android-arm64": { 50 + "version": "0.27.2", 51 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", 52 + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", 53 + "cpu": [ 54 + "arm64" 55 + ], 56 + "license": "MIT", 57 + "optional": true, 58 + "os": [ 59 + "android" 60 + ], 61 + "engines": { 62 + "node": ">=18" 63 + } 64 + }, 65 + "node_modules/@esbuild/android-x64": { 66 + "version": "0.27.2", 67 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", 68 + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", 69 + "cpu": [ 70 + "x64" 71 + ], 72 + "license": "MIT", 73 + "optional": true, 74 + "os": [ 75 + "android" 76 + ], 77 + "engines": { 78 + "node": ">=18" 79 + } 80 + }, 81 + "node_modules/@esbuild/darwin-arm64": { 82 + "version": "0.27.2", 83 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", 84 + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", 85 + "cpu": [ 86 + "arm64" 87 + ], 88 + "license": "MIT", 89 + "optional": true, 90 + "os": [ 91 + "darwin" 92 + ], 93 + "engines": { 94 + "node": ">=18" 95 + } 96 + }, 97 + "node_modules/@esbuild/darwin-x64": { 98 + "version": "0.27.2", 99 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", 100 + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", 101 + "cpu": [ 102 + "x64" 103 + ], 104 + "license": "MIT", 105 + "optional": true, 106 + "os": [ 107 + "darwin" 108 + ], 109 + "engines": { 110 + "node": ">=18" 111 + } 112 + }, 113 + "node_modules/@esbuild/freebsd-arm64": { 114 + "version": "0.27.2", 115 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", 116 + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", 117 + "cpu": [ 118 + "arm64" 119 + ], 120 + "license": "MIT", 121 + "optional": true, 122 + "os": [ 123 + "freebsd" 124 + ], 125 + "engines": { 126 + "node": ">=18" 127 + } 128 + }, 129 + "node_modules/@esbuild/freebsd-x64": { 130 + "version": "0.27.2", 131 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", 132 + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", 133 + "cpu": [ 134 + "x64" 135 + ], 136 + "license": "MIT", 137 + "optional": true, 138 + "os": [ 139 + "freebsd" 140 + ], 141 + "engines": { 142 + "node": ">=18" 143 + } 144 + }, 145 + "node_modules/@esbuild/linux-arm": { 146 + "version": "0.27.2", 147 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", 148 + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", 149 + "cpu": [ 150 + "arm" 151 + ], 152 + "license": "MIT", 153 + "optional": true, 154 + "os": [ 155 + "linux" 156 + ], 157 + "engines": { 158 + "node": ">=18" 159 + } 160 + }, 161 + "node_modules/@esbuild/linux-arm64": { 162 + "version": "0.27.2", 163 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", 164 + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", 165 + "cpu": [ 166 + "arm64" 167 + ], 168 + "license": "MIT", 169 + "optional": true, 170 + "os": [ 171 + "linux" 172 + ], 173 + "engines": { 174 + "node": ">=18" 175 + } 176 + }, 177 + "node_modules/@esbuild/linux-ia32": { 178 + "version": "0.27.2", 179 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", 180 + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", 181 + "cpu": [ 182 + "ia32" 183 + ], 184 + "license": "MIT", 185 + "optional": true, 186 + "os": [ 187 + "linux" 188 + ], 189 + "engines": { 190 + "node": ">=18" 191 + } 192 + }, 193 + "node_modules/@esbuild/linux-loong64": { 194 + "version": "0.27.2", 195 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", 196 + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", 197 + "cpu": [ 198 + "loong64" 199 + ], 200 + "license": "MIT", 201 + "optional": true, 202 + "os": [ 203 + "linux" 204 + ], 205 + "engines": { 206 + "node": ">=18" 207 + } 208 + }, 209 + "node_modules/@esbuild/linux-mips64el": { 210 + "version": "0.27.2", 211 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", 212 + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", 213 + "cpu": [ 214 + "mips64el" 215 + ], 216 + "license": "MIT", 217 + "optional": true, 218 + "os": [ 219 + "linux" 220 + ], 221 + "engines": { 222 + "node": ">=18" 223 + } 224 + }, 225 + "node_modules/@esbuild/linux-ppc64": { 226 + "version": "0.27.2", 227 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", 228 + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", 229 + "cpu": [ 230 + "ppc64" 231 + ], 232 + "license": "MIT", 233 + "optional": true, 234 + "os": [ 235 + "linux" 236 + ], 237 + "engines": { 238 + "node": ">=18" 239 + } 240 + }, 241 + "node_modules/@esbuild/linux-riscv64": { 242 + "version": "0.27.2", 243 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", 244 + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", 245 + "cpu": [ 246 + "riscv64" 247 + ], 248 + "license": "MIT", 249 + "optional": true, 250 + "os": [ 251 + "linux" 252 + ], 253 + "engines": { 254 + "node": ">=18" 255 + } 256 + }, 257 + "node_modules/@esbuild/linux-s390x": { 258 + "version": "0.27.2", 259 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", 260 + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", 261 + "cpu": [ 262 + "s390x" 263 + ], 264 + "license": "MIT", 265 + "optional": true, 266 + "os": [ 267 + "linux" 268 + ], 269 + "engines": { 270 + "node": ">=18" 271 + } 272 + }, 273 + "node_modules/@esbuild/linux-x64": { 274 + "version": "0.27.2", 275 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", 276 + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", 277 + "cpu": [ 278 + "x64" 279 + ], 280 + "license": "MIT", 281 + "optional": true, 282 + "os": [ 283 + "linux" 284 + ], 285 + "engines": { 286 + "node": ">=18" 287 + } 288 + }, 289 + "node_modules/@esbuild/netbsd-arm64": { 290 + "version": "0.27.2", 291 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", 292 + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", 293 + "cpu": [ 294 + "arm64" 295 + ], 296 + "license": "MIT", 297 + "optional": true, 298 + "os": [ 299 + "netbsd" 300 + ], 301 + "engines": { 302 + "node": ">=18" 303 + } 304 + }, 305 + "node_modules/@esbuild/netbsd-x64": { 306 + "version": "0.27.2", 307 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", 308 + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", 309 + "cpu": [ 310 + "x64" 311 + ], 312 + "license": "MIT", 313 + "optional": true, 314 + "os": [ 315 + "netbsd" 316 + ], 317 + "engines": { 318 + "node": ">=18" 319 + } 320 + }, 321 + "node_modules/@esbuild/openbsd-arm64": { 322 + "version": "0.27.2", 323 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", 324 + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", 325 + "cpu": [ 326 + "arm64" 327 + ], 328 + "license": "MIT", 329 + "optional": true, 330 + "os": [ 331 + "openbsd" 332 + ], 333 + "engines": { 334 + "node": ">=18" 335 + } 336 + }, 337 + "node_modules/@esbuild/openbsd-x64": { 338 + "version": "0.27.2", 339 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", 340 + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", 341 + "cpu": [ 342 + "x64" 343 + ], 344 + "license": "MIT", 345 + "optional": true, 346 + "os": [ 347 + "openbsd" 348 + ], 349 + "engines": { 350 + "node": ">=18" 351 + } 352 + }, 353 + "node_modules/@esbuild/openharmony-arm64": { 354 + "version": "0.27.2", 355 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", 356 + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", 357 + "cpu": [ 358 + "arm64" 359 + ], 360 + "license": "MIT", 361 + "optional": true, 362 + "os": [ 363 + "openharmony" 364 + ], 365 + "engines": { 366 + "node": ">=18" 367 + } 368 + }, 369 + "node_modules/@esbuild/sunos-x64": { 370 + "version": "0.27.2", 371 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", 372 + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", 373 + "cpu": [ 374 + "x64" 375 + ], 376 + "license": "MIT", 377 + "optional": true, 378 + "os": [ 379 + "sunos" 380 + ], 381 + "engines": { 382 + "node": ">=18" 383 + } 384 + }, 385 + "node_modules/@esbuild/win32-arm64": { 386 + "version": "0.27.2", 387 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", 388 + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", 389 + "cpu": [ 390 + "arm64" 391 + ], 392 + "license": "MIT", 393 + "optional": true, 394 + "os": [ 395 + "win32" 396 + ], 397 + "engines": { 398 + "node": ">=18" 399 + } 400 + }, 401 + "node_modules/@esbuild/win32-ia32": { 402 + "version": "0.27.2", 403 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", 404 + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", 405 + "cpu": [ 406 + "ia32" 407 + ], 408 + "license": "MIT", 409 + "optional": true, 410 + "os": [ 411 + "win32" 412 + ], 413 + "engines": { 414 + "node": ">=18" 415 + } 416 + }, 417 + "node_modules/@esbuild/win32-x64": { 418 + "version": "0.27.2", 419 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", 420 + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", 421 + "cpu": [ 422 + "x64" 423 + ], 424 + "license": "MIT", 425 + "optional": true, 426 + "os": [ 427 + "win32" 428 + ], 429 + "engines": { 430 + "node": ">=18" 431 + } 432 + }, 433 + "node_modules/@inertiajs/core": { 434 + "version": "2.3.8", 435 + "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-2.3.8.tgz", 436 + "integrity": "sha512-WIF/ea9FH+yR/nLLrOX9TNN20X2pcHZBLQJYCLZ/oLMaS6GSlnMtHZv5GtKNjmIpSiMvg2PiAqtDF/mvbnr+rQ==", 437 + "license": "MIT", 438 + "dependencies": { 439 + "@types/lodash-es": "^4.17.12", 440 + "axios": "^1.13.2", 441 + "laravel-precognition": "^1.0.0", 442 + "lodash-es": "^4.17.21", 443 + "qs": "^6.14.1" 444 + } 445 + }, 446 + "node_modules/@inertiajs/svelte": { 447 + "version": "2.3.8", 448 + "resolved": "https://registry.npmjs.org/@inertiajs/svelte/-/svelte-2.3.8.tgz", 449 + "integrity": "sha512-BbwAvhv9ltvg70K6tnfPUjt6qKV2Mk/doiquJeIHnnDyDAq10XuaI5221v2aZQH0nAl38izWwkYXsNIlSu5G1Q==", 450 + "license": "MIT", 451 + "dependencies": { 452 + "@inertiajs/core": "2.3.8", 453 + "@types/lodash-es": "^4.17.12", 454 + "laravel-precognition": "^1.0.0", 455 + "lodash-es": "^4.17.21" 456 + }, 457 + "peerDependencies": { 458 + "svelte": "^4.0.0 || ^5.0.0" 459 + } 460 + }, 461 + "node_modules/@jridgewell/gen-mapping": { 462 + "version": "0.3.13", 463 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", 464 + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", 465 + "license": "MIT", 466 + "peer": true, 467 + "dependencies": { 468 + "@jridgewell/sourcemap-codec": "^1.5.0", 469 + "@jridgewell/trace-mapping": "^0.3.24" 470 + } 471 + }, 472 + "node_modules/@jridgewell/remapping": { 473 + "version": "2.3.5", 474 + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", 475 + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 476 + "license": "MIT", 477 + "peer": true, 478 + "dependencies": { 479 + "@jridgewell/gen-mapping": "^0.3.5", 480 + "@jridgewell/trace-mapping": "^0.3.24" 481 + } 482 + }, 483 + "node_modules/@jridgewell/resolve-uri": { 484 + "version": "3.1.2", 485 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 486 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 487 + "license": "MIT", 488 + "engines": { 489 + "node": ">=6.0.0" 490 + } 491 + }, 492 + "node_modules/@jridgewell/sourcemap-codec": { 493 + "version": "1.5.5", 494 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", 495 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", 496 + "license": "MIT" 497 + }, 498 + "node_modules/@jridgewell/trace-mapping": { 499 + "version": "0.3.31", 500 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", 501 + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", 502 + "license": "MIT", 503 + "dependencies": { 504 + "@jridgewell/resolve-uri": "^3.1.0", 505 + "@jridgewell/sourcemap-codec": "^1.4.14" 506 + } 507 + }, 508 + "node_modules/@sveltejs/acorn-typescript": { 509 + "version": "1.0.8", 510 + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz", 511 + "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", 512 + "license": "MIT", 513 + "peer": true, 514 + "peerDependencies": { 515 + "acorn": "^8.9.0" 516 + } 517 + }, 518 + "node_modules/@types/estree": { 519 + "version": "1.0.8", 520 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 521 + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 522 + "license": "MIT", 523 + "peer": true 524 + }, 525 + "node_modules/@types/lodash": { 526 + "version": "4.17.21", 527 + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz", 528 + "integrity": "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==", 529 + "license": "MIT" 530 + }, 531 + "node_modules/@types/lodash-es": { 532 + "version": "4.17.12", 533 + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", 534 + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", 535 + "license": "MIT", 536 + "dependencies": { 537 + "@types/lodash": "*" 538 + } 539 + }, 540 + "node_modules/@types/node": { 541 + "version": "25.0.3", 542 + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", 543 + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", 544 + "dev": true, 545 + "license": "MIT", 546 + "dependencies": { 547 + "undici-types": "~7.16.0" 548 + } 549 + }, 550 + "node_modules/acorn": { 551 + "version": "8.15.0", 552 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 553 + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 554 + "license": "MIT", 555 + "peer": true, 556 + "bin": { 557 + "acorn": "bin/acorn" 558 + }, 559 + "engines": { 560 + "node": ">=0.4.0" 561 + } 562 + }, 563 + "node_modules/aria-query": { 564 + "version": "5.3.2", 565 + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", 566 + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", 567 + "license": "Apache-2.0", 568 + "peer": true, 569 + "engines": { 570 + "node": ">= 0.4" 571 + } 572 + }, 573 + "node_modules/asynckit": { 574 + "version": "0.4.0", 575 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 576 + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 577 + "license": "MIT" 578 + }, 579 + "node_modules/axios": { 580 + "version": "1.13.2", 581 + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", 582 + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", 583 + "license": "MIT", 584 + "dependencies": { 585 + "follow-redirects": "^1.15.6", 586 + "form-data": "^4.0.4", 587 + "proxy-from-env": "^1.1.0" 588 + } 589 + }, 590 + "node_modules/axobject-query": { 591 + "version": "4.1.0", 592 + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", 593 + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", 594 + "license": "Apache-2.0", 595 + "peer": true, 596 + "engines": { 597 + "node": ">= 0.4" 598 + } 599 + }, 600 + "node_modules/call-bind-apply-helpers": { 601 + "version": "1.0.2", 602 + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", 603 + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 604 + "license": "MIT", 605 + "dependencies": { 606 + "es-errors": "^1.3.0", 607 + "function-bind": "^1.1.2" 608 + }, 609 + "engines": { 610 + "node": ">= 0.4" 611 + } 612 + }, 613 + "node_modules/call-bound": { 614 + "version": "1.0.4", 615 + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", 616 + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", 617 + "license": "MIT", 618 + "dependencies": { 619 + "call-bind-apply-helpers": "^1.0.2", 620 + "get-intrinsic": "^1.3.0" 621 + }, 622 + "engines": { 623 + "node": ">= 0.4" 624 + }, 625 + "funding": { 626 + "url": "https://github.com/sponsors/ljharb" 627 + } 628 + }, 629 + "node_modules/clsx": { 630 + "version": "2.1.1", 631 + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", 632 + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", 633 + "license": "MIT", 634 + "peer": true, 635 + "engines": { 636 + "node": ">=6" 637 + } 638 + }, 639 + "node_modules/combined-stream": { 640 + "version": "1.0.8", 641 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 642 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 643 + "license": "MIT", 644 + "dependencies": { 645 + "delayed-stream": "~1.0.0" 646 + }, 647 + "engines": { 648 + "node": ">= 0.8" 649 + } 650 + }, 651 + "node_modules/delayed-stream": { 652 + "version": "1.0.0", 653 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 654 + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 655 + "license": "MIT", 656 + "engines": { 657 + "node": ">=0.4.0" 658 + } 659 + }, 660 + "node_modules/devalue": { 661 + "version": "5.6.1", 662 + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.1.tgz", 663 + "integrity": "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==", 664 + "license": "MIT", 665 + "peer": true 666 + }, 667 + "node_modules/dunder-proto": { 668 + "version": "1.0.1", 669 + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", 670 + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 671 + "license": "MIT", 672 + "dependencies": { 673 + "call-bind-apply-helpers": "^1.0.1", 674 + "es-errors": "^1.3.0", 675 + "gopd": "^1.2.0" 676 + }, 677 + "engines": { 678 + "node": ">= 0.4" 679 + } 680 + }, 681 + "node_modules/es-define-property": { 682 + "version": "1.0.1", 683 + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", 684 + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", 685 + "license": "MIT", 686 + "engines": { 687 + "node": ">= 0.4" 688 + } 689 + }, 690 + "node_modules/es-errors": { 691 + "version": "1.3.0", 692 + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 693 + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 694 + "license": "MIT", 695 + "engines": { 696 + "node": ">= 0.4" 697 + } 698 + }, 699 + "node_modules/es-object-atoms": { 700 + "version": "1.1.1", 701 + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", 702 + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 703 + "license": "MIT", 704 + "dependencies": { 705 + "es-errors": "^1.3.0" 706 + }, 707 + "engines": { 708 + "node": ">= 0.4" 709 + } 710 + }, 711 + "node_modules/es-set-tostringtag": { 712 + "version": "2.1.0", 713 + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", 714 + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", 715 + "license": "MIT", 716 + "dependencies": { 717 + "es-errors": "^1.3.0", 718 + "get-intrinsic": "^1.2.6", 719 + "has-tostringtag": "^1.0.2", 720 + "hasown": "^2.0.2" 721 + }, 722 + "engines": { 723 + "node": ">= 0.4" 724 + } 725 + }, 726 + "node_modules/esbuild": { 727 + "version": "0.27.2", 728 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", 729 + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", 730 + "hasInstallScript": true, 731 + "license": "MIT", 732 + "bin": { 733 + "esbuild": "bin/esbuild" 734 + }, 735 + "engines": { 736 + "node": ">=18" 737 + }, 738 + "optionalDependencies": { 739 + "@esbuild/aix-ppc64": "0.27.2", 740 + "@esbuild/android-arm": "0.27.2", 741 + "@esbuild/android-arm64": "0.27.2", 742 + "@esbuild/android-x64": "0.27.2", 743 + "@esbuild/darwin-arm64": "0.27.2", 744 + "@esbuild/darwin-x64": "0.27.2", 745 + "@esbuild/freebsd-arm64": "0.27.2", 746 + "@esbuild/freebsd-x64": "0.27.2", 747 + "@esbuild/linux-arm": "0.27.2", 748 + "@esbuild/linux-arm64": "0.27.2", 749 + "@esbuild/linux-ia32": "0.27.2", 750 + "@esbuild/linux-loong64": "0.27.2", 751 + "@esbuild/linux-mips64el": "0.27.2", 752 + "@esbuild/linux-ppc64": "0.27.2", 753 + "@esbuild/linux-riscv64": "0.27.2", 754 + "@esbuild/linux-s390x": "0.27.2", 755 + "@esbuild/linux-x64": "0.27.2", 756 + "@esbuild/netbsd-arm64": "0.27.2", 757 + "@esbuild/netbsd-x64": "0.27.2", 758 + "@esbuild/openbsd-arm64": "0.27.2", 759 + "@esbuild/openbsd-x64": "0.27.2", 760 + "@esbuild/openharmony-arm64": "0.27.2", 761 + "@esbuild/sunos-x64": "0.27.2", 762 + "@esbuild/win32-arm64": "0.27.2", 763 + "@esbuild/win32-ia32": "0.27.2", 764 + "@esbuild/win32-x64": "0.27.2" 765 + } 766 + }, 767 + "node_modules/esbuild-svelte": { 768 + "version": "0.9.4", 769 + "resolved": "https://registry.npmjs.org/esbuild-svelte/-/esbuild-svelte-0.9.4.tgz", 770 + "integrity": "sha512-v/a0GjkKN06nal2QLluxjk2GXsei3fdtjIuHRa6pVnri5rQBZ6pj4a2WwjLfRojgRsLwDHl4xSeZ1BeUHsqQrw==", 771 + "license": "MIT", 772 + "dependencies": { 773 + "@jridgewell/trace-mapping": "^0.3.19" 774 + }, 775 + "engines": { 776 + "node": ">=18" 777 + }, 778 + "peerDependencies": { 779 + "esbuild": ">=0.17.0", 780 + "svelte": ">=4.2.1 <6" 781 + } 782 + }, 783 + "node_modules/esm-env": { 784 + "version": "1.2.2", 785 + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", 786 + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", 787 + "license": "MIT", 788 + "peer": true 789 + }, 790 + "node_modules/esrap": { 791 + "version": "2.2.1", 792 + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.1.tgz", 793 + "integrity": "sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==", 794 + "license": "MIT", 795 + "peer": true, 796 + "dependencies": { 797 + "@jridgewell/sourcemap-codec": "^1.4.15" 798 + } 799 + }, 800 + "node_modules/follow-redirects": { 801 + "version": "1.15.11", 802 + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", 803 + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", 804 + "funding": [ 805 + { 806 + "type": "individual", 807 + "url": "https://github.com/sponsors/RubenVerborgh" 808 + } 809 + ], 810 + "license": "MIT", 811 + "engines": { 812 + "node": ">=4.0" 813 + }, 814 + "peerDependenciesMeta": { 815 + "debug": { 816 + "optional": true 817 + } 818 + } 819 + }, 820 + "node_modules/form-data": { 821 + "version": "4.0.5", 822 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", 823 + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", 824 + "license": "MIT", 825 + "dependencies": { 826 + "asynckit": "^0.4.0", 827 + "combined-stream": "^1.0.8", 828 + "es-set-tostringtag": "^2.1.0", 829 + "hasown": "^2.0.2", 830 + "mime-types": "^2.1.12" 831 + }, 832 + "engines": { 833 + "node": ">= 6" 834 + } 835 + }, 836 + "node_modules/function-bind": { 837 + "version": "1.1.2", 838 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 839 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 840 + "license": "MIT", 841 + "funding": { 842 + "url": "https://github.com/sponsors/ljharb" 843 + } 844 + }, 845 + "node_modules/get-intrinsic": { 846 + "version": "1.3.0", 847 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", 848 + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", 849 + "license": "MIT", 850 + "dependencies": { 851 + "call-bind-apply-helpers": "^1.0.2", 852 + "es-define-property": "^1.0.1", 853 + "es-errors": "^1.3.0", 854 + "es-object-atoms": "^1.1.1", 855 + "function-bind": "^1.1.2", 856 + "get-proto": "^1.0.1", 857 + "gopd": "^1.2.0", 858 + "has-symbols": "^1.1.0", 859 + "hasown": "^2.0.2", 860 + "math-intrinsics": "^1.1.0" 861 + }, 862 + "engines": { 863 + "node": ">= 0.4" 864 + }, 865 + "funding": { 866 + "url": "https://github.com/sponsors/ljharb" 867 + } 868 + }, 869 + "node_modules/get-proto": { 870 + "version": "1.0.1", 871 + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", 872 + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 873 + "license": "MIT", 874 + "dependencies": { 875 + "dunder-proto": "^1.0.1", 876 + "es-object-atoms": "^1.0.0" 877 + }, 878 + "engines": { 879 + "node": ">= 0.4" 880 + } 881 + }, 882 + "node_modules/gopd": { 883 + "version": "1.2.0", 884 + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", 885 + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", 886 + "license": "MIT", 887 + "engines": { 888 + "node": ">= 0.4" 889 + }, 890 + "funding": { 891 + "url": "https://github.com/sponsors/ljharb" 892 + } 893 + }, 894 + "node_modules/has-symbols": { 895 + "version": "1.1.0", 896 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", 897 + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", 898 + "license": "MIT", 899 + "engines": { 900 + "node": ">= 0.4" 901 + }, 902 + "funding": { 903 + "url": "https://github.com/sponsors/ljharb" 904 + } 905 + }, 906 + "node_modules/has-tostringtag": { 907 + "version": "1.0.2", 908 + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", 909 + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", 910 + "license": "MIT", 911 + "dependencies": { 912 + "has-symbols": "^1.0.3" 913 + }, 914 + "engines": { 915 + "node": ">= 0.4" 916 + }, 917 + "funding": { 918 + "url": "https://github.com/sponsors/ljharb" 919 + } 920 + }, 921 + "node_modules/hasown": { 922 + "version": "2.0.2", 923 + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 924 + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 925 + "license": "MIT", 926 + "dependencies": { 927 + "function-bind": "^1.1.2" 928 + }, 929 + "engines": { 930 + "node": ">= 0.4" 931 + } 932 + }, 933 + "node_modules/is-reference": { 934 + "version": "3.0.3", 935 + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", 936 + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", 937 + "license": "MIT", 938 + "peer": true, 939 + "dependencies": { 940 + "@types/estree": "^1.0.6" 941 + } 942 + }, 943 + "node_modules/laravel-precognition": { 944 + "version": "1.0.0", 945 + "resolved": "https://registry.npmjs.org/laravel-precognition/-/laravel-precognition-1.0.0.tgz", 946 + "integrity": "sha512-hvXPT7dayCQAidxnsY0hab9Q+Y2rsh7xRpH9uiFtXN8Dekc3tIZt+NrxrOZ9N5SwHBmRBze/Bv+ElfXac0kD6g==", 947 + "license": "MIT", 948 + "dependencies": { 949 + "axios": "^1.4.0", 950 + "lodash-es": "^4.17.21" 951 + } 952 + }, 953 + "node_modules/locate-character": { 954 + "version": "3.0.0", 955 + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 956 + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 957 + "license": "MIT", 958 + "peer": true 959 + }, 960 + "node_modules/lodash-es": { 961 + "version": "4.17.22", 962 + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz", 963 + "integrity": "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==", 964 + "license": "MIT" 965 + }, 966 + "node_modules/magic-string": { 967 + "version": "0.30.21", 968 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", 969 + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", 970 + "license": "MIT", 971 + "peer": true, 972 + "dependencies": { 973 + "@jridgewell/sourcemap-codec": "^1.5.5" 974 + } 975 + }, 976 + "node_modules/math-intrinsics": { 977 + "version": "1.1.0", 978 + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", 979 + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", 980 + "license": "MIT", 981 + "engines": { 982 + "node": ">= 0.4" 983 + } 984 + }, 985 + "node_modules/mime-db": { 986 + "version": "1.52.0", 987 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 988 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 989 + "license": "MIT", 990 + "engines": { 991 + "node": ">= 0.6" 992 + } 993 + }, 994 + "node_modules/mime-types": { 995 + "version": "2.1.35", 996 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 997 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 998 + "license": "MIT", 999 + "dependencies": { 1000 + "mime-db": "1.52.0" 1001 + }, 1002 + "engines": { 1003 + "node": ">= 0.6" 1004 + } 1005 + }, 1006 + "node_modules/object-inspect": { 1007 + "version": "1.13.4", 1008 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", 1009 + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", 1010 + "license": "MIT", 1011 + "engines": { 1012 + "node": ">= 0.4" 1013 + }, 1014 + "funding": { 1015 + "url": "https://github.com/sponsors/ljharb" 1016 + } 1017 + }, 1018 + "node_modules/proxy-from-env": { 1019 + "version": "1.1.0", 1020 + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1021 + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", 1022 + "license": "MIT" 1023 + }, 1024 + "node_modules/qs": { 1025 + "version": "6.14.1", 1026 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", 1027 + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", 1028 + "license": "BSD-3-Clause", 1029 + "dependencies": { 1030 + "side-channel": "^1.1.0" 1031 + }, 1032 + "engines": { 1033 + "node": ">=0.6" 1034 + }, 1035 + "funding": { 1036 + "url": "https://github.com/sponsors/ljharb" 1037 + } 1038 + }, 1039 + "node_modules/side-channel": { 1040 + "version": "1.1.0", 1041 + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", 1042 + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", 1043 + "license": "MIT", 1044 + "dependencies": { 1045 + "es-errors": "^1.3.0", 1046 + "object-inspect": "^1.13.3", 1047 + "side-channel-list": "^1.0.0", 1048 + "side-channel-map": "^1.0.1", 1049 + "side-channel-weakmap": "^1.0.2" 1050 + }, 1051 + "engines": { 1052 + "node": ">= 0.4" 1053 + }, 1054 + "funding": { 1055 + "url": "https://github.com/sponsors/ljharb" 1056 + } 1057 + }, 1058 + "node_modules/side-channel-list": { 1059 + "version": "1.0.0", 1060 + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", 1061 + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", 1062 + "license": "MIT", 1063 + "dependencies": { 1064 + "es-errors": "^1.3.0", 1065 + "object-inspect": "^1.13.3" 1066 + }, 1067 + "engines": { 1068 + "node": ">= 0.4" 1069 + }, 1070 + "funding": { 1071 + "url": "https://github.com/sponsors/ljharb" 1072 + } 1073 + }, 1074 + "node_modules/side-channel-map": { 1075 + "version": "1.0.1", 1076 + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", 1077 + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", 1078 + "license": "MIT", 1079 + "dependencies": { 1080 + "call-bound": "^1.0.2", 1081 + "es-errors": "^1.3.0", 1082 + "get-intrinsic": "^1.2.5", 1083 + "object-inspect": "^1.13.3" 1084 + }, 1085 + "engines": { 1086 + "node": ">= 0.4" 1087 + }, 1088 + "funding": { 1089 + "url": "https://github.com/sponsors/ljharb" 1090 + } 1091 + }, 1092 + "node_modules/side-channel-weakmap": { 1093 + "version": "1.0.2", 1094 + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", 1095 + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", 1096 + "license": "MIT", 1097 + "dependencies": { 1098 + "call-bound": "^1.0.2", 1099 + "es-errors": "^1.3.0", 1100 + "get-intrinsic": "^1.2.5", 1101 + "object-inspect": "^1.13.3", 1102 + "side-channel-map": "^1.0.1" 1103 + }, 1104 + "engines": { 1105 + "node": ">= 0.4" 1106 + }, 1107 + "funding": { 1108 + "url": "https://github.com/sponsors/ljharb" 1109 + } 1110 + }, 1111 + "node_modules/svelte": { 1112 + "version": "5.46.1", 1113 + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.46.1.tgz", 1114 + "integrity": "sha512-ynjfCHD3nP2el70kN5Pmg37sSi0EjOm9FgHYQdC4giWG/hzO3AatzXXJJgP305uIhGQxSufJLuYWtkY8uK/8RA==", 1115 + "license": "MIT", 1116 + "peer": true, 1117 + "dependencies": { 1118 + "@jridgewell/remapping": "^2.3.4", 1119 + "@jridgewell/sourcemap-codec": "^1.5.0", 1120 + "@sveltejs/acorn-typescript": "^1.0.5", 1121 + "@types/estree": "^1.0.5", 1122 + "acorn": "^8.12.1", 1123 + "aria-query": "^5.3.1", 1124 + "axobject-query": "^4.1.0", 1125 + "clsx": "^2.1.1", 1126 + "devalue": "^5.5.0", 1127 + "esm-env": "^1.2.1", 1128 + "esrap": "^2.2.1", 1129 + "is-reference": "^3.0.3", 1130 + "locate-character": "^3.0.0", 1131 + "magic-string": "^0.30.11", 1132 + "zimmerframe": "^1.1.2" 1133 + }, 1134 + "engines": { 1135 + "node": ">=18" 1136 + } 1137 + }, 1138 + "node_modules/svelte-preprocess": { 1139 + "version": "6.0.3", 1140 + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", 1141 + "integrity": "sha512-PLG2k05qHdhmRG7zR/dyo5qKvakhm8IJ+hD2eFRQmMLHp7X3eJnjeupUtvuRpbNiF31RjVw45W+abDwHEmP5OA==", 1142 + "hasInstallScript": true, 1143 + "license": "MIT", 1144 + "engines": { 1145 + "node": ">= 18.0.0" 1146 + }, 1147 + "peerDependencies": { 1148 + "@babel/core": "^7.10.2", 1149 + "coffeescript": "^2.5.1", 1150 + "less": "^3.11.3 || ^4.0.0", 1151 + "postcss": "^7 || ^8", 1152 + "postcss-load-config": ">=3", 1153 + "pug": "^3.0.0", 1154 + "sass": "^1.26.8", 1155 + "stylus": ">=0.55", 1156 + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", 1157 + "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", 1158 + "typescript": "^5.0.0" 1159 + }, 1160 + "peerDependenciesMeta": { 1161 + "@babel/core": { 1162 + "optional": true 1163 + }, 1164 + "coffeescript": { 1165 + "optional": true 1166 + }, 1167 + "less": { 1168 + "optional": true 1169 + }, 1170 + "postcss": { 1171 + "optional": true 1172 + }, 1173 + "postcss-load-config": { 1174 + "optional": true 1175 + }, 1176 + "pug": { 1177 + "optional": true 1178 + }, 1179 + "sass": { 1180 + "optional": true 1181 + }, 1182 + "stylus": { 1183 + "optional": true 1184 + }, 1185 + "sugarss": { 1186 + "optional": true 1187 + }, 1188 + "typescript": { 1189 + "optional": true 1190 + } 1191 + } 1192 + }, 1193 + "node_modules/undici-types": { 1194 + "version": "7.16.0", 1195 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", 1196 + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", 1197 + "dev": true, 1198 + "license": "MIT" 1199 + }, 1200 + "node_modules/zimmerframe": { 1201 + "version": "1.1.4", 1202 + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", 1203 + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", 1204 + "license": "MIT", 1205 + "peer": true 1206 + } 1207 + } 1208 + }
+12
web/package.json
··· 1 + { 2 + "devDependencies": { 3 + "@types/node": "^25.0.3", 4 + "esbuild": "0.27.2", 5 + "esbuild-svelte": "^0.9.4", 6 + "svelte-preprocess": "^6.0.3" 7 + }, 8 + "type": "module", 9 + "dependencies": { 10 + "@inertiajs/svelte": "^2.3.8" 11 + } 12 + }
+12
web/src/main.ts
··· 1 + import { createInertiaApp } from "@inertiajs/svelte"; 2 + import { mount } from "svelte"; 3 + 4 + createInertiaApp({ 5 + resolve: async (name) => { 6 + const page = await import(`../views/${name}.svelte`); 7 + return { default: page.default, layout: page.layout }; 8 + }, 9 + setup({ el, App, props }) { 10 + mount(App, { target: el, props }); 11 + }, 12 + });
+22
web/tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + "baseUrl": ".", 4 + "skipLibCheck": true, 5 + "noErrorTruncation": false, 6 + "verbatimModuleSyntax": true, 7 + "paths": { 8 + "$lib/*": ["./js/lib/*"], 9 + "$components/*": ["./components/*"], 10 + "$models/*": ["./js/models/*"], 11 + "$schemas/*": ["./js/schemas/*"], 12 + "$routes/*": ["./js/routes/*"], 13 + "$blacklab/*": ["./js/blacklab/*"], 14 + }, 15 + "module": "es2022", 16 + "target": "es2022", 17 + "isolatedModules": true, 18 + "lib": ["esnext", "DOM", "DOM.Iterable"], 19 + "moduleResolution": "node", 20 + }, 21 + "exclude": ["./node_modules/**"], 22 + }