wip
- commit
- 43337169d19d7b1090faed0c48b9ab5ffb28eb99
- author
- bamen · · 2025-06-02 15:05 UTC
- parent
- f30976a
- signature
- unsigned
1607 files · +178060 -7862
M .gitignore +7 -2
| @@ -1,9 +1,10 @@ | |||
| 1 | 1 | .env | |
| 2 | - | node_modules/ | |
| 2 | + | # Node.js/Bun specific (removed) | |
| 3 | + | # node_modules/ | |
| 3 | 4 | *tmp/ | |
| 4 | 5 | tmp/* | |
| 5 | 6 | config.yml | |
| 6 | - | bun.lockb | |
| 7 | + | # bun.lockb | |
| 7 | 8 | *.log | |
| 8 | 9 | *.txt | |
| 9 | 10 | *sync-conflict* | |
| @@ -16,3 +17,7 @@ setup.sh | |||
| 16 | 17 | sqlite.db | |
| 17 | 18 | .vscode/ | |
| 18 | 19 | admin-ui/ | |
| 20 | + | ||
| 21 | + | # Standalone Tailwind/DaisyUI | |
| 22 | + | tailwindcss | |
| 23 | + | daisyui.js | |
| @@ -1,9 +1,10 @@ | |||||
| 1 | .env | 1 | .env | ||
| 2 | - | node_modules/ | 2 | + | # Node.js/Bun specific (removed) |
| 3 | + | # node_modules/ | |||
| 3 | *tmp/ | 4 | *tmp/ | ||
| 4 | tmp/* | 5 | tmp/* | ||
| 5 | config.yml | 6 | config.yml | ||
| 6 | - | bun.lockb | 7 | + | # bun.lockb |
| 7 | *.log | 8 | *.log | ||
| 8 | *.txt | 9 | *.txt | ||
| 9 | *sync-conflict* | 10 | *sync-conflict* | ||
| @@ -16,3 +17,7 @@ setup.sh | |||||
| 16 | sqlite.db | 17 | sqlite.db | ||
| 17 | .vscode/ | 18 | .vscode/ | ||
| 18 | admin-ui/ | 19 | admin-ui/ | ||
| 20 | + | ||||
| 21 | + | # Standalone Tailwind/DaisyUI | |||
| 22 | + | tailwindcss | |||
| 23 | + | daisyui.js | |||
M .goreleaser.yaml +1 -1
| @@ -4,7 +4,7 @@ before: | |||
| 4 | 4 | hooks: | |
| 5 | 5 | - go mod tidy | |
| 6 | 6 | - templ generate | |
| 7 | - | - bun run build:css | |
| 7 | + | - tailwindcss -i internal/webui/public/assets/css/custom.css -o internal/webui/public/assets/css/tailwind.css | |
| 8 | 8 | ||
| 9 | 9 | release: | |
| 10 | 10 | draft: true | |
| @@ -4,7 +4,7 @@ before: | |||||
| 4 | hooks: | 4 | hooks: | ||
| 5 | - go mod tidy | 5 | - go mod tidy | ||
| 6 | - templ generate | 6 | - templ generate | ||
| 7 | - | - bun run build:css | 7 | + | - tailwindcss -i internal/webui/public/assets/css/custom.css -o internal/webui/public/assets/css/tailwind.css |
| 8 | 8 | ||||
| 9 | release: | 9 | release: | ||
| 10 | draft: true | 10 | draft: true | ||
M Makefile +1 -1
| @@ -38,7 +38,7 @@ build: build-css build-templ | |||
| 38 | 38 | # Build CSS with tailwindcss | |
| 39 | 39 | build-css: | |
| 40 | 40 | @echo "Building CSS with tailwindcss..." | |
| 41 | - | @bun run build:css | |
| 41 | + | @tailwindcss -i internal/webui/public/assets/css/custom.css -o internal/webui/public/assets/css/tailwind.css | |
| 42 | 42 | @echo "CSS built successfully" | |
| 43 | 43 | ||
| 44 | 44 | # Generate Go code from templ templates | |
| @@ -38,7 +38,7 @@ build: build-css build-templ | |||||
| 38 | # Build CSS with tailwindcss | 38 | # Build CSS with tailwindcss | ||
| 39 | build-css: | 39 | build-css: | ||
| 40 | @echo "Building CSS with tailwindcss..." | 40 | @echo "Building CSS with tailwindcss..." | ||
| 41 | - | @bun run build:css | 41 | + | @tailwindcss -i internal/webui/public/assets/css/custom.css -o internal/webui/public/assets/css/tailwind.css |
| 42 | @echo "CSS built successfully" | 42 | @echo "CSS built successfully" | ||
| 43 | 43 | ||||
| 44 | # Generate Go code from templ templates | 44 | # Generate Go code from templ templates | ||
M internal/httpserve/handlers/container_crud.go +34 -22
| @@ -1,8 +1,8 @@ | |||
| 1 | 1 | package handlers | |
| 2 | 2 | ||
| 3 | 3 | import ( | |
| 4 | + | "encoding/json" | |
| 4 | 5 | "fmt" | |
| 5 | - | "net/http" | |
| 6 | 6 | "strings" | |
| 7 | 7 | ||
| 8 | 8 | "github.com/bnema/gordon/internal/server" | |
| @@ -126,25 +126,6 @@ func CreateContainerFullGET(c echo.Context, a *server.App) error { | |||
| 126 | 126 | func CreateContainerPOST(c echo.Context, a *server.App) error { | |
| 127 | 127 | log.Debug("CreateContainerPOST handler called") | |
| 128 | 128 | ||
| 129 | - | // Retrieve the ShortID of the image from the URL | |
| 130 | - | ShortID := c.Param("ID") | |
| 131 | - | log.Debug("Received ShortID for container creation:", "ShortID", ShortID) | |
| 132 | - | ||
| 133 | - | // Convert the ShortID to a full image ID | |
| 134 | - | imageID, err := FromShortIDToImageID(ShortID) | |
| 135 | - | if err != nil { | |
| 136 | - | log.Error("Error converting ShortID to full image ID:", "error", err) | |
| 137 | - | return sendError(c, err) | |
| 138 | - | } | |
| 139 | - | log.Debug("Converted ShortID to full image ID:", "imageID", imageID) | |
| 140 | - | ||
| 141 | - | // Get the image info | |
| 142 | - | _, err = docker.GetImageInfo(imageID) | |
| 143 | - | if err != nil { | |
| 144 | - | log.Error("Error getting image info:", "error", err) | |
| 145 | - | return sendError(c, err) | |
| 146 | - | } | |
| 147 | - | ||
| 148 | 129 | // Retrieve all form parameters | |
| 149 | 130 | formParams, err := c.FormParams() | |
| 150 | 131 | if err != nil { | |
| @@ -165,6 +146,22 @@ func CreateContainerPOST(c echo.Context, a *server.App) error { | |||
| 165 | 146 | } | |
| 166 | 147 | } | |
| 167 | 148 | ||
| 149 | + | // Get the full image ID directly from the sanitized form inputs | |
| 150 | + | imageID, ok := sanitizedInputs["image_id"] | |
| 151 | + | if !ok || imageID == "" { | |
| 152 | + | log.Error("Full image ID not found in form submission") | |
| 153 | + | // You might want to return a more specific error message to the user here | |
| 154 | + | return sendError(c, fmt.Errorf("missing image ID in form submission")) | |
| 155 | + | } | |
| 156 | + | log.Debug("Retrieved full image ID from form:", "imageID", imageID) | |
| 157 | + | ||
| 158 | + | // Get the image info (Optional but good practice: verify the image ID still exists) | |
| 159 | + | _, err = docker.GetImageInfo(imageID) | |
| 160 | + | if err != nil { | |
| 161 | + | log.Error("Error getting image info:", "error", err) | |
| 162 | + | return sendError(c, err) | |
| 163 | + | } | |
| 164 | + | ||
| 168 | 165 | cmdParams, err := cmdparams.FromInputsToCmdParams(sanitizedInputs, a) | |
| 169 | 166 | if err != nil { | |
| 170 | 167 | return sendError(c, err) | |
| @@ -229,6 +226,21 @@ func CreateContainerPOST(c echo.Context, a *server.App) error { | |||
| 229 | 226 | log.Info("Skipping proxy setup as requested", "container_id", containerID, "container_name", containerName) | |
| 230 | 227 | } | |
| 231 | 228 | ||
| 232 | - | // Redirect to the container list page | |
| 233 | - | return c.Redirect(http.StatusSeeOther, fmt.Sprintf("%s/containers", a.Config.Admin.Path)) | |
| 229 | + | // Prepare success message payload | |
| 230 | + | successPayload := map[string]string{ | |
| 231 | + | "level": "success", | |
| 232 | + | "message": fmt.Sprintf("Container '%s' created successfully.", containerName), | |
| 233 | + | } | |
| 234 | + | jsonPayload, err := json.Marshal(successPayload) | |
| 235 | + | if err != nil { | |
| 236 | + | // Log the error, but proceed with redirect as container creation was likely successful | |
| 237 | + | log.Error("Failed to marshal success payload for HX-Trigger", "error", err) | |
| 238 | + | } else { | |
| 239 | + | c.Response().Header().Set("HX-Trigger", fmt.Sprintf(`{"showMessage": %s}`, string(jsonPayload))) | |
| 240 | + | } | |
| 241 | + | ||
| 242 | + | // Render a success message fragment instead of redirecting | |
| 243 | + | renderer := render.NewTemplRenderer(a) | |
| 244 | + | successMsg := fmt.Sprintf("Container '%s' created successfully.", containerName) | |
| 245 | + | return renderer.RenderTempl(c, templcomponents.Success(successMsg)) // Use the correct Success component | |
| 234 | 246 | } | |
| @@ -1,8 +1,8 @@ | |||||
| 1 | package handlers | 1 | package handlers | ||
| 2 | 2 | ||||
| 3 | import ( | 3 | import ( | ||
| 4 | + | "encoding/json" | |||
| 4 | "fmt" | 5 | "fmt" | ||
| 5 | - | "net/http" | |||
| 6 | "strings" | 6 | "strings" | ||
| 7 | 7 | ||||
| 8 | "github.com/bnema/gordon/internal/server" | 8 | "github.com/bnema/gordon/internal/server" | ||
| @@ -126,25 +126,6 @@ func CreateContainerFullGET(c echo.Context, a *server.App) error { | |||||
| 126 | func CreateContainerPOST(c echo.Context, a *server.App) error { | 126 | func CreateContainerPOST(c echo.Context, a *server.App) error { | ||
| 127 | log.Debug("CreateContainerPOST handler called") | 127 | log.Debug("CreateContainerPOST handler called") | ||
| 128 | 128 | ||||
| 129 | - | // Retrieve the ShortID of the image from the URL | |||
| 130 | - | ShortID := c.Param("ID") | |||
| 131 | - | log.Debug("Received ShortID for container creation:", "ShortID", ShortID) | |||
| 132 | - | ||||
| 133 | - | // Convert the ShortID to a full image ID | |||
| 134 | - | imageID, err := FromShortIDToImageID(ShortID) | |||
| 135 | - | if err != nil { | |||
| 136 | - | log.Error("Error converting ShortID to full image ID:", "error", err) | |||
| 137 | - | return sendError(c, err) | |||
| 138 | - | } | |||
| 139 | - | log.Debug("Converted ShortID to full image ID:", "imageID", imageID) | |||
| 140 | - | ||||
| 141 | - | // Get the image info | |||
| 142 | - | _, err = docker.GetImageInfo(imageID) | |||
| 143 | - | if err != nil { | |||
| 144 | - | log.Error("Error getting image info:", "error", err) | |||
| 145 | - | return sendError(c, err) | |||
| 146 | - | } | |||
| 147 | - | ||||
| 148 | // Retrieve all form parameters | 129 | // Retrieve all form parameters | ||
| 149 | formParams, err := c.FormParams() | 130 | formParams, err := c.FormParams() | ||
| 150 | if err != nil { | 131 | if err != nil { | ||
| @@ -165,6 +146,22 @@ func CreateContainerPOST(c echo.Context, a *server.App) error { | |||||
| 165 | } | 146 | } | ||
| 166 | } | 147 | } | ||
| 167 | 148 | ||||
| 149 | + | // Get the full image ID directly from the sanitized form inputs | |||
| 150 | + | imageID, ok := sanitizedInputs["image_id"] | |||
| 151 | + | if !ok || imageID == "" { | |||
| 152 | + | log.Error("Full image ID not found in form submission") | |||
| 153 | + | // You might want to return a more specific error message to the user here | |||
| 154 | + | return sendError(c, fmt.Errorf("missing image ID in form submission")) | |||
| 155 | + | } | |||
| 156 | + | log.Debug("Retrieved full image ID from form:", "imageID", imageID) | |||
| 157 | + | ||||
| 158 | + | // Get the image info (Optional but good practice: verify the image ID still exists) | |||
| 159 | + | _, err = docker.GetImageInfo(imageID) | |||
| 160 | + | if err != nil { | |||
| 161 | + | log.Error("Error getting image info:", "error", err) | |||
| 162 | + | return sendError(c, err) | |||
| 163 | + | } | |||
| 164 | + | ||||
| 168 | cmdParams, err := cmdparams.FromInputsToCmdParams(sanitizedInputs, a) | 165 | cmdParams, err := cmdparams.FromInputsToCmdParams(sanitizedInputs, a) | ||
| 169 | if err != nil { | 166 | if err != nil { | ||
| 170 | return sendError(c, err) | 167 | return sendError(c, err) | ||
| @@ -229,6 +226,21 @@ func CreateContainerPOST(c echo.Context, a *server.App) error { | |||||
| 229 | log.Info("Skipping proxy setup as requested", "container_id", containerID, "container_name", containerName) | 226 | log.Info("Skipping proxy setup as requested", "container_id", containerID, "container_name", containerName) | ||
| 230 | } | 227 | } | ||
| 231 | 228 | ||||
| 232 | - | // Redirect to the container list page | 229 | + | // Prepare success message payload |
| 233 | - | return c.Redirect(http.StatusSeeOther, fmt.Sprintf("%s/containers", a.Config.Admin.Path)) | 230 | + | successPayload := map[string]string{ |
| 231 | + | "level": "success", | |||
| 232 | + | "message": fmt.Sprintf("Container '%s' created successfully.", containerName), | |||
| 233 | + | } | |||
| 234 | + | jsonPayload, err := json.Marshal(successPayload) | |||
| 235 | + | if err != nil { | |||
| 236 | + | // Log the error, but proceed with redirect as container creation was likely successful | |||
| 237 | + | log.Error("Failed to marshal success payload for HX-Trigger", "error", err) | |||
| 238 | + | } else { | |||
| 239 | + | c.Response().Header().Set("HX-Trigger", fmt.Sprintf(`{"showMessage": %s}`, string(jsonPayload))) | |||
| 240 | + | } | |||
| 241 | + | ||||
| 242 | + | // Render a success message fragment instead of redirecting | |||
| 243 | + | renderer := render.NewTemplRenderer(a) | |||
| 244 | + | successMsg := fmt.Sprintf("Container '%s' created successfully.", containerName) | |||
| 245 | + | return renderer.RenderTempl(c, templcomponents.Success(successMsg)) // Use the correct Success component | |||
| 234 | } | 246 | } | ||
M internal/httpserve/handlers/container_management.go +101 -5
| @@ -224,12 +224,108 @@ func ImageManagerPrune(c echo.Context, a *server.App) error { | |||
| 224 | 224 | lastPruneResult.mutex.Unlock() | |
| 225 | 225 | }() | |
| 226 | 226 | ||
| 227 | - | // Immediately return 202 Accepted to the client | |
| 228 | - | c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML) // Set appropriate content type if needed for HTMX | |
| 227 | + | // Immediately return a placeholder that initiates polling | |
| 228 | + | // Note: We need to modify imagelist.templ to handle this response properly | |
| 229 | + | // For now, just return 202 Accepted and indicate work started. | |
| 230 | + | // The actual polling trigger will be added in the template. | |
| 229 | 231 | c.Response().WriteHeader(http.StatusAccepted) | |
| 230 | - | // Optionally, return a message or updated component indicating the process has started | |
| 231 | - | // For now, just return a simple message in the response body | |
| 232 | - | return c.String(http.StatusAccepted, "Image pruning started in the background.") | |
| 232 | + | // We'll return a small snippet that the template swap can use | |
| 233 | + | // This snippet should include the polling mechanism itself. | |
| 234 | + | // Example (needs refinement in the template): | |
| 235 | + | return c.HTML(http.StatusAccepted, `<div id="prune-status-poller" hx-get="/htmx/image-manager/prune-status" hx-trigger="load, every 3s" hx-target="#prune-status-poller" hx-swap="outerHTML">Pruning images in background... Checking status.</div>`) | |
| 236 | + | } | |
| 237 | + | ||
| 238 | + | // ImageManagerPruneStatus checks the status of a background prune operation | |
| 239 | + | func ImageManagerPruneStatus(c echo.Context, a *server.App) error { | |
| 240 | + | lastPruneResult.mutex.Lock() | |
| 241 | + | defer lastPruneResult.mutex.Unlock() | |
| 242 | + | ||
| 243 | + | // If prune is not done, return an empty response or keep the poller active | |
| 244 | + | if !lastPruneResult.Done { | |
| 245 | + | // Returning 204 No Content will stop polling if using hx-swap="none" | |
| 246 | + | // However, our poller replaces itself, so we just return the same polling div | |
| 247 | + | // or an updated status message within it. | |
| 248 | + | // Let's keep the existing poller HTML but maybe update the text slightly. | |
| 249 | + | return c.HTML(http.StatusOK, `<div id="prune-status-poller" hx-get="/htmx/image-manager/prune-status" hx-trigger="every 3s" hx-target="#prune-status-poller" hx-swap="outerHTML">Still pruning... Checking status.</div>`) | |
| 250 | + | } | |
| 251 | + | ||
| 252 | + | // Prune is done, prepare the final response | |
| 253 | + | logger.Info("Prune complete, preparing final response for poller.") | |
| 254 | + | ||
| 255 | + | // Prepare JSON payload for HX-Trigger toast message | |
| 256 | + | var level string | |
| 257 | + | if lastPruneResult.Success { | |
| 258 | + | level = "success" | |
| 259 | + | } else { | |
| 260 | + | level = "error" | |
| 261 | + | } | |
| 262 | + | payload := map[string]string{"level": level, "message": lastPruneResult.Message} | |
| 263 | + | jsonPayload, marshalErr := json.Marshal(payload) | |
| 264 | + | if marshalErr != nil { | |
| 265 | + | logger.Error("Failed to marshal prune result payload for poller", "error", marshalErr) | |
| 266 | + | // Handle marshalling error - maybe return an error component | |
| 267 | + | } else { | |
| 268 | + | c.Response().Header().Set("HX-Trigger", fmt.Sprintf(`{"showMessage": %s}`, string(jsonPayload))) | |
| 269 | + | } | |
| 270 | + | ||
| 271 | + | // Reset the flag *after* preparing the response | |
| 272 | + | lastPruneResult.Done = false | |
| 273 | + | message := lastPruneResult.Message // Store message before resetting if needed | |
| 274 | + | success := lastPruneResult.Success | |
| 275 | + | // Reset message/success if needed, or maybe they are only relevant for the toast | |
| 276 | + | // lastPruneResult.Message = "" | |
| 277 | + | // lastPruneResult.Success = false | |
| 278 | + | ||
| 279 | + | // Fetch the updated image list (copy logic from ImageManagerComponent) | |
| 280 | + | images, listErr := docker.ListContainerImages() | |
| 281 | + | if listErr != nil { | |
| 282 | + | logger.Error("Failed to list images after prune for poller", "error", listErr) | |
| 283 | + | // Return an error FRAGMENT instead of a full page. | |
| 284 | + | // HX-Trigger for the prune status itself was already set. | |
| 285 | + | pruneStatusMsg := "Prune finished but failed to refresh list." | |
| 286 | + | if !success { // Add prune status detail if it also failed | |
| 287 | + | pruneStatusMsg = fmt.Sprintf("Prune status: %s. Failed to refresh list.", message) | |
| 288 | + | } | |
| 289 | + | return c.HTML(http.StatusOK, fmt.Sprintf("<div class='alert alert-error'>%s Error: %v. Please refresh manually.</div>", pruneStatusMsg, listErr)) | |
| 290 | + | } | |
| 291 | + | ||
| 292 | + | var humanReadableImages []components.HumanReadableImage | |
| 293 | + | for _, img := range images { | |
| 294 | + | shortID := img.ID[7:19] | |
| 295 | + | safelyInteractWithIDMap(Update, shortID, img.ID) | |
| 296 | + | createdStr := humanize.TimeAgo(time.Unix(img.Created, 0)) | |
| 297 | + | sizeStr := humanize.BytesToReadableSize(img.Size) | |
| 298 | + | var repository, tag string | |
| 299 | + | repoTag := "<none>:<none>" | |
| 300 | + | if len(img.RepoTags) > 0 { | |
| 301 | + | repoTag = img.RepoTags[0] | |
| 302 | + | parts := strings.Split(repoTag, ":") | |
| 303 | + | if len(parts) == 2 { | |
| 304 | + | repository = parts[0] | |
| 305 | + | tag = parts[1] | |
| 306 | + | } else { | |
| 307 | + | repository = repoTag | |
| 308 | + | tag = "latest" | |
| 309 | + | } | |
| 310 | + | } | |
| 311 | + | humanReadableImages = append(humanReadableImages, components.HumanReadableImage{ | |
| 312 | + | ID: img.ID, | |
| 313 | + | ShortID: shortID, | |
| 314 | + | Created: createdStr, | |
| 315 | + | Size: sizeStr, | |
| 316 | + | Name: repoTag, | |
| 317 | + | RepoDigests: img.RepoDigests, | |
| 318 | + | RepoTags: img.RepoTags, | |
| 319 | + | Repository: repository, | |
| 320 | + | Tag: tag, | |
| 321 | + | }) | |
| 322 | + | } | |
| 323 | + | ||
| 324 | + | // Render the final ImageList component to replace the poller | |
| 325 | + | renderer := render.NewTemplRenderer(a) | |
| 326 | + | component := components.ImageList(humanReadableImages) | |
| 327 | + | logger.Debug("Rendering final ImageList for poller") | |
| 328 | + | return renderer.RenderTempl(c, component) | |
| 233 | 329 | } | |
| 234 | 330 | ||
| 235 | 331 | // ContainerManagerComponent handles the /container-manager route | |
| @@ -224,12 +224,108 @@ func ImageManagerPrune(c echo.Context, a *server.App) error { | |||||
| 224 | lastPruneResult.mutex.Unlock() | 224 | lastPruneResult.mutex.Unlock() | ||
| 225 | }() | 225 | }() | ||
| 226 | 226 | ||||
| 227 | - | // Immediately return 202 Accepted to the client | 227 | + | // Immediately return a placeholder that initiates polling |
| 228 | - | c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML) // Set appropriate content type if needed for HTMX | 228 | + | // Note: We need to modify imagelist.templ to handle this response properly |
| 229 | + | // For now, just return 202 Accepted and indicate work started. | |||
| 230 | + | // The actual polling trigger will be added in the template. | |||
| 229 | c.Response().WriteHeader(http.StatusAccepted) | 231 | c.Response().WriteHeader(http.StatusAccepted) | ||
| 230 | - | // Optionally, return a message or updated component indicating the process has started | 232 | + | // We'll return a small snippet that the template swap can use |
| 231 | - | // For now, just return a simple message in the response body | 233 | + | // This snippet should include the polling mechanism itself. |
| 232 | - | return c.String(http.StatusAccepted, "Image pruning started in the background.") | 234 | + | // Example (needs refinement in the template): |
| 235 | + | return c.HTML(http.StatusAccepted, `<div id="prune-status-poller" hx-get="/htmx/image-manager/prune-status" hx-trigger="load, every 3s" hx-target="#prune-status-poller" hx-swap="outerHTML">Pruning images in background... Checking status.</div>`) | |||
| 236 | + | } | |||
| 237 | + | ||||
| 238 | + | // ImageManagerPruneStatus checks the status of a background prune operation | |||
| 239 | + | func ImageManagerPruneStatus(c echo.Context, a *server.App) error { | |||
| 240 | + | lastPruneResult.mutex.Lock() | |||
| 241 | + | defer lastPruneResult.mutex.Unlock() | |||
| 242 | + | ||||
| 243 | + | // If prune is not done, return an empty response or keep the poller active | |||
| 244 | + | if !lastPruneResult.Done { | |||
| 245 | + | // Returning 204 No Content will stop polling if using hx-swap="none" | |||
| 246 | + | // However, our poller replaces itself, so we just return the same polling div | |||
| 247 | + | // or an updated status message within it. | |||
| 248 | + | // Let's keep the existing poller HTML but maybe update the text slightly. | |||
| 249 | + | return c.HTML(http.StatusOK, `<div id="prune-status-poller" hx-get="/htmx/image-manager/prune-status" hx-trigger="every 3s" hx-target="#prune-status-poller" hx-swap="outerHTML">Still pruning... Checking status.</div>`) | |||
| 250 | + | } | |||
| 251 | + | ||||
| 252 | + | // Prune is done, prepare the final response | |||
| 253 | + | logger.Info("Prune complete, preparing final response for poller.") | |||
| 254 | + | ||||
| 255 | + | // Prepare JSON payload for HX-Trigger toast message | |||
| 256 | + | var level string | |||
| 257 | + | if lastPruneResult.Success { | |||
| 258 | + | level = "success" | |||
| 259 | + | } else { | |||
| 260 | + | level = "error" | |||
| 261 | + | } | |||
| 262 | + | payload := map[string]string{"level": level, "message": lastPruneResult.Message} | |||
| 263 | + | jsonPayload, marshalErr := json.Marshal(payload) | |||
| 264 | + | if marshalErr != nil { | |||
| 265 | + | logger.Error("Failed to marshal prune result payload for poller", "error", marshalErr) | |||
| 266 | + | // Handle marshalling error - maybe return an error component | |||
| 267 | + | } else { | |||
| 268 | + | c.Response().Header().Set("HX-Trigger", fmt.Sprintf(`{"showMessage": %s}`, string(jsonPayload))) | |||
| 269 | + | } | |||
| 270 | + | ||||
| 271 | + | // Reset the flag *after* preparing the response | |||
| 272 | + | lastPruneResult.Done = false | |||
| 273 | + | message := lastPruneResult.Message // Store message before resetting if needed | |||
| 274 | + | success := lastPruneResult.Success | |||
| 275 | + | // Reset message/success if needed, or maybe they are only relevant for the toast | |||
| 276 | + | // lastPruneResult.Message = "" | |||
| 277 | + | // lastPruneResult.Success = false | |||
| 278 | + | ||||
| 279 | + | // Fetch the updated image list (copy logic from ImageManagerComponent) | |||
| 280 | + | images, listErr := docker.ListContainerImages() | |||
| 281 | + | if listErr != nil { | |||
| 282 | + | logger.Error("Failed to list images after prune for poller", "error", listErr) | |||
| 283 | + | // Return an error FRAGMENT instead of a full page. | |||
| 284 | + | // HX-Trigger for the prune status itself was already set. | |||
| 285 | + | pruneStatusMsg := "Prune finished but failed to refresh list." | |||
| 286 | + | if !success { // Add prune status detail if it also failed | |||
| 287 | + | pruneStatusMsg = fmt.Sprintf("Prune status: %s. Failed to refresh list.", message) | |||
| 288 | + | } | |||
| 289 | + | return c.HTML(http.StatusOK, fmt.Sprintf("<div class='alert alert-error'>%s Error: %v. Please refresh manually.</div>", pruneStatusMsg, listErr)) | |||
| 290 | + | } | |||
| 291 | + | ||||
| 292 | + | var humanReadableImages []components.HumanReadableImage | |||
| 293 | + | for _, img := range images { | |||
| 294 | + | shortID := img.ID[7:19] | |||
| 295 | + | safelyInteractWithIDMap(Update, shortID, img.ID) | |||
| 296 | + | createdStr := humanize.TimeAgo(time.Unix(img.Created, 0)) | |||
| 297 | + | sizeStr := humanize.BytesToReadableSize(img.Size) | |||
| 298 | + | var repository, tag string | |||
| 299 | + | repoTag := "<none>:<none>" | |||
| 300 | + | if len(img.RepoTags) > 0 { | |||
| 301 | + | repoTag = img.RepoTags[0] | |||
| 302 | + | parts := strings.Split(repoTag, ":") | |||
| 303 | + | if len(parts) == 2 { | |||
| 304 | + | repository = parts[0] | |||
| 305 | + | tag = parts[1] | |||
| 306 | + | } else { | |||
| 307 | + | repository = repoTag | |||
| 308 | + | tag = "latest" | |||
| 309 | + | } | |||
| 310 | + | } | |||
| 311 | + | humanReadableImages = append(humanReadableImages, components.HumanReadableImage{ | |||
| 312 | + | ID: img.ID, | |||
| 313 | + | ShortID: shortID, | |||
| 314 | + | Created: createdStr, | |||
| 315 | + | Size: sizeStr, | |||
| 316 | + | Name: repoTag, | |||
| 317 | + | RepoDigests: img.RepoDigests, | |||
| 318 | + | RepoTags: img.RepoTags, | |||
| 319 | + | Repository: repository, | |||
| 320 | + | Tag: tag, | |||
| 321 | + | }) | |||
| 322 | + | } | |||
| 323 | + | ||||
| 324 | + | // Render the final ImageList component to replace the poller | |||
| 325 | + | renderer := render.NewTemplRenderer(a) | |||
| 326 | + | component := components.ImageList(humanReadableImages) | |||
| 327 | + | logger.Debug("Rendering final ImageList for poller") | |||
| 328 | + | return renderer.RenderTempl(c, component) | |||
| 233 | } | 329 | } | ||
| 234 | 330 | ||||
| 235 | // ContainerManagerComponent handles the /container-manager route | 331 | // ContainerManagerComponent handles the /container-manager route | ||
M internal/httpserve/handlers/container_transactions.go +9 -0
| @@ -24,6 +24,15 @@ func generateOrderedYAML(infoMap map[string]interface{}) (string, error) { | |||
| 24 | 24 | continue | |
| 25 | 25 | } | |
| 26 | 26 | ||
| 27 | + | // Special handling for empty Ports and Volumes maps | |
| 28 | + | if key == "Ports" || key == "Volumes" { | |
| 29 | + | if mapVal, ok := value.(map[string]string); ok && len(mapVal) == 0 { | |
| 30 | + | yamlString += key + ": []\n" // Output as empty list instead of map | |
| 31 | + | continue // Skip normal marshalling for this key | |
| 32 | + | } | |
| 33 | + | } | |
| 34 | + | ||
| 35 | + | // Default marshalling for other keys or non-empty maps | |
| 27 | 36 | yamlBytes, err := yaml.Marshal(map[string]interface{}{key: value}) | |
| 28 | 37 | if err != nil { | |
| 29 | 38 | return "", err | |
| @@ -24,6 +24,15 @@ func generateOrderedYAML(infoMap map[string]interface{}) (string, error) { | |||||
| 24 | continue | 24 | continue | ||
| 25 | } | 25 | } | ||
| 26 | 26 | ||||
| 27 | + | // Special handling for empty Ports and Volumes maps | |||
| 28 | + | if key == "Ports" || key == "Volumes" { | |||
| 29 | + | if mapVal, ok := value.(map[string]string); ok && len(mapVal) == 0 { | |||
| 30 | + | yamlString += key + ": []\n" // Output as empty list instead of map | |||
| 31 | + | continue // Skip normal marshalling for this key | |||
| 32 | + | } | |||
| 33 | + | } | |||
| 34 | + | ||||
| 35 | + | // Default marshalling for other keys or non-empty maps | |||
| 27 | yamlBytes, err := yaml.Marshal(map[string]interface{}{key: value}) | 36 | yamlBytes, err := yaml.Marshal(map[string]interface{}{key: value}) | ||
| 28 | if err != nil { | 37 | if err != nil { | ||
| 29 | return "", err | 38 | return "", err | ||
M internal/httpserve/handlers/login.go +4 -4
| @@ -81,12 +81,12 @@ func StartOAuthGithub(c echo.Context, a *server.App) error { | |||
| 81 | 81 | return fmt.Errorf("could not extend session expiration: %w", err) | |
| 82 | 82 | } | |
| 83 | 83 | ||
| 84 | - | // Explicitly mark the session as online since we've validated it | |
| 85 | - | logger.Info("Marking existing session as online", "sessionID", sessionID) | |
| 84 | + | // Explicitly mark the session as active since we've validated it | |
| 85 | + | logger.Info("Marking existing session as active", "sessionID", sessionID) | |
| 86 | 86 | err = queries.MarkSessionActive(a.DB, sessionID) | |
| 87 | 87 | if err != nil { | |
| 88 | - | logger.Error("Failed to mark session as online", "error", err, "sessionID", sessionID) | |
| 89 | - | return fmt.Errorf("failed to mark session online: %w", err) | |
| 88 | + | logger.Error("Failed to mark session as active", "error", err, "sessionID", sessionID) | |
| 89 | + | return fmt.Errorf("failed to mark session active: %w", err) | |
| 90 | 90 | } | |
| 91 | 91 | ||
| 92 | 92 | logger.Info("Session is valid and extended. Redirecting to admin panel") | |
| @@ -81,12 +81,12 @@ func StartOAuthGithub(c echo.Context, a *server.App) error { | |||||
| 81 | return fmt.Errorf("could not extend session expiration: %w", err) | 81 | return fmt.Errorf("could not extend session expiration: %w", err) | ||
| 82 | } | 82 | } | ||
| 83 | 83 | ||||
| 84 | - | // Explicitly mark the session as online since we've validated it | 84 | + | // Explicitly mark the session as active since we've validated it |
| 85 | - | logger.Info("Marking existing session as online", "sessionID", sessionID) | 85 | + | logger.Info("Marking existing session as active", "sessionID", sessionID) |
| 86 | err = queries.MarkSessionActive(a.DB, sessionID) | 86 | err = queries.MarkSessionActive(a.DB, sessionID) | ||
| 87 | if err != nil { | 87 | if err != nil { | ||
| 88 | - | logger.Error("Failed to mark session as online", "error", err, "sessionID", sessionID) | 88 | + | logger.Error("Failed to mark session as active", "error", err, "sessionID", sessionID) |
| 89 | - | return fmt.Errorf("failed to mark session online: %w", err) | 89 | + | return fmt.Errorf("failed to mark session active: %w", err) |
| 90 | } | 90 | } | ||
| 91 | 91 | ||||
| 92 | logger.Info("Session is valid and extended. Redirecting to admin panel") | 92 | logger.Info("Session is valid and extended. Redirecting to admin panel") | ||
M internal/proxy/core.go +6 -0
| @@ -218,6 +218,12 @@ func (p *Proxy) Close() { | |||
| 218 | 218 | ||
| 219 | 219 | // requestDomainCertificate requests a certificate for a domain | |
| 220 | 220 | func (p *Proxy) requestDomainCertificate(domainName string) error { | |
| 221 | + | // If certificate acquisition is globally skipped, do nothing. | |
| 222 | + | if p.config.SkipCertificates { | |
| 223 | + | logger.Debug("Skipping certificate request because SkipCertificates is true", "domain", domainName) | |
| 224 | + | return nil | |
| 225 | + | } | |
| 226 | + | ||
| 221 | 227 | logger.Debug("Requesting certificate for domain", "domain", domainName) | |
| 222 | 228 | ||
| 223 | 229 | // Check if we're already processing this domain | |
| @@ -218,6 +218,12 @@ func (p *Proxy) Close() { | |||||
| 218 | 218 | ||||
| 219 | // requestDomainCertificate requests a certificate for a domain | 219 | // requestDomainCertificate requests a certificate for a domain | ||
| 220 | func (p *Proxy) requestDomainCertificate(domainName string) error { | 220 | func (p *Proxy) requestDomainCertificate(domainName string) error { | ||
| 221 | + | // If certificate acquisition is globally skipped, do nothing. | |||
| 222 | + | if p.config.SkipCertificates { | |||
| 223 | + | logger.Debug("Skipping certificate request because SkipCertificates is true", "domain", domainName) | |||
| 224 | + | return nil | |||
| 225 | + | } | |||
| 226 | + | ||||
| 221 | logger.Debug("Requesting certificate for domain", "domain", domainName) | 227 | logger.Debug("Requesting certificate for domain", "domain", domainName) | ||
| 222 | 228 | ||||
| 223 | // Check if we're already processing this domain | 229 | // Check if we're already processing this domain | ||
M internal/proxy/middleware.go +15 -16
| @@ -1,7 +1,6 @@ | |||
| 1 | 1 | package proxy | |
| 2 | 2 | ||
| 3 | 3 | import ( | |
| 4 | - | "fmt" | |
| 5 | 4 | "net" | |
| 6 | 5 | "net/http" | |
| 7 | 6 | "strings" | |
| @@ -114,7 +113,7 @@ func (p *Proxy) setupMiddleware() { | |||
| 114 | 113 | } | |
| 115 | 114 | ||
| 116 | 115 | // Add middleware to log incoming headers (for debugging Cloudflare detection) | |
| 117 | - | p.httpsServer.Use(logHeadersMiddleware()) | |
| 116 | + | // p.httpsServer.Use(logHeadersMiddleware()) | |
| 118 | 117 | ||
| 119 | 118 | // --- Rate Limiting Setup (Domain Only Now) --- | |
| 120 | 119 | if p.config.EnableRateLimit { | |
| @@ -250,17 +249,17 @@ func (p *Proxy) createRequestIDMiddleware() echo.MiddlewareFunc { | |||
| 250 | 249 | } | |
| 251 | 250 | ||
| 252 | 251 | // logHeadersMiddleware creates a middleware function to log request headers | |
| 253 | - | func logHeadersMiddleware() echo.MiddlewareFunc { | |
| 254 | - | return func(next echo.HandlerFunc) echo.HandlerFunc { | |
| 255 | - | return func(c echo.Context) error { | |
| 256 | - | // Log all headers at DEBUG level | |
| 257 | - | headerStrings := []string{} | |
| 258 | - | for k, v := range c.Request().Header { | |
| 259 | - | headerStrings = append(headerStrings, fmt.Sprintf("%s: %s", k, strings.Join(v, ","))) | |
| 260 | - | } | |
| 261 | - | logger.Debug("Incoming Request Headers", "request_id", c.Get(RequestIDKey), "headers", strings.Join(headerStrings, " | ")) | |
| 262 | - | ||
| 263 | - | return next(c) | |
| 264 | - | } | |
| 265 | - | } | |
| 266 | - | } | |
| 252 | + | // func logHeadersMiddleware() echo.MiddlewareFunc { | |
| 253 | + | // return func(next echo.HandlerFunc) echo.HandlerFunc { | |
| 254 | + | // return func(c echo.Context) error { | |
| 255 | + | // // Log all headers at DEBUG level | |
| 256 | + | // headerStrings := []string{} | |
| 257 | + | // for k, v := range c.Request().Header { | |
| 258 | + | // headerStrings = append(headerStrings, fmt.Sprintf("%s: %s", k, strings.Join(v, ","))) | |
| 259 | + | // } | |
| 260 | + | // logger.Debug("Incoming Request Headers", "request_id", c.Get(RequestIDKey), "headers", strings.Join(headerStrings, " | ")) | |
| 261 | + | ||
| 262 | + | // return next(c) | |
| 263 | + | // } | |
| 264 | + | // } | |
| 265 | + | // } | |
| @@ -1,7 +1,6 @@ | |||||
| 1 | package proxy | 1 | package proxy | ||
| 2 | 2 | ||||
| 3 | import ( | 3 | import ( | ||
| 4 | - | "fmt" | |||
| 5 | "net" | 4 | "net" | ||
| 6 | "net/http" | 5 | "net/http" | ||
| 7 | "strings" | 6 | "strings" | ||
| @@ -114,7 +113,7 @@ func (p *Proxy) setupMiddleware() { | |||||
| 114 | } | 113 | } | ||
| 115 | 114 | ||||
| 116 | // Add middleware to log incoming headers (for debugging Cloudflare detection) | 115 | // Add middleware to log incoming headers (for debugging Cloudflare detection) | ||
| 117 | - | p.httpsServer.Use(logHeadersMiddleware()) | 116 | + | // p.httpsServer.Use(logHeadersMiddleware()) |
| 118 | 117 | ||||
| 119 | // --- Rate Limiting Setup (Domain Only Now) --- | 118 | // --- Rate Limiting Setup (Domain Only Now) --- | ||
| 120 | if p.config.EnableRateLimit { | 119 | if p.config.EnableRateLimit { | ||
| @@ -250,17 +249,17 @@ func (p *Proxy) createRequestIDMiddleware() echo.MiddlewareFunc { | |||||
| 250 | } | 249 | } | ||
| 251 | 250 | ||||
| 252 | // logHeadersMiddleware creates a middleware function to log request headers | 251 | // logHeadersMiddleware creates a middleware function to log request headers | ||
| 253 | - | func logHeadersMiddleware() echo.MiddlewareFunc { | 252 | + | // func logHeadersMiddleware() echo.MiddlewareFunc { |
| 254 | - | return func(next echo.HandlerFunc) echo.HandlerFunc { | 253 | + | // return func(next echo.HandlerFunc) echo.HandlerFunc { |
| 255 | - | return func(c echo.Context) error { | 254 | + | // return func(c echo.Context) error { |
| 256 | - | // Log all headers at DEBUG level | 255 | + | // // Log all headers at DEBUG level |
| 257 | - | headerStrings := []string{} | 256 | + | // headerStrings := []string{} |
| 258 | - | for k, v := range c.Request().Header { | 257 | + | // for k, v := range c.Request().Header { |
| 259 | - | headerStrings = append(headerStrings, fmt.Sprintf("%s: %s", k, strings.Join(v, ","))) | 258 | + | // headerStrings = append(headerStrings, fmt.Sprintf("%s: %s", k, strings.Join(v, ","))) |
| 260 | - | } | 259 | + | // } |
| 261 | - | logger.Debug("Incoming Request Headers", "request_id", c.Get(RequestIDKey), "headers", strings.Join(headerStrings, " | ")) | 260 | + | // logger.Debug("Incoming Request Headers", "request_id", c.Get(RequestIDKey), "headers", strings.Join(headerStrings, " | ")) |
| 262 | - | 261 | + | ||
| 263 | - | return next(c) | 262 | + | // return next(c) |
| 264 | - | } | 263 | + | // } |
| 265 | - | } | 264 | + | // } |
| 266 | - | } | 265 | + | // } |
M internal/proxy/routes.go +38 -4
| @@ -1196,19 +1196,53 @@ func (p *Proxy) StartContainerEventListener() error { | |||
| 1196 | 1196 | } else { | |
| 1197 | 1197 | // Even if IP is the same, make sure the route is active | |
| 1198 | 1198 | if !route.Active { | |
| 1199 | - | logger.Info("Reactivating route for restarted container", | |
| 1199 | + | logger.Info("Attempting to reactivate route for restarted container", | |
| 1200 | 1200 | "container_id", containerID, | |
| 1201 | 1201 | "container_name", containerName, | |
| 1202 | 1202 | "domain", domain) | |
| 1203 | 1203 | ||
| 1204 | - | // Just reuse ForceUpdateRouteIP with the same IP to activate the route | |
| 1205 | - | p.ForceUpdateRouteIP(domain, containerIP) | |
| 1204 | + | // --- Add Health Check Before Activation --- | |
| 1205 | + | target := net.JoinHostPort(containerIP, route.ContainerPort) | |
| 1206 | + | maxRetries := 5 | |
| 1207 | + | retryDelay := 2 * time.Second | |
| 1208 | + | healthy := false | |
| 1209 | + | for i := 0; i < maxRetries; i++ { | |
| 1210 | + | conn, err := net.DialTimeout("tcp", target, 1*time.Second) | |
| 1211 | + | if err == nil { | |
| 1212 | + | conn.Close() | |
| 1213 | + | healthy = true | |
| 1214 | + | logger.Info("Container health check successful", "target", target, "attempt", i+1) | |
| 1215 | + | break | |
| 1216 | + | } | |
| 1217 | + | logger.Debug("Container health check failed, retrying...", | |
| 1218 | + | "target", target, | |
| 1219 | + | "attempt", i+1, | |
| 1220 | + | "error", err) | |
| 1221 | + | time.Sleep(retryDelay) | |
| 1222 | + | } | |
| 1223 | + | // --- End Health Check --- | |
| 1224 | + | ||
| 1225 | + | if healthy { | |
| 1226 | + | logger.Info("Container is healthy, proceeding with route activation", "domain", domain) | |
| 1227 | + | // Just reuse ForceUpdateRouteIP with the same IP to activate the route | |
| 1228 | + | err := p.ForceUpdateRouteIP(domain, containerIP) | |
| 1229 | + | if err != nil { | |
| 1230 | + | logger.Error("Failed to activate route after health check", | |
| 1231 | + | "domain", domain, | |
| 1232 | + | "error", err) | |
| 1233 | + | } | |
| 1234 | + | } else { | |
| 1235 | + | logger.Warn("Container did not become healthy after retries, route remains inactive", | |
| 1236 | + | "domain", domain, | |
| 1237 | + | "target", target) | |
| 1238 | + | // Route remains inactive, periodic check might pick it up later | |
| 1239 | + | } | |
| 1206 | 1240 | } | |
| 1207 | 1241 | } | |
| 1208 | 1242 | } | |
| 1209 | 1243 | } | |
| 1210 | 1244 | ||
| 1211 | - | // Call the standard recreation handler for additional checks | |
| 1245 | + | // Call the standard recreation handler for additional checks (might add the route if missing) | |
| 1212 | 1246 | p.HandleContainerRecreation(containerID, containerName, containerIP) | |
| 1213 | 1247 | }() | |
| 1214 | 1248 | } | |
| @@ -1196,19 +1196,53 @@ func (p *Proxy) StartContainerEventListener() error { | |||||
| 1196 | } else { | 1196 | } else { | ||
| 1197 | // Even if IP is the same, make sure the route is active | 1197 | // Even if IP is the same, make sure the route is active | ||
| 1198 | if !route.Active { | 1198 | if !route.Active { | ||
| 1199 | - | logger.Info("Reactivating route for restarted container", | 1199 | + | logger.Info("Attempting to reactivate route for restarted container", |
| 1200 | "container_id", containerID, | 1200 | "container_id", containerID, | ||
| 1201 | "container_name", containerName, | 1201 | "container_name", containerName, | ||
| 1202 | "domain", domain) | 1202 | "domain", domain) | ||
| 1203 | 1203 | ||||
| 1204 | - | // Just reuse ForceUpdateRouteIP with the same IP to activate the route | 1204 | + | // --- Add Health Check Before Activation --- |
| 1205 | - | p.ForceUpdateRouteIP(domain, containerIP) | 1205 | + | target := net.JoinHostPort(containerIP, route.ContainerPort) |
| 1206 | + | maxRetries := 5 | |||
| 1207 | + | retryDelay := 2 * time.Second | |||
| 1208 | + | healthy := false | |||
| 1209 | + | for i := 0; i < maxRetries; i++ { | |||
| 1210 | + | conn, err := net.DialTimeout("tcp", target, 1*time.Second) | |||
| 1211 | + | if err == nil { | |||
| 1212 | + | conn.Close() | |||
| 1213 | + | healthy = true | |||
| 1214 | + | logger.Info("Container health check successful", "target", target, "attempt", i+1) | |||
| 1215 | + | break | |||
| 1216 | + | } | |||
| 1217 | + | logger.Debug("Container health check failed, retrying...", | |||
| 1218 | + | "target", target, | |||
| 1219 | + | "attempt", i+1, | |||
| 1220 | + | "error", err) | |||
| 1221 | + | time.Sleep(retryDelay) | |||
| 1222 | + | } | |||
| 1223 | + | // --- End Health Check --- | |||
| 1224 | + | ||||
| 1225 | + | if healthy { | |||
| 1226 | + | logger.Info("Container is healthy, proceeding with route activation", "domain", domain) | |||
| 1227 | + | // Just reuse ForceUpdateRouteIP with the same IP to activate the route | |||
| 1228 | + | err := p.ForceUpdateRouteIP(domain, containerIP) | |||
| 1229 | + | if err != nil { | |||
| 1230 | + | logger.Error("Failed to activate route after health check", | |||
| 1231 | + | "domain", domain, | |||
| 1232 | + | "error", err) | |||
| 1233 | + | } | |||
| 1234 | + | } else { | |||
| 1235 | + | logger.Warn("Container did not become healthy after retries, route remains inactive", | |||
| 1236 | + | "domain", domain, | |||
| 1237 | + | "target", target) | |||
| 1238 | + | // Route remains inactive, periodic check might pick it up later | |||
| 1239 | + | } | |||
| 1206 | } | 1240 | } | ||
| 1207 | } | 1241 | } | ||
| 1208 | } | 1242 | } | ||
| 1209 | } | 1243 | } | ||
| 1210 | 1244 | ||||
| 1211 | - | // Call the standard recreation handler for additional checks | 1245 | + | // Call the standard recreation handler for additional checks (might add the route if missing) |
| 1212 | p.HandleContainerRecreation(containerID, containerName, containerIP) | 1246 | p.HandleContainerRecreation(containerID, containerName, containerIP) | ||
| 1213 | }() | 1247 | }() | ||
| 1214 | } | 1248 | } | ||
M internal/templating/cmdparams/from_inputs.go +21 -2
| @@ -23,6 +23,9 @@ func FromInputsToCmdParams(inputs map[string]string, a *server.App) (docker.Cont | |||
| 23 | 23 | } | |
| 24 | 24 | } | |
| 25 | 25 | ||
| 26 | + | // Retrieve proxy port from the correct input key | |
| 27 | + | proxyPortValue := inputs["container_port"] // Changed from proxy_port | |
| 28 | + | ||
| 26 | 29 | params := docker.ContainerCommandParams{ | |
| 27 | 30 | IsSSL: inputs["container_protocol"] == "https", | |
| 28 | 31 | ContainerName: inputs["container_name"], | |
| @@ -31,14 +34,30 @@ func FromInputsToCmdParams(inputs map[string]string, a *server.App) (docker.Cont | |||
| 31 | 34 | ImageName: inputs["image_name"], | |
| 32 | 35 | ImageID: inputs["image_id"], | |
| 33 | 36 | Restart: inputs["restart"], | |
| 34 | - | ProxyPort: inputs["proxy_port"], | |
| 37 | + | ProxyPort: proxyPortValue, // Assign the retrieved value | |
| 35 | 38 | Volumes: volumeSlice, | |
| 36 | 39 | Environment: environmentSlice, | |
| 37 | 40 | Network: a.Config.ContainerEngine.Network, | |
| 38 | 41 | PortMappings: portMappings, | |
| 42 | + | // Labels will be populated below | |
| 43 | + | } | |
| 44 | + | ||
| 45 | + | // Initialize Labels slice if nil | |
| 46 | + | if params.Labels == nil { | |
| 47 | + | params.Labels = []string{} | |
| 39 | 48 | } | |
| 40 | 49 | ||
| 41 | - | err = SetupProxyRoute(¶ms, params.ProxyPort, a) | |
| 50 | + | // Add standard labels and the proxy port label | |
| 51 | + | params.Labels = append(params.Labels, | |
| 52 | + | fmt.Sprintf("gordon.managed=true"), | |
| 53 | + | fmt.Sprintf("gordon.domain=%s.%s", params.ServiceName, params.Domain), | |
| 54 | + | fmt.Sprintf("gordon.proxy.ssl=%t", params.IsSSL), | |
| 55 | + | fmt.Sprintf("gordon.proxy.port=%s", proxyPortValue), // Add the proxy port label | |
| 56 | + | ) | |
| 57 | + | ||
| 58 | + | // SetupProxyRoute might need adjustment if it relies on params.ProxyPort directly | |
| 59 | + | // Assuming SetupProxyRoute uses the passed proxyPortValue or reads labels | |
| 60 | + | err = SetupProxyRoute(¶ms, proxyPortValue, a) // Pass the correct port value | |
| 42 | 61 | if err != nil { | |
| 43 | 62 | return docker.ContainerCommandParams{}, fmt.Errorf("error setting up proxy route: %w", err) | |
| 44 | 63 | } | |
| @@ -23,6 +23,9 @@ func FromInputsToCmdParams(inputs map[string]string, a *server.App) (docker.Cont | |||||
| 23 | } | 23 | } | ||
| 24 | } | 24 | } | ||
| 25 | 25 | ||||
| 26 | + | // Retrieve proxy port from the correct input key | |||
| 27 | + | proxyPortValue := inputs["container_port"] // Changed from proxy_port | |||
| 28 | + | ||||
| 26 | params := docker.ContainerCommandParams{ | 29 | params := docker.ContainerCommandParams{ | ||
| 27 | IsSSL: inputs["container_protocol"] == "https", | 30 | IsSSL: inputs["container_protocol"] == "https", | ||
| 28 | ContainerName: inputs["container_name"], | 31 | ContainerName: inputs["container_name"], | ||
| @@ -31,14 +34,30 @@ func FromInputsToCmdParams(inputs map[string]string, a *server.App) (docker.Cont | |||||
| 31 | ImageName: inputs["image_name"], | 34 | ImageName: inputs["image_name"], | ||
| 32 | ImageID: inputs["image_id"], | 35 | ImageID: inputs["image_id"], | ||
| 33 | Restart: inputs["restart"], | 36 | Restart: inputs["restart"], | ||
| 34 | - | ProxyPort: inputs["proxy_port"], | 37 | + | ProxyPort: proxyPortValue, // Assign the retrieved value |
| 35 | Volumes: volumeSlice, | 38 | Volumes: volumeSlice, | ||
| 36 | Environment: environmentSlice, | 39 | Environment: environmentSlice, | ||
| 37 | Network: a.Config.ContainerEngine.Network, | 40 | Network: a.Config.ContainerEngine.Network, | ||
| 38 | PortMappings: portMappings, | 41 | PortMappings: portMappings, | ||
| 42 | + | // Labels will be populated below | |||
| 43 | + | } | |||
| 44 | + | ||||
| 45 | + | // Initialize Labels slice if nil | |||
| 46 | + | if params.Labels == nil { | |||
| 47 | + | params.Labels = []string{} | |||
| 39 | } | 48 | } | ||
| 40 | 49 | ||||
| 41 | - | err = SetupProxyRoute(¶ms, params.ProxyPort, a) | 50 | + | // Add standard labels and the proxy port label |
| 51 | + | params.Labels = append(params.Labels, | |||
| 52 | + | fmt.Sprintf("gordon.managed=true"), | |||
| 53 | + | fmt.Sprintf("gordon.domain=%s.%s", params.ServiceName, params.Domain), | |||
| 54 | + | fmt.Sprintf("gordon.proxy.ssl=%t", params.IsSSL), | |||
| 55 | + | fmt.Sprintf("gordon.proxy.port=%s", proxyPortValue), // Add the proxy port label | |||
| 56 | + | ) | |||
| 57 | + | ||||
| 58 | + | // SetupProxyRoute might need adjustment if it relies on params.ProxyPort directly | |||
| 59 | + | // Assuming SetupProxyRoute uses the passed proxyPortValue or reads labels | |||
| 60 | + | err = SetupProxyRoute(¶ms, proxyPortValue, a) // Pass the correct port value | |||
| 42 | if err != nil { | 61 | if err != nil { | ||
| 43 | return docker.ContainerCommandParams{}, fmt.Errorf("error setting up proxy route: %w", err) | 62 | return docker.ContainerCommandParams{}, fmt.Errorf("error setting up proxy route: %w", err) | ||
| 44 | } | 63 | } | ||
M internal/templating/models/templ/components/containerlist.templ +3 -3
| @@ -1,14 +1,14 @@ | |||
| 1 | 1 | package components | |
| 2 | 2 | ||
| 3 | 3 | import ( | |
| 4 | - | "github.com/docker/docker/api/types" | |
| 4 | + | "github.com/docker/docker/api/types/container" | |
| 5 | 5 | "strconv" | |
| 6 | 6 | ) | |
| 7 | 7 | ||
| 8 | 8 | // ContainerList displays a list of containers | |
| 9 | - | templ ContainerList(containers []types.Container, noContainer bool) { | |
| 9 | + | templ ContainerList(containers []container.Summary, noContainer bool) { | |
| 10 | 10 | <!-- Container list using daisyUI components --> | |
| 11 | - | <div class="card w-full bg-base-300"> | |
| 11 | + | <div class="card w-full bg-base-100"> | |
| 12 | 12 | <div class="card-body p-4"> | |
| 13 | 13 | ||
| 14 | 14 | <!-- Action buttons --> | |
| @@ -1,14 +1,14 @@ | |||||
| 1 | package components | 1 | package components | ||
| 2 | 2 | ||||
| 3 | import ( | 3 | import ( | ||
| 4 | - | "github.com/docker/docker/api/types" | 4 | + | "github.com/docker/docker/api/types/container" |
| 5 | "strconv" | 5 | "strconv" | ||
| 6 | ) | 6 | ) | ||
| 7 | 7 | ||||
| 8 | // ContainerList displays a list of containers | 8 | // ContainerList displays a list of containers | ||
| 9 | - | templ ContainerList(containers []types.Container, noContainer bool) { | 9 | + | templ ContainerList(containers []container.Summary, noContainer bool) { |
| 10 | <!-- Container list using daisyUI components --> | 10 | <!-- Container list using daisyUI components --> | ||
| 11 | - | <div class="card w-full bg-base-300"> | 11 | + | <div class="card w-full bg-base-100"> |
| 12 | <div class="card-body p-4"> | 12 | <div class="card-body p-4"> | ||
| 13 | 13 | ||||
| 14 | <!-- Action buttons --> | 14 | <!-- Action buttons --> | ||
M internal/templating/models/templ/components/containerlist_templ.go +3 -3 generated file: collapsed
M internal/templating/models/templ/components/createcontainer.templ +2 -1
| @@ -21,7 +21,7 @@ type ContainerFormData struct { | |||
| 21 | 21 | templ CreateContainerForm(data ContainerFormData) { | |
| 22 | 22 | <div class="flex flex-col md:flex-row space-y-4 md:space-y-0 md:space-x-4 flex-grow"> | |
| 23 | 23 | <!-- Left Side: Docker Run Options --> | |
| 24 | - | <div class="flex-grow card p-6"> | |
| 24 | + | <div class="flex-grow card p-6 bg-base-100"> | |
| 25 | 25 | <h2 class="card-title pb-4">Deploy a container based on { data.ImageName }</h2> | |
| 26 | 26 | if data.ErrorMessage != "" { | |
| 27 | 27 | <div class="alert alert-error"> | |
| @@ -36,6 +36,7 @@ templ CreateContainerForm(data ContainerFormData) { | |||
| 36 | 36 | hx-swap="innerHTML" | |
| 37 | 37 | hx-target={ "#create-form-target-" + data.ShortID }> | |
| 38 | 38 | <!-- Image Name --> | |
| 39 | + | <input type="hidden" name="image_id" value={ data.ImageID } /> | |
| 39 | 40 | <div class="grid grid-cols-1 md:grid-cols-3 gap-4 pb-4"> | |
| 40 | 41 | <div class="md:col-span-1"> | |
| 41 | 42 | <label class="label"> | |
| @@ -21,7 +21,7 @@ type ContainerFormData struct { | |||||
| 21 | templ CreateContainerForm(data ContainerFormData) { | 21 | templ CreateContainerForm(data ContainerFormData) { | ||
| 22 | <div class="flex flex-col md:flex-row space-y-4 md:space-y-0 md:space-x-4 flex-grow"> | 22 | <div class="flex flex-col md:flex-row space-y-4 md:space-y-0 md:space-x-4 flex-grow"> | ||
| 23 | <!-- Left Side: Docker Run Options --> | 23 | <!-- Left Side: Docker Run Options --> | ||
| 24 | - | <div class="flex-grow card p-6"> | 24 | + | <div class="flex-grow card p-6 bg-base-100"> |
| 25 | <h2 class="card-title pb-4">Deploy a container based on { data.ImageName }</h2> | 25 | <h2 class="card-title pb-4">Deploy a container based on { data.ImageName }</h2> | ||
| 26 | if data.ErrorMessage != "" { | 26 | if data.ErrorMessage != "" { | ||
| 27 | <div class="alert alert-error"> | 27 | <div class="alert alert-error"> | ||
| @@ -36,6 +36,7 @@ templ CreateContainerForm(data ContainerFormData) { | |||||
| 36 | hx-swap="innerHTML" | 36 | hx-swap="innerHTML" | ||
| 37 | hx-target={ "#create-form-target-" + data.ShortID }> | 37 | hx-target={ "#create-form-target-" + data.ShortID }> | ||
| 38 | <!-- Image Name --> | 38 | <!-- Image Name --> | ||
| 39 | + | <input type="hidden" name="image_id" value={ data.ImageID } /> | |||
| 39 | <div class="grid grid-cols-1 md:grid-cols-3 gap-4 pb-4"> | 40 | <div class="grid grid-cols-1 md:grid-cols-3 gap-4 pb-4"> | ||
| 40 | <div class="md:col-span-1"> | 41 | <div class="md:col-span-1"> | ||
| 41 | <label class="label"> | 42 | <label class="label"> | ||
M internal/templating/models/templ/components/createcontainer_templ.go +42 -29 generated file: collapsed
M internal/templating/models/templ/components/imagelist.templ +1 -1
| @@ -21,7 +21,7 @@ type HumanReadableImage struct { | |||
| 21 | 21 | // ImageList displays a list of images | |
| 22 | 22 | templ ImageList(images []HumanReadableImage) { | |
| 23 | 23 | <!-- Image list using daisyUI components --> | |
| 24 | - | <div class="card w-full bg-base-300"> | |
| 24 | + | <div class="card w-full bg-base-100"> | |
| 25 | 25 | <div class="card-body p-4"> | |
| 26 | 26 | ||
| 27 | 27 | <!-- Action buttons --> | |
| @@ -21,7 +21,7 @@ type HumanReadableImage struct { | |||||
| 21 | // ImageList displays a list of images | 21 | // ImageList displays a list of images | ||
| 22 | templ ImageList(images []HumanReadableImage) { | 22 | templ ImageList(images []HumanReadableImage) { | ||
| 23 | <!-- Image list using daisyUI components --> | 23 | <!-- Image list using daisyUI components --> | ||
| 24 | - | <div class="card w-full bg-base-300"> | 24 | + | <div class="card w-full bg-base-100"> |
| 25 | <div class="card-body p-4"> | 25 | <div class="card-body p-4"> | ||
| 26 | 26 | ||||
| 27 | <!-- Action buttons --> | 27 | <!-- Action buttons --> | ||
M internal/templating/models/templ/components/imagelist_templ.go +1 -1 generated file: collapsed
M internal/templating/models/templ/components/navbar.templ +1 -1
| @@ -3,7 +3,7 @@ package components | |||
| 3 | 3 | // Navbar is a menu component for navigation | |
| 4 | 4 | templ Navbar(buildVersion string, adminPath string, userSettingsURL string, logoutURL string) { | |
| 5 | 5 | <!-- DaisyUI Navbar --> | |
| 6 | - | <div class="navbar bg-base-200 shadow-lg fixed top-0 z-50"> | |
| 6 | + | <div class="navbar bg-base-100 shadow-lg fixed top-0 z-50"> | |
| 7 | 7 | <div class="navbar-start"> | |
| 8 | 8 | <div class="flex items-center"> | |
| 9 | 9 | <h1 class="gordon-title text-2xl md:text-3xl text-primary tracking-tighter px-4"> | |
| @@ -3,7 +3,7 @@ package components | |||||
| 3 | // Navbar is a menu component for navigation | 3 | // Navbar is a menu component for navigation | ||
| 4 | templ Navbar(buildVersion string, adminPath string, userSettingsURL string, logoutURL string) { | 4 | templ Navbar(buildVersion string, adminPath string, userSettingsURL string, logoutURL string) { | ||
| 5 | <!-- DaisyUI Navbar --> | 5 | <!-- DaisyUI Navbar --> | ||
| 6 | - | <div class="navbar bg-base-200 shadow-lg fixed top-0 z-50"> | 6 | + | <div class="navbar bg-base-100 shadow-lg fixed top-0 z-50"> |
| 7 | <div class="navbar-start"> | 7 | <div class="navbar-start"> | ||
| 8 | <div class="flex items-center"> | 8 | <div class="flex items-center"> | ||
| 9 | <h1 class="gordon-title text-2xl md:text-3xl text-primary tracking-tighter px-4"> | 9 | <h1 class="gordon-title text-2xl md:text-3xl text-primary tracking-tighter px-4"> | ||
M internal/templating/models/templ/components/navbar_templ.go +1 -1 generated file: collapsed
M internal/templating/models/templ/components/success.templ +1 -1
| @@ -4,7 +4,7 @@ package components | |||
| 4 | 4 | templ Success(message string) { | |
| 5 | 5 | <div | |
| 6 | 6 | id="success" | |
| 7 | - | class="flex text-indigo-600 content-center justify-center items-center w-full h-full"> | |
| 7 | + | class="flex text-success content-center justify-center items-center w-full h-full"> | |
| 8 | 8 | <p class="text-2xl text-center"> | |
| 9 | 9 | if message != "" { | |
| 10 | 10 | { message } | |
| @@ -4,7 +4,7 @@ package components | |||||
| 4 | templ Success(message string) { | 4 | templ Success(message string) { | ||
| 5 | <div | 5 | <div | ||
| 6 | id="success" | 6 | id="success" | ||
| 7 | - | class="flex text-indigo-600 content-center justify-center items-center w-full h-full"> | 7 | + | class="flex text-success content-center justify-center items-center w-full h-full"> |
| 8 | <p class="text-2xl text-center"> | 8 | <p class="text-2xl text-center"> | ||
| 9 | if message != "" { | 9 | if message != "" { | ||
| 10 | { message } | 10 | { message } | ||
M internal/templating/models/templ/components/success_templ.go +1 -1 generated file: collapsed
M internal/templating/models/templ/layouts/admin_layout.templ +1 -1
| @@ -7,7 +7,7 @@ templ AdminLayout(title string, buildVersion string, adminPath string, userSetti | |||
| 7 | 7 | <!DOCTYPE html> | |
| 8 | 8 | <html lang="en" data-theme="gordon-dark"> | |
| 9 | 9 | @components.Header(title) | |
| 10 | - | <body class="min-h-screen bg-base-100"> | |
| 10 | + | <body class="min-h-screen bg-base-250"> | |
| 11 | 11 | @components.Navbar(buildVersion, adminPath, userSettingsURL, logoutURL) | |
| 12 | 12 | ||
| 13 | 13 | <!-- Main content starts after navbar height --> | |
| @@ -7,7 +7,7 @@ templ AdminLayout(title string, buildVersion string, adminPath string, userSetti | |||||
| 7 | <!DOCTYPE html> | 7 | <!DOCTYPE html> | ||
| 8 | <html lang="en" data-theme="gordon-dark"> | 8 | <html lang="en" data-theme="gordon-dark"> | ||
| 9 | @components.Header(title) | 9 | @components.Header(title) | ||
| 10 | - | <body class="min-h-screen bg-base-100"> | 10 | + | <body class="min-h-screen bg-base-250"> |
| 11 | @components.Navbar(buildVersion, adminPath, userSettingsURL, logoutURL) | 11 | @components.Navbar(buildVersion, adminPath, userSettingsURL, logoutURL) | ||
| 12 | 12 | ||||
| 13 | <!-- Main content starts after navbar height --> | 13 | <!-- Main content starts after navbar height --> | ||
M internal/templating/models/templ/layouts/admin_layout_templ.go +1 -1 generated file: collapsed
M internal/templating/models/templ/layouts/base.templ +1 -1
| @@ -8,7 +8,7 @@ templ Base(title string) { | |||
| 8 | 8 | <!DOCTYPE html> | |
| 9 | 9 | <html lang="en"> | |
| 10 | 10 | @components.Header(title) | |
| 11 | - | <body class="min-h-screen bg-base-100"> | |
| 11 | + | <body class="min-h-screen bg-base-200"> | |
| 12 | 12 | { children... } | |
| 13 | 13 | @components.Footer() | |
| 14 | 14 | </body> | |
| @@ -8,7 +8,7 @@ templ Base(title string) { | |||||
| 8 | <!DOCTYPE html> | 8 | <!DOCTYPE html> | ||
| 9 | <html lang="en"> | 9 | <html lang="en"> | ||
| 10 | @components.Header(title) | 10 | @components.Header(title) | ||
| 11 | - | <body class="min-h-screen bg-base-100"> | 11 | + | <body class="min-h-screen bg-base-200"> |
| 12 | { children... } | 12 | { children... } | ||
| 13 | @components.Footer() | 13 | @components.Footer() | ||
| 14 | </body> | 14 | </body> | ||
M internal/templating/models/templ/layouts/base_templ.go +1 -1 generated file: collapsed
M internal/templating/models/templ/pages/admin/install.templ +1 -1
| @@ -13,7 +13,7 @@ templ InstallPage(title string, version string) { | |||
| 13 | 13 | > | |
| 14 | 14 | <div class="circle-shadow flex justify-center w-100"> | |
| 15 | 15 | <img | |
| 16 | - | src="/assets/imgs/gordon-mascot-hq-trsp.png" | |
| 16 | + | src="/assets/imgs/gordon-mascot-mq-trsp.png" | |
| 17 | 17 | alt="logo" | |
| 18 | 18 | class="sm:h-24 h-32 xl:h-48" | |
| 19 | 19 | /> | |
| @@ -13,7 +13,7 @@ templ InstallPage(title string, version string) { | |||||
| 13 | > | 13 | > | ||
| 14 | <div class="circle-shadow flex justify-center w-100"> | 14 | <div class="circle-shadow flex justify-center w-100"> | ||
| 15 | <img | 15 | <img | ||
| 16 | - | src="/assets/imgs/gordon-mascot-hq-trsp.png" | 16 | + | src="/assets/imgs/gordon-mascot-mq-trsp.png" |
| 17 | alt="logo" | 17 | alt="logo" | ||
| 18 | class="sm:h-24 h-32 xl:h-48" | 18 | class="sm:h-24 h-32 xl:h-48" | ||
| 19 | /> | 19 | /> | ||
M internal/templating/models/templ/pages/admin/install_templ.go +1 -1 generated file: collapsed
M internal/templating/models/templ/pages/admin/manager.templ +2 -2
| @@ -17,7 +17,7 @@ templ ManagerPage(title string, buildVersion string, adminPath string, userSetti | |||
| 17 | 17 | </div> | |
| 18 | 18 | ||
| 19 | 19 | <!-- Stats overview --> | |
| 20 | - | <div class="stats shadow mb-6 w-full bg-base-300"> | |
| 20 | + | <div class="stats shadow mb-6 w-full bg-base-100"> | |
| 21 | 21 | <div class="stat"> | |
| 22 | 22 | <div class="stat-figure text-primary"> | |
| 23 | 23 | <span class="iconf text-3xl"></span> | |
| @@ -38,7 +38,7 @@ templ ManagerPage(title string, buildVersion string, adminPath string, userSetti | |||
| 38 | 38 | </div> | |
| 39 | 39 | ||
| 40 | 40 | <!-- Tabs for containers and images --> | |
| 41 | - | <div role="tablist" class="tabs tabs-boxed mb-4"> | |
| 41 | + | <div role="tablist" class="tabs tabs-border mb-4"> | |
| 42 | 42 | <input type="radio" name="my_tabs" role="tab" class="tab" aria-label="Containers" id="containers-tab" checked /> | |
| 43 | 43 | <div role="tabpanel" class="tab-content p-0 bg-base-300"> | |
| 44 | 44 | <!-- Container manager section --> | |
| @@ -17,7 +17,7 @@ templ ManagerPage(title string, buildVersion string, adminPath string, userSetti | |||||
| 17 | </div> | 17 | </div> | ||
| 18 | 18 | ||||
| 19 | <!-- Stats overview --> | 19 | <!-- Stats overview --> | ||
| 20 | - | <div class="stats shadow mb-6 w-full bg-base-300"> | 20 | + | <div class="stats shadow mb-6 w-full bg-base-100"> |
| 21 | <div class="stat"> | 21 | <div class="stat"> | ||
| 22 | <div class="stat-figure text-primary"> | 22 | <div class="stat-figure text-primary"> | ||
| 23 | <span class="iconf text-3xl"></span> | 23 | <span class="iconf text-3xl"></span> | ||
| @@ -38,7 +38,7 @@ templ ManagerPage(title string, buildVersion string, adminPath string, userSetti | |||||
| 38 | </div> | 38 | </div> | ||
| 39 | 39 | ||||
| 40 | <!-- Tabs for containers and images --> | 40 | <!-- Tabs for containers and images --> | ||
| 41 | - | <div role="tablist" class="tabs tabs-boxed mb-4"> | 41 | + | <div role="tablist" class="tabs tabs-border mb-4"> |
| 42 | <input type="radio" name="my_tabs" role="tab" class="tab" aria-label="Containers" id="containers-tab" checked /> | 42 | <input type="radio" name="my_tabs" role="tab" class="tab" aria-label="Containers" id="containers-tab" checked /> | ||
| 43 | <div role="tabpanel" class="tab-content p-0 bg-base-300"> | 43 | <div role="tabpanel" class="tab-content p-0 bg-base-300"> | ||
| 44 | <!-- Container manager section --> | 44 | <!-- Container manager section --> | ||
M internal/templating/models/templ/pages/admin/manager_templ.go +2 -2 generated file: collapsed
M internal/templating/models/templ/pages/errors/errors.templ +2 -5
| @@ -16,13 +16,10 @@ templ NotFoundPage(data ErrorPageData) { | |||
| 16 | 16 | @layouts.Base(data.Title) { | |
| 17 | 17 | <div class="flex flex-col items-center justify-center min-h-screen p-4"> | |
| 18 | 18 | <div class="flex flex-col items-center mb-8"> | |
| 19 | - | <img src="/assets/imgs/gordon-mascot-hq-trsp.png" alt="Gordon Mascot" class="w-64 h-64 mb-4" /> | |
| 19 | + | <img src="/assets/imgs/gordon-mascot-mq-trsp.png" alt="Gordon Mascot" class="w-64 mb-4" /> | |
| 20 | 20 | <h1 class="text-4xl font-bold text-error">404</h1> | |
| 21 | 21 | <h2 class="text-2xl mb-2">Page Not Found</h2> | |
| 22 | 22 | <p class="text-center text-base-content opacity-70 max-w-md mb-8">{ data.Message }</p> | |
| 23 | - | <a href={ templ.URL(data.AdminPath) } class="btn btn-primary"> | |
| 24 | - | <span class="iconf mr-2">🏠</span> Go Home | |
| 25 | - | </a> | |
| 26 | 23 | </div> | |
| 27 | 24 | </div> | |
| 28 | 25 | } | |
| @@ -33,7 +30,7 @@ templ ForbiddenPage(data ErrorPageData) { | |||
| 33 | 30 | @layouts.Base(data.Title) { | |
| 34 | 31 | <div class="flex flex-col items-center justify-center min-h-screen p-4"> | |
| 35 | 32 | <div class="flex flex-col items-center mb-8"> | |
| 36 | - | <img src="/assets/imgs/gordon-mascot-hq-trsp.png" alt="Gordon Mascot" class="w-64 h-64 mb-4" /> | |
| 33 | + | <img src="/assets/imgs/gordon-mascot-mq-trsp.png" alt="Gordon Mascot" class="w-64 h-64 mb-4" /> | |
| 37 | 34 | <h1 class="text-4xl font-bold text-error">403</h1> | |
| 38 | 35 | <h2 class="text-2xl mb-2">Access Forbidden</h2> | |
| 39 | 36 | <p class="text-center text-base-content opacity-70 max-w-md mb-8">{ data.Message }</p> | |
| @@ -16,13 +16,10 @@ templ NotFoundPage(data ErrorPageData) { | |||||
| 16 | @layouts.Base(data.Title) { | 16 | @layouts.Base(data.Title) { | ||
| 17 | <div class="flex flex-col items-center justify-center min-h-screen p-4"> | 17 | <div class="flex flex-col items-center justify-center min-h-screen p-4"> | ||
| 18 | <div class="flex flex-col items-center mb-8"> | 18 | <div class="flex flex-col items-center mb-8"> | ||
| 19 | - | <img src="/assets/imgs/gordon-mascot-hq-trsp.png" alt="Gordon Mascot" class="w-64 h-64 mb-4" /> | 19 | + | <img src="/assets/imgs/gordon-mascot-mq-trsp.png" alt="Gordon Mascot" class="w-64 mb-4" /> |
| 20 | <h1 class="text-4xl font-bold text-error">404</h1> | 20 | <h1 class="text-4xl font-bold text-error">404</h1> | ||
| 21 | <h2 class="text-2xl mb-2">Page Not Found</h2> | 21 | <h2 class="text-2xl mb-2">Page Not Found</h2> | ||
| 22 | <p class="text-center text-base-content opacity-70 max-w-md mb-8">{ data.Message }</p> | 22 | <p class="text-center text-base-content opacity-70 max-w-md mb-8">{ data.Message }</p> | ||
| 23 | - | <a href={ templ.URL(data.AdminPath) } class="btn btn-primary"> | |||
| 24 | - | <span class="iconf mr-2">🏠</span> Go Home | |||
| 25 | - | </a> | |||
| 26 | </div> | 23 | </div> | ||
| 27 | </div> | 24 | </div> | ||
| 28 | } | 25 | } | ||
| @@ -33,7 +30,7 @@ templ ForbiddenPage(data ErrorPageData) { | |||||
| 33 | @layouts.Base(data.Title) { | 30 | @layouts.Base(data.Title) { | ||
| 34 | <div class="flex flex-col items-center justify-center min-h-screen p-4"> | 31 | <div class="flex flex-col items-center justify-center min-h-screen p-4"> | ||
| 35 | <div class="flex flex-col items-center mb-8"> | 32 | <div class="flex flex-col items-center mb-8"> | ||
| 36 | - | <img src="/assets/imgs/gordon-mascot-hq-trsp.png" alt="Gordon Mascot" class="w-64 h-64 mb-4" /> | 33 | + | <img src="/assets/imgs/gordon-mascot-mq-trsp.png" alt="Gordon Mascot" class="w-64 h-64 mb-4" /> |
| 37 | <h1 class="text-4xl font-bold text-error">403</h1> | 34 | <h1 class="text-4xl font-bold text-error">403</h1> | ||
| 38 | <h2 class="text-2xl mb-2">Access Forbidden</h2> | 35 | <h2 class="text-2xl mb-2">Access Forbidden</h2> | ||
| 39 | <p class="text-center text-base-content opacity-70 max-w-md mb-8">{ data.Message }</p> | 36 | <p class="text-center text-base-content opacity-70 max-w-md mb-8">{ data.Message }</p> | ||
M internal/templating/models/templ/pages/errors/errors_templ.go +16 -25 generated file: collapsed
M internal/webui/public/assets/css/custom.css +22 -103
| @@ -1,123 +1,42 @@ | |||
| 1 | - | /** | |
| 2 | - | * Path: internal/ui/public/assets/css/custom.css | |
| 3 | - | * | |
| 4 | - | * @format | |
| 5 | - | */ | |
| 6 | - | ||
| 7 | - | /* Embeded path : assets/css/cutsom.css */ | |
| 8 | - | ||
| 9 | 1 | @import "tailwindcss"; | |
| 10 | - | @plugin "daisyui"; | |
| 11 | - | ||
| 12 | - | /* Custom DaisyUI theme */ | |
| 2 | + | /* Custom DaisyUI theme - Defined in tailwind.config.js */ | |
| 13 | 3 | @plugin "daisyui/theme" { | |
| 14 | 4 | name: "gordon-dark"; | |
| 15 | 5 | default: true; | |
| 16 | 6 | prefersdark: true; | |
| 17 | 7 | color-scheme: "dark"; | |
| 18 | - | --color-base-100: oklch(28% 0.091 267.935); | |
| 19 | - | --color-base-200: oklch(20% 0.042 265.755); | |
| 20 | - | --color-base-300: oklch(13% 0.028 261.692); | |
| 21 | - | --color-base-content: oklch(93% 0.034 272.788); | |
| 22 | - | --color-primary: oklch(87% 0 0); | |
| 23 | - | --color-primary-content: oklch(14% 0 0); | |
| 24 | - | --color-secondary: oklch(80% 0.105 251.813); | |
| 25 | - | --color-secondary-content: oklch(28% 0.091 267.935); | |
| 26 | - | --color-accent: oklch(80% 0.105 251.813); | |
| 27 | - | --color-accent-content: oklch(28% 0.091 267.935); | |
| 28 | - | --color-neutral: oklch(37% 0.034 259.733); | |
| 29 | - | --color-neutral-content: oklch(98% 0.002 247.839); | |
| 8 | + | --color-base-100: oklch(14% 0 0); | |
| 9 | + | --color-base-200: oklch(21% 0.006 285.885); | |
| 10 | + | --color-base-250: oklch(21% 0.006 285.885); | |
| 11 | + | --color-base-300: oklch(26% 0 0); | |
| 12 | + | --color-base-content: oklch(97% 0.001 106.424); | |
| 13 | + | --color-primary: oklch(44% 0.043 257.281); | |
| 14 | + | --color-primary-content: oklch(98% 0.003 247.858); | |
| 15 | + | --color-secondary: oklch(66% 0.179 58.318); | |
| 16 | + | --color-secondary-content: oklch(98% 0.022 95.277); | |
| 17 | + | --color-accent: oklch(60% 0.118 184.704); | |
| 18 | + | --color-accent-content: oklch(98% 0.014 180.72); | |
| 19 | + | --color-neutral: oklch(42% 0.199 265.638); | |
| 20 | + | --color-neutral-content: oklch(98% 0.001 106.423); | |
| 30 | 21 | --color-info: oklch(68% 0.169 237.323); | |
| 31 | 22 | --color-info-content: oklch(97% 0.013 236.62); | |
| 32 | - | --color-success: oklch(70% 0.14 182.503); | |
| 33 | - | --color-success-content: oklch(98% 0.014 180.72); | |
| 34 | - | --color-warning: oklch(76% 0.188 70.08); | |
| 35 | - | --color-warning-content: oklch(98% 0.022 95.277); | |
| 23 | + | --color-success: oklch(69% 0.17 162.48); | |
| 24 | + | --color-success-content: oklch(97% 0.021 166.113); | |
| 25 | + | --color-warning: oklch(70% 0.213 47.604); | |
| 26 | + | --color-warning-content: oklch(98% 0.016 73.684); | |
| 36 | 27 | --color-error: oklch(64% 0.246 16.439); | |
| 37 | 28 | --color-error-content: oklch(96% 0.015 12.422); | |
| 38 | - | --radius-selector: 0rem; | |
| 39 | - | --radius-field: 0rem; | |
| 40 | - | --radius-box: 0rem; | |
| 29 | + | --radius-selector: 1rem; | |
| 30 | + | --radius-field: 0.5rem; | |
| 31 | + | --radius-box: 1rem; | |
| 41 | 32 | --size-selector: 0.25rem; | |
| 42 | - | --size-field: 0.25rem; | |
| 33 | + | --size-field: 0.21875rem; | |
| 43 | 34 | --border: 1px; | |
| 44 | 35 | --depth: 0; | |
| 45 | 36 | --noise: 0; | |
| 46 | 37 | } | |
| 47 | 38 | ||
| 48 | 39 | ||
| 49 | - | /* Custom component classes */ | |
| 50 | - | @layer components { | |
| 51 | - | /* Button styles */ | |
| 52 | - | .btn-primary { | |
| 53 | - | @apply flex w-full justify-center border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2; | |
| 54 | - | } | |
| 55 | - | ||
| 56 | - | .btn-secondary { | |
| 57 | - | @apply flex w-full justify-center border border-secondary bg-secondary px-4 py-2 text-sm font-medium text-secondary-content hover:bg-secondary/90 focus:outline-none focus:ring-2 focus:ring-secondary focus:ring-offset-2; | |
| 58 | - | } | |
| 59 | - | ||
| 60 | - | .btn-danger { | |
| 61 | - | @apply flex w-full justify-center border border-transparent bg-red-600 px-4 py-2 text-sm font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2; | |
| 62 | - | } | |
| 63 | - | ||
| 64 | - | /* Alert styles */ | |
| 65 | - | .alert-error { | |
| 66 | - | @apply bg-red-50 p-4 dark:bg-red-900/20; | |
| 67 | - | } | |
| 68 | - | ||
| 69 | - | .alert-error-icon { | |
| 70 | - | @apply h-5 w-5 text-red-400; | |
| 71 | - | } | |
| 72 | - | ||
| 73 | - | .alert-error-text { | |
| 74 | - | @apply text-sm font-medium text-red-800 dark:text-red-300; | |
| 75 | - | } | |
| 76 | - | ||
| 77 | - | .alert-success { | |
| 78 | - | @apply bg-green-50 p-4 dark:bg-green-900/20; | |
| 79 | - | } | |
| 80 | - | ||
| 81 | - | .alert-success-icon { | |
| 82 | - | @apply h-5 w-5 text-green-400; | |
| 83 | - | } | |
| 84 | - | ||
| 85 | - | .alert-success-text { | |
| 86 | - | @apply text-sm font-medium text-green-800 dark:text-green-300; | |
| 87 | - | } | |
| 88 | - | ||
| 89 | - | /* Card styles */ | |
| 90 | - | .card { | |
| 91 | - | @apply bg-base-100 p-4 shadow mb-4; | |
| 92 | - | } | |
| 93 | - | ||
| 94 | - | .card-header { | |
| 95 | - | @apply text-lg font-semibold text-indigo-600 mb-2; | |
| 96 | - | } | |
| 97 | - | ||
| 98 | - | /* Background styles */ | |
| 99 | - | .bg-app { | |
| 100 | - | @apply bg-base-300; | |
| 101 | - | } | |
| 102 | - | ||
| 103 | - | .bg-sidebar { | |
| 104 | - | @apply bg-indigo-900; | |
| 105 | - | } | |
| 106 | - | ||
| 107 | - | .bg-card { | |
| 108 | - | @apply bg-base-100; | |
| 109 | - | } | |
| 110 | - | ||
| 111 | - | /* Text styles */ | |
| 112 | - | .text-title { | |
| 113 | - | @apply text-indigo-600 font-semibold; | |
| 114 | - | } | |
| 115 | - | ||
| 116 | - | .text-subtitle { | |
| 117 | - | @apply text-indigo-500; | |
| 118 | - | } | |
| 119 | - | } | |
| 120 | - | ||
| 121 | 40 | /* Import IBM Plex Fonts */ | |
| 122 | 41 | @font-face { | |
| 123 | 42 | font-family: "IBMPlexSans-Bold"; | |
| @@ -1,123 +1,42 @@ | |||||
| 1 | - | /** | |||
| 2 | - | * Path: internal/ui/public/assets/css/custom.css | |||
| 3 | - | * | |||
| 4 | - | * @format | |||
| 5 | - | */ | |||
| 6 | - | ||||
| 7 | - | /* Embeded path : assets/css/cutsom.css */ | |||
| 8 | - | ||||
| 9 | @import "tailwindcss"; | 1 | @import "tailwindcss"; | ||
| 10 | - | @plugin "daisyui"; | 2 | + | /* Custom DaisyUI theme - Defined in tailwind.config.js */ |
| 11 | - | ||||
| 12 | - | /* Custom DaisyUI theme */ | |||
| 13 | @plugin "daisyui/theme" { | 3 | @plugin "daisyui/theme" { | ||
| 14 | name: "gordon-dark"; | 4 | name: "gordon-dark"; | ||
| 15 | default: true; | 5 | default: true; | ||
| 16 | prefersdark: true; | 6 | prefersdark: true; | ||
| 17 | color-scheme: "dark"; | 7 | color-scheme: "dark"; | ||
| 18 | - | --color-base-100: oklch(28% 0.091 267.935); | 8 | + | --color-base-100: oklch(14% 0 0); |
| 19 | - | --color-base-200: oklch(20% 0.042 265.755); | 9 | + | --color-base-200: oklch(21% 0.006 285.885); |
| 20 | - | --color-base-300: oklch(13% 0.028 261.692); | 10 | + | --color-base-250: oklch(21% 0.006 285.885); |
| 21 | - | --color-base-content: oklch(93% 0.034 272.788); | 11 | + | --color-base-300: oklch(26% 0 0); |
| 22 | - | --color-primary: oklch(87% 0 0); | 12 | + | --color-base-content: oklch(97% 0.001 106.424); |
| 23 | - | --color-primary-content: oklch(14% 0 0); | 13 | + | --color-primary: oklch(44% 0.043 257.281); |
| 24 | - | --color-secondary: oklch(80% 0.105 251.813); | 14 | + | --color-primary-content: oklch(98% 0.003 247.858); |
| 25 | - | --color-secondary-content: oklch(28% 0.091 267.935); | 15 | + | --color-secondary: oklch(66% 0.179 58.318); |
| 26 | - | --color-accent: oklch(80% 0.105 251.813); | 16 | + | --color-secondary-content: oklch(98% 0.022 95.277); |
| 27 | - | --color-accent-content: oklch(28% 0.091 267.935); | 17 | + | --color-accent: oklch(60% 0.118 184.704); |
| 28 | - | --color-neutral: oklch(37% 0.034 259.733); | 18 | + | --color-accent-content: oklch(98% 0.014 180.72); |
| 29 | - | --color-neutral-content: oklch(98% 0.002 247.839); | 19 | + | --color-neutral: oklch(42% 0.199 265.638); |
| 20 | + | --color-neutral-content: oklch(98% 0.001 106.423); | |||
| 30 | --color-info: oklch(68% 0.169 237.323); | 21 | --color-info: oklch(68% 0.169 237.323); | ||
| 31 | --color-info-content: oklch(97% 0.013 236.62); | 22 | --color-info-content: oklch(97% 0.013 236.62); | ||
| 32 | - | --color-success: oklch(70% 0.14 182.503); | 23 | + | --color-success: oklch(69% 0.17 162.48); |
| 33 | - | --color-success-content: oklch(98% 0.014 180.72); | 24 | + | --color-success-content: oklch(97% 0.021 166.113); |
| 34 | - | --color-warning: oklch(76% 0.188 70.08); | 25 | + | --color-warning: oklch(70% 0.213 47.604); |
| 35 | - | --color-warning-content: oklch(98% 0.022 95.277); | 26 | + | --color-warning-content: oklch(98% 0.016 73.684); |
| 36 | --color-error: oklch(64% 0.246 16.439); | 27 | --color-error: oklch(64% 0.246 16.439); | ||
| 37 | --color-error-content: oklch(96% 0.015 12.422); | 28 | --color-error-content: oklch(96% 0.015 12.422); | ||
| 38 | - | --radius-selector: 0rem; | 29 | + | --radius-selector: 1rem; |
| 39 | - | --radius-field: 0rem; | 30 | + | --radius-field: 0.5rem; |
| 40 | - | --radius-box: 0rem; | 31 | + | --radius-box: 1rem; |
| 41 | --size-selector: 0.25rem; | 32 | --size-selector: 0.25rem; | ||
| 42 | - | --size-field: 0.25rem; | 33 | + | --size-field: 0.21875rem; |
| 43 | --border: 1px; | 34 | --border: 1px; | ||
| 44 | --depth: 0; | 35 | --depth: 0; | ||
| 45 | --noise: 0; | 36 | --noise: 0; | ||
| 46 | } | 37 | } | ||
| 47 | 38 | ||||
| 48 | 39 | ||||
| 49 | - | /* Custom component classes */ | |||
| 50 | - | @layer components { | |||
| 51 | - | /* Button styles */ | |||
| 52 | - | .btn-primary { | |||
| 53 | - | @apply flex w-full justify-center border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2; | |||
| 54 | - | } | |||
| 55 | - | ||||
| 56 | - | .btn-secondary { | |||
| 57 | - | @apply flex w-full justify-center border border-secondary bg-secondary px-4 py-2 text-sm font-medium text-secondary-content hover:bg-secondary/90 focus:outline-none focus:ring-2 focus:ring-secondary focus:ring-offset-2; | |||
| 58 | - | } | |||
| 59 | - | ||||
| 60 | - | .btn-danger { | |||
| 61 | - | @apply flex w-full justify-center border border-transparent bg-red-600 px-4 py-2 text-sm font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2; | |||
| 62 | - | } | |||
| 63 | - | ||||
| 64 | - | /* Alert styles */ | |||
| 65 | - | .alert-error { | |||
| 66 | - | @apply bg-red-50 p-4 dark:bg-red-900/20; | |||
| 67 | - | } | |||
| 68 | - | ||||
| 69 | - | .alert-error-icon { | |||
| 70 | - | @apply h-5 w-5 text-red-400; | |||
| 71 | - | } | |||
| 72 | - | ||||
| 73 | - | .alert-error-text { | |||
| 74 | - | @apply text-sm font-medium text-red-800 dark:text-red-300; | |||
| 75 | - | } | |||
| 76 | - | ||||
| 77 | - | .alert-success { | |||
| 78 | - | @apply bg-green-50 p-4 dark:bg-green-900/20; | |||
| 79 | - | } | |||
| 80 | - | ||||
| 81 | - | .alert-success-icon { | |||
| 82 | - | @apply h-5 w-5 text-green-400; | |||
| 83 | - | } | |||
| 84 | - | ||||
| 85 | - | .alert-success-text { | |||
| 86 | - | @apply text-sm font-medium text-green-800 dark:text-green-300; | |||
| 87 | - | } | |||
| 88 | - | ||||
| 89 | - | /* Card styles */ | |||
| 90 | - | .card { | |||
| 91 | - | @apply bg-base-100 p-4 shadow mb-4; | |||
| 92 | - | } | |||
| 93 | - | ||||
| 94 | - | .card-header { | |||
| 95 | - | @apply text-lg font-semibold text-indigo-600 mb-2; | |||
| 96 | - | } | |||
| 97 | - | ||||
| 98 | - | /* Background styles */ | |||
| 99 | - | .bg-app { | |||
| 100 | - | @apply bg-base-300; | |||
| 101 | - | } | |||
| 102 | - | ||||
| 103 | - | .bg-sidebar { | |||
| 104 | - | @apply bg-indigo-900; | |||
| 105 | - | } | |||
| 106 | - | ||||
| 107 | - | .bg-card { | |||
| 108 | - | @apply bg-base-100; | |||
| 109 | - | } | |||
| 110 | - | ||||
| 111 | - | /* Text styles */ | |||
| 112 | - | .text-title { | |||
| 113 | - | @apply text-indigo-600 font-semibold; | |||
| 114 | - | } | |||
| 115 | - | ||||
| 116 | - | .text-subtitle { | |||
| 117 | - | @apply text-indigo-500; | |||
| 118 | - | } | |||
| 119 | - | } | |||
| 120 | - | ||||
| 121 | /* Import IBM Plex Fonts */ | 40 | /* Import IBM Plex Fonts */ | ||
| 122 | @font-face { | 41 | @font-face { | ||
| 123 | font-family: "IBMPlexSans-Bold"; | 42 | font-family: "IBMPlexSans-Bold"; | ||
M internal/webui/public/assets/css/tailwind.css +474 -7547 large diff (8021 lines changed): collapsed
A node_modules/.bin/cssesc +1 -0 generated file: collapsed
A node_modules/.bin/glob +1 -0 generated file: collapsed
A node_modules/.bin/jiti +1 -0 generated file: collapsed
A node_modules/.bin/nanoid +1 -0 generated file: collapsed
A node_modules/.bin/node-which +1 -0 generated file: collapsed
A node_modules/.bin/prettier +1 -0 generated file: collapsed
A node_modules/.bin/resolve +1 -0 generated file: collapsed
A node_modules/.bin/sucrase +1 -0 generated file: collapsed
A node_modules/.bin/sucrase-node +1 -0 generated file: collapsed
A node_modules/.bin/tailwind +1 -0 generated file: collapsed
A node_modules/.bin/yaml +1 -0 generated file: collapsed
A node_modules/.svelte2tsx-language-server-files/svelte-native-jsx.d.ts +32 -0 generated file: collapsed
A node_modules/.svelte2tsx-language-server-files/svelte-shims-v4.d.ts +287 -0 generated file: collapsed
A node_modules/@alloc/quick-lru/index.d.ts +128 -0 generated file: collapsed
A node_modules/@alloc/quick-lru/index.js +263 -0 generated file: collapsed
A node_modules/@alloc/quick-lru/license +9 -0 generated file: collapsed
A node_modules/@alloc/quick-lru/package.json +43 -0 generated file: collapsed
A node_modules/@alloc/quick-lru/readme.md +139 -0 generated file: collapsed
A node_modules/@isaacs/cliui/README.md +143 -0 generated file: collapsed
A node_modules/@isaacs/cliui/build/index.cjs +317 -0 generated file: collapsed
A node_modules/@isaacs/cliui/build/index.d.cts +43 -0 generated file: collapsed
A node_modules/@isaacs/cliui/build/lib/index.js +302 -0 generated file: collapsed
A node_modules/@isaacs/cliui/index.mjs +14 -0 generated file: collapsed
A node_modules/@isaacs/cliui/package.json +86 -0 generated file: collapsed
A node_modules/@jridgewell/gen-mapping/LICENSE +19 -0 generated file: collapsed
A node_modules/@jridgewell/gen-mapping/README.md +227 -0 generated file: collapsed
A node_modules/@jridgewell/gen-mapping/package.json +76 -0 generated file: collapsed
A node_modules/@jridgewell/resolve-uri/LICENSE +19 -0 generated file: collapsed
A node_modules/@jridgewell/resolve-uri/README.md +40 -0 generated file: collapsed
A node_modules/@jridgewell/resolve-uri/package.json +69 -0 generated file: collapsed
A node_modules/@jridgewell/set-array/LICENSE +19 -0 generated file: collapsed
A node_modules/@jridgewell/set-array/README.md +37 -0 generated file: collapsed
A node_modules/@jridgewell/set-array/package.json +65 -0 generated file: collapsed
A node_modules/@jridgewell/sourcemap-codec/LICENSE +21 -0 generated file: collapsed
A node_modules/@jridgewell/sourcemap-codec/README.md +264 -0 generated file: collapsed
A node_modules/@jridgewell/sourcemap-codec/package.json +75 -0 generated file: collapsed
A node_modules/@jridgewell/trace-mapping/LICENSE +19 -0 generated file: collapsed
A node_modules/@jridgewell/trace-mapping/README.md +257 -0 generated file: collapsed
A node_modules/@jridgewell/trace-mapping/package.json +77 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/LICENSE +21 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/README.md +171 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +20 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/adapters/fs.js +19 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/constants.d.ts +4 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/constants.js +17 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/index.d.ts +12 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/index.js +26 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +7 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/providers/async.js +104 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +1 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/providers/common.js +13 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +5 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/providers/sync.js +54 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/settings.d.ts +20 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/settings.js +24 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/types/index.d.ts +20 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/types/index.js +2 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +2 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/utils/fs.js +19 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +2 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/out/utils/index.js +5 -0 generated file: collapsed
A node_modules/@nodelib/fs.scandir/package.json +44 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/LICENSE +21 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/README.md +126 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +13 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/adapters/fs.js +17 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/index.d.ts +12 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/index.js +26 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/providers/async.d.ts +4 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/providers/async.js +36 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +3 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/providers/sync.js +23 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/settings.d.ts +16 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/settings.js +16 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/types/index.d.ts +4 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/out/types/index.js +2 -0 generated file: collapsed
A node_modules/@nodelib/fs.stat/package.json +37 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/LICENSE +21 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/README.md +215 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/index.d.ts +14 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/index.js +34 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/providers/async.d.ts +12 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/providers/async.js +30 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/providers/index.d.ts +4 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/providers/index.js +9 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +12 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/providers/stream.js +34 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +10 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/providers/sync.js +14 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/readers/async.d.ts +30 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/readers/async.js +97 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/readers/common.d.ts +7 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/readers/common.js +31 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +6 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/readers/reader.js +11 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +15 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/readers/sync.js +59 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/settings.d.ts +30 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/settings.js +26 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/types/index.d.ts +8 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/out/types/index.js +2 -0 generated file: collapsed
A node_modules/@nodelib/fs.walk/package.json +44 -0 generated file: collapsed
A node_modules/@parcel/watcher-linux-x64-glibc/LICENSE +21 -0 generated file: collapsed
A node_modules/@parcel/watcher-linux-x64-glibc/README.md +1 -0 generated file: collapsed
A node_modules/@parcel/watcher-linux-x64-glibc/package.json +33 -0 generated file: collapsed
A node_modules/@parcel/watcher-linux-x64-glibc/watcher.node +0 -0 binary file: no text diff
binary file: no text diff
A node_modules/@parcel/watcher-linux-x64-musl/LICENSE +21 -0 generated file: collapsed
A node_modules/@parcel/watcher-linux-x64-musl/README.md +1 -0 generated file: collapsed
A node_modules/@parcel/watcher-linux-x64-musl/package.json +33 -0 generated file: collapsed
A node_modules/@parcel/watcher-linux-x64-musl/watcher.node +0 -0 binary file: no text diff
binary file: no text diff
A node_modules/@parcel/watcher/LICENSE +21 -0 generated file: collapsed
A node_modules/@parcel/watcher/README.md +135 -0 generated file: collapsed
A node_modules/@parcel/watcher/binding.gyp +93 -0 generated file: collapsed
A node_modules/@parcel/watcher/index.d.ts +49 -0 generated file: collapsed
A node_modules/@parcel/watcher/index.js +41 -0 generated file: collapsed
A node_modules/@parcel/watcher/index.js.flow +48 -0 generated file: collapsed
A node_modules/@parcel/watcher/node_modules/.bin/detect-libc +1 -0 generated file: collapsed
A node_modules/@parcel/watcher/node_modules/detect-libc/.npmignore +7 -0 generated file: collapsed
A node_modules/@parcel/watcher/node_modules/detect-libc/LICENSE +201 -0 generated file: collapsed
A node_modules/@parcel/watcher/node_modules/detect-libc/README.md +78 -0 generated file: collapsed
A node_modules/@parcel/watcher/node_modules/detect-libc/bin/detect-libc.js +18 -0 generated file: collapsed
A node_modules/@parcel/watcher/node_modules/detect-libc/lib/detect-libc.js +92 -0 generated file: collapsed
A node_modules/@parcel/watcher/node_modules/detect-libc/package.json +35 -0 generated file: collapsed
A node_modules/@parcel/watcher/package.json +88 -0 generated file: collapsed
A node_modules/@parcel/watcher/scripts/build-from-source.js +13 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/Backend.cc +182 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/Backend.hh +37 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/Debounce.cc +113 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/Debounce.hh +49 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/DirTree.cc +152 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/DirTree.hh +50 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/Event.hh +109 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/Glob.cc +22 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/Glob.hh +34 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/PromiseRunner.hh +101 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/Signal.hh +46 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/Watcher.cc +237 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/Watcher.hh +73 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/binding.cc +268 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/kqueue/KqueueBackend.cc +306 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/kqueue/KqueueBackend.hh +35 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/linux/InotifyBackend.cc +232 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/linux/InotifyBackend.hh +34 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/macos/FSEventsBackend.cc +338 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/macos/FSEventsBackend.hh +20 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/shared/BruteForceBackend.cc +41 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/shared/BruteForceBackend.hh +25 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/unix/fts.cc +50 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/unix/legacy.cc +77 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/wasm/WasmBackend.cc +132 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/wasm/WasmBackend.hh +34 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/wasm/include.h +74 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/watchman/BSER.cc +302 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/watchman/BSER.hh +69 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/watchman/IPC.hh +175 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/watchman/WatchmanBackend.cc +338 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/watchman/WatchmanBackend.hh +35 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/windows/WindowsBackend.cc +282 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/windows/WindowsBackend.hh +18 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/windows/win_utils.cc +44 -0 generated file: collapsed
A node_modules/@parcel/watcher/src/windows/win_utils.hh +11 -0 generated file: collapsed
A node_modules/@parcel/watcher/wrapper.js +77 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/.editorconfig +14 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/CHANGELOG.md +147 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/LICENSE +201 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/README.md +413 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/examples/is-default-value.js +25 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/examples/limit-long-syntax.js +35 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/examples/negate.js +43 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/examples/no-repeated-options.js +31 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/examples/ordered-options.mjs +41 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/examples/simple-hard-coded.js +26 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/index.js +396 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/internal/errors.js +47 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/internal/primordials.js +393 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/internal/util.js +14 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/internal/validators.js +89 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/package.json +36 -0 generated file: collapsed
A node_modules/@pkgjs/parseargs/utils.js +198 -0 generated file: collapsed
A node_modules/@tailwindcss/cli/LICENSE +21 -0 generated file: collapsed
A node_modules/@tailwindcss/cli/README.md +40 -0 generated file: collapsed
A node_modules/@tailwindcss/cli/package.json +41 -0 generated file: collapsed
A node_modules/@tailwindcss/node/LICENSE +21 -0 generated file: collapsed
A node_modules/@tailwindcss/node/README.md +40 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/.bin/jiti +1 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/LICENSE +21 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/README.md +235 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/lib/jiti-cli.mjs +34 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/lib/jiti-hooks.mjs +117 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/lib/jiti-native.mjs +121 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/lib/jiti-register.d.mts +1 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/lib/jiti-register.mjs +4 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/lib/jiti.cjs +23 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/lib/jiti.d.cts +8 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/lib/jiti.d.mts +8 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/lib/jiti.mjs +22 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/lib/types.d.ts +260 -0 generated file: collapsed
A node_modules/@tailwindcss/node/node_modules/jiti/package.json +134 -0 generated file: collapsed
A node_modules/@tailwindcss/node/package.json +44 -0 generated file: collapsed
A node_modules/@tailwindcss/oxide-linux-x64-gnu/LICENSE +21 -0 generated file: collapsed
A node_modules/@tailwindcss/oxide-linux-x64-gnu/README.md +3 -0 generated file: collapsed
A node_modules/@tailwindcss/oxide-linux-x64-gnu/package.json +30 -0 generated file: collapsed
A node_modules/@tailwindcss/oxide-linux-x64-gnu/tailwindcss-oxide.linux-x64-gnu.node +0 -0 binary file: no text diff
binary file: no text diff
A node_modules/@tailwindcss/oxide-linux-x64-musl/LICENSE +21 -0 generated file: collapsed
A node_modules/@tailwindcss/oxide-linux-x64-musl/README.md +3 -0 generated file: collapsed
A node_modules/@tailwindcss/oxide-linux-x64-musl/package.json +30 -0 generated file: collapsed
A node_modules/@tailwindcss/oxide-linux-x64-musl/tailwindcss-oxide.linux-x64-musl.node +0 -0 binary file: no text diff
binary file: no text diff
A node_modules/@tailwindcss/oxide/LICENSE +21 -0 generated file: collapsed
A node_modules/@tailwindcss/oxide/index.d.ts +37 -0 generated file: collapsed
A node_modules/@tailwindcss/oxide/index.js +315 -0 generated file: collapsed
A node_modules/@tailwindcss/oxide/package.json +63 -0 generated file: collapsed
A node_modules/@tailwindcss/postcss/LICENSE +21 -0 generated file: collapsed
A node_modules/@tailwindcss/postcss/README.md +40 -0 generated file: collapsed
A node_modules/@tailwindcss/postcss/package.json +47 -0 generated file: collapsed
A node_modules/ansi-regex/index.d.ts +33 -0 generated file: collapsed
A node_modules/ansi-regex/index.js +10 -0 generated file: collapsed
A node_modules/ansi-regex/license +9 -0 generated file: collapsed
A node_modules/ansi-regex/package.json +61 -0 generated file: collapsed
A node_modules/ansi-regex/readme.md +60 -0 generated file: collapsed
A node_modules/ansi-styles/index.d.ts +236 -0 generated file: collapsed
A node_modules/ansi-styles/index.js +223 -0 generated file: collapsed
A node_modules/ansi-styles/license +9 -0 generated file: collapsed
A node_modules/ansi-styles/package.json +54 -0 generated file: collapsed
A node_modules/ansi-styles/readme.md +173 -0 generated file: collapsed
A node_modules/any-promise/.jshintrc +4 -0 generated file: collapsed
A node_modules/any-promise/.npmignore +7 -0 generated file: collapsed
A node_modules/any-promise/LICENSE +19 -0 generated file: collapsed
A node_modules/any-promise/README.md +161 -0 generated file: collapsed
A node_modules/any-promise/implementation.d.ts +3 -0 generated file: collapsed
A node_modules/any-promise/implementation.js +1 -0 generated file: collapsed
A node_modules/any-promise/index.d.ts +73 -0 generated file: collapsed
A node_modules/any-promise/index.js +1 -0 generated file: collapsed
A node_modules/any-promise/loader.js +78 -0 generated file: collapsed
A node_modules/any-promise/optional.js +6 -0 generated file: collapsed
A node_modules/any-promise/package.json +45 -0 generated file: collapsed
A node_modules/any-promise/register-shim.js +18 -0 generated file: collapsed
A node_modules/any-promise/register.d.ts +17 -0 generated file: collapsed
A node_modules/any-promise/register.js +94 -0 generated file: collapsed
A node_modules/any-promise/register/bluebird.d.ts +1 -0 generated file: collapsed
A node_modules/any-promise/register/bluebird.js +2 -0 generated file: collapsed
A node_modules/any-promise/register/es6-promise.d.ts +1 -0 generated file: collapsed
A node_modules/any-promise/register/es6-promise.js +2 -0 generated file: collapsed
A node_modules/any-promise/register/lie.d.ts +1 -0 generated file: collapsed
A node_modules/any-promise/register/lie.js +2 -0 generated file: collapsed
A node_modules/any-promise/register/native-promise-only.d.ts +1 -0 generated file: collapsed
A node_modules/any-promise/register/native-promise-only.js +2 -0 generated file: collapsed
A node_modules/any-promise/register/pinkie.d.ts +1 -0 generated file: collapsed
A node_modules/any-promise/register/pinkie.js +2 -0 generated file: collapsed
A node_modules/any-promise/register/promise.d.ts +1 -0 generated file: collapsed
A node_modules/any-promise/register/promise.js +2 -0 generated file: collapsed
A node_modules/any-promise/register/q.d.ts +1 -0 generated file: collapsed
A node_modules/any-promise/register/q.js +2 -0 generated file: collapsed
A node_modules/any-promise/register/rsvp.d.ts +1 -0 generated file: collapsed
A node_modules/any-promise/register/rsvp.js +2 -0 generated file: collapsed
A node_modules/any-promise/register/vow.d.ts +1 -0 generated file: collapsed
A node_modules/any-promise/register/vow.js +2 -0 generated file: collapsed
A node_modules/any-promise/register/when.d.ts +1 -0 generated file: collapsed
A node_modules/any-promise/register/when.js +2 -0 generated file: collapsed
A node_modules/anymatch/LICENSE +15 -0 generated file: collapsed
A node_modules/anymatch/README.md +87 -0 generated file: collapsed
A node_modules/anymatch/index.d.ts +20 -0 generated file: collapsed
A node_modules/anymatch/index.js +104 -0 generated file: collapsed
A node_modules/anymatch/package.json +48 -0 generated file: collapsed
A node_modules/arg/LICENSE.md +21 -0 generated file: collapsed
A node_modules/arg/README.md +317 -0 generated file: collapsed
A node_modules/arg/index.d.ts +44 -0 generated file: collapsed
A node_modules/arg/index.js +195 -0 generated file: collapsed
A node_modules/arg/package.json +28 -0 collapsed to keep the page light
A node_modules/balanced-match/.github/FUNDING.yml +2 -0 collapsed to keep the page light
A node_modules/balanced-match/LICENSE.md +21 -0 collapsed to keep the page light
A node_modules/balanced-match/README.md +97 -0 collapsed to keep the page light
A node_modules/balanced-match/index.js +62 -0 collapsed to keep the page light
A node_modules/balanced-match/package.json +48 -0 collapsed to keep the page light
A node_modules/binary-extensions/binary-extensions.json +263 -0 collapsed to keep the page light
A node_modules/binary-extensions/binary-extensions.json.d.ts +3 -0 collapsed to keep the page light
A node_modules/binary-extensions/index.d.ts +14 -0 collapsed to keep the page light
A node_modules/binary-extensions/index.js +1 -0 collapsed to keep the page light
A node_modules/binary-extensions/license +10 -0 collapsed to keep the page light
A node_modules/binary-extensions/package.json +40 -0 collapsed to keep the page light
A node_modules/binary-extensions/readme.md +25 -0 collapsed to keep the page light
A node_modules/brace-expansion/.github/FUNDING.yml +2 -0 collapsed to keep the page light
A node_modules/brace-expansion/LICENSE +21 -0 collapsed to keep the page light
A node_modules/brace-expansion/README.md +135 -0 collapsed to keep the page light
A node_modules/brace-expansion/index.js +203 -0 collapsed to keep the page light
A node_modules/brace-expansion/package.json +46 -0 collapsed to keep the page light
A node_modules/braces/LICENSE +21 -0 collapsed to keep the page light
A node_modules/braces/README.md +586 -0 collapsed to keep the page light
A node_modules/braces/index.js +170 -0 collapsed to keep the page light
A node_modules/braces/lib/compile.js +60 -0 collapsed to keep the page light
A node_modules/braces/lib/constants.js +57 -0 collapsed to keep the page light
A node_modules/braces/lib/expand.js +113 -0 collapsed to keep the page light
A node_modules/braces/lib/parse.js +331 -0 collapsed to keep the page light
A node_modules/braces/lib/stringify.js +32 -0 collapsed to keep the page light
A node_modules/braces/lib/utils.js +122 -0 collapsed to keep the page light
A node_modules/braces/package.json +77 -0 collapsed to keep the page light
A node_modules/camelcase-css/README.md +27 -0 collapsed to keep the page light
A node_modules/camelcase-css/index-es5.js +24 -0 collapsed to keep the page light
A node_modules/camelcase-css/index.js +30 -0 collapsed to keep the page light
A node_modules/camelcase-css/license +21 -0 collapsed to keep the page light
A node_modules/camelcase-css/package.json +34 -0 collapsed to keep the page light
A node_modules/caniuse-lite/LICENSE +395 -0 collapsed to keep the page light
A node_modules/caniuse-lite/README.md +6 -0 collapsed to keep the page light
A node_modules/caniuse-lite/package.json +34 -0 collapsed to keep the page light
A node_modules/chokidar/LICENSE +21 -0 collapsed to keep the page light
A node_modules/chokidar/README.md +308 -0 collapsed to keep the page light
A node_modules/chokidar/index.js +973 -0 collapsed to keep the page light
A node_modules/chokidar/lib/constants.js +66 -0 collapsed to keep the page light
A node_modules/chokidar/lib/fsevents-handler.js +526 -0 collapsed to keep the page light
A node_modules/chokidar/lib/nodefs-handler.js +654 -0 collapsed to keep the page light
A node_modules/chokidar/node_modules/glob-parent/CHANGELOG.md +110 -0 collapsed to keep the page light
A node_modules/chokidar/node_modules/glob-parent/LICENSE +15 -0 collapsed to keep the page light
A node_modules/chokidar/node_modules/glob-parent/README.md +137 -0 collapsed to keep the page light
A node_modules/chokidar/node_modules/glob-parent/index.js +42 -0 collapsed to keep the page light
A node_modules/chokidar/node_modules/glob-parent/package.json +48 -0 collapsed to keep the page light
A node_modules/chokidar/package.json +70 -0 collapsed to keep the page light
A node_modules/chokidar/types/index.d.ts +192 -0 collapsed to keep the page light
A node_modules/color-convert/CHANGELOG.md +54 -0 collapsed to keep the page light
A node_modules/color-convert/LICENSE +21 -0 collapsed to keep the page light
A node_modules/color-convert/README.md +68 -0 collapsed to keep the page light
A node_modules/color-convert/conversions.js +839 -0 collapsed to keep the page light
A node_modules/color-convert/index.js +81 -0 collapsed to keep the page light
A node_modules/color-convert/package.json +48 -0 collapsed to keep the page light
A node_modules/color-convert/route.js +97 -0 collapsed to keep the page light
A node_modules/color-name/LICENSE +8 -0 collapsed to keep the page light
A node_modules/color-name/README.md +11 -0 collapsed to keep the page light
A node_modules/color-name/index.js +152 -0 collapsed to keep the page light
A node_modules/color-name/package.json +28 -0 collapsed to keep the page light
A node_modules/commander/CHANGELOG.md +436 -0 collapsed to keep the page light
A node_modules/commander/LICENSE +22 -0 collapsed to keep the page light
A node_modules/commander/Readme.md +713 -0 collapsed to keep the page light
A node_modules/commander/index.js +1649 -0 collapsed to keep the page light
A node_modules/commander/package.json +41 -0 collapsed to keep the page light
A node_modules/commander/typings/index.d.ts +311 -0 collapsed to keep the page light
A node_modules/cross-spawn/CHANGELOG.md +130 -0 collapsed to keep the page light
A node_modules/cross-spawn/LICENSE +21 -0 collapsed to keep the page light
A node_modules/cross-spawn/README.md +96 -0 collapsed to keep the page light
A node_modules/cross-spawn/index.js +39 -0 collapsed to keep the page light
A node_modules/cross-spawn/lib/enoent.js +59 -0 collapsed to keep the page light
A node_modules/cross-spawn/lib/parse.js +91 -0 collapsed to keep the page light
A node_modules/cross-spawn/lib/util/escape.js +45 -0 collapsed to keep the page light
A node_modules/cross-spawn/lib/util/readShebang.js +23 -0 collapsed to keep the page light
A node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0 collapsed to keep the page light
A node_modules/cross-spawn/package.json +73 -0 collapsed to keep the page light
A node_modules/cssesc/README.md +201 -0 collapsed to keep the page light
A node_modules/cssesc/bin/cssesc +116 -0 collapsed to keep the page light
A node_modules/cssesc/cssesc.js +110 -0 collapsed to keep the page light
A node_modules/cssesc/man/cssesc.1 +70 -0 collapsed to keep the page light
A node_modules/cssesc/package.json +51 -0 collapsed to keep the page light
A node_modules/daisyui/LICENSE +21 -0 collapsed to keep the page light
A node_modules/daisyui/README.md +37 -0 collapsed to keep the page light
A node_modules/daisyui/base/properties.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/properties/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/base/properties/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/reset.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/rootcolor.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/rootcolor/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/base/rootcolor/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/rootscrollgutter.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/rootscrollgutter/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/base/rootscrollgutter/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/rootscrolllock.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/rootscrolllock/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/base/rootscrolllock/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/scrollbar.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/scrollbar/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/base/scrollbar/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/svg.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/base/svg/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/base/svg/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/chunks.css +73 -0 collapsed to keep the page light
A node_modules/daisyui/colors/properties-extended.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/colors/properties.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/colors/responsive-extended.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/colors/responsive.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/colors/states-extended.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/colors/states.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/alert.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/alert/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/alert/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/avatar.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/avatar/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/avatar/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/badge.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/badge/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/badge/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/breadcrumbs.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/breadcrumbs/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/breadcrumbs/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/button.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/button/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/button/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/calendar.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/calendar/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/calendar/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/card.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/card/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/card/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/carousel.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/carousel/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/carousel/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/chat.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/chat/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/chat/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/checkbox.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/checkbox/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/checkbox/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/collapse.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/collapse/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/collapse/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/countdown.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/countdown/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/countdown/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/diff.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/diff/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/diff/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/divider.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/divider/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/divider/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/dock.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/dock/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/dock/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/drawer.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/drawer/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/drawer/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/dropdown.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/dropdown/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/dropdown/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/fieldset.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/fieldset/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/fieldset/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/fileinput.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/fileinput/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/fileinput/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/filter.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/filter/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/filter/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/footer.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/footer/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/footer/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/hero.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/hero/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/hero/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/indicator.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/indicator/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/indicator/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/input.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/input/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/input/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/kbd.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/kbd/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/kbd/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/label.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/label/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/label/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/link.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/link/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/link/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/list.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/list/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/list/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/loading.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/loading/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/loading/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/mask.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/mask/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/mask/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/menu.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/menu/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/menu/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/mockup.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/mockup/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/mockup/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/modal.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/modal/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/modal/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/navbar.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/navbar/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/navbar/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/progress.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/progress/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/progress/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/radialprogress.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/radialprogress/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/radialprogress/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/radio.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/radio/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/radio/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/range.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/range/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/range/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/rating.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/rating/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/rating/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/select.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/select/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/select/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/skeleton.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/skeleton/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/skeleton/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/stack.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/stack/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/stack/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/stat.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/stat/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/stat/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/status.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/status/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/status/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/steps.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/steps/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/steps/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/swap.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/swap/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/swap/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/tab.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/tab/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/tab/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/table.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/table/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/table/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/textarea.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/textarea/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/textarea/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/timeline.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/timeline/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/timeline/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/toast.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/toast/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/toast/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/toggle.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/toggle/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/toggle/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/tooltip.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/tooltip/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/tooltip/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/validator.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/components/validator/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/components/validator/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/daisyui.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/functions/addPrefix.js +156 -0 collapsed to keep the page light
A node_modules/daisyui/functions/plugin.js +11 -0 collapsed to keep the page light
A node_modules/daisyui/functions/pluginOptionsHandler.js +86 -0 collapsed to keep the page light
A node_modules/daisyui/functions/themeOrder.js +37 -0 collapsed to keep the page light
A node_modules/daisyui/functions/variables.js +29 -0 collapsed to keep the page light
A node_modules/daisyui/imports.js +68 -0 collapsed to keep the page light
A node_modules/daisyui/index.js +51 -0 collapsed to keep the page light
A node_modules/daisyui/package.json +72 -0 collapsed to keep the page light
A node_modules/daisyui/theme/abyss.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/abyss/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/abyss/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/acid.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/acid/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/acid/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/aqua.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/aqua/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/aqua/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/autumn.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/autumn/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/autumn/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/black.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/black/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/black/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/bumblebee.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/bumblebee/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/bumblebee/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/business.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/business/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/business/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/caramellatte.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/caramellatte/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/caramellatte/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/cmyk.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/cmyk/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/cmyk/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/coffee.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/coffee/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/coffee/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/corporate.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/corporate/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/corporate/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/cupcake.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/cupcake/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/cupcake/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/cyberpunk.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/cyberpunk/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/cyberpunk/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/dark.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/dark/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/dark/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/dim.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/dim/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/dim/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/dracula.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/dracula/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/dracula/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/emerald.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/emerald/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/emerald/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/fantasy.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/fantasy/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/fantasy/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/forest.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/forest/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/forest/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/garden.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/garden/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/garden/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/halloween.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/halloween/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/halloween/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/index.js +48 -0 collapsed to keep the page light
A node_modules/daisyui/theme/lemonade.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/lemonade/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/lemonade/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/light.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/light/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/light/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/lofi.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/lofi/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/lofi/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/luxury.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/luxury/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/luxury/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/night.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/night/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/night/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/nord.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/nord/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/nord/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/object.d.ts +74 -0 collapsed to keep the page light
A node_modules/daisyui/theme/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/pastel.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/pastel/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/pastel/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/retro.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/retro/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/retro/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/silk.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/silk/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/silk/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/sunset.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/sunset/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/sunset/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/synthwave.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/synthwave/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/synthwave/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/valentine.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/valentine/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/valentine/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/winter.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/winter/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/winter/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/theme/wireframe.css +31 -0 collapsed to keep the page light
A node_modules/daisyui/theme/wireframe/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/theme/wireframe/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/themes.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/glass.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/glass/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/glass/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/join.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/join/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/join/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/radius.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/radius/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/radius/object.js +1 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/typography.css +1 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/typography/index.js +7 -0 collapsed to keep the page light
A node_modules/daisyui/utilities/typography/object.js +1 -0 collapsed to keep the page light
A node_modules/detect-libc/LICENSE +201 -0 collapsed to keep the page light
A node_modules/detect-libc/README.md +163 -0 collapsed to keep the page light
A node_modules/detect-libc/index.d.ts +14 -0 collapsed to keep the page light
A node_modules/detect-libc/lib/detect-libc.js +267 -0 collapsed to keep the page light
A node_modules/detect-libc/lib/filesystem.js +41 -0 collapsed to keep the page light
A node_modules/detect-libc/lib/process.js +24 -0 collapsed to keep the page light
A node_modules/detect-libc/package.json +40 -0 collapsed to keep the page light
A node_modules/didyoumean/LICENSE +14 -0 collapsed to keep the page light
A node_modules/didyoumean/README.md +134 -0 collapsed to keep the page light
A node_modules/didyoumean/didYouMean-1.2.1.js +274 -0 collapsed to keep the page light
A node_modules/didyoumean/didYouMean-1.2.1.min.js +17 -0 collapsed to keep the page light
A node_modules/didyoumean/package.json +27 -0 collapsed to keep the page light
A node_modules/dlv/README.md +76 -0 collapsed to keep the page light
A node_modules/dlv/index.js +7 -0 collapsed to keep the page light
A node_modules/dlv/package.json +30 -0 collapsed to keep the page light
A node_modules/dotenv/CHANGELOG.md +488 -0 collapsed to keep the page light
A node_modules/dotenv/LICENSE +23 -0 collapsed to keep the page light
A node_modules/dotenv/README-es.md +448 -0 collapsed to keep the page light
A node_modules/dotenv/README.md +651 -0 collapsed to keep the page light
A node_modules/dotenv/config.d.ts +1 -0 collapsed to keep the page light
A node_modules/dotenv/config.js +9 -0 collapsed to keep the page light
A node_modules/dotenv/lib/cli-options.js +11 -0 collapsed to keep the page light
A node_modules/dotenv/lib/env-options.js +24 -0 collapsed to keep the page light
A node_modules/dotenv/lib/main.d.ts +153 -0 collapsed to keep the page light
A node_modules/dotenv/lib/main.js +361 -0 collapsed to keep the page light
A node_modules/dotenv/package.json +61 -0 collapsed to keep the page light
A node_modules/eastasianwidth/README.md +32 -0 collapsed to keep the page light
A node_modules/eastasianwidth/eastasianwidth.js +311 -0 collapsed to keep the page light
A node_modules/eastasianwidth/package.json +18 -0 collapsed to keep the page light
A node_modules/emoji-regex/README.md +137 -0 collapsed to keep the page light
A node_modules/emoji-regex/RGI_Emoji.d.ts +5 -0 collapsed to keep the page light
A node_modules/emoji-regex/RGI_Emoji.js +6 -0 collapsed to keep the page light
A node_modules/emoji-regex/es2015/RGI_Emoji.d.ts +5 -0 collapsed to keep the page light
A node_modules/emoji-regex/es2015/RGI_Emoji.js +6 -0 collapsed to keep the page light
A node_modules/emoji-regex/es2015/index.d.ts +5 -0 collapsed to keep the page light
A node_modules/emoji-regex/es2015/index.js +6 -0 collapsed to keep the page light
A node_modules/emoji-regex/es2015/text.d.ts +5 -0 collapsed to keep the page light
A node_modules/emoji-regex/es2015/text.js +6 -0 collapsed to keep the page light
A node_modules/emoji-regex/index.d.ts +5 -0 collapsed to keep the page light
A node_modules/emoji-regex/index.js +6 -0 collapsed to keep the page light
A node_modules/emoji-regex/package.json +52 -0 collapsed to keep the page light
A node_modules/emoji-regex/text.d.ts +5 -0 collapsed to keep the page light
A node_modules/emoji-regex/text.js +6 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/LICENSE +20 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/README.md +183 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/AliasFieldPlugin.js +108 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/AliasPlugin.js +183 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/AppendPlugin.js +49 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/CachedInputFileSystem.js +664 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/CloneBasenamePlugin.js +53 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/ConditionalPlugin.js +59 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js +98 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/DescriptionFileUtils.js +201 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/DirectoryExistsPlugin.js +63 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/ExportsFieldPlugin.js +200 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/ExtensionAliasPlugin.js +101 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/FileExistsPlugin.js +58 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/ImportsFieldPlugin.js +223 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/JoinRequestPartPlugin.js +75 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/JoinRequestPlugin.js +45 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/LogInfoPlugin.js +54 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/MainFieldPlugin.js +90 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js +9 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/ModulesInHierarchicalDirectoriesPlugin.js +87 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/ModulesInRootPlugin.js +49 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/NextPlugin.js +33 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/ParsePlugin.js +76 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/PnpPlugin.js +133 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/Resolver.js +800 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/ResolverFactory.js +728 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/RestrictionsPlugin.js +70 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/ResultPlugin.js +42 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/RootsPlugin.js +69 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/SelfReferencePlugin.js +82 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/SymlinkPlugin.js +100 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/SyncAsyncFileSystemDecorator.js +220 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/TryNextPlugin.js +41 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js +112 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/UseFilePlugin.js +55 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/createInnerContext.js +46 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/forEachBail.js +50 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/getInnerRequest.js +36 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/getPaths.js +45 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/index.js +203 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/util/entrypoints.js +573 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/util/identifier.js +69 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/util/module-browser.js +8 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/util/path.js +203 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/lib/util/process-browser.js +22 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/package.json +72 -0 collapsed to keep the page light
A node_modules/enhanced-resolve/types.d.ts +1135 -0 collapsed to keep the page light
A node_modules/fast-glob/LICENSE +21 -0 collapsed to keep the page light
A node_modules/fast-glob/README.md +830 -0 collapsed to keep the page light
A node_modules/fast-glob/node_modules/glob-parent/CHANGELOG.md +110 -0 collapsed to keep the page light
A node_modules/fast-glob/node_modules/glob-parent/LICENSE +15 -0 collapsed to keep the page light
A node_modules/fast-glob/node_modules/glob-parent/README.md +137 -0 collapsed to keep the page light
A node_modules/fast-glob/node_modules/glob-parent/index.js +42 -0 collapsed to keep the page light
A node_modules/fast-glob/node_modules/glob-parent/package.json +48 -0 collapsed to keep the page light
A node_modules/fast-glob/out/index.d.ts +40 -0 collapsed to keep the page light
A node_modules/fast-glob/out/index.js +102 -0 collapsed to keep the page light
A node_modules/fast-glob/out/managers/tasks.d.ts +22 -0 collapsed to keep the page light
A node_modules/fast-glob/out/managers/tasks.js +110 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/async.d.ts +9 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/async.js +23 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/filters/deep.d.ts +16 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/filters/deep.js +62 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/filters/entry.d.ts +16 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/filters/entry.js +63 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/filters/error.d.ts +8 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/filters/error.js +15 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/matchers/matcher.d.ts +33 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/matchers/matcher.js +45 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/matchers/partial.d.ts +4 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/matchers/partial.js +38 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/provider.d.ts +19 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/provider.js +48 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/stream.d.ts +11 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/stream.js +31 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/sync.d.ts +9 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/sync.js +23 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/transformers/entry.d.ts +8 -0 collapsed to keep the page light
A node_modules/fast-glob/out/providers/transformers/entry.js +26 -0 collapsed to keep the page light
A node_modules/fast-glob/out/readers/async.d.ts +10 -0 collapsed to keep the page light
A node_modules/fast-glob/out/readers/async.js +35 -0 collapsed to keep the page light
A node_modules/fast-glob/out/readers/reader.d.ts +15 -0 collapsed to keep the page light
A node_modules/fast-glob/out/readers/reader.js +33 -0 collapsed to keep the page light
A node_modules/fast-glob/out/readers/stream.d.ts +14 -0 collapsed to keep the page light
A node_modules/fast-glob/out/readers/stream.js +55 -0 collapsed to keep the page light
A node_modules/fast-glob/out/readers/sync.d.ts +12 -0 collapsed to keep the page light
A node_modules/fast-glob/out/readers/sync.js +43 -0 collapsed to keep the page light
A node_modules/fast-glob/out/settings.d.ts +164 -0 collapsed to keep the page light
A node_modules/fast-glob/out/settings.js +59 -0 collapsed to keep the page light
A node_modules/fast-glob/out/types/index.d.ts +31 -0 collapsed to keep the page light
A node_modules/fast-glob/out/types/index.js +2 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/array.d.ts +2 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/array.js +22 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/errno.d.ts +2 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/errno.js +7 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/fs.d.ts +4 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/fs.js +19 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/index.d.ts +8 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/index.js +17 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/path.d.ts +13 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/path.js +68 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/pattern.d.ts +47 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/pattern.js +188 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/stream.d.ts +4 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/stream.js +17 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/string.d.ts +2 -0 collapsed to keep the page light
A node_modules/fast-glob/out/utils/string.js +11 -0 collapsed to keep the page light
A node_modules/fast-glob/package.json +81 -0 collapsed to keep the page light
A node_modules/fastq/.github/dependabot.yml +11 -0 collapsed to keep the page light
A node_modules/fastq/.github/workflows/ci.yml +75 -0 collapsed to keep the page light
A node_modules/fastq/LICENSE +13 -0 collapsed to keep the page light
A node_modules/fastq/README.md +306 -0 collapsed to keep the page light
A node_modules/fastq/bench.js +66 -0 collapsed to keep the page light
A node_modules/fastq/example.js +14 -0 collapsed to keep the page light
A node_modules/fastq/example.mjs +11 -0 collapsed to keep the page light
A node_modules/fastq/index.d.ts +38 -0 collapsed to keep the page light
A node_modules/fastq/package.json +53 -0 collapsed to keep the page light
A node_modules/fastq/queue.js +311 -0 collapsed to keep the page light
A node_modules/fastq/test/example.ts +83 -0 collapsed to keep the page light
A node_modules/fastq/test/promise.js +248 -0 collapsed to keep the page light
A node_modules/fastq/test/test.js +642 -0 collapsed to keep the page light
A node_modules/fastq/test/tsconfig.json +11 -0 collapsed to keep the page light
A node_modules/fill-range/LICENSE +21 -0 collapsed to keep the page light
A node_modules/fill-range/README.md +237 -0 collapsed to keep the page light
A node_modules/fill-range/index.js +248 -0 collapsed to keep the page light
A node_modules/fill-range/package.json +74 -0 collapsed to keep the page light
A node_modules/foreground-child/LICENSE +15 -0 collapsed to keep the page light
A node_modules/foreground-child/README.md +128 -0 collapsed to keep the page light
A node_modules/foreground-child/package.json +111 -0 collapsed to keep the page light
A node_modules/function-bind/.eslintrc +21 -0 collapsed to keep the page light
A node_modules/function-bind/.github/FUNDING.yml +12 -0 collapsed to keep the page light
A node_modules/function-bind/.github/SECURITY.md +3 -0 collapsed to keep the page light
A node_modules/function-bind/.nycrc +13 -0 collapsed to keep the page light
A node_modules/function-bind/CHANGELOG.md +136 -0 collapsed to keep the page light
A node_modules/function-bind/LICENSE +20 -0 collapsed to keep the page light
A node_modules/function-bind/README.md +46 -0 collapsed to keep the page light
A node_modules/function-bind/implementation.js +84 -0 collapsed to keep the page light
A node_modules/function-bind/index.js +5 -0 collapsed to keep the page light
A node_modules/function-bind/package.json +87 -0 collapsed to keep the page light
A node_modules/function-bind/test/.eslintrc +9 -0 collapsed to keep the page light
A node_modules/function-bind/test/index.js +252 -0 collapsed to keep the page light
A node_modules/glob-parent/LICENSE +15 -0 collapsed to keep the page light
A node_modules/glob-parent/README.md +134 -0 collapsed to keep the page light
A node_modules/glob-parent/index.js +75 -0 collapsed to keep the page light
A node_modules/glob-parent/package.json +54 -0 collapsed to keep the page light
A node_modules/glob/LICENSE +15 -0 collapsed to keep the page light
A node_modules/glob/README.md +1265 -0 collapsed to keep the page light
A node_modules/glob/package.json +99 -0 collapsed to keep the page light
A node_modules/graceful-fs/LICENSE +15 -0 collapsed to keep the page light
A node_modules/graceful-fs/README.md +143 -0 collapsed to keep the page light
A node_modules/graceful-fs/clone.js +23 -0 collapsed to keep the page light
A node_modules/graceful-fs/graceful-fs.js +448 -0 collapsed to keep the page light
A node_modules/graceful-fs/legacy-streams.js +118 -0 collapsed to keep the page light
A node_modules/graceful-fs/package.json +53 -0 collapsed to keep the page light
A node_modules/graceful-fs/polyfills.js +355 -0 collapsed to keep the page light
A node_modules/hasown/.eslintrc +5 -0 collapsed to keep the page light
A node_modules/hasown/.github/FUNDING.yml +12 -0 collapsed to keep the page light
A node_modules/hasown/.nycrc +13 -0 collapsed to keep the page light
A node_modules/hasown/CHANGELOG.md +40 -0 collapsed to keep the page light
A node_modules/hasown/LICENSE +21 -0 collapsed to keep the page light
A node_modules/hasown/README.md +40 -0 collapsed to keep the page light
A node_modules/hasown/index.d.ts +3 -0 collapsed to keep the page light
A node_modules/hasown/index.js +8 -0 collapsed to keep the page light
A node_modules/hasown/package.json +92 -0 collapsed to keep the page light
A node_modules/hasown/tsconfig.json +6 -0 collapsed to keep the page light
A node_modules/is-binary-path/index.d.ts +17 -0 collapsed to keep the page light
A node_modules/is-binary-path/index.js +7 -0 collapsed to keep the page light
A node_modules/is-binary-path/license +9 -0 collapsed to keep the page light
A node_modules/is-binary-path/package.json +40 -0 collapsed to keep the page light
A node_modules/is-binary-path/readme.md +34 -0 collapsed to keep the page light
A node_modules/is-core-module/.eslintrc +18 -0 collapsed to keep the page light
A node_modules/is-core-module/.nycrc +9 -0 collapsed to keep the page light
A node_modules/is-core-module/CHANGELOG.md +205 -0 collapsed to keep the page light
A node_modules/is-core-module/LICENSE +20 -0 collapsed to keep the page light
A node_modules/is-core-module/README.md +40 -0 collapsed to keep the page light
A node_modules/is-core-module/core.json +161 -0 collapsed to keep the page light
A node_modules/is-core-module/index.js +69 -0 collapsed to keep the page light
A node_modules/is-core-module/package.json +76 -0 collapsed to keep the page light
A node_modules/is-core-module/test/index.js +154 -0 collapsed to keep the page light
A node_modules/is-extglob/LICENSE +21 -0 collapsed to keep the page light
A node_modules/is-extglob/README.md +107 -0 collapsed to keep the page light
A node_modules/is-extglob/index.js +20 -0 collapsed to keep the page light
A node_modules/is-extglob/package.json +69 -0 collapsed to keep the page light
A node_modules/is-fullwidth-code-point/index.d.ts +17 -0 collapsed to keep the page light
A node_modules/is-fullwidth-code-point/index.js +50 -0 collapsed to keep the page light
A node_modules/is-fullwidth-code-point/license +9 -0 collapsed to keep the page light
A node_modules/is-fullwidth-code-point/package.json +42 -0 collapsed to keep the page light
A node_modules/is-fullwidth-code-point/readme.md +39 -0 collapsed to keep the page light
A node_modules/is-glob/LICENSE +21 -0 collapsed to keep the page light
A node_modules/is-glob/README.md +206 -0 collapsed to keep the page light
A node_modules/is-glob/index.js +150 -0 collapsed to keep the page light
A node_modules/is-glob/package.json +81 -0 collapsed to keep the page light
A node_modules/is-number/LICENSE +21 -0 collapsed to keep the page light
A node_modules/is-number/README.md +187 -0 collapsed to keep the page light
A node_modules/is-number/index.js +18 -0 collapsed to keep the page light
A node_modules/is-number/package.json +82 -0 collapsed to keep the page light
A node_modules/isexe/.npmignore +2 -0 collapsed to keep the page light
A node_modules/isexe/LICENSE +15 -0 collapsed to keep the page light
A node_modules/isexe/README.md +51 -0 collapsed to keep the page light
A node_modules/isexe/index.js +57 -0 collapsed to keep the page light
A node_modules/isexe/mode.js +41 -0 collapsed to keep the page light
A node_modules/isexe/package.json +31 -0 collapsed to keep the page light
A node_modules/isexe/test/basic.js +221 -0 collapsed to keep the page light
A node_modules/isexe/windows.js +42 -0 collapsed to keep the page light
A node_modules/jackspeak/LICENSE.md +55 -0 collapsed to keep the page light
A node_modules/jackspeak/README.md +357 -0 collapsed to keep the page light
A node_modules/jackspeak/package.json +95 -0 collapsed to keep the page light
A node_modules/jiti/LICENSE +21 -0 collapsed to keep the page light
A node_modules/jiti/README.md +235 -0 collapsed to keep the page light
A node_modules/jiti/lib/jiti-cli.mjs +34 -0 collapsed to keep the page light
A node_modules/jiti/lib/jiti-hooks.mjs +117 -0 collapsed to keep the page light
A node_modules/jiti/lib/jiti-native.mjs +121 -0 collapsed to keep the page light
A node_modules/jiti/lib/jiti-register.d.mts +1 -0 collapsed to keep the page light
A node_modules/jiti/lib/jiti-register.mjs +4 -0 collapsed to keep the page light
A node_modules/jiti/lib/jiti.cjs +23 -0 collapsed to keep the page light
A node_modules/jiti/lib/jiti.d.cts +8 -0 collapsed to keep the page light
A node_modules/jiti/lib/jiti.d.mts +8 -0 collapsed to keep the page light
A node_modules/jiti/lib/jiti.mjs +22 -0 collapsed to keep the page light
A node_modules/jiti/lib/types.d.ts +260 -0 collapsed to keep the page light
A node_modules/jiti/package.json +134 -0 collapsed to keep the page light
A node_modules/lightningcss-linux-x64-gnu/LICENSE +373 -0 collapsed to keep the page light
A node_modules/lightningcss-linux-x64-gnu/README.md +1 -0 collapsed to keep the page light
A node_modules/lightningcss-linux-x64-gnu/lightningcss.linux-x64-gnu.node +0 -0 binary file: no text diff
binary file: no text diff
A node_modules/lightningcss-linux-x64-gnu/package.json +37 -0 collapsed to keep the page light
A node_modules/lightningcss-linux-x64-musl/LICENSE +373 -0 collapsed to keep the page light
A node_modules/lightningcss-linux-x64-musl/README.md +1 -0 collapsed to keep the page light
A node_modules/lightningcss-linux-x64-musl/lightningcss.linux-x64-musl.node +0 -0 binary file: no text diff
binary file: no text diff
A node_modules/lightningcss-linux-x64-musl/package.json +37 -0 collapsed to keep the page light
A node_modules/lightningcss/LICENSE +373 -0 collapsed to keep the page light
A node_modules/lightningcss/README.md +105 -0 collapsed to keep the page light
A node_modules/lightningcss/node/ast.d.ts +9716 -0 collapsed to keep the page light
A node_modules/lightningcss/node/ast.js.flow +10346 -0 collapsed to keep the page light
A node_modules/lightningcss/node/browserslistToTargets.js +48 -0 collapsed to keep the page light
A node_modules/lightningcss/node/composeVisitors.js +442 -0 collapsed to keep the page light
A node_modules/lightningcss/node/flags.js +28 -0 collapsed to keep the page light
A node_modules/lightningcss/node/index.d.ts +477 -0 collapsed to keep the page light
A node_modules/lightningcss/node/index.js +28 -0 collapsed to keep the page light
A node_modules/lightningcss/node/index.js.flow +824 -0 collapsed to keep the page light
A node_modules/lightningcss/node/index.mjs +4 -0 collapsed to keep the page light
A node_modules/lightningcss/node/targets.d.ts +40 -0 collapsed to keep the page light
A node_modules/lightningcss/node/targets.js.flow +39 -0 collapsed to keep the page light
A node_modules/lightningcss/package.json +109 -0 collapsed to keep the page light
A node_modules/lilconfig/LICENSE +21 -0 collapsed to keep the page light
A node_modules/lilconfig/package.json +42 -0 collapsed to keep the page light
A node_modules/lilconfig/readme.md +98 -0 collapsed to keep the page light
A node_modules/lilconfig/src/index.d.ts +54 -0 collapsed to keep the page light
A node_modules/lilconfig/src/index.js +460 -0 collapsed to keep the page light
A node_modules/lines-and-columns/LICENSE +21 -0 collapsed to keep the page light
A node_modules/lines-and-columns/README.md +33 -0 collapsed to keep the page light
A node_modules/lines-and-columns/build/index.d.ts +13 -0 collapsed to keep the page light
A node_modules/lines-and-columns/build/index.js +62 -0 collapsed to keep the page light
A node_modules/lines-and-columns/package.json +49 -0 collapsed to keep the page light
A node_modules/lru-cache/LICENSE +15 -0 collapsed to keep the page light
A node_modules/lru-cache/README.md +331 -0 collapsed to keep the page light
A node_modules/lru-cache/package.json +116 -0 collapsed to keep the page light
A node_modules/merge2/LICENSE +21 -0 collapsed to keep the page light
A node_modules/merge2/README.md +144 -0 collapsed to keep the page light
A node_modules/merge2/index.js +144 -0 collapsed to keep the page light
A node_modules/merge2/package.json +43 -0 collapsed to keep the page light
A node_modules/micromatch/LICENSE +21 -0 collapsed to keep the page light
A node_modules/micromatch/README.md +1024 -0 collapsed to keep the page light
A node_modules/micromatch/index.js +474 -0 collapsed to keep the page light
A node_modules/micromatch/package.json +119 -0 collapsed to keep the page light
A node_modules/minimatch/LICENSE +15 -0 collapsed to keep the page light
A node_modules/minimatch/README.md +454 -0 collapsed to keep the page light
A node_modules/minimatch/package.json +82 -0 collapsed to keep the page light
A node_modules/minipass/LICENSE +15 -0 collapsed to keep the page light
A node_modules/minipass/README.md +825 -0 collapsed to keep the page light
A node_modules/minipass/package.json +82 -0 collapsed to keep the page light
A node_modules/mri/index.d.ts +21 -0 collapsed to keep the page light
A node_modules/mri/lib/index.js +119 -0 collapsed to keep the page light
A node_modules/mri/lib/index.mjs +119 -0 collapsed to keep the page light
A node_modules/mri/license.md +21 -0 collapsed to keep the page light
A node_modules/mri/package.json +43 -0 collapsed to keep the page light
A node_modules/mri/readme.md +166 -0 collapsed to keep the page light
A node_modules/mz/HISTORY.md +66 -0 collapsed to keep the page light
A node_modules/mz/LICENSE +22 -0 collapsed to keep the page light
A node_modules/mz/README.md +106 -0 collapsed to keep the page light
A node_modules/mz/child_process.js +8 -0 collapsed to keep the page light
A node_modules/mz/crypto.js +9 -0 collapsed to keep the page light
A node_modules/mz/dns.js +16 -0 collapsed to keep the page light
A node_modules/mz/fs.js +62 -0 collapsed to keep the page light
A node_modules/mz/index.js +8 -0 collapsed to keep the page light
A node_modules/mz/package.json +44 -0 collapsed to keep the page light
A node_modules/mz/readline.js +64 -0 collapsed to keep the page light
A node_modules/mz/zlib.js +13 -0 collapsed to keep the page light
A node_modules/nanoid/LICENSE +20 -0 collapsed to keep the page light
A node_modules/nanoid/README.md +554 -0 collapsed to keep the page light
A node_modules/nanoid/async/index.browser.cjs +69 -0 collapsed to keep the page light
A node_modules/nanoid/async/index.browser.js +69 -0 collapsed to keep the page light
A node_modules/nanoid/async/index.cjs +71 -0 collapsed to keep the page light
A node_modules/nanoid/async/index.d.ts +56 -0 collapsed to keep the page light
A node_modules/nanoid/async/index.js +71 -0 collapsed to keep the page light
A node_modules/nanoid/async/index.native.js +57 -0 collapsed to keep the page light
A node_modules/nanoid/async/package.json +12 -0 collapsed to keep the page light
A node_modules/nanoid/bin/nanoid.cjs +55 -0 collapsed to keep the page light
A node_modules/nanoid/index.browser.cjs +72 -0 collapsed to keep the page light
A node_modules/nanoid/index.browser.js +72 -0 collapsed to keep the page light
A node_modules/nanoid/index.cjs +85 -0 collapsed to keep the page light
A node_modules/nanoid/index.d.cts +91 -0 collapsed to keep the page light
A node_modules/nanoid/index.d.ts +91 -0 collapsed to keep the page light
A node_modules/nanoid/index.js +85 -0 collapsed to keep the page light
A node_modules/nanoid/nanoid.js +1 -0 collapsed to keep the page light
A node_modules/nanoid/non-secure/index.cjs +34 -0 collapsed to keep the page light
A node_modules/nanoid/non-secure/index.d.ts +33 -0 collapsed to keep the page light
A node_modules/nanoid/non-secure/index.js +34 -0 collapsed to keep the page light
A node_modules/nanoid/non-secure/package.json +6 -0 collapsed to keep the page light
A node_modules/nanoid/package.json +88 -0 collapsed to keep the page light
A node_modules/nanoid/url-alphabet/index.cjs +7 -0 collapsed to keep the page light
A node_modules/nanoid/url-alphabet/index.js +7 -0 collapsed to keep the page light
A node_modules/nanoid/url-alphabet/package.json +6 -0 collapsed to keep the page light
A node_modules/node-addon-api/LICENSE.md +9 -0 collapsed to keep the page light
A node_modules/node-addon-api/README.md +319 -0 collapsed to keep the page light
A node_modules/node-addon-api/common.gypi +20 -0 collapsed to keep the page light
A node_modules/node-addon-api/except.gypi +25 -0 collapsed to keep the page light
A node_modules/node-addon-api/index.js +12 -0 collapsed to keep the page light
A node_modules/node-addon-api/napi-inl.deprecated.h +186 -0 collapsed to keep the page light
A node_modules/node-addon-api/napi-inl.h +6607 -0 collapsed to keep the page light
A node_modules/node-addon-api/napi.h +3201 -0 collapsed to keep the page light
A node_modules/node-addon-api/node_addon_api.gyp +32 -0 collapsed to keep the page light
A node_modules/node-addon-api/node_api.gyp +9 -0 collapsed to keep the page light
A node_modules/node-addon-api/noexcept.gypi +26 -0 collapsed to keep the page light
A node_modules/node-addon-api/nothing.c +0 -0
no textual change.
A node_modules/node-addon-api/package-support.json +21 -0 collapsed to keep the page light
A node_modules/node-addon-api/package.json +480 -0 collapsed to keep the page light
A node_modules/node-addon-api/tools/README.md +73 -0 collapsed to keep the page light
A node_modules/node-addon-api/tools/check-napi.js +99 -0 collapsed to keep the page light
A node_modules/node-addon-api/tools/clang-format.js +71 -0 collapsed to keep the page light
A node_modules/node-addon-api/tools/conversion.js +301 -0 collapsed to keep the page light
A node_modules/node-addon-api/tools/eslint-format.js +79 -0 collapsed to keep the page light
A node_modules/normalize-path/LICENSE +21 -0 collapsed to keep the page light
A node_modules/normalize-path/README.md +127 -0 collapsed to keep the page light
A node_modules/normalize-path/index.js +35 -0 collapsed to keep the page light
A node_modules/normalize-path/package.json +77 -0 collapsed to keep the page light
A node_modules/object-assign/index.js +90 -0 collapsed to keep the page light
A node_modules/object-assign/license +21 -0 collapsed to keep the page light
A node_modules/object-assign/package.json +42 -0 collapsed to keep the page light
A node_modules/object-assign/readme.md +61 -0 collapsed to keep the page light
A node_modules/object-hash/LICENSE +22 -0 collapsed to keep the page light
A node_modules/object-hash/index.js +453 -0 collapsed to keep the page light
A node_modules/object-hash/package.json +53 -0 collapsed to keep the page light
A node_modules/object-hash/readme.markdown +198 -0 collapsed to keep the page light
A node_modules/package-json-from-dist/LICENSE.md +63 -0 collapsed to keep the page light
A node_modules/package-json-from-dist/README.md +110 -0 collapsed to keep the page light
A node_modules/package-json-from-dist/package.json +68 -0 collapsed to keep the page light
A node_modules/path-key/index.d.ts +40 -0 collapsed to keep the page light
A node_modules/path-key/index.js +16 -0 collapsed to keep the page light
A node_modules/path-key/license +9 -0 collapsed to keep the page light
A node_modules/path-key/package.json +39 -0 collapsed to keep the page light
A node_modules/path-key/readme.md +61 -0 collapsed to keep the page light
A node_modules/path-parse/LICENSE +21 -0 collapsed to keep the page light
A node_modules/path-parse/README.md +42 -0 collapsed to keep the page light
A node_modules/path-parse/index.js +75 -0 collapsed to keep the page light
A node_modules/path-parse/package.json +33 -0 collapsed to keep the page light
A node_modules/path-scurry/LICENSE.md +55 -0 collapsed to keep the page light
A node_modules/path-scurry/README.md +636 -0 collapsed to keep the page light
A node_modules/path-scurry/package.json +89 -0 collapsed to keep the page light
A node_modules/picocolors/LICENSE +15 -0 collapsed to keep the page light
A node_modules/picocolors/README.md +21 -0 collapsed to keep the page light
A node_modules/picocolors/package.json +25 -0 collapsed to keep the page light
A node_modules/picocolors/picocolors.browser.js +4 -0 collapsed to keep the page light
A node_modules/picocolors/picocolors.d.ts +5 -0 collapsed to keep the page light
A node_modules/picocolors/picocolors.js +75 -0 collapsed to keep the page light
A node_modules/picocolors/types.d.ts +51 -0 collapsed to keep the page light
A node_modules/picomatch/CHANGELOG.md +136 -0 collapsed to keep the page light
A node_modules/picomatch/LICENSE +21 -0 collapsed to keep the page light
A node_modules/picomatch/README.md +708 -0 collapsed to keep the page light
A node_modules/picomatch/index.js +3 -0 collapsed to keep the page light
A node_modules/picomatch/lib/constants.js +179 -0 collapsed to keep the page light
A node_modules/picomatch/lib/parse.js +1091 -0 collapsed to keep the page light
A node_modules/picomatch/lib/picomatch.js +342 -0 collapsed to keep the page light
A node_modules/picomatch/lib/scan.js +391 -0 collapsed to keep the page light
A node_modules/picomatch/lib/utils.js +64 -0 collapsed to keep the page light
A node_modules/picomatch/package.json +81 -0 collapsed to keep the page light
A node_modules/pify/index.js +68 -0 collapsed to keep the page light
A node_modules/pify/license +21 -0 collapsed to keep the page light
A node_modules/pify/package.json +48 -0 collapsed to keep the page light
A node_modules/pify/readme.md +119 -0 collapsed to keep the page light
A node_modules/pirates/LICENSE +21 -0 collapsed to keep the page light
A node_modules/pirates/README.md +69 -0 collapsed to keep the page light
A node_modules/pirates/index.d.ts +82 -0 collapsed to keep the page light
A node_modules/pirates/lib/index.js +139 -0 collapsed to keep the page light
A node_modules/pirates/package.json +74 -0 collapsed to keep the page light
A node_modules/postcss-import/LICENSE +20 -0 collapsed to keep the page light
A node_modules/postcss-import/README.md +244 -0 collapsed to keep the page light
A node_modules/postcss-import/index.js +420 -0 collapsed to keep the page light
A node_modules/postcss-import/lib/assign-layer-names.js +17 -0 collapsed to keep the page light
A node_modules/postcss-import/lib/data-url.js +17 -0 collapsed to keep the page light
A node_modules/postcss-import/lib/join-layer.js +9 -0 collapsed to keep the page light
A node_modules/postcss-import/lib/join-media.js +28 -0 collapsed to keep the page light
A node_modules/postcss-import/lib/load-content.js +12 -0 collapsed to keep the page light
A node_modules/postcss-import/lib/parse-statements.js +172 -0 collapsed to keep the page light
A node_modules/postcss-import/lib/process-content.js +59 -0 collapsed to keep the page light
A node_modules/postcss-import/lib/resolve-id.js +42 -0 collapsed to keep the page light
A node_modules/postcss-import/package.json +65 -0 collapsed to keep the page light
A node_modules/postcss-js/LICENSE +20 -0 collapsed to keep the page light
A node_modules/postcss-js/README.md +22 -0 collapsed to keep the page light
A node_modules/postcss-js/async.js +15 -0 collapsed to keep the page light
A node_modules/postcss-js/index.js +11 -0 collapsed to keep the page light
A node_modules/postcss-js/index.mjs +8 -0 collapsed to keep the page light
A node_modules/postcss-js/objectifier.js +85 -0 collapsed to keep the page light
A node_modules/postcss-js/package.json +42 -0 collapsed to keep the page light
A node_modules/postcss-js/parser.js +104 -0 collapsed to keep the page light
A node_modules/postcss-js/process-result.js +11 -0 collapsed to keep the page light
A node_modules/postcss-js/sync.js +12 -0 collapsed to keep the page light
A node_modules/postcss-load-config/LICENSE +20 -0 collapsed to keep the page light
A node_modules/postcss-load-config/README.md +466 -0 collapsed to keep the page light
A node_modules/postcss-load-config/node_modules/lilconfig/LICENSE +21 -0 collapsed to keep the page light
A node_modules/postcss-load-config/node_modules/lilconfig/package.json +42 -0 collapsed to keep the page light
A node_modules/postcss-load-config/node_modules/lilconfig/readme.md +98 -0 collapsed to keep the page light
A node_modules/postcss-load-config/node_modules/lilconfig/src/index.d.ts +54 -0 collapsed to keep the page light
A node_modules/postcss-load-config/node_modules/lilconfig/src/index.js +457 -0 collapsed to keep the page light
A node_modules/postcss-load-config/package.json +54 -0 collapsed to keep the page light
A node_modules/postcss-load-config/src/index.d.ts +65 -0 collapsed to keep the page light
A node_modules/postcss-load-config/src/index.js +185 -0 collapsed to keep the page light
A node_modules/postcss-load-config/src/options.js +47 -0 collapsed to keep the page light
A node_modules/postcss-load-config/src/plugins.js +85 -0 collapsed to keep the page light
A node_modules/postcss-load-config/src/req.js +10 -0 collapsed to keep the page light
A node_modules/postcss-nested/LICENSE +20 -0 collapsed to keep the page light
A node_modules/postcss-nested/README.md +85 -0 collapsed to keep the page light
A node_modules/postcss-nested/index.d.ts +41 -0 collapsed to keep the page light
A node_modules/postcss-nested/index.js +361 -0 collapsed to keep the page light
A node_modules/postcss-nested/package.json +34 -0 collapsed to keep the page light
A node_modules/postcss-selector-parser/API.md +872 -0 collapsed to keep the page light
A node_modules/postcss-selector-parser/CHANGELOG.md +549 -0 collapsed to keep the page light
A node_modules/postcss-selector-parser/LICENSE-MIT +22 -0 collapsed to keep the page light
A node_modules/postcss-selector-parser/README.md +49 -0 collapsed to keep the page light
A node_modules/postcss-selector-parser/package.json +80 -0 collapsed to keep the page light
A node_modules/postcss-selector-parser/postcss-selector-parser.d.ts +555 -0 collapsed to keep the page light
A node_modules/postcss-value-parser/LICENSE +22 -0 collapsed to keep the page light
A node_modules/postcss-value-parser/README.md +263 -0 collapsed to keep the page light
A node_modules/postcss-value-parser/lib/index.d.ts +177 -0 collapsed to keep the page light
A node_modules/postcss-value-parser/lib/index.js +28 -0 collapsed to keep the page light
A node_modules/postcss-value-parser/lib/parse.js +321 -0 collapsed to keep the page light
A node_modules/postcss-value-parser/lib/stringify.js +48 -0 collapsed to keep the page light
A node_modules/postcss-value-parser/lib/unit.js +120 -0 collapsed to keep the page light
A node_modules/postcss-value-parser/lib/walk.js +22 -0 collapsed to keep the page light
A node_modules/postcss-value-parser/package.json +58 -0 collapsed to keep the page light
A node_modules/postcss/LICENSE +20 -0 collapsed to keep the page light
A node_modules/postcss/README.md +28 -0 collapsed to keep the page light
A node_modules/postcss/lib/at-rule.d.ts +140 -0 collapsed to keep the page light
A node_modules/postcss/lib/at-rule.js +25 -0 collapsed to keep the page light
A node_modules/postcss/lib/comment.d.ts +68 -0 collapsed to keep the page light
A node_modules/postcss/lib/comment.js +13 -0 collapsed to keep the page light
A node_modules/postcss/lib/container.d.ts +480 -0 collapsed to keep the page light
A node_modules/postcss/lib/container.js +447 -0 collapsed to keep the page light
A node_modules/postcss/lib/css-syntax-error.d.ts +248 -0 collapsed to keep the page light
A node_modules/postcss/lib/css-syntax-error.js +133 -0 collapsed to keep the page light
A node_modules/postcss/lib/declaration.d.ts +151 -0 collapsed to keep the page light
A node_modules/postcss/lib/declaration.js +24 -0 collapsed to keep the page light
A node_modules/postcss/lib/document.d.ts +69 -0 collapsed to keep the page light
A node_modules/postcss/lib/document.js +33 -0 collapsed to keep the page light
A node_modules/postcss/lib/fromJSON.d.ts +9 -0 collapsed to keep the page light
A node_modules/postcss/lib/fromJSON.js +54 -0 collapsed to keep the page light
A node_modules/postcss/lib/input.d.ts +206 -0 collapsed to keep the page light
A node_modules/postcss/lib/input.js +251 -0 collapsed to keep the page light
A node_modules/postcss/lib/lazy-result.d.ts +190 -0 collapsed to keep the page light
A node_modules/postcss/lib/lazy-result.js +550 -0 collapsed to keep the page light
A node_modules/postcss/lib/list.d.ts +60 -0 collapsed to keep the page light
A node_modules/postcss/lib/list.js +58 -0 collapsed to keep the page light
A node_modules/postcss/lib/map-generator.js +368 -0 collapsed to keep the page light
A node_modules/postcss/lib/no-work-result.d.ts +46 -0 collapsed to keep the page light
A node_modules/postcss/lib/no-work-result.js +138 -0 collapsed to keep the page light
A node_modules/postcss/lib/node.d.ts +541 -0 collapsed to keep the page light
A node_modules/postcss/lib/node.js +434 -0 collapsed to keep the page light
A node_modules/postcss/lib/parse.d.ts +9 -0 collapsed to keep the page light
A node_modules/postcss/lib/parse.js +42 -0 collapsed to keep the page light
A node_modules/postcss/lib/parser.js +611 -0 collapsed to keep the page light
A node_modules/postcss/lib/postcss.d.mts +69 -0 collapsed to keep the page light
A node_modules/postcss/lib/postcss.d.ts +458 -0 collapsed to keep the page light
A node_modules/postcss/lib/postcss.js +101 -0 collapsed to keep the page light
A node_modules/postcss/lib/postcss.mjs +30 -0 collapsed to keep the page light
A node_modules/postcss/lib/previous-map.d.ts +81 -0 collapsed to keep the page light
A node_modules/postcss/lib/previous-map.js +144 -0 collapsed to keep the page light
A node_modules/postcss/lib/processor.d.ts +115 -0 collapsed to keep the page light
A node_modules/postcss/lib/processor.js +67 -0 collapsed to keep the page light
A node_modules/postcss/lib/result.d.ts +205 -0 collapsed to keep the page light
A node_modules/postcss/lib/result.js +42 -0 collapsed to keep the page light
A node_modules/postcss/lib/root.d.ts +87 -0 collapsed to keep the page light
A node_modules/postcss/lib/root.js +61 -0 collapsed to keep the page light
A node_modules/postcss/lib/rule.d.ts +126 -0 collapsed to keep the page light
A node_modules/postcss/lib/rule.js +27 -0 collapsed to keep the page light
A node_modules/postcss/lib/stringifier.d.ts +46 -0 collapsed to keep the page light
A node_modules/postcss/lib/stringifier.js +353 -0 collapsed to keep the page light
A node_modules/postcss/lib/stringify.d.ts +9 -0 collapsed to keep the page light
A node_modules/postcss/lib/stringify.js +11 -0 collapsed to keep the page light
A node_modules/postcss/lib/symbols.js +5 -0 collapsed to keep the page light
A node_modules/postcss/lib/terminal-highlight.js +70 -0 collapsed to keep the page light
A node_modules/postcss/lib/tokenize.js +266 -0 collapsed to keep the page light
A node_modules/postcss/lib/warn-once.js +13 -0 collapsed to keep the page light
A node_modules/postcss/lib/warning.d.ts +147 -0 collapsed to keep the page light
A node_modules/postcss/lib/warning.js +37 -0 collapsed to keep the page light
A node_modules/postcss/package.json +88 -0 collapsed to keep the page light
A node_modules/prettier-plugin-tailwindcss/LICENSE +21 -0 collapsed to keep the page light
A node_modules/prettier-plugin-tailwindcss/README.md +174 -0 collapsed to keep the page light
A node_modules/prettier-plugin-tailwindcss/package.json +144 -0 collapsed to keep the page light
A node_modules/prettier/LICENSE +7 -0 collapsed to keep the page light
A node_modules/prettier/README.md +108 -0 collapsed to keep the page light
A node_modules/prettier/THIRD-PARTY-NOTICES.md +4416 -0 collapsed to keep the page light
A node_modules/prettier/bin/prettier.cjs +68 -0 collapsed to keep the page light
A node_modules/prettier/doc.d.ts +254 -0 collapsed to keep the page light
A node_modules/prettier/doc.js +1261 -0 collapsed to keep the page light
A node_modules/prettier/doc.mjs +1233 -0 collapsed to keep the page light
A node_modules/prettier/index.cjs +682 -0
| @@ -0,0 +1,682 @@ | |||
| 1 | + | "use strict"; | |
| 2 | + | var __create = Object.create; | |
| 3 | + | var __defProp = Object.defineProperty; | |
| 4 | + | var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
| 5 | + | var __getOwnPropNames = Object.getOwnPropertyNames; | |
| 6 | + | var __getProtoOf = Object.getPrototypeOf; | |
| 7 | + | var __hasOwnProp = Object.prototype.hasOwnProperty; | |
| 8 | + | var __esm = (fn, res) => function __init() { | |
| 9 | + | return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; | |
| 10 | + | }; | |
| 11 | + | var __commonJS = (cb, mod) => function __require() { | |
| 12 | + | return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; | |
| 13 | + | }; | |
| 14 | + | var __export = (target, all) => { | |
| 15 | + | for (var name in all) | |
| 16 | + | __defProp(target, name, { get: all[name], enumerable: true }); | |
| 17 | + | }; | |
| 18 | + | var __copyProps = (to, from, except, desc) => { | |
| 19 | + | if (from && typeof from === "object" || typeof from === "function") { | |
| 20 | + | for (let key of __getOwnPropNames(from)) | |
| 21 | + | if (!__hasOwnProp.call(to, key) && key !== except) | |
| 22 | + | __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | |
| 23 | + | } | |
| 24 | + | return to; | |
| 25 | + | }; | |
| 26 | + | var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | |
| 27 | + | // If the importer is in node compatibility mode or this is not an ESM | |
| 28 | + | // file that has been converted to a CommonJS file using a Babel- | |
| 29 | + | // compatible transform (i.e. "__esModule" has not been set), then set | |
| 30 | + | // "default" to the CommonJS "module.exports" for node compatibility. | |
| 31 | + | isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | |
| 32 | + | mod | |
| 33 | + | )); | |
| 34 | + | var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | |
| 35 | + | ||
| 36 | + | // src/utils/skip.js | |
| 37 | + | function skip(characters) { | |
| 38 | + | return (text, startIndex, options) => { | |
| 39 | + | const backwards = Boolean(options == null ? void 0 : options.backwards); | |
| 40 | + | if (startIndex === false) { | |
| 41 | + | return false; | |
| 42 | + | } | |
| 43 | + | const { length } = text; | |
| 44 | + | let cursor = startIndex; | |
| 45 | + | while (cursor >= 0 && cursor < length) { | |
| 46 | + | const character = text.charAt(cursor); | |
| 47 | + | if (characters instanceof RegExp) { | |
| 48 | + | if (!characters.test(character)) { | |
| 49 | + | return cursor; | |
| 50 | + | } | |
| 51 | + | } else if (!characters.includes(character)) { | |
| 52 | + | return cursor; | |
| 53 | + | } | |
| 54 | + | backwards ? cursor-- : cursor++; | |
| 55 | + | } | |
| 56 | + | if (cursor === -1 || cursor === length) { | |
| 57 | + | return cursor; | |
| 58 | + | } | |
| 59 | + | return false; | |
| 60 | + | }; | |
| 61 | + | } | |
| 62 | + | var skipWhitespace, skipSpaces, skipToLineEnd, skipEverythingButNewLine; | |
| 63 | + | var init_skip = __esm({ | |
| 64 | + | "src/utils/skip.js"() { | |
| 65 | + | skipWhitespace = skip(/\s/u); | |
| 66 | + | skipSpaces = skip(" "); | |
| 67 | + | skipToLineEnd = skip(",; "); | |
| 68 | + | skipEverythingButNewLine = skip(/[^\n\r]/u); | |
| 69 | + | } | |
| 70 | + | }); | |
| 71 | + | ||
| 72 | + | // src/utils/skip-inline-comment.js | |
| 73 | + | function skipInlineComment(text, startIndex) { | |
| 74 | + | if (startIndex === false) { | |
| 75 | + | return false; | |
| 76 | + | } | |
| 77 | + | if (text.charAt(startIndex) === "/" && text.charAt(startIndex + 1) === "*") { | |
| 78 | + | for (let i = startIndex + 2; i < text.length; ++i) { | |
| 79 | + | if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") { | |
| 80 | + | return i + 2; | |
| 81 | + | } | |
| 82 | + | } | |
| 83 | + | } | |
| 84 | + | return startIndex; | |
| 85 | + | } | |
| 86 | + | var skip_inline_comment_default; | |
| 87 | + | var init_skip_inline_comment = __esm({ | |
| 88 | + | "src/utils/skip-inline-comment.js"() { | |
| 89 | + | skip_inline_comment_default = skipInlineComment; | |
| 90 | + | } | |
| 91 | + | }); | |
| 92 | + | ||
| 93 | + | // src/utils/skip-newline.js | |
| 94 | + | function skipNewline(text, startIndex, options) { | |
| 95 | + | const backwards = Boolean(options == null ? void 0 : options.backwards); | |
| 96 | + | if (startIndex === false) { | |
| 97 | + | return false; | |
| 98 | + | } | |
| 99 | + | const character = text.charAt(startIndex); | |
| 100 | + | if (backwards) { | |
| 101 | + | if (text.charAt(startIndex - 1) === "\r" && character === "\n") { | |
| 102 | + | return startIndex - 2; | |
| 103 | + | } | |
| 104 | + | if (character === "\n" || character === "\r" || character === "\u2028" || character === "\u2029") { | |
| 105 | + | return startIndex - 1; | |
| 106 | + | } | |
| 107 | + | } else { | |
| 108 | + | if (character === "\r" && text.charAt(startIndex + 1) === "\n") { | |
| 109 | + | return startIndex + 2; | |
| 110 | + | } | |
| 111 | + | if (character === "\n" || character === "\r" || character === "\u2028" || character === "\u2029") { | |
| 112 | + | return startIndex + 1; | |
| 113 | + | } | |
| 114 | + | } | |
| 115 | + | return startIndex; | |
| 116 | + | } | |
| 117 | + | var skip_newline_default; | |
| 118 | + | var init_skip_newline = __esm({ | |
| 119 | + | "src/utils/skip-newline.js"() { | |
| 120 | + | skip_newline_default = skipNewline; | |
| 121 | + | } | |
| 122 | + | }); | |
| 123 | + | ||
| 124 | + | // src/utils/skip-trailing-comment.js | |
| 125 | + | function skipTrailingComment(text, startIndex) { | |
| 126 | + | if (startIndex === false) { | |
| 127 | + | return false; | |
| 128 | + | } | |
| 129 | + | if (text.charAt(startIndex) === "/" && text.charAt(startIndex + 1) === "/") { | |
| 130 | + | return skipEverythingButNewLine(text, startIndex); | |
| 131 | + | } | |
| 132 | + | return startIndex; | |
| 133 | + | } | |
| 134 | + | var skip_trailing_comment_default; | |
| 135 | + | var init_skip_trailing_comment = __esm({ | |
| 136 | + | "src/utils/skip-trailing-comment.js"() { | |
| 137 | + | init_skip(); | |
| 138 | + | skip_trailing_comment_default = skipTrailingComment; | |
| 139 | + | } | |
| 140 | + | }); | |
| 141 | + | ||
| 142 | + | // src/utils/get-next-non-space-non-comment-character-index.js | |
| 143 | + | function getNextNonSpaceNonCommentCharacterIndex(text, startIndex) { | |
| 144 | + | let oldIdx = null; | |
| 145 | + | let nextIdx = startIndex; | |
| 146 | + | while (nextIdx !== oldIdx) { | |
| 147 | + | oldIdx = nextIdx; | |
| 148 | + | nextIdx = skipSpaces(text, nextIdx); | |
| 149 | + | nextIdx = skip_inline_comment_default(text, nextIdx); | |
| 150 | + | nextIdx = skip_trailing_comment_default(text, nextIdx); | |
| 151 | + | nextIdx = skip_newline_default(text, nextIdx); | |
| 152 | + | } | |
| 153 | + | return nextIdx; | |
| 154 | + | } | |
| 155 | + | var get_next_non_space_non_comment_character_index_default; | |
| 156 | + | var init_get_next_non_space_non_comment_character_index = __esm({ | |
| 157 | + | "src/utils/get-next-non-space-non-comment-character-index.js"() { | |
| 158 | + | init_skip(); | |
| 159 | + | init_skip_inline_comment(); | |
| 160 | + | init_skip_newline(); | |
| 161 | + | init_skip_trailing_comment(); | |
| 162 | + | get_next_non_space_non_comment_character_index_default = getNextNonSpaceNonCommentCharacterIndex; | |
| 163 | + | } | |
| 164 | + | }); | |
| 165 | + | ||
| 166 | + | // src/utils/has-newline.js | |
| 167 | + | function hasNewline(text, startIndex, options = {}) { | |
| 168 | + | const idx = skipSpaces( | |
| 169 | + | text, | |
| 170 | + | options.backwards ? startIndex - 1 : startIndex, | |
| 171 | + | options | |
| 172 | + | ); | |
| 173 | + | const idx2 = skip_newline_default(text, idx, options); | |
| 174 | + | return idx !== idx2; | |
| 175 | + | } | |
| 176 | + | var has_newline_default; | |
| 177 | + | var init_has_newline = __esm({ | |
| 178 | + | "src/utils/has-newline.js"() { | |
| 179 | + | init_skip(); | |
| 180 | + | init_skip_newline(); | |
| 181 | + | has_newline_default = hasNewline; | |
| 182 | + | } | |
| 183 | + | }); | |
| 184 | + | ||
| 185 | + | // src/utils/is-next-line-empty.js | |
| 186 | + | function isNextLineEmpty(text, startIndex) { | |
| 187 | + | let oldIdx = null; | |
| 188 | + | let idx = startIndex; | |
| 189 | + | while (idx !== oldIdx) { | |
| 190 | + | oldIdx = idx; | |
| 191 | + | idx = skipToLineEnd(text, idx); | |
| 192 | + | idx = skip_inline_comment_default(text, idx); | |
| 193 | + | idx = skipSpaces(text, idx); | |
| 194 | + | } | |
| 195 | + | idx = skip_trailing_comment_default(text, idx); | |
| 196 | + | idx = skip_newline_default(text, idx); | |
| 197 | + | return idx !== false && has_newline_default(text, idx); | |
| 198 | + | } | |
| 199 | + | var is_next_line_empty_default; | |
| 200 | + | var init_is_next_line_empty = __esm({ | |
| 201 | + | "src/utils/is-next-line-empty.js"() { | |
| 202 | + | init_has_newline(); | |
| 203 | + | init_skip(); | |
| 204 | + | init_skip_inline_comment(); | |
| 205 | + | init_skip_newline(); | |
| 206 | + | init_skip_trailing_comment(); | |
| 207 | + | is_next_line_empty_default = isNextLineEmpty; | |
| 208 | + | } | |
| 209 | + | }); | |
| 210 | + | ||
| 211 | + | // src/utils/is-previous-line-empty.js | |
| 212 | + | function isPreviousLineEmpty(text, startIndex) { | |
| 213 | + | let idx = startIndex - 1; | |
| 214 | + | idx = skipSpaces(text, idx, { backwards: true }); | |
| 215 | + | idx = skip_newline_default(text, idx, { backwards: true }); | |
| 216 | + | idx = skipSpaces(text, idx, { backwards: true }); | |
| 217 | + | const idx2 = skip_newline_default(text, idx, { backwards: true }); | |
| 218 | + | return idx !== idx2; | |
| 219 | + | } | |
| 220 | + | var is_previous_line_empty_default; | |
| 221 | + | var init_is_previous_line_empty = __esm({ | |
| 222 | + | "src/utils/is-previous-line-empty.js"() { | |
| 223 | + | init_skip(); | |
| 224 | + | init_skip_newline(); | |
| 225 | + | is_previous_line_empty_default = isPreviousLineEmpty; | |
| 226 | + | } | |
| 227 | + | }); | |
| 228 | + | ||
| 229 | + | // src/main/comments/utils.js | |
| 230 | + | function describeNodeForDebugging(node) { | |
| 231 | + | const nodeType = node.type || node.kind || "(unknown type)"; | |
| 232 | + | let nodeName = String( | |
| 233 | + | node.name || node.id && (typeof node.id === "object" ? node.id.name : node.id) || node.key && (typeof node.key === "object" ? node.key.name : node.key) || node.value && (typeof node.value === "object" ? "" : String(node.value)) || node.operator || "" | |
| 234 | + | ); | |
| 235 | + | if (nodeName.length > 20) { | |
| 236 | + | nodeName = nodeName.slice(0, 19) + "\u2026"; | |
| 237 | + | } | |
| 238 | + | return nodeType + (nodeName ? " " + nodeName : ""); | |
| 239 | + | } | |
| 240 | + | function addCommentHelper(node, comment) { | |
| 241 | + | const comments = node.comments ?? (node.comments = []); | |
| 242 | + | comments.push(comment); | |
| 243 | + | comment.printed = false; | |
| 244 | + | comment.nodeDescription = describeNodeForDebugging(node); | |
| 245 | + | } | |
| 246 | + | function addLeadingComment(node, comment) { | |
| 247 | + | comment.leading = true; | |
| 248 | + | comment.trailing = false; | |
| 249 | + | addCommentHelper(node, comment); | |
| 250 | + | } | |
| 251 | + | function addDanglingComment(node, comment, marker) { | |
| 252 | + | comment.leading = false; | |
| 253 | + | comment.trailing = false; | |
| 254 | + | if (marker) { | |
| 255 | + | comment.marker = marker; | |
| 256 | + | } | |
| 257 | + | addCommentHelper(node, comment); | |
| 258 | + | } | |
| 259 | + | function addTrailingComment(node, comment) { | |
| 260 | + | comment.leading = false; | |
| 261 | + | comment.trailing = true; | |
| 262 | + | addCommentHelper(node, comment); | |
| 263 | + | } | |
| 264 | + | var init_utils = __esm({ | |
| 265 | + | "src/main/comments/utils.js"() { | |
| 266 | + | } | |
| 267 | + | }); | |
| 268 | + | ||
| 269 | + | // src/utils/get-alignment-size.js | |
| 270 | + | function getAlignmentSize(text, tabWidth, startIndex = 0) { | |
| 271 | + | let size = 0; | |
| 272 | + | for (let i = startIndex; i < text.length; ++i) { | |
| 273 | + | if (text[i] === " ") { | |
| 274 | + | size = size + tabWidth - size % tabWidth; | |
| 275 | + | } else { | |
| 276 | + | size++; | |
| 277 | + | } | |
| 278 | + | } | |
| 279 | + | return size; | |
| 280 | + | } | |
| 281 | + | var get_alignment_size_default; | |
| 282 | + | var init_get_alignment_size = __esm({ | |
| 283 | + | "src/utils/get-alignment-size.js"() { | |
| 284 | + | get_alignment_size_default = getAlignmentSize; | |
| 285 | + | } | |
| 286 | + | }); | |
| 287 | + | ||
| 288 | + | // src/utils/get-indent-size.js | |
| 289 | + | function getIndentSize(value, tabWidth) { | |
| 290 | + | const lastNewlineIndex = value.lastIndexOf("\n"); | |
| 291 | + | if (lastNewlineIndex === -1) { | |
| 292 | + | return 0; | |
| 293 | + | } | |
| 294 | + | return get_alignment_size_default( | |
| 295 | + | // All the leading whitespaces | |
| 296 | + | value.slice(lastNewlineIndex + 1).match(/^[\t ]*/u)[0], | |
| 297 | + | tabWidth | |
| 298 | + | ); | |
| 299 | + | } | |
| 300 | + | var get_indent_size_default; | |
| 301 | + | var init_get_indent_size = __esm({ | |
| 302 | + | "src/utils/get-indent-size.js"() { | |
| 303 | + | init_get_alignment_size(); | |
| 304 | + | get_indent_size_default = getIndentSize; | |
| 305 | + | } | |
| 306 | + | }); | |
| 307 | + | ||
| 308 | + | // node_modules/escape-string-regexp/index.js | |
| 309 | + | function escapeStringRegexp(string) { | |
| 310 | + | if (typeof string !== "string") { | |
| 311 | + | throw new TypeError("Expected a string"); | |
| 312 | + | } | |
| 313 | + | return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); | |
| 314 | + | } | |
| 315 | + | var init_escape_string_regexp = __esm({ | |
| 316 | + | "node_modules/escape-string-regexp/index.js"() { | |
| 317 | + | } | |
| 318 | + | }); | |
| 319 | + | ||
| 320 | + | // src/utils/get-max-continuous-count.js | |
| 321 | + | function getMaxContinuousCount(text, searchString) { | |
| 322 | + | const results = text.match( | |
| 323 | + | new RegExp(`(${escapeStringRegexp(searchString)})+`, "gu") | |
| 324 | + | ); | |
| 325 | + | if (results === null) { | |
| 326 | + | return 0; | |
| 327 | + | } | |
| 328 | + | return results.reduce( | |
| 329 | + | (maxCount, result) => Math.max(maxCount, result.length / searchString.length), | |
| 330 | + | 0 | |
| 331 | + | ); | |
| 332 | + | } | |
| 333 | + | var get_max_continuous_count_default; | |
| 334 | + | var init_get_max_continuous_count = __esm({ | |
| 335 | + | "src/utils/get-max-continuous-count.js"() { | |
| 336 | + | init_escape_string_regexp(); | |
| 337 | + | get_max_continuous_count_default = getMaxContinuousCount; | |
| 338 | + | } | |
| 339 | + | }); | |
| 340 | + | ||
| 341 | + | // src/utils/get-next-non-space-non-comment-character.js | |
| 342 | + | function getNextNonSpaceNonCommentCharacter(text, startIndex) { | |
| 343 | + | const index = get_next_non_space_non_comment_character_index_default(text, startIndex); | |
| 344 | + | return index === false ? "" : text.charAt(index); | |
| 345 | + | } | |
| 346 | + | var get_next_non_space_non_comment_character_default; | |
| 347 | + | var init_get_next_non_space_non_comment_character = __esm({ | |
| 348 | + | "src/utils/get-next-non-space-non-comment-character.js"() { | |
| 349 | + | init_get_next_non_space_non_comment_character_index(); | |
| 350 | + | get_next_non_space_non_comment_character_default = getNextNonSpaceNonCommentCharacter; | |
| 351 | + | } | |
| 352 | + | }); | |
| 353 | + | ||
| 354 | + | // src/utils/get-preferred-quote.js | |
| 355 | + | function getPreferredQuote(text, preferredQuoteOrPreferSingleQuote) { | |
| 356 | + | const preferred = preferredQuoteOrPreferSingleQuote === true || preferredQuoteOrPreferSingleQuote === SINGLE_QUOTE ? SINGLE_QUOTE : DOUBLE_QUOTE; | |
| 357 | + | const alternate = preferred === SINGLE_QUOTE ? DOUBLE_QUOTE : SINGLE_QUOTE; | |
| 358 | + | let preferredQuoteCount = 0; | |
| 359 | + | let alternateQuoteCount = 0; | |
| 360 | + | for (const character of text) { | |
| 361 | + | if (character === preferred) { | |
| 362 | + | preferredQuoteCount++; | |
| 363 | + | } else if (character === alternate) { | |
| 364 | + | alternateQuoteCount++; | |
| 365 | + | } | |
| 366 | + | } | |
| 367 | + | return preferredQuoteCount > alternateQuoteCount ? alternate : preferred; | |
| 368 | + | } | |
| 369 | + | var SINGLE_QUOTE, DOUBLE_QUOTE, get_preferred_quote_default; | |
| 370 | + | var init_get_preferred_quote = __esm({ | |
| 371 | + | "src/utils/get-preferred-quote.js"() { | |
| 372 | + | SINGLE_QUOTE = "'"; | |
| 373 | + | DOUBLE_QUOTE = '"'; | |
| 374 | + | get_preferred_quote_default = getPreferredQuote; | |
| 375 | + | } | |
| 376 | + | }); | |
| 377 | + | ||
| 378 | + | // node_modules/emoji-regex/index.mjs | |
| 379 | + | var emoji_regex_default; | |
| 380 | + | var init_emoji_regex = __esm({ | |
| 381 | + | "node_modules/emoji-regex/index.mjs"() { | |
| 382 | + | emoji_regex_default = () => { | |
| 383 | + | return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g; | |
| 384 | + | }; | |
| 385 | + | } | |
| 386 | + | }); | |
| 387 | + | ||
| 388 | + | // node_modules/get-east-asian-width/lookup.js | |
| 389 | + | function isFullWidth(x) { | |
| 390 | + | return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510; | |
| 391 | + | } | |
| 392 | + | function isWide(x) { | |
| 393 | + | return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x === 94192 || x === 94193 || x >= 94208 && x <= 100343 || x >= 100352 && x <= 101589 || x >= 101631 && x <= 101640 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128727 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129673 || x >= 129679 && x <= 129734 || x >= 129742 && x <= 129756 || x >= 129759 && x <= 129769 || x >= 129776 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141; | |
| 394 | + | } | |
| 395 | + | var init_lookup = __esm({ | |
| 396 | + | "node_modules/get-east-asian-width/lookup.js"() { | |
| 397 | + | } | |
| 398 | + | }); | |
| 399 | + | ||
| 400 | + | // node_modules/get-east-asian-width/index.js | |
| 401 | + | var _isNarrowWidth; | |
| 402 | + | var init_get_east_asian_width = __esm({ | |
| 403 | + | "node_modules/get-east-asian-width/index.js"() { | |
| 404 | + | init_lookup(); | |
| 405 | + | _isNarrowWidth = (codePoint) => !(isFullWidth(codePoint) || isWide(codePoint)); | |
| 406 | + | } | |
| 407 | + | }); | |
| 408 | + | ||
| 409 | + | // src/utils/get-string-width.js | |
| 410 | + | function getStringWidth(text) { | |
| 411 | + | if (!text) { | |
| 412 | + | return 0; | |
| 413 | + | } | |
| 414 | + | if (!notAsciiRegex.test(text)) { | |
| 415 | + | return text.length; | |
| 416 | + | } | |
| 417 | + | text = text.replace(emoji_regex_default(), " "); | |
| 418 | + | let width = 0; | |
| 419 | + | for (const character of text) { | |
| 420 | + | const codePoint = character.codePointAt(0); | |
| 421 | + | if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) { | |
| 422 | + | continue; | |
| 423 | + | } | |
| 424 | + | if (codePoint >= 768 && codePoint <= 879) { | |
| 425 | + | continue; | |
| 426 | + | } | |
| 427 | + | width += _isNarrowWidth(codePoint) ? 1 : 2; | |
| 428 | + | } | |
| 429 | + | return width; | |
| 430 | + | } | |
| 431 | + | var notAsciiRegex, get_string_width_default; | |
| 432 | + | var init_get_string_width = __esm({ | |
| 433 | + | "src/utils/get-string-width.js"() { | |
| 434 | + | init_emoji_regex(); | |
| 435 | + | init_get_east_asian_width(); | |
| 436 | + | notAsciiRegex = /[^\x20-\x7F]/u; | |
| 437 | + | get_string_width_default = getStringWidth; | |
| 438 | + | } | |
| 439 | + | }); | |
| 440 | + | ||
| 441 | + | // src/utils/has-newline-in-range.js | |
| 442 | + | function hasNewlineInRange(text, startIndex, endIndex) { | |
| 443 | + | for (let i = startIndex; i < endIndex; ++i) { | |
| 444 | + | if (text.charAt(i) === "\n") { | |
| 445 | + | return true; | |
| 446 | + | } | |
| 447 | + | } | |
| 448 | + | return false; | |
| 449 | + | } | |
| 450 | + | var has_newline_in_range_default; | |
| 451 | + | var init_has_newline_in_range = __esm({ | |
| 452 | + | "src/utils/has-newline-in-range.js"() { | |
| 453 | + | has_newline_in_range_default = hasNewlineInRange; | |
| 454 | + | } | |
| 455 | + | }); | |
| 456 | + | ||
| 457 | + | // src/utils/has-spaces.js | |
| 458 | + | function hasSpaces(text, startIndex, options = {}) { | |
| 459 | + | const idx = skipSpaces( | |
| 460 | + | text, | |
| 461 | + | options.backwards ? startIndex - 1 : startIndex, | |
| 462 | + | options | |
| 463 | + | ); | |
| 464 | + | return idx !== startIndex; | |
| 465 | + | } | |
| 466 | + | var has_spaces_default; | |
| 467 | + | var init_has_spaces = __esm({ | |
| 468 | + | "src/utils/has-spaces.js"() { | |
| 469 | + | init_skip(); | |
| 470 | + | has_spaces_default = hasSpaces; | |
| 471 | + | } | |
| 472 | + | }); | |
| 473 | + | ||
| 474 | + | // scripts/build/shims/string-replace-all.js | |
| 475 | + | var stringReplaceAll, string_replace_all_default; | |
| 476 | + | var init_string_replace_all = __esm({ | |
| 477 | + | "scripts/build/shims/string-replace-all.js"() { | |
| 478 | + | stringReplaceAll = (isOptionalObject, original, pattern, replacement) => { | |
| 479 | + | if (isOptionalObject && (original === void 0 || original === null)) { | |
| 480 | + | return; | |
| 481 | + | } | |
| 482 | + | if (original.replaceAll) { | |
| 483 | + | return original.replaceAll(pattern, replacement); | |
| 484 | + | } | |
| 485 | + | if (pattern.global) { | |
| 486 | + | return original.replace(pattern, replacement); | |
| 487 | + | } | |
| 488 | + | return original.split(pattern).join(replacement); | |
| 489 | + | }; | |
| 490 | + | string_replace_all_default = stringReplaceAll; | |
| 491 | + | } | |
| 492 | + | }); | |
| 493 | + | ||
| 494 | + | // src/utils/make-string.js | |
| 495 | + | function makeString(rawText, enclosingQuote, unescapeUnnecessaryEscapes) { | |
| 496 | + | const otherQuote = enclosingQuote === '"' ? "'" : '"'; | |
| 497 | + | const regex = /\\(.)|(["'])/gsu; | |
| 498 | + | const raw = string_replace_all_default( | |
| 499 | + | /* isOptionalObject */ | |
| 500 | + | false, | |
| 501 | + | rawText, | |
| 502 | + | regex, | |
| 503 | + | (match, escaped, quote) => { | |
| 504 | + | if (escaped === otherQuote) { | |
| 505 | + | return escaped; | |
| 506 | + | } | |
| 507 | + | if (quote === enclosingQuote) { | |
| 508 | + | return "\\" + quote; | |
| 509 | + | } | |
| 510 | + | if (quote) { | |
| 511 | + | return quote; | |
| 512 | + | } | |
| 513 | + | return unescapeUnnecessaryEscapes && /^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/u.test(escaped) ? escaped : "\\" + escaped; | |
| 514 | + | } | |
| 515 | + | ); | |
| 516 | + | return enclosingQuote + raw + enclosingQuote; | |
| 517 | + | } | |
| 518 | + | var make_string_default; | |
| 519 | + | var init_make_string = __esm({ | |
| 520 | + | "src/utils/make-string.js"() { | |
| 521 | + | init_string_replace_all(); | |
| 522 | + | make_string_default = makeString; | |
| 523 | + | } | |
| 524 | + | }); | |
| 525 | + | ||
| 526 | + | // src/utils/public.js | |
| 527 | + | var public_exports = {}; | |
| 528 | + | __export(public_exports, { | |
| 529 | + | addDanglingComment: () => addDanglingComment, | |
| 530 | + | addLeadingComment: () => addLeadingComment, | |
| 531 | + | addTrailingComment: () => addTrailingComment, | |
| 532 | + | getAlignmentSize: () => get_alignment_size_default, | |
| 533 | + | getIndentSize: () => get_indent_size_default, | |
| 534 | + | getMaxContinuousCount: () => get_max_continuous_count_default, | |
| 535 | + | getNextNonSpaceNonCommentCharacter: () => get_next_non_space_non_comment_character_default, | |
| 536 | + | getNextNonSpaceNonCommentCharacterIndex: () => getNextNonSpaceNonCommentCharacterIndex2, | |
| 537 | + | getPreferredQuote: () => get_preferred_quote_default, | |
| 538 | + | getStringWidth: () => get_string_width_default, | |
| 539 | + | hasNewline: () => has_newline_default, | |
| 540 | + | hasNewlineInRange: () => has_newline_in_range_default, | |
| 541 | + | hasSpaces: () => has_spaces_default, | |
| 542 | + | isNextLineEmpty: () => isNextLineEmpty2, | |
| 543 | + | isNextLineEmptyAfterIndex: () => is_next_line_empty_default, | |
| 544 | + | isPreviousLineEmpty: () => isPreviousLineEmpty2, | |
| 545 | + | makeString: () => make_string_default, | |
| 546 | + | skip: () => skip, | |
| 547 | + | skipEverythingButNewLine: () => skipEverythingButNewLine, | |
| 548 | + | skipInlineComment: () => skip_inline_comment_default, | |
| 549 | + | skipNewline: () => skip_newline_default, | |
| 550 | + | skipSpaces: () => skipSpaces, | |
| 551 | + | skipToLineEnd: () => skipToLineEnd, | |
| 552 | + | skipTrailingComment: () => skip_trailing_comment_default, | |
| 553 | + | skipWhitespace: () => skipWhitespace | |
| 554 | + | }); | |
| 555 | + | function legacyGetNextNonSpaceNonCommentCharacterIndex(text, node, locEnd) { | |
| 556 | + | return get_next_non_space_non_comment_character_index_default( | |
| 557 | + | text, | |
| 558 | + | locEnd(node) | |
| 559 | + | ); | |
| 560 | + | } | |
| 561 | + | function getNextNonSpaceNonCommentCharacterIndex2(text, startIndex) { | |
| 562 | + | return arguments.length === 2 || typeof startIndex === "number" ? get_next_non_space_non_comment_character_index_default(text, startIndex) : ( | |
| 563 | + | // @ts-expect-error -- expected | |
| 564 | + | // eslint-disable-next-line prefer-rest-params | |
| 565 | + | legacyGetNextNonSpaceNonCommentCharacterIndex(...arguments) | |
| 566 | + | ); | |
| 567 | + | } | |
| 568 | + | function legacyIsPreviousLineEmpty(text, node, locStart) { | |
| 569 | + | return is_previous_line_empty_default(text, locStart(node)); | |
| 570 | + | } | |
| 571 | + | function isPreviousLineEmpty2(text, startIndex) { | |
| 572 | + | return arguments.length === 2 || typeof startIndex === "number" ? is_previous_line_empty_default(text, startIndex) : ( | |
| 573 | + | // @ts-expect-error -- expected | |
| 574 | + | // eslint-disable-next-line prefer-rest-params | |
| 575 | + | legacyIsPreviousLineEmpty(...arguments) | |
| 576 | + | ); | |
| 577 | + | } | |
| 578 | + | function legacyIsNextLineEmpty(text, node, locEnd) { | |
| 579 | + | return is_next_line_empty_default(text, locEnd(node)); | |
| 580 | + | } | |
| 581 | + | function isNextLineEmpty2(text, startIndex) { | |
| 582 | + | return arguments.length === 2 || typeof startIndex === "number" ? is_next_line_empty_default(text, startIndex) : ( | |
| 583 | + | // @ts-expect-error -- expected | |
| 584 | + | // eslint-disable-next-line prefer-rest-params | |
| 585 | + | legacyIsNextLineEmpty(...arguments) | |
| 586 | + | ); | |
| 587 | + | } | |
| 588 | + | var init_public = __esm({ | |
| 589 | + | "src/utils/public.js"() { | |
| 590 | + | init_get_next_non_space_non_comment_character_index(); | |
| 591 | + | init_is_next_line_empty(); | |
| 592 | + | init_is_previous_line_empty(); | |
| 593 | + | init_utils(); | |
| 594 | + | init_get_alignment_size(); | |
| 595 | + | init_get_indent_size(); | |
| 596 | + | init_get_max_continuous_count(); | |
| 597 | + | init_get_next_non_space_non_comment_character(); | |
| 598 | + | init_get_preferred_quote(); | |
| 599 | + | init_get_string_width(); | |
| 600 | + | init_has_newline(); | |
| 601 | + | init_has_newline_in_range(); | |
| 602 | + | init_has_spaces(); | |
| 603 | + | init_make_string(); | |
| 604 | + | init_skip(); | |
| 605 | + | init_skip_inline_comment(); | |
| 606 | + | init_skip_newline(); | |
| 607 | + | init_skip_trailing_comment(); | |
| 608 | + | } | |
| 609 | + | }); | |
| 610 | + | ||
| 611 | + | // src/main/version.evaluate.cjs | |
| 612 | + | var require_version_evaluate = __commonJS({ | |
| 613 | + | "src/main/version.evaluate.cjs"(exports2, module2) { | |
| 614 | + | module2.exports = "3.5.3"; | |
| 615 | + | } | |
| 616 | + | }); | |
| 617 | + | ||
| 618 | + | // src/index.cjs | |
| 619 | + | var prettierPromise = import("./index.mjs"); | |
| 620 | + | var functionNames = [ | |
| 621 | + | "formatWithCursor", | |
| 622 | + | "format", | |
| 623 | + | "check", | |
| 624 | + | "resolveConfig", | |
| 625 | + | "resolveConfigFile", | |
| 626 | + | "clearConfigCache", | |
| 627 | + | "getFileInfo", | |
| 628 | + | "getSupportInfo" | |
| 629 | + | ]; | |
| 630 | + | var prettier = /* @__PURE__ */ Object.create(null); | |
| 631 | + | for (const name of functionNames) { | |
| 632 | + | prettier[name] = async (...args) => { | |
| 633 | + | const prettier2 = await prettierPromise; | |
| 634 | + | return prettier2[name](...args); | |
| 635 | + | }; | |
| 636 | + | } | |
| 637 | + | var debugApiFunctionNames = [ | |
| 638 | + | "parse", | |
| 639 | + | "formatAST", | |
| 640 | + | "formatDoc", | |
| 641 | + | "printToDoc", | |
| 642 | + | "printDocToString" | |
| 643 | + | ]; | |
| 644 | + | var debugApis = /* @__PURE__ */ Object.create(null); | |
| 645 | + | for (const name of debugApiFunctionNames) { | |
| 646 | + | debugApis[name] = async (...args) => { | |
| 647 | + | const prettier2 = await prettierPromise; | |
| 648 | + | return prettier2.__debug[name](...args); | |
| 649 | + | }; | |
| 650 | + | } | |
| 651 | + | prettier.__debug = debugApis; | |
| 652 | + | if (true) { | |
| 653 | + | prettier.util = (init_public(), __toCommonJS(public_exports)); | |
| 654 | + | prettier.doc = require("./doc.js"); | |
| 655 | + | } else { | |
| 656 | + | Object.defineProperties(prettier, { | |
| 657 | + | util: { | |
| 658 | + | get() { | |
| 659 | + | try { | |
| 660 | + | return null; | |
| 661 | + | } catch { | |
| 662 | + | } | |
| 663 | + | throw new Error( | |
| 664 | + | "prettier.util is not available in development CommonJS version" | |
| 665 | + | ); | |
| 666 | + | } | |
| 667 | + | }, | |
| 668 | + | doc: { | |
| 669 | + | get() { | |
| 670 | + | try { | |
| 671 | + | return null; | |
| 672 | + | } catch { | |
| 673 | + | } | |
| 674 | + | throw new Error( | |
| 675 | + | "prettier.doc is not available in development CommonJS version" | |
| 676 | + | ); | |
| 677 | + | } | |
| 678 | + | } | |
| 679 | + | }); | |
| 680 | + | } | |
| 681 | + | prettier.version = require_version_evaluate(); | |
| 682 | + | module.exports = prettier; | |
| @@ -0,0 +1,682 @@ | |||||
| 1 | + | "use strict"; | |||
| 2 | + | var __create = Object.create; | |||
| 3 | + | var __defProp = Object.defineProperty; | |||
| 4 | + | var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |||
| 5 | + | var __getOwnPropNames = Object.getOwnPropertyNames; | |||
| 6 | + | var __getProtoOf = Object.getPrototypeOf; | |||
| 7 | + | var __hasOwnProp = Object.prototype.hasOwnProperty; | |||
| 8 | + | var __esm = (fn, res) => function __init() { | |||
| 9 | + | return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; | |||
| 10 | + | }; | |||
| 11 | + | var __commonJS = (cb, mod) => function __require() { | |||
| 12 | + | return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; | |||
| 13 | + | }; | |||
| 14 | + | var __export = (target, all) => { | |||
| 15 | + | for (var name in all) | |||
| 16 | + | __defProp(target, name, { get: all[name], enumerable: true }); | |||
| 17 | + | }; | |||
| 18 | + | var __copyProps = (to, from, except, desc) => { | |||
| 19 | + | if (from && typeof from === "object" || typeof from === "function") { | |||
| 20 | + | for (let key of __getOwnPropNames(from)) | |||
| 21 | + | if (!__hasOwnProp.call(to, key) && key !== except) | |||
| 22 | + | __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | |||
| 23 | + | } | |||
| 24 | + | return to; | |||
| 25 | + | }; | |||
| 26 | + | var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | |||
| 27 | + | // If the importer is in node compatibility mode or this is not an ESM | |||
| 28 | + | // file that has been converted to a CommonJS file using a Babel- | |||
| 29 | + | // compatible transform (i.e. "__esModule" has not been set), then set | |||
| 30 | + | // "default" to the CommonJS "module.exports" for node compatibility. | |||
| 31 | + | isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | |||
| 32 | + | mod | |||
| 33 | + | )); | |||
| 34 | + | var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | |||
| 35 | + | ||||
| 36 | + | // src/utils/skip.js | |||
| 37 | + | function skip(characters) { | |||
| 38 | + | return (text, startIndex, options) => { | |||
| 39 | + | const backwards = Boolean(options == null ? void 0 : options.backwards); | |||
| 40 | + | if (startIndex === false) { | |||
| 41 | + | return false; | |||
| 42 | + | } | |||
| 43 | + | const { length } = text; | |||
| 44 | + | let cursor = startIndex; | |||
| 45 | + | while (cursor >= 0 && cursor < length) { | |||
| 46 | + | const character = text.charAt(cursor); | |||
| 47 | + | if (characters instanceof RegExp) { | |||
| 48 | + | if (!characters.test(character)) { | |||
| 49 | + | return cursor; | |||
| 50 | + | } | |||
| 51 | + | } else if (!characters.includes(character)) { | |||
| 52 | + | return cursor; | |||
| 53 | + | } | |||
| 54 | + | backwards ? cursor-- : cursor++; | |||
| 55 | + | } | |||
| 56 | + | if (cursor === -1 || cursor === length) { | |||
| 57 | + | return cursor; | |||
| 58 | + | } | |||
| 59 | + | return false; | |||
| 60 | + | }; | |||
| 61 | + | } | |||
| 62 | + | var skipWhitespace, skipSpaces, skipToLineEnd, skipEverythingButNewLine; | |||
| 63 | + | var init_skip = __esm({ | |||
| 64 | + | "src/utils/skip.js"() { | |||
| 65 | + | skipWhitespace = skip(/\s/u); | |||
| 66 | + | skipSpaces = skip(" "); | |||
| 67 | + | skipToLineEnd = skip(",; "); | |||
| 68 | + | skipEverythingButNewLine = skip(/[^\n\r]/u); | |||
| 69 | + | } | |||
| 70 | + | }); | |||
| 71 | + | ||||
| 72 | + | // src/utils/skip-inline-comment.js | |||
| 73 | + | function skipInlineComment(text, startIndex) { | |||
| 74 | + | if (startIndex === false) { | |||
| 75 | + | return false; | |||
| 76 | + | } | |||
| 77 | + | if (text.charAt(startIndex) === "/" && text.charAt(startIndex + 1) === "*") { | |||
| 78 | + | for (let i = startIndex + 2; i < text.length; ++i) { | |||
| 79 | + | if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") { | |||
| 80 | + | return i + 2; | |||
| 81 | + | } | |||
| 82 | + | } | |||
| 83 | + | } | |||
| 84 | + | return startIndex; | |||
| 85 | + | } | |||
| 86 | + | var skip_inline_comment_default; | |||
| 87 | + | var init_skip_inline_comment = __esm({ | |||
| 88 | + | "src/utils/skip-inline-comment.js"() { | |||
| 89 | + | skip_inline_comment_default = skipInlineComment; | |||
| 90 | + | } | |||
| 91 | + | }); | |||
| 92 | + | ||||
| 93 | + | // src/utils/skip-newline.js | |||
| 94 | + | function skipNewline(text, startIndex, options) { | |||
| 95 | + | const backwards = Boolean(options == null ? void 0 : options.backwards); | |||
| 96 | + | if (startIndex === false) { | |||
| 97 | + | return false; | |||
| 98 | + | } | |||
| 99 | + | const character = text.charAt(startIndex); | |||
| 100 | + | if (backwards) { | |||
| 101 | + | if (text.charAt(startIndex - 1) === "\r" && character === "\n") { | |||
| 102 | + | return startIndex - 2; | |||
| 103 | + | } | |||
| 104 | + | if (character === "\n" || character === "\r" || character === "\u2028" || character === "\u2029") { | |||
| 105 | + | return startIndex - 1; | |||
| 106 | + | } | |||
| 107 | + | } else { | |||
| 108 | + | if (character === "\r" && text.charAt(startIndex + 1) === "\n") { | |||
| 109 | + | return startIndex + 2; | |||
| 110 | + | } | |||
| 111 | + | if (character === "\n" || character === "\r" || character === "\u2028" || character === "\u2029") { | |||
| 112 | + | return startIndex + 1; | |||
| 113 | + | } | |||
| 114 | + | } | |||
| 115 | + | return startIndex; | |||
| 116 | + | } | |||
| 117 | + | var skip_newline_default; | |||
| 118 | + | var init_skip_newline = __esm({ | |||
| 119 | + | "src/utils/skip-newline.js"() { | |||
| 120 | + | skip_newline_default = skipNewline; | |||
| 121 | + | } | |||
| 122 | + | }); | |||
| 123 | + | ||||
| 124 | + | // src/utils/skip-trailing-comment.js | |||
| 125 | + | function skipTrailingComment(text, startIndex) { | |||
| 126 | + | if (startIndex === false) { | |||
| 127 | + | return false; | |||
| 128 | + | } | |||
| 129 | + | if (text.charAt(startIndex) === "/" && text.charAt(startIndex + 1) === "/") { | |||
| 130 | + | return skipEverythingButNewLine(text, startIndex); | |||
| 131 | + | } | |||
| 132 | + | return startIndex; | |||
| 133 | + | } | |||
| 134 | + | var skip_trailing_comment_default; | |||
| 135 | + | var init_skip_trailing_comment = __esm({ | |||
| 136 | + | "src/utils/skip-trailing-comment.js"() { | |||
| 137 | + | init_skip(); | |||
| 138 | + | skip_trailing_comment_default = skipTrailingComment; | |||
| 139 | + | } | |||
| 140 | + | }); | |||
| 141 | + | ||||
| 142 | + | // src/utils/get-next-non-space-non-comment-character-index.js | |||
| 143 | + | function getNextNonSpaceNonCommentCharacterIndex(text, startIndex) { | |||
| 144 | + | let oldIdx = null; | |||
| 145 | + | let nextIdx = startIndex; | |||
| 146 | + | while (nextIdx !== oldIdx) { | |||
| 147 | + | oldIdx = nextIdx; | |||
| 148 | + | nextIdx = skipSpaces(text, nextIdx); | |||
| 149 | + | nextIdx = skip_inline_comment_default(text, nextIdx); | |||
| 150 | + | nextIdx = skip_trailing_comment_default(text, nextIdx); | |||
| 151 | + | nextIdx = skip_newline_default(text, nextIdx); | |||
| 152 | + | } | |||
| 153 | + | return nextIdx; | |||
| 154 | + | } | |||
| 155 | + | var get_next_non_space_non_comment_character_index_default; | |||
| 156 | + | var init_get_next_non_space_non_comment_character_index = __esm({ | |||
| 157 | + | "src/utils/get-next-non-space-non-comment-character-index.js"() { | |||
| 158 | + | init_skip(); | |||
| 159 | + | init_skip_inline_comment(); | |||
| 160 | + | init_skip_newline(); | |||
| 161 | + | init_skip_trailing_comment(); | |||
| 162 | + | get_next_non_space_non_comment_character_index_default = getNextNonSpaceNonCommentCharacterIndex; | |||
| 163 | + | } | |||
| 164 | + | }); | |||
| 165 | + | ||||
| 166 | + | // src/utils/has-newline.js | |||
| 167 | + | function hasNewline(text, startIndex, options = {}) { | |||
| 168 | + | const idx = skipSpaces( | |||
| 169 | + | text, | |||
| 170 | + | options.backwards ? startIndex - 1 : startIndex, | |||
| 171 | + | options | |||
| 172 | + | ); | |||
| 173 | + | const idx2 = skip_newline_default(text, idx, options); | |||
| 174 | + | return idx !== idx2; | |||
| 175 | + | } | |||
| 176 | + | var has_newline_default; | |||
| 177 | + | var init_has_newline = __esm({ | |||
| 178 | + | "src/utils/has-newline.js"() { | |||
| 179 | + | init_skip(); | |||
| 180 | + | init_skip_newline(); | |||
| 181 | + | has_newline_default = hasNewline; | |||
| 182 | + | } | |||
| 183 | + | }); | |||
| 184 | + | ||||
| 185 | + | // src/utils/is-next-line-empty.js | |||
| 186 | + | function isNextLineEmpty(text, startIndex) { | |||
| 187 | + | let oldIdx = null; | |||
| 188 | + | let idx = startIndex; | |||
| 189 | + | while (idx !== oldIdx) { | |||
| 190 | + | oldIdx = idx; | |||
| 191 | + | idx = skipToLineEnd(text, idx); | |||
| 192 | + | idx = skip_inline_comment_default(text, idx); | |||
| 193 | + | idx = skipSpaces(text, idx); | |||
| 194 | + | } | |||
| 195 | + | idx = skip_trailing_comment_default(text, idx); | |||
| 196 | + | idx = skip_newline_default(text, idx); | |||
| 197 | + | return idx !== false && has_newline_default(text, idx); | |||
| 198 | + | } | |||
| 199 | + | var is_next_line_empty_default; | |||
| 200 | + | var init_is_next_line_empty = __esm({ | |||
| 201 | + | "src/utils/is-next-line-empty.js"() { | |||
| 202 | + | init_has_newline(); | |||
| 203 | + | init_skip(); | |||
| 204 | + | init_skip_inline_comment(); | |||
| 205 | + | init_skip_newline(); | |||
| 206 | + | init_skip_trailing_comment(); | |||
| 207 | + | is_next_line_empty_default = isNextLineEmpty; | |||
| 208 | + | } | |||
| 209 | + | }); | |||
| 210 | + | ||||
| 211 | + | // src/utils/is-previous-line-empty.js | |||
| 212 | + | function isPreviousLineEmpty(text, startIndex) { | |||
| 213 | + | let idx = startIndex - 1; | |||
| 214 | + | idx = skipSpaces(text, idx, { backwards: true }); | |||
| 215 | + | idx = skip_newline_default(text, idx, { backwards: true }); | |||
| 216 | + | idx = skipSpaces(text, idx, { backwards: true }); | |||
| 217 | + | const idx2 = skip_newline_default(text, idx, { backwards: true }); | |||
| 218 | + | return idx !== idx2; | |||
| 219 | + | } | |||
| 220 | + | var is_previous_line_empty_default; | |||
| 221 | + | var init_is_previous_line_empty = __esm({ | |||
| 222 | + | "src/utils/is-previous-line-empty.js"() { | |||
| 223 | + | init_skip(); | |||
| 224 | + | init_skip_newline(); | |||
| 225 | + | is_previous_line_empty_default = isPreviousLineEmpty; | |||
| 226 | + | } | |||
| 227 | + | }); | |||
| 228 | + | ||||
| 229 | + | // src/main/comments/utils.js | |||
| 230 | + | function describeNodeForDebugging(node) { | |||
| 231 | + | const nodeType = node.type || node.kind || "(unknown type)"; | |||
| 232 | + | let nodeName = String( | |||
| 233 | + | node.name || node.id && (typeof node.id === "object" ? node.id.name : node.id) || node.key && (typeof node.key === "object" ? node.key.name : node.key) || node.value && (typeof node.value === "object" ? "" : String(node.value)) || node.operator || "" | |||
| 234 | + | ); | |||
| 235 | + | if (nodeName.length > 20) { | |||
| 236 | + | nodeName = nodeName.slice(0, 19) + "\u2026"; | |||
| 237 | + | } | |||
| 238 | + | return nodeType + (nodeName ? " " + nodeName : ""); | |||
| 239 | + | } | |||
| 240 | + | function addCommentHelper(node, comment) { | |||
| 241 | + | const comments = node.comments ?? (node.comments = []); | |||
| 242 | + | comments.push(comment); | |||
| 243 | + | comment.printed = false; | |||
| 244 | + | comment.nodeDescription = describeNodeForDebugging(node); | |||
| 245 | + | } | |||
| 246 | + | function addLeadingComment(node, comment) { | |||
| 247 | + | comment.leading = true; | |||
| 248 | + | comment.trailing = false; | |||
| 249 | + | addCommentHelper(node, comment); | |||
| 250 | + | } | |||
| 251 | + | function addDanglingComment(node, comment, marker) { | |||
| 252 | + | comment.leading = false; | |||
| 253 | + | comment.trailing = false; | |||
| 254 | + | if (marker) { | |||
| 255 | + | comment.marker = marker; | |||
| 256 | + | } | |||
| 257 | + | addCommentHelper(node, comment); | |||
| 258 | + | } | |||
| 259 | + | function addTrailingComment(node, comment) { | |||
| 260 | + | comment.leading = false; | |||
| 261 | + | comment.trailing = true; | |||
| 262 | + | addCommentHelper(node, comment); | |||
| 263 | + | } | |||
| 264 | + | var init_utils = __esm({ | |||
| 265 | + | "src/main/comments/utils.js"() { | |||
| 266 | + | } | |||
| 267 | + | }); | |||
| 268 | + | ||||
| 269 | + | // src/utils/get-alignment-size.js | |||
| 270 | + | function getAlignmentSize(text, tabWidth, startIndex = 0) { | |||
| 271 | + | let size = 0; | |||
| 272 | + | for (let i = startIndex; i < text.length; ++i) { | |||
| 273 | + | if (text[i] === " ") { | |||
| 274 | + | size = size + tabWidth - size % tabWidth; | |||
| 275 | + | } else { | |||
| 276 | + | size++; | |||
| 277 | + | } | |||
| 278 | + | } | |||
| 279 | + | return size; | |||
| 280 | + | } | |||
| 281 | + | var get_alignment_size_default; | |||
| 282 | + | var init_get_alignment_size = __esm({ | |||
| 283 | + | "src/utils/get-alignment-size.js"() { | |||
| 284 | + | get_alignment_size_default = getAlignmentSize; | |||
| 285 | + | } | |||
| 286 | + | }); | |||
| 287 | + | ||||
| 288 | + | // src/utils/get-indent-size.js | |||
| 289 | + | function getIndentSize(value, tabWidth) { | |||
| 290 | + | const lastNewlineIndex = value.lastIndexOf("\n"); | |||
| 291 | + | if (lastNewlineIndex === -1) { | |||
| 292 | + | return 0; | |||
| 293 | + | } | |||
| 294 | + | return get_alignment_size_default( | |||
| 295 | + | // All the leading whitespaces | |||
| 296 | + | value.slice(lastNewlineIndex + 1).match(/^[\t ]*/u)[0], | |||
| 297 | + | tabWidth | |||
| 298 | + | ); | |||
| 299 | + | } | |||
| 300 | + | var get_indent_size_default; | |||
| 301 | + | var init_get_indent_size = __esm({ | |||
| 302 | + | "src/utils/get-indent-size.js"() { | |||
| 303 | + | init_get_alignment_size(); | |||
| 304 | + | get_indent_size_default = getIndentSize; | |||
| 305 | + | } | |||
| 306 | + | }); | |||
| 307 | + | ||||
| 308 | + | // node_modules/escape-string-regexp/index.js | |||
| 309 | + | function escapeStringRegexp(string) { | |||
| 310 | + | if (typeof string !== "string") { | |||
| 311 | + | throw new TypeError("Expected a string"); | |||
| 312 | + | } | |||
| 313 | + | return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); | |||
| 314 | + | } | |||
| 315 | + | var init_escape_string_regexp = __esm({ | |||
| 316 | + | "node_modules/escape-string-regexp/index.js"() { | |||
| 317 | + | } | |||
| 318 | + | }); | |||
| 319 | + | ||||
| 320 | + | // src/utils/get-max-continuous-count.js | |||
| 321 | + | function getMaxContinuousCount(text, searchString) { | |||
| 322 | + | const results = text.match( | |||
| 323 | + | new RegExp(`(${escapeStringRegexp(searchString)})+`, "gu") | |||
| 324 | + | ); | |||
| 325 | + | if (results === null) { | |||
| 326 | + | return 0; | |||
| 327 | + | } | |||
| 328 | + | return results.reduce( | |||
| 329 | + | (maxCount, result) => Math.max(maxCount, result.length / searchString.length), | |||
| 330 | + | 0 | |||
| 331 | + | ); | |||
| 332 | + | } | |||
| 333 | + | var get_max_continuous_count_default; | |||
| 334 | + | var init_get_max_continuous_count = __esm({ | |||
| 335 | + | "src/utils/get-max-continuous-count.js"() { | |||
| 336 | + | init_escape_string_regexp(); | |||
| 337 | + | get_max_continuous_count_default = getMaxContinuousCount; | |||
| 338 | + | } | |||
| 339 | + | }); | |||
| 340 | + | ||||
| 341 | + | // src/utils/get-next-non-space-non-comment-character.js | |||
| 342 | + | function getNextNonSpaceNonCommentCharacter(text, startIndex) { | |||
| 343 | + | const index = get_next_non_space_non_comment_character_index_default(text, startIndex); | |||
| 344 | + | return index === false ? "" : text.charAt(index); | |||
| 345 | + | } | |||
| 346 | + | var get_next_non_space_non_comment_character_default; | |||
| 347 | + | var init_get_next_non_space_non_comment_character = __esm({ | |||
| 348 | + | "src/utils/get-next-non-space-non-comment-character.js"() { | |||
| 349 | + | init_get_next_non_space_non_comment_character_index(); | |||
| 350 | + | get_next_non_space_non_comment_character_default = getNextNonSpaceNonCommentCharacter; | |||
| 351 | + | } | |||
| 352 | + | }); | |||
| 353 | + | ||||
| 354 | + | // src/utils/get-preferred-quote.js | |||
| 355 | + | function getPreferredQuote(text, preferredQuoteOrPreferSingleQuote) { | |||
| 356 | + | const preferred = preferredQuoteOrPreferSingleQuote === true || preferredQuoteOrPreferSingleQuote === SINGLE_QUOTE ? SINGLE_QUOTE : DOUBLE_QUOTE; | |||
| 357 | + | const alternate = preferred === SINGLE_QUOTE ? DOUBLE_QUOTE : SINGLE_QUOTE; | |||
| 358 | + | let preferredQuoteCount = 0; | |||
| 359 | + | let alternateQuoteCount = 0; | |||
| 360 | + | for (const character of text) { | |||
| 361 | + | if (character === preferred) { | |||
| 362 | + | preferredQuoteCount++; | |||
| 363 | + | } else if (character === alternate) { | |||
| 364 | + | alternateQuoteCount++; | |||
| 365 | + | } | |||
| 366 | + | } | |||
| 367 | + | return preferredQuoteCount > alternateQuoteCount ? alternate : preferred; | |||
| 368 | + | } | |||
| 369 | + | var SINGLE_QUOTE, DOUBLE_QUOTE, get_preferred_quote_default; | |||
| 370 | + | var init_get_preferred_quote = __esm({ | |||
| 371 | + | "src/utils/get-preferred-quote.js"() { | |||
| 372 | + | SINGLE_QUOTE = "'"; | |||
| 373 | + | DOUBLE_QUOTE = '"'; | |||
| 374 | + | get_preferred_quote_default = getPreferredQuote; | |||
| 375 | + | } | |||
| 376 | + | }); | |||
| 377 | + | ||||
| 378 | + | // node_modules/emoji-regex/index.mjs | |||
| 379 | + | var emoji_regex_default; | |||
| 380 | + | var init_emoji_regex = __esm({ | |||
| 381 | + | "node_modules/emoji-regex/index.mjs"() { | |||
| 382 | + | emoji_regex_default = () => { | |||
| 383 | + | return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g; | |||
| 384 | + | }; | |||
| 385 | + | } | |||
| 386 | + | }); | |||
| 387 | + | ||||
| 388 | + | // node_modules/get-east-asian-width/lookup.js | |||
| 389 | + | function isFullWidth(x) { | |||
| 390 | + | return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510; | |||
| 391 | + | } | |||
| 392 | + | function isWide(x) { | |||
| 393 | + | return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x === 94192 || x === 94193 || x >= 94208 && x <= 100343 || x >= 100352 && x <= 101589 || x >= 101631 && x <= 101640 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128727 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129673 || x >= 129679 && x <= 129734 || x >= 129742 && x <= 129756 || x >= 129759 && x <= 129769 || x >= 129776 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141; | |||
| 394 | + | } | |||
| 395 | + | var init_lookup = __esm({ | |||
| 396 | + | "node_modules/get-east-asian-width/lookup.js"() { | |||
| 397 | + | } | |||
| 398 | + | }); | |||
| 399 | + | ||||
| 400 | + | // node_modules/get-east-asian-width/index.js | |||
| 401 | + | var _isNarrowWidth; | |||
| 402 | + | var init_get_east_asian_width = __esm({ | |||
| 403 | + | "node_modules/get-east-asian-width/index.js"() { | |||
| 404 | + | init_lookup(); | |||
| 405 | + | _isNarrowWidth = (codePoint) => !(isFullWidth(codePoint) || isWide(codePoint)); | |||
| 406 | + | } | |||
| 407 | + | }); | |||
| 408 | + | ||||
| 409 | + | // src/utils/get-string-width.js | |||
| 410 | + | function getStringWidth(text) { | |||
| 411 | + | if (!text) { | |||
| 412 | + | return 0; | |||
| 413 | + | } | |||
| 414 | + | if (!notAsciiRegex.test(text)) { | |||
| 415 | + | return text.length; | |||
| 416 | + | } | |||
| 417 | + | text = text.replace(emoji_regex_default(), " "); | |||
| 418 | + | let width = 0; | |||
| 419 | + | for (const character of text) { | |||
| 420 | + | const codePoint = character.codePointAt(0); | |||
| 421 | + | if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) { | |||
| 422 | + | continue; | |||
| 423 | + | } | |||
| 424 | + | if (codePoint >= 768 && codePoint <= 879) { | |||
| 425 | + | continue; | |||
| 426 | + | } | |||
| 427 | + | width += _isNarrowWidth(codePoint) ? 1 : 2; | |||
| 428 | + | } | |||
| 429 | + | return width; | |||
| 430 | + | } | |||
| 431 | + | var notAsciiRegex, get_string_width_default; | |||
| 432 | + | var init_get_string_width = __esm({ | |||
| 433 | + | "src/utils/get-string-width.js"() { | |||
| 434 | + | init_emoji_regex(); | |||
| 435 | + | init_get_east_asian_width(); | |||
| 436 | + | notAsciiRegex = /[^\x20-\x7F]/u; | |||
| 437 | + | get_string_width_default = getStringWidth; | |||
| 438 | + | } | |||
| 439 | + | }); | |||
| 440 | + | ||||
| 441 | + | // src/utils/has-newline-in-range.js | |||
| 442 | + | function hasNewlineInRange(text, startIndex, endIndex) { | |||
| 443 | + | for (let i = startIndex; i < endIndex; ++i) { | |||
| 444 | + | if (text.charAt(i) === "\n") { | |||
| 445 | + | return true; | |||
| 446 | + | } | |||
| 447 | + | } | |||
| 448 | + | return false; | |||
| 449 | + | } | |||
| 450 | + | var has_newline_in_range_default; | |||
| 451 | + | var init_has_newline_in_range = __esm({ | |||
| 452 | + | "src/utils/has-newline-in-range.js"() { | |||
| 453 | + | has_newline_in_range_default = hasNewlineInRange; | |||
| 454 | + | } | |||
| 455 | + | }); | |||
| 456 | + | ||||
| 457 | + | // src/utils/has-spaces.js | |||
| 458 | + | function hasSpaces(text, startIndex, options = {}) { | |||
| 459 | + | const idx = skipSpaces( | |||
| 460 | + | text, | |||
| 461 | + | options.backwards ? startIndex - 1 : startIndex, | |||
| 462 | + | options | |||
| 463 | + | ); | |||
| 464 | + | return idx !== startIndex; | |||
| 465 | + | } | |||
| 466 | + | var has_spaces_default; | |||
| 467 | + | var init_has_spaces = __esm({ | |||
| 468 | + | "src/utils/has-spaces.js"() { | |||
| 469 | + | init_skip(); | |||
| 470 | + | has_spaces_default = hasSpaces; | |||
| 471 | + | } | |||
| 472 | + | }); | |||
| 473 | + | ||||
| 474 | + | // scripts/build/shims/string-replace-all.js | |||
| 475 | + | var stringReplaceAll, string_replace_all_default; | |||
| 476 | + | var init_string_replace_all = __esm({ | |||
| 477 | + | "scripts/build/shims/string-replace-all.js"() { | |||
| 478 | + | stringReplaceAll = (isOptionalObject, original, pattern, replacement) => { | |||
| 479 | + | if (isOptionalObject && (original === void 0 || original === null)) { | |||
| 480 | + | return; | |||
| 481 | + | } | |||
| 482 | + | if (original.replaceAll) { | |||
| 483 | + | return original.replaceAll(pattern, replacement); | |||
| 484 | + | } | |||
| 485 | + | if (pattern.global) { | |||
| 486 | + | return original.replace(pattern, replacement); | |||
| 487 | + | } | |||
| 488 | + | return original.split(pattern).join(replacement); | |||
| 489 | + | }; | |||
| 490 | + | string_replace_all_default = stringReplaceAll; | |||
| 491 | + | } | |||
| 492 | + | }); | |||
| 493 | + | ||||
| 494 | + | // src/utils/make-string.js | |||
| 495 | + | function makeString(rawText, enclosingQuote, unescapeUnnecessaryEscapes) { | |||
| 496 | + | const otherQuote = enclosingQuote === '"' ? "'" : '"'; | |||
| 497 | + | const regex = /\\(.)|(["'])/gsu; | |||
| 498 | + | const raw = string_replace_all_default( | |||
| 499 | + | /* isOptionalObject */ | |||
| 500 | + | false, | |||
| 501 | + | rawText, | |||
| 502 | + | regex, | |||
| 503 | + | (match, escaped, quote) => { | |||
| 504 | + | if (escaped === otherQuote) { | |||
| 505 | + | return escaped; | |||
| 506 | + | } | |||
| 507 | + | if (quote === enclosingQuote) { | |||
| 508 | + | return "\\" + quote; | |||
| 509 | + | } | |||
| 510 | + | if (quote) { | |||
| 511 | + | return quote; | |||
| 512 | + | } | |||
| 513 | + | return unescapeUnnecessaryEscapes && /^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/u.test(escaped) ? escaped : "\\" + escaped; | |||
| 514 | + | } | |||
| 515 | + | ); | |||
| 516 | + | return enclosingQuote + raw + enclosingQuote; | |||
| 517 | + | } | |||
| 518 | + | var make_string_default; | |||
| 519 | + | var init_make_string = __esm({ | |||
| 520 | + | "src/utils/make-string.js"() { | |||
| 521 | + | init_string_replace_all(); | |||
| 522 | + | make_string_default = makeString; | |||
| 523 | + | } | |||
| 524 | + | }); | |||
| 525 | + | ||||
| 526 | + | // src/utils/public.js | |||
| 527 | + | var public_exports = {}; | |||
| 528 | + | __export(public_exports, { | |||
| 529 | + | addDanglingComment: () => addDanglingComment, | |||
| 530 | + | addLeadingComment: () => addLeadingComment, | |||
| 531 | + | addTrailingComment: () => addTrailingComment, | |||
| 532 | + | getAlignmentSize: () => get_alignment_size_default, | |||
| 533 | + | getIndentSize: () => get_indent_size_default, | |||
| 534 | + | getMaxContinuousCount: () => get_max_continuous_count_default, | |||
| 535 | + | getNextNonSpaceNonCommentCharacter: () => get_next_non_space_non_comment_character_default, | |||
| 536 | + | getNextNonSpaceNonCommentCharacterIndex: () => getNextNonSpaceNonCommentCharacterIndex2, | |||
| 537 | + | getPreferredQuote: () => get_preferred_quote_default, | |||
| 538 | + | getStringWidth: () => get_string_width_default, | |||
| 539 | + | hasNewline: () => has_newline_default, | |||
| 540 | + | hasNewlineInRange: () => has_newline_in_range_default, | |||
| 541 | + | hasSpaces: () => has_spaces_default, | |||
| 542 | + | isNextLineEmpty: () => isNextLineEmpty2, | |||
| 543 | + | isNextLineEmptyAfterIndex: () => is_next_line_empty_default, | |||
| 544 | + | isPreviousLineEmpty: () => isPreviousLineEmpty2, | |||
| 545 | + | makeString: () => make_string_default, | |||
| 546 | + | skip: () => skip, | |||
| 547 | + | skipEverythingButNewLine: () => skipEverythingButNewLine, | |||
| 548 | + | skipInlineComment: () => skip_inline_comment_default, | |||
| 549 | + | skipNewline: () => skip_newline_default, | |||
| 550 | + | skipSpaces: () => skipSpaces, | |||
| 551 | + | skipToLineEnd: () => skipToLineEnd, | |||
| 552 | + | skipTrailingComment: () => skip_trailing_comment_default, | |||
| 553 | + | skipWhitespace: () => skipWhitespace | |||
| 554 | + | }); | |||
| 555 | + | function legacyGetNextNonSpaceNonCommentCharacterIndex(text, node, locEnd) { | |||
| 556 | + | return get_next_non_space_non_comment_character_index_default( | |||
| 557 | + | text, | |||
| 558 | + | locEnd(node) | |||
| 559 | + | ); | |||
| 560 | + | } | |||
| 561 | + | function getNextNonSpaceNonCommentCharacterIndex2(text, startIndex) { | |||
| 562 | + | return arguments.length === 2 || typeof startIndex === "number" ? get_next_non_space_non_comment_character_index_default(text, startIndex) : ( | |||
| 563 | + | // @ts-expect-error -- expected | |||
| 564 | + | // eslint-disable-next-line prefer-rest-params | |||
| 565 | + | legacyGetNextNonSpaceNonCommentCharacterIndex(...arguments) | |||
| 566 | + | ); | |||
| 567 | + | } | |||
| 568 | + | function legacyIsPreviousLineEmpty(text, node, locStart) { | |||
| 569 | + | return is_previous_line_empty_default(text, locStart(node)); | |||
| 570 | + | } | |||
| 571 | + | function isPreviousLineEmpty2(text, startIndex) { | |||
| 572 | + | return arguments.length === 2 || typeof startIndex === "number" ? is_previous_line_empty_default(text, startIndex) : ( | |||
| 573 | + | // @ts-expect-error -- expected | |||
| 574 | + | // eslint-disable-next-line prefer-rest-params | |||
| 575 | + | legacyIsPreviousLineEmpty(...arguments) | |||
| 576 | + | ); | |||
| 577 | + | } | |||
| 578 | + | function legacyIsNextLineEmpty(text, node, locEnd) { | |||
| 579 | + | return is_next_line_empty_default(text, locEnd(node)); | |||
| 580 | + | } | |||
| 581 | + | function isNextLineEmpty2(text, startIndex) { | |||
| 582 | + | return arguments.length === 2 || typeof startIndex === "number" ? is_next_line_empty_default(text, startIndex) : ( | |||
| 583 | + | // @ts-expect-error -- expected | |||
| 584 | + | // eslint-disable-next-line prefer-rest-params | |||
| 585 | + | legacyIsNextLineEmpty(...arguments) | |||
| 586 | + | ); | |||
| 587 | + | } | |||
| 588 | + | var init_public = __esm({ | |||
| 589 | + | "src/utils/public.js"() { | |||
| 590 | + | init_get_next_non_space_non_comment_character_index(); | |||
| 591 | + | init_is_next_line_empty(); | |||
| 592 | + | init_is_previous_line_empty(); | |||
| 593 | + | init_utils(); | |||
| 594 | + | init_get_alignment_size(); | |||
| 595 | + | init_get_indent_size(); | |||
| 596 | + | init_get_max_continuous_count(); | |||
| 597 | + | init_get_next_non_space_non_comment_character(); | |||
| 598 | + | init_get_preferred_quote(); | |||
| 599 | + | init_get_string_width(); | |||
| 600 | + | init_has_newline(); | |||
| 601 | + | init_has_newline_in_range(); | |||
| 602 | + | init_has_spaces(); | |||
| 603 | + | init_make_string(); | |||
| 604 | + | init_skip(); | |||
| 605 | + | init_skip_inline_comment(); | |||
| 606 | + | init_skip_newline(); | |||
| 607 | + | init_skip_trailing_comment(); | |||
| 608 | + | } | |||
| 609 | + | }); | |||
| 610 | + | ||||
| 611 | + | // src/main/version.evaluate.cjs | |||
| 612 | + | var require_version_evaluate = __commonJS({ | |||
| 613 | + | "src/main/version.evaluate.cjs"(exports2, module2) { | |||
| 614 | + | module2.exports = "3.5.3"; | |||
| 615 | + | } | |||
| 616 | + | }); | |||
| 617 | + | ||||
| 618 | + | // src/index.cjs | |||
| 619 | + | var prettierPromise = import("./index.mjs"); | |||
| 620 | + | var functionNames = [ | |||
| 621 | + | "formatWithCursor", | |||
| 622 | + | "format", | |||
| 623 | + | "check", | |||
| 624 | + | "resolveConfig", | |||
| 625 | + | "resolveConfigFile", | |||
| 626 | + | "clearConfigCache", | |||
| 627 | + | "getFileInfo", | |||
| 628 | + | "getSupportInfo" | |||
| 629 | + | ]; | |||
| 630 | + | var prettier = /* @__PURE__ */ Object.create(null); | |||
| 631 | + | for (const name of functionNames) { | |||
| 632 | + | prettier[name] = async (...args) => { | |||
| 633 | + | const prettier2 = await prettierPromise; | |||
| 634 | + | return prettier2[name](...args); | |||
| 635 | + | }; | |||
| 636 | + | } | |||
| 637 | + | var debugApiFunctionNames = [ | |||
| 638 | + | "parse", | |||
| 639 | + | "formatAST", | |||
| 640 | + | "formatDoc", | |||
| 641 | + | "printToDoc", | |||
| 642 | + | "printDocToString" | |||
| 643 | + | ]; | |||
| 644 | + | var debugApis = /* @__PURE__ */ Object.create(null); | |||
| 645 | + | for (const name of debugApiFunctionNames) { | |||
| 646 | + | debugApis[name] = async (...args) => { | |||
| 647 | + | const prettier2 = await prettierPromise; | |||
| 648 | + | return prettier2.__debug[name](...args); | |||
| 649 | + | }; | |||
| 650 | + | } | |||
| 651 | + | prettier.__debug = debugApis; | |||
| 652 | + | if (true) { | |||
| 653 | + | prettier.util = (init_public(), __toCommonJS(public_exports)); | |||
| 654 | + | prettier.doc = require("./doc.js"); | |||
| 655 | + | } else { | |||
| 656 | + | Object.defineProperties(prettier, { | |||
| 657 | + | util: { | |||
| 658 | + | get() { | |||
| 659 | + | try { | |||
| 660 | + | return null; | |||
| 661 | + | } catch { | |||
| 662 | + | } | |||
| 663 | + | throw new Error( | |||
| 664 | + | "prettier.util is not available in development CommonJS version" | |||
| 665 | + | ); | |||
| 666 | + | } | |||
| 667 | + | }, | |||
| 668 | + | doc: { | |||
| 669 | + | get() { | |||
| 670 | + | try { | |||
| 671 | + | return null; | |||
| 672 | + | } catch { | |||
| 673 | + | } | |||
| 674 | + | throw new Error( | |||
| 675 | + | "prettier.doc is not available in development CommonJS version" | |||
| 676 | + | ); | |||
| 677 | + | } | |||
| 678 | + | } | |||
| 679 | + | }); | |||
| 680 | + | } | |||
| 681 | + | prettier.version = require_version_evaluate(); | |||
| 682 | + | module.exports = prettier; | |||
A node_modules/prettier/index.d.ts +956 -0 collapsed to keep the page light
A node_modules/prettier/index.mjs +22242 -0 collapsed to keep the page light
A node_modules/prettier/internal/cli.mjs +4873 -0 collapsed to keep the page light
A node_modules/prettier/package.json +200 -0 collapsed to keep the page light
A node_modules/prettier/plugins/acorn.d.ts +6 -0 collapsed to keep the page light
A node_modules/prettier/plugins/acorn.js +15 -0 collapsed to keep the page light
A node_modules/prettier/plugins/acorn.mjs +15 -0 collapsed to keep the page light
A node_modules/prettier/plugins/angular.d.ts +8 -0 collapsed to keep the page light
A node_modules/prettier/plugins/angular.js +2 -0 collapsed to keep the page light
A node_modules/prettier/plugins/angular.mjs +2 -0 collapsed to keep the page light
A node_modules/prettier/plugins/babel.d.ts +18 -0 collapsed to keep the page light
A node_modules/prettier/plugins/babel.js +15 -0 collapsed to keep the page light
A node_modules/prettier/plugins/babel.mjs +15 -0 collapsed to keep the page light
A node_modules/prettier/plugins/estree.d.ts +1 -0 collapsed to keep the page light
A node_modules/prettier/plugins/estree.js +36 -0 collapsed to keep the page light
A node_modules/prettier/plugins/estree.mjs +36 -0 collapsed to keep the page light
A node_modules/prettier/plugins/flow.d.ts +5 -0 collapsed to keep the page light
A node_modules/prettier/plugins/flow.js +19 -0 collapsed to keep the page light
A node_modules/prettier/plugins/flow.mjs +19 -0 collapsed to keep the page light
A node_modules/prettier/plugins/glimmer.d.ts +5 -0 collapsed to keep the page light
A node_modules/prettier/plugins/glimmer.js +30 -0 collapsed to keep the page light
A node_modules/prettier/plugins/glimmer.mjs +30 -0 collapsed to keep the page light
A node_modules/prettier/plugins/graphql.d.ts +5 -0 collapsed to keep the page light
A node_modules/prettier/plugins/graphql.js +29 -0 collapsed to keep the page light
A node_modules/prettier/plugins/graphql.mjs +29 -0 collapsed to keep the page light
A node_modules/prettier/plugins/html.d.ts +8 -0 collapsed to keep the page light
A node_modules/prettier/plugins/html.js +22 -0 collapsed to keep the page light
A node_modules/prettier/plugins/html.mjs +22 -0 collapsed to keep the page light
A node_modules/prettier/plugins/markdown.d.ts +7 -0 collapsed to keep the page light
A node_modules/prettier/plugins/markdown.js +63 -0 collapsed to keep the page light
A node_modules/prettier/plugins/markdown.mjs +63 -0 collapsed to keep the page light
A node_modules/prettier/plugins/meriyah.d.ts +5 -0 collapsed to keep the page light
A node_modules/prettier/plugins/meriyah.js +4 -0 collapsed to keep the page light
A node_modules/prettier/plugins/meriyah.mjs +4 -0 collapsed to keep the page light
A node_modules/prettier/plugins/postcss.d.ts +7 -0 collapsed to keep the page light
A node_modules/prettier/plugins/postcss.js +54 -0 collapsed to keep the page light
A node_modules/prettier/plugins/postcss.mjs +54 -0 collapsed to keep the page light
A node_modules/prettier/plugins/typescript.d.ts +5 -0 collapsed to keep the page light
A node_modules/prettier/plugins/typescript.js +20 -0 collapsed to keep the page light
A node_modules/prettier/plugins/typescript.mjs +20 -0 collapsed to keep the page light
A node_modules/prettier/plugins/yaml.d.ts +5 -0 collapsed to keep the page light
A node_modules/prettier/plugins/yaml.js +161 -0 collapsed to keep the page light
A node_modules/prettier/plugins/yaml.mjs +161 -0 collapsed to keep the page light
A node_modules/prettier/standalone.d.ts +33 -0 collapsed to keep the page light
A node_modules/prettier/standalone.js +39 -0 collapsed to keep the page light
A node_modules/prettier/standalone.mjs +39 -0 collapsed to keep the page light
A node_modules/queue-microtask/LICENSE +20 -0 collapsed to keep the page light
A node_modules/queue-microtask/README.md +90 -0 collapsed to keep the page light
A node_modules/queue-microtask/index.d.ts +2 -0 collapsed to keep the page light
A node_modules/queue-microtask/index.js +9 -0 collapsed to keep the page light
A node_modules/queue-microtask/package.json +55 -0 collapsed to keep the page light
A node_modules/read-cache/LICENSE +20 -0 collapsed to keep the page light
A node_modules/read-cache/README.md +46 -0 collapsed to keep the page light
A node_modules/read-cache/index.js +78 -0 collapsed to keep the page light
A node_modules/read-cache/package.json +34 -0 collapsed to keep the page light
A node_modules/readdirp/LICENSE +21 -0 collapsed to keep the page light
A node_modules/readdirp/README.md +122 -0 collapsed to keep the page light
A node_modules/readdirp/index.d.ts +43 -0 collapsed to keep the page light
A node_modules/readdirp/index.js +287 -0 collapsed to keep the page light
A node_modules/readdirp/package.json +122 -0 collapsed to keep the page light
A node_modules/resolve/.editorconfig +37 -0 collapsed to keep the page light
A node_modules/resolve/.eslintrc +65 -0 collapsed to keep the page light
A node_modules/resolve/.github/FUNDING.yml +12 -0 collapsed to keep the page light
A node_modules/resolve/LICENSE +21 -0 collapsed to keep the page light
A node_modules/resolve/SECURITY.md +3 -0 collapsed to keep the page light
A node_modules/resolve/async.js +3 -0 collapsed to keep the page light
A node_modules/resolve/bin/resolve +50 -0 collapsed to keep the page light
A node_modules/resolve/example/async.js +5 -0 collapsed to keep the page light
A node_modules/resolve/example/sync.js +3 -0 collapsed to keep the page light
A node_modules/resolve/index.js +6 -0 collapsed to keep the page light
A node_modules/resolve/lib/async.js +329 -0 collapsed to keep the page light
A node_modules/resolve/lib/caller.js +8 -0 collapsed to keep the page light
A node_modules/resolve/lib/core.js +12 -0 collapsed to keep the page light
A node_modules/resolve/lib/core.json +158 -0 collapsed to keep the page light
A node_modules/resolve/lib/homedir.js +24 -0 collapsed to keep the page light
A node_modules/resolve/lib/is-core.js +5 -0 collapsed to keep the page light
A node_modules/resolve/lib/node-modules-paths.js +42 -0 collapsed to keep the page light
A node_modules/resolve/lib/normalize-options.js +10 -0 collapsed to keep the page light
A node_modules/resolve/lib/sync.js +208 -0 collapsed to keep the page light
A node_modules/resolve/package.json +72 -0 collapsed to keep the page light
A node_modules/resolve/readme.markdown +301 -0 collapsed to keep the page light
A node_modules/resolve/sync.js +3 -0 collapsed to keep the page light
A node_modules/resolve/test/core.js +88 -0 collapsed to keep the page light
A node_modules/resolve/test/dotdot.js +29 -0 collapsed to keep the page light
A node_modules/resolve/test/dotdot/abc/index.js +2 -0 collapsed to keep the page light
A node_modules/resolve/test/dotdot/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/faulty_basedir.js +29 -0 collapsed to keep the page light
A node_modules/resolve/test/filter.js +34 -0 collapsed to keep the page light
A node_modules/resolve/test/filter_sync.js +33 -0 collapsed to keep the page light
A node_modules/resolve/test/home_paths.js +127 -0 collapsed to keep the page light
A node_modules/resolve/test/home_paths_sync.js +114 -0 collapsed to keep the page light
A node_modules/resolve/test/mock.js +315 -0 collapsed to keep the page light
A node_modules/resolve/test/mock_sync.js +214 -0 collapsed to keep the page light
A node_modules/resolve/test/module_dir.js +56 -0 collapsed to keep the page light
A node_modules/resolve/test/module_dir/xmodules/aaa/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/module_dir/ymodules/aaa/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/module_dir/zmodules/bbb/main.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/module_dir/zmodules/bbb/package.json +3 -0 collapsed to keep the page light
A node_modules/resolve/test/node-modules-paths.js +143 -0 collapsed to keep the page light
A node_modules/resolve/test/node_path.js +70 -0 collapsed to keep the page light
A node_modules/resolve/test/node_path/x/aaa/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/node_path/x/ccc/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/node_path/y/bbb/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/node_path/y/ccc/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/nonstring.js +9 -0 collapsed to keep the page light
A node_modules/resolve/test/pathfilter.js +75 -0 collapsed to keep the page light
A node_modules/resolve/test/pathfilter/deep_ref/main.js +0 -0
no textual change.
A node_modules/resolve/test/precedence.js +23 -0 collapsed to keep the page light
A node_modules/resolve/test/precedence/aaa.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/precedence/aaa/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/precedence/aaa/main.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/precedence/bbb.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/precedence/bbb/main.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver.js +597 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/baz/doom.js +0 -0
no textual change.
A node_modules/resolve/test/resolver/baz/package.json +4 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/baz/quux.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/browser_field/a.js +0 -0
no textual change.
A node_modules/resolve/test/resolver/browser_field/b.js +0 -0
no textual change.
A node_modules/resolve/test/resolver/browser_field/package.json +5 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/cup.coffee +1 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/dot_main/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/dot_main/package.json +3 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/dot_slash_main/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/dot_slash_main/package.json +3 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/false_main/index.js +0 -0
no textual change.
A node_modules/resolve/test/resolver/false_main/package.json +4 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/foo.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/incorrect_main/index.js +2 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/incorrect_main/package.json +3 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/invalid_main/package.json +7 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/mug.coffee +0 -0
no textual change.
A node_modules/resolve/test/resolver/mug.js +0 -0
no textual change.
A node_modules/resolve/test/resolver/multirepo/lerna.json +6 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/multirepo/package.json +20 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js +35 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json +14 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js +0 -0
no textual change.
A node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json +14 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js +26 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json +15 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js +12 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/other_path/lib/other-lib.js +0 -0
no textual change.
A node_modules/resolve/test/resolver/other_path/root.js +0 -0
no textual change.
A node_modules/resolve/test/resolver/quux/foo/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/same_names/foo.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/same_names/foo/index.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js +0 -0
no textual change.
A node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep +0 -0
no textual change.
A node_modules/resolve/test/resolver/symlinked/package/bar.js +1 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/symlinked/package/package.json +3 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver/without_basedir/main.js +5 -0 collapsed to keep the page light
A node_modules/resolve/test/resolver_sync.js +730 -0 collapsed to keep the page light
A node_modules/resolve/test/shadowed_core.js +54 -0 collapsed to keep the page light
A node_modules/resolve/test/shadowed_core/node_modules/util/index.js +0 -0
no textual change.