lula2 0.0.10 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -5
- package/dist/_app/immutable/assets/{0.DUfo9K33.css → 0.BjwH76RW.css} +1 -1
- package/dist/_app/immutable/assets/DynamicControlEditor.DoNLxeLe.css +1 -0
- package/dist/_app/immutable/chunks/BtOhWAVU.js +2 -0
- package/dist/_app/immutable/chunks/{DUI6GvcB.js → ByARpoaF.js} +1 -1
- package/dist/_app/immutable/chunks/{Bty54Wy4.js → C5zWTfmV.js} +1 -1
- package/dist/_app/immutable/chunks/Cby0Z7eP.js +2 -0
- package/dist/_app/immutable/chunks/{BqNBD7oY.js → CoF2vljD.js} +1 -1
- package/dist/_app/immutable/chunks/{DQXxLgJn.js → DBYZiizR.js} +4 -4
- package/dist/_app/immutable/chunks/{BYKwBiub.js → DnJ0bPgj.js} +1 -1
- package/dist/_app/immutable/chunks/{fCDFfNtz.js → DqFUUtys.js} +1 -1
- package/dist/_app/immutable/chunks/{DUz6FRLu.js → DqsOU3kV.js} +1 -1
- package/dist/_app/immutable/entry/{app.DKW3nM3v.js → app.D7eWHMdQ.js} +2 -2
- package/dist/_app/immutable/entry/start.CBELVcNd.js +1 -0
- package/dist/_app/immutable/nodes/{0.wwwcTLiU.js → 0.CmQmBZ1Y.js} +1 -1
- package/dist/_app/immutable/nodes/{1.CdmpkyKT.js → 1.D81gRaWT.js} +1 -1
- package/dist/_app/immutable/nodes/{2.Dxv3fx_R.js → 2.2oOmrJsl.js} +1 -1
- package/dist/_app/immutable/nodes/{3.CIi_G6Ph.js → 3.DJ4xRl8a.js} +1 -1
- package/dist/_app/immutable/nodes/4.zR2meQtA.js +9 -0
- package/dist/_app/version.json +1 -1
- package/dist/cli/commands/crawl.js +77 -23
- package/dist/index.html +10 -10
- package/dist/index.js +75 -22
- package/package.json +125 -121
- package/src/routes/setup/+page.svelte +16 -8
- package/dist/_app/immutable/assets/DynamicControlEditor.BkVTzFZ-.css +0 -1
- package/dist/_app/immutable/chunks/BJF-sFqz.js +0 -2
- package/dist/_app/immutable/chunks/CBYXl-8c.js +0 -2
- package/dist/_app/immutable/entry/start.DdyS338t.js +0 -1
- package/dist/_app/immutable/nodes/4.B1tIC9Eq.js +0 -9
package/dist/index.html
CHANGED
|
@@ -6,28 +6,28 @@
|
|
|
6
6
|
<link rel="icon" href="/lula.png" />
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
8
8
|
|
|
9
|
-
<link rel="modulepreload" href="/_app/immutable/entry/start.
|
|
10
|
-
<link rel="modulepreload" href="/_app/immutable/chunks/
|
|
11
|
-
<link rel="modulepreload" href="/_app/immutable/chunks/
|
|
12
|
-
<link rel="modulepreload" href="/_app/immutable/entry/app.
|
|
9
|
+
<link rel="modulepreload" href="/_app/immutable/entry/start.CBELVcNd.js">
|
|
10
|
+
<link rel="modulepreload" href="/_app/immutable/chunks/DqFUUtys.js">
|
|
11
|
+
<link rel="modulepreload" href="/_app/immutable/chunks/Cby0Z7eP.js">
|
|
12
|
+
<link rel="modulepreload" href="/_app/immutable/entry/app.D7eWHMdQ.js">
|
|
13
13
|
<link rel="modulepreload" href="/_app/immutable/chunks/DsnmJJEf.js">
|
|
14
|
-
<link rel="modulepreload" href="/_app/immutable/chunks/
|
|
15
|
-
<link rel="modulepreload" href="/_app/immutable/chunks/
|
|
16
|
-
<link rel="modulepreload" href="/_app/immutable/chunks/
|
|
14
|
+
<link rel="modulepreload" href="/_app/immutable/chunks/DqsOU3kV.js">
|
|
15
|
+
<link rel="modulepreload" href="/_app/immutable/chunks/CoF2vljD.js">
|
|
16
|
+
<link rel="modulepreload" href="/_app/immutable/chunks/DnJ0bPgj.js">
|
|
17
17
|
</head>
|
|
18
18
|
<body data-sveltekit-preload-data="hover">
|
|
19
19
|
<div style="display: contents">
|
|
20
20
|
<script>
|
|
21
21
|
{
|
|
22
|
-
|
|
22
|
+
__sveltekit_nre5h8 = {
|
|
23
23
|
base: ""
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
const element = document.currentScript.parentElement;
|
|
27
27
|
|
|
28
28
|
Promise.all([
|
|
29
|
-
import("/_app/immutable/entry/start.
|
|
30
|
-
import("/_app/immutable/entry/app.
|
|
29
|
+
import("/_app/immutable/entry/start.CBELVcNd.js"),
|
|
30
|
+
import("/_app/immutable/entry/app.D7eWHMdQ.js")
|
|
31
31
|
]).then(([kit, app]) => {
|
|
32
32
|
kit.start(app, element);
|
|
33
33
|
});
|
package/dist/index.js
CHANGED
|
@@ -5204,12 +5204,43 @@ function getVersion() {
|
|
|
5204
5204
|
// cli/commands/crawl.ts
|
|
5205
5205
|
import fs4 from "fs";
|
|
5206
5206
|
import { Octokit } from "@octokit/rest";
|
|
5207
|
-
import { Command } from "commander";
|
|
5207
|
+
import { Command, Option } from "commander";
|
|
5208
5208
|
import { createHash as createHash2 } from "crypto";
|
|
5209
|
+
var closingBody = `
|
|
5210
|
+
|
|
5211
|
+
---
|
|
5212
|
+
|
|
5213
|
+
<sub>**Tip:** Customize your compliance reviews with <a href="https://github.com/defenseunicorns/lula.git" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Lula</a>.</sub>`;
|
|
5214
|
+
async function postFinding(params) {
|
|
5215
|
+
const { octokit, postMode, owner, repo, pull_number, body } = params;
|
|
5216
|
+
if (postMode === "comment") {
|
|
5217
|
+
await octokit.issues.createComment({
|
|
5218
|
+
owner,
|
|
5219
|
+
repo,
|
|
5220
|
+
issue_number: pull_number,
|
|
5221
|
+
body
|
|
5222
|
+
});
|
|
5223
|
+
return;
|
|
5224
|
+
}
|
|
5225
|
+
await octokit.pulls.createReview({
|
|
5226
|
+
owner,
|
|
5227
|
+
repo,
|
|
5228
|
+
pull_number,
|
|
5229
|
+
body,
|
|
5230
|
+
event: "REQUEST_CHANGES"
|
|
5231
|
+
});
|
|
5232
|
+
}
|
|
5209
5233
|
function getPRContext() {
|
|
5210
5234
|
const fallbackOwner = process.env.OWNER;
|
|
5211
5235
|
const fallbackRepo = process.env.REPO;
|
|
5212
5236
|
const fallbackNumber = process.env.PULL_NUMBER;
|
|
5237
|
+
if (fallbackOwner && fallbackRepo && fallbackNumber) {
|
|
5238
|
+
return {
|
|
5239
|
+
owner: fallbackOwner,
|
|
5240
|
+
repo: fallbackRepo,
|
|
5241
|
+
pull_number: parseInt(fallbackNumber, 10)
|
|
5242
|
+
};
|
|
5243
|
+
}
|
|
5213
5244
|
if (process.env.GITHUB_EVENT_PATH && process.env.GITHUB_REPOSITORY) {
|
|
5214
5245
|
const event = JSON.parse(fs4.readFileSync(process.env.GITHUB_EVENT_PATH, "utf8"));
|
|
5215
5246
|
const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/");
|
|
@@ -5217,14 +5248,7 @@ function getPRContext() {
|
|
|
5217
5248
|
if (!pull_number) throw new Error("PR number not found in GitHub event payload.");
|
|
5218
5249
|
return { owner, repo, pull_number };
|
|
5219
5250
|
}
|
|
5220
|
-
|
|
5221
|
-
throw new Error("Set OWNER, REPO, and PULL_NUMBER in the environment for local use.");
|
|
5222
|
-
}
|
|
5223
|
-
return {
|
|
5224
|
-
owner: fallbackOwner,
|
|
5225
|
-
repo: fallbackRepo,
|
|
5226
|
-
pull_number: parseInt(fallbackNumber, 10)
|
|
5227
|
-
};
|
|
5251
|
+
throw new Error("Set OWNER, REPO, and PULL_NUMBER in the environment for local use.");
|
|
5228
5252
|
}
|
|
5229
5253
|
async function fetchRawFileViaAPI({
|
|
5230
5254
|
octokit,
|
|
@@ -5286,14 +5310,27 @@ function getChangedBlocks(oldText, newText) {
|
|
|
5286
5310
|
return changed;
|
|
5287
5311
|
}
|
|
5288
5312
|
function crawlCommand() {
|
|
5289
|
-
return new Command().command("crawl").description("Detect compliance-related changes between @lulaStart and @lulaEnd in PR files").
|
|
5313
|
+
return new Command().command("crawl").description("Detect compliance-related changes between @lulaStart and @lulaEnd in PR files").addOption(
|
|
5314
|
+
new Option("--post-mode <mode>", "How to post findings").choices(["review", "comment"]).default("review")
|
|
5315
|
+
).action(async (opts) => {
|
|
5290
5316
|
const { owner, repo, pull_number } = getPRContext();
|
|
5317
|
+
console.log(`Analyzing PR #${pull_number} in ${owner}/${repo} for compliance changes...`);
|
|
5291
5318
|
const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
|
|
5292
5319
|
const pr = await octokit.pulls.get({ owner, repo, pull_number });
|
|
5293
5320
|
const prBranch = pr.data.head.ref;
|
|
5294
5321
|
const { data: files } = await octokit.pulls.listFiles({ owner, repo, pull_number });
|
|
5322
|
+
let commentBody = `## Lula Compliance Overview
|
|
5323
|
+
|
|
5324
|
+
Please review the changes to ensure they meet compliance standards.
|
|
5325
|
+
|
|
5326
|
+
### Reviewed Changes
|
|
5327
|
+
|
|
5328
|
+
Lula reviewed ${files.length} files changed that affect compliance.
|
|
5329
|
+
|
|
5330
|
+
`;
|
|
5295
5331
|
for (const file of files) {
|
|
5296
5332
|
if (file.status === "added") continue;
|
|
5333
|
+
console.log(`Commenting regarding \`${file.filename}\`.`);
|
|
5297
5334
|
try {
|
|
5298
5335
|
const [oldText, newText] = await Promise.all([
|
|
5299
5336
|
fetchRawFileViaAPI({ octokit, owner, repo, path: file.filename, ref: "main" }),
|
|
@@ -5301,27 +5338,43 @@ function crawlCommand() {
|
|
|
5301
5338
|
]);
|
|
5302
5339
|
const changedBlocks = getChangedBlocks(oldText, newText);
|
|
5303
5340
|
for (const block of changedBlocks) {
|
|
5341
|
+
commentBody += `
|
|
5342
|
+
|
|
5343
|
+
---
|
|
5344
|
+
| File | Lines Changed |
|
|
5345
|
+
| ---- | ------------- |
|
|
5346
|
+
`;
|
|
5304
5347
|
const newBlockText = newText.split("\n").slice(block.startLine, block.endLine).join("\n");
|
|
5305
5348
|
const blockSha256 = createHash2("sha256").update(newBlockText).digest("hex");
|
|
5306
|
-
|
|
5307
|
-
|
|
5308
|
-
|
|
5309
|
-
|
|
5310
|
-
Please review the changes to ensure they meet compliance standards.
|
|
5349
|
+
commentBody += `| \`${file.filename}\` | \`${block.startLine + 1}\u2013${block.endLine}\` |
|
|
5350
|
+
> **uuid**-\`${block.uuid}\`
|
|
5351
|
+
**sha256** \`${blockSha256}\`
|
|
5311
5352
|
|
|
5312
5353
|
`;
|
|
5313
|
-
console.log(`Commenting on ${file.filename}: ${commentBody}`);
|
|
5314
|
-
await octokit.issues.createComment({
|
|
5315
|
-
owner,
|
|
5316
|
-
repo,
|
|
5317
|
-
issue_number: pull_number,
|
|
5318
|
-
body: commentBody
|
|
5319
|
-
});
|
|
5320
5354
|
}
|
|
5321
5355
|
} catch (err) {
|
|
5322
5356
|
console.error(`Error processing ${file.filename}: ${err}`);
|
|
5323
5357
|
}
|
|
5324
5358
|
}
|
|
5359
|
+
if (files.length > 0) {
|
|
5360
|
+
await postFinding({
|
|
5361
|
+
octokit,
|
|
5362
|
+
postMode: opts.postMode,
|
|
5363
|
+
owner,
|
|
5364
|
+
repo,
|
|
5365
|
+
pull_number,
|
|
5366
|
+
body: commentBody + closingBody
|
|
5367
|
+
});
|
|
5368
|
+
const header = `Posted (${opts.postMode})`;
|
|
5369
|
+
const underline = "-".repeat(header.length);
|
|
5370
|
+
console.log(`
|
|
5371
|
+
${header}
|
|
5372
|
+
${underline}
|
|
5373
|
+
|
|
5374
|
+
${commentBody + closingBody}
|
|
5375
|
+
|
|
5376
|
+
`);
|
|
5377
|
+
}
|
|
5325
5378
|
});
|
|
5326
5379
|
}
|
|
5327
5380
|
|
package/package.json
CHANGED
|
@@ -1,123 +1,127 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
2
|
+
"name": "lula2",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A tool for managing compliance as code in your GitHub repositories.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"lula2": "./dist/lula2"
|
|
7
|
+
},
|
|
8
|
+
"main": "dist/index.js",
|
|
9
|
+
"types": "dist/index.d.ts",
|
|
10
|
+
"type": "module",
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": ">=22.0.0"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/defenseunicorns/lula.git"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"compliance",
|
|
20
|
+
"devops",
|
|
21
|
+
"devsecops"
|
|
22
|
+
],
|
|
23
|
+
"author": "Defense Unicorns",
|
|
24
|
+
"license": "Apache-2.0",
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/defenseunicorns/lula/issues"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://github.com/defenseunicorns/lula#readme",
|
|
29
|
+
"files": [
|
|
30
|
+
"/src",
|
|
31
|
+
"/dist",
|
|
32
|
+
"!src/**/*.test.ts",
|
|
33
|
+
"!dist/**/*.test.js*",
|
|
34
|
+
"!dist/**/*.test.d.ts*"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"dev": "vite dev --port 5173",
|
|
38
|
+
"dev:api": "tsx --watch index.ts --debug ui --port 3000 --no-open-browser",
|
|
39
|
+
"dev:full": "concurrently \"npm run dev:api\" \"npm run dev\"",
|
|
40
|
+
"build": "npm run build:svelte && npm run build:cli && npm run postbuild:cli",
|
|
41
|
+
"build:svelte": "vite build",
|
|
42
|
+
"build:cli": "esbuild index.ts cli/**/*.ts --bundle --platform=node --target=node22 --format=esm --outdir=dist --external:express --external:commander --external:js-yaml --external:yaml --external:isomorphic-git --external:glob --external:open --external:ws --external:cors --external:multer --external:@octokit/rest --external:undici --external:exceljs --external:csv-parse",
|
|
43
|
+
"postbuild:cli": "cp cli-wrapper.mjs dist/lula2 && chmod +x dist/lula2",
|
|
44
|
+
"preview": "vite preview",
|
|
45
|
+
"prepare": "svelte-kit sync || echo ''",
|
|
46
|
+
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json && tsc --noEmit",
|
|
47
|
+
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
48
|
+
"format": "prettier --write 'src/**/*.{ts,js,svelte}' 'cli/**/*.ts' 'index.ts' 'tests/**/*.ts'",
|
|
49
|
+
"format:check": "prettier --check 'src/**/*.{ts,js,svelte}' 'cli/**/*.ts' 'index.ts' 'tests/**/*.ts'",
|
|
50
|
+
"lint": "prettier --check 'src/**/*.{ts,js,svelte}' 'cli/**/*.ts' 'index.ts' 'tests/**/*.ts' && eslint src cli",
|
|
51
|
+
"test": "npm run test:unit -- --run --coverage",
|
|
52
|
+
"test:integration": "vitest --config integration/vitest.config.integration.ts",
|
|
53
|
+
"test:unit": "vitest"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@octokit/rest": "^22.0.0",
|
|
57
|
+
"@types/ws": "^8.18.1",
|
|
58
|
+
"commander": "^14.0.0",
|
|
59
|
+
"cors": "^2.8.5",
|
|
60
|
+
"csv-parse": "^6.1.0",
|
|
61
|
+
"exceljs": "^4.4.0",
|
|
62
|
+
"express": "^5.1.0",
|
|
63
|
+
"express-rate-limit": "^8.1.0",
|
|
64
|
+
"flowbite": "^3.1.2",
|
|
65
|
+
"glob": "^11.0.3",
|
|
66
|
+
"isomorphic-git": "^1.33.1",
|
|
67
|
+
"js-yaml": "^4.1.0",
|
|
68
|
+
"multer": "^2.0.2",
|
|
69
|
+
"open": "^10.2.0",
|
|
70
|
+
"undici": "^7.15.0",
|
|
71
|
+
"ws": "^8.18.3",
|
|
72
|
+
"yaml": "^2.8.1"
|
|
73
|
+
},
|
|
74
|
+
"devDependencies": {
|
|
75
|
+
"@commitlint/cli": "^19.8.1",
|
|
76
|
+
"@commitlint/config-conventional": "^19.8.1",
|
|
77
|
+
"@eslint/compat": "^1.3.2",
|
|
78
|
+
"@eslint/js": "^9.35.0",
|
|
79
|
+
"@playwright/test": "^1.55.0",
|
|
80
|
+
"@sveltejs/adapter-static": "^3.0.9",
|
|
81
|
+
"@sveltejs/kit": "^2.37.1",
|
|
82
|
+
"@sveltejs/vite-plugin-svelte": "^6.1.4",
|
|
83
|
+
"@tailwindcss/vite": "^4.1.13",
|
|
84
|
+
"@types/cors": "^2.8.19",
|
|
85
|
+
"@types/express": "^5.0.3",
|
|
86
|
+
"@types/js-yaml": "^4.0.9",
|
|
87
|
+
"@types/jsdom": "^21.1.7",
|
|
88
|
+
"@types/multer": "^2.0.0",
|
|
89
|
+
"@types/node": "^24.4.0",
|
|
90
|
+
"@typescript-eslint/eslint-plugin": "^8.42.0",
|
|
91
|
+
"@typescript-eslint/parser": "^8.42.0",
|
|
92
|
+
"@vitest/browser": "^3.2.4",
|
|
93
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
94
|
+
"carbon-icons-svelte": "^13.5.0",
|
|
95
|
+
"carbon-preprocess-svelte": "^0.11.11",
|
|
96
|
+
"concurrently": "^9.2.1",
|
|
97
|
+
"esbuild": "^0.25.9",
|
|
98
|
+
"eslint": "^9.35.0",
|
|
99
|
+
"eslint-config-prettier": "^10.1.8",
|
|
100
|
+
"eslint-plugin-jsdoc": "^57.0.8",
|
|
101
|
+
"eslint-plugin-svelte": "^3.12.2",
|
|
102
|
+
"globals": "^16.3.0",
|
|
103
|
+
"husky": "^9.1.7",
|
|
104
|
+
"jsdom": "^27.0.0",
|
|
105
|
+
"playwright": "^1.55.0",
|
|
106
|
+
"prettier": "3.6.2",
|
|
107
|
+
"prettier-plugin-svelte": "^3.4.0",
|
|
108
|
+
"semantic-release": "^24.2.7",
|
|
109
|
+
"shellcheck": "^4.1.0",
|
|
110
|
+
"svelte": "^5.38.7",
|
|
111
|
+
"svelte-check": "^4.3.1",
|
|
112
|
+
"tailwind-merge": "^3.3.1",
|
|
113
|
+
"tailwindcss": "^4.1.13",
|
|
114
|
+
"tsx": "^4.20.5",
|
|
115
|
+
"typescript": "5.9.2",
|
|
116
|
+
"typescript-eslint": "^8.42.0",
|
|
117
|
+
"vite": "^7.1.4",
|
|
118
|
+
"vitest": "^3.2.4",
|
|
119
|
+
"vitest-browser-svelte": "^1.1.0"
|
|
120
|
+
},
|
|
121
|
+
"release": {
|
|
122
|
+
"branches": [
|
|
123
|
+
"main",
|
|
124
|
+
"next"
|
|
125
|
+
]
|
|
126
|
+
}
|
|
123
127
|
}
|
|
@@ -154,9 +154,10 @@
|
|
|
154
154
|
class="text-4xl font-extrabold text-gray-900 dark:text-white mb-4 flex items-center justify-center gap-3"
|
|
155
155
|
>
|
|
156
156
|
<img src="/lula.png" class="h-12 w-12" alt="Lula" />
|
|
157
|
-
<span>Lula</span>
|
|
157
|
+
<span id="title">Lula</span>
|
|
158
|
+
<!-- Application Title -->
|
|
158
159
|
</h1>
|
|
159
|
-
<p class="text-lg text-gray-600 dark:text-gray-400">
|
|
160
|
+
<p id="description" class="text-lg text-gray-600 dark:text-gray-400">
|
|
160
161
|
{#if currentControlSetPath}
|
|
161
162
|
You have an existing control set. You can continue using it or create a new one.
|
|
162
163
|
{:else if hasAnyControlSets}
|
|
@@ -174,6 +175,7 @@
|
|
|
174
175
|
class="bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-800 dark:to-gray-900 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 inline-flex"
|
|
175
176
|
>
|
|
176
177
|
<button
|
|
178
|
+
data-testid="tab-existing"
|
|
177
179
|
on:click={() => (activeTab = 'existing')}
|
|
178
180
|
class="px-6 py-3 rounded-l-lg font-medium transition-colors {activeTab === 'existing'
|
|
179
181
|
? 'bg-blue-600 text-white'
|
|
@@ -182,6 +184,7 @@
|
|
|
182
184
|
Select Existing Control Set
|
|
183
185
|
</button>
|
|
184
186
|
<button
|
|
187
|
+
data-testid="tab-import"
|
|
185
188
|
on:click={() => (activeTab = 'import')}
|
|
186
189
|
class="px-6 py-3 rounded-r-lg font-medium transition-colors {activeTab === 'import'
|
|
187
190
|
? 'bg-blue-600 text-white'
|
|
@@ -198,17 +201,22 @@
|
|
|
198
201
|
class="bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-800 dark:to-gray-900 rounded-lg shadow-xl p-6 relative border border-gray-200 dark:border-gray-700"
|
|
199
202
|
>
|
|
200
203
|
{#if activeTab === 'import'}
|
|
201
|
-
<
|
|
204
|
+
<div data-testid="pane-import">
|
|
205
|
+
<SpreadsheetImport on:created={handleControlSetCreated} />
|
|
206
|
+
</div>
|
|
202
207
|
{:else}
|
|
203
|
-
<
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
+
<div data-testid="pane-existing">
|
|
209
|
+
<ExistingControlSets
|
|
210
|
+
{controlSets}
|
|
211
|
+
on:selected={handleControlSetSelected}
|
|
212
|
+
on:tab-change={handleTabChange}
|
|
213
|
+
/>
|
|
214
|
+
</div>
|
|
208
215
|
{/if}
|
|
209
216
|
|
|
210
217
|
{#if isSwitching}
|
|
211
218
|
<div
|
|
219
|
+
data-testid="switch-overlay"
|
|
212
220
|
class="absolute inset-0 bg-gray-900 bg-opacity-50 flex items-center justify-center rounded-lg"
|
|
213
221
|
>
|
|
214
222
|
<div class="bg-white dark:bg-gray-700 rounded-lg p-6 text-center">
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.diff-viewer.svelte-tcwuie{font-family:Monaco,Menlo,Consolas,monospace}.diff-line.svelte-tcwuie:hover{background-color:#3b82f60d}.diff-line.bg-green-50.svelte-tcwuie:hover{background-color:#22c55e1a}.diff-line.bg-red-50.svelte-tcwuie:hover{background-color:#ef44441a}.dark .diff-line.svelte-tcwuie:hover{background-color:#3b82f61a}.yaml-diff-viewer.svelte-1mbkpm9{font-family:Monaco,Menlo,Consolas,monospace}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var Qe=Array.isArray,yn=Array.prototype.indexOf,bn=Array.from,$e=Object.defineProperty,we=Object.getOwnPropertyDescriptor,gn=Object.getOwnPropertyDescriptors,wn=Object.prototype,mn=Array.prototype,St=Object.getPrototypeOf,dt=Object.isExtensible;function Mr(e){return typeof e=="function"}const X=()=>{};function Lr(e){return e()}function et(e){for(var t=0;t<e.length;t++)e[t]()}function En(){var e,t,n=new Promise((r,s)=>{e=r,t=s});return{promise:n,resolve:e,reject:t}}function Fr(e,t){if(Array.isArray(e))return e;if(!(Symbol.iterator in e))return Array.from(e);const n=[];for(const r of e)if(n.push(r),n.length===t)break;return n}const k=2,tt=4,Fe=8,ve=16,F=32,se=64,kt=128,R=256,Ce=512,m=1024,C=2048,j=4096,B=8192,de=16384,nt=32768,rt=65536,pt=1<<17,Tn=1<<18,Ae=1<<19,Ot=1<<20,We=1<<21,st=1<<22,Z=1<<23,J=Symbol("$state"),jr=Symbol("legacy props"),qr=Symbol(""),at=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},it=3,Ie=8;function An(){throw new Error("https://svelte.dev/e/await_outside_boundary")}function pe(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function xn(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Sn(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function kn(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function On(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Rn(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Nn(){throw new Error("https://svelte.dev/e/get_abort_signal_outside_reaction")}function Cn(){throw new Error("https://svelte.dev/e/hydration_failed")}function Rt(e){throw new Error("https://svelte.dev/e/lifecycle_legacy_only")}function Yr(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function In(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Pn(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Dn(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}const Hr=1,Ur=2,Br=4,$r=8,Wr=16,Gr=1,Kr=2,zr=4,Xr=8,Zr=16,Jr=4,Mn=1,Ln=2,Nt="[",Fn="[!",Ct="]",oe={},E=Symbol(),Qr="http://www.w3.org/1999/xhtml",es="@attach";function je(e){console.warn("https://svelte.dev/e/hydration_mismatch")}function ts(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}let g=!1;function Re(e){g=e}let b;function $(e){if(e===null)throw je(),oe;return b=e}function ut(){return $(K(b))}function ns(e){if(g){if(K(b)!==null)throw je(),oe;b=e}}function rs(e=1){if(g){for(var t=e,n=b;t--;)n=K(n);b=n}}function ss(){for(var e=0,t=b;;){if(t.nodeType===Ie){var n=t.data;if(n===Ct){if(e===0)return t;e-=1}else(n===Nt||n===Fn)&&(e+=1)}var r=K(t);t.remove(),t=r}}function as(e){if(!e||e.nodeType!==Ie)throw je(),oe;return e.data}function It(e){return e===this.v}function Pt(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function Dt(e){return!Pt(e,this.v)}let xe=!1;function is(){xe=!0}let y=null;function Pe(e){y=e}function jn(e){return qe().get(e)}function qn(e,t){return qe().set(e,t),t}function Vn(e){return qe().has(e)}function Yn(){return qe()}function Hn(e,t=!1,n){y={p:y,c:null,e:null,s:e,x:null,l:xe&&!t?{s:null,u:null,$:[]}:null}}function Un(e){var t=y,n=t.e;if(n!==null){t.e=null;for(var r of n)Zt(r)}return y=t.p,{}}function Se(){return!xe||y!==null&&y.l===null}function qe(e){return y===null&&pe(),y.c??=new Map(Bn(y)||void 0)}function Bn(e){let t=e.p;for(;t!==null;){const n=t.c;if(n!==null)return n;t=t.p}return null}const $n=new WeakMap;function Wn(e){var t=h;if(t===null)return p.f|=Z,e;if((t.f&nt)===0){if((t.f&kt)===0)throw!t.parent&&e instanceof Error&&Mt(e),e;t.b.error(e)}else lt(e,t)}function lt(e,t){for(;t!==null;){if((t.f&kt)!==0)try{t.b.error(e);return}catch(n){e=n}t=t.parent}throw e instanceof Error&&Mt(e),e}function Mt(e){const t=$n.get(e);t&&($e(e,"message",{value:t.message}),$e(e,"stack",{value:t.stack}))}const Gn=typeof requestIdleCallback>"u"?e=>setTimeout(e,1):requestIdleCallback;let me=[],Ee=[];function Lt(){var e=me;me=[],et(e)}function Ft(){var e=Ee;Ee=[],et(e)}function jt(e){me.length===0&&queueMicrotask(Lt),me.push(e)}function us(e){Ee.length===0&&Gn(Ft),Ee.push(e)}function Kn(){me.length>0&&Lt(),Ee.length>0&&Ft()}function zn(){const e=h.b;return e===null&&An(),e}function ft(e){var t=k|C,n=p!==null&&(p.f&k)!==0?p:null;return h===null||n!==null&&(n.f&R)!==0?t|=R:h.f|=Ae,{ctx:y,deps:null,effects:null,equals:It,f:t,fn:e,reactions:null,rv:0,v:E,wv:0,parent:n??h,ac:null}}function Xn(e,t){let n=h;n===null&&xn();var r=n.b,s=void 0,a=ct(E),i=null,f=!p;return ir(()=>{try{var u=e();i&&Promise.resolve(u).catch(()=>{})}catch(_){u=Promise.reject(_)}var l=()=>u;s=i?.then(l,l)??Promise.resolve(u),i=s;var o=w,c=r.is_pending();f&&(r.update_pending_count(1),c||o.increment());const v=(_,d=void 0)=>{i=null,c||o.activate(),d?d!==at&&(a.f|=Z,Me(a,d)):((a.f&Z)!==0&&(a.f^=Z),Me(a,_)),f&&(r.update_pending_count(-1),c||o.decrement()),Yt()};if(s.then(v,_=>v(null,_||"unknown")),o)return()=>{queueMicrotask(()=>o.neuter())}}),new Promise(u=>{function l(o){function c(){o===s?u(a):l(s)}o.then(c,c)}l(s)})}function ls(e){const t=ft(e);return an(t),t}function Zn(e){const t=ft(e);return t.equals=Dt,t}function qt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)W(t[n])}}function Jn(e){for(var t=e.parent;t!==null;){if((t.f&k)===0)return t;t=t.parent}return null}function ot(e){var t,n=h;G(Jn(e));try{qt(e),t=on(e)}finally{G(n)}return t}function Vt(e){var t=ot(e);if(e.equals(t)||(e.v=t,e.wv=ln()),!he){var n=(H||(e.f&R)!==0)&&e.deps!==null?j:m;x(e,n)}}function Qn(e,t,n){const r=Se()?ft:Zn;if(t.length===0){n(e.map(r));return}var s=w,a=h,i=er(),f=zn();Promise.all(t.map(u=>Xn(u))).then(u=>{s?.activate(),i();try{n([...e.map(r),...u])}catch(l){(a.f&de)===0&<(l,a)}s?.deactivate(),Yt()}).catch(u=>{f.error(u)})}function er(){var e=h,t=p,n=y,r=w;return function(){G(e),D(t),Pe(n),r?.activate()}}function Yt(){G(null),D(null),Pe(null)}const He=new Set;let w=null,Ue=null,ht=new Set,De=[];function Ht(){const e=De.shift();De.length>0&&queueMicrotask(Ht),e()}let te=[],Ve=null,Ge=!1,Ne=!1;class ne{current=new Map;#l=new Map;#s=new Set;#e=0;#f=null;#o=!1;#n=[];#a=[];#r=[];#t=[];#i=[];#c=[];#_=[];skipped_effects=new Set;process(t){te=[],Ue=null;for(const s of t)this.#d(s);if(this.#n.length===0&&this.#e===0){this.#v();var n=this.#r,r=this.#t;this.#r=[],this.#t=[],this.#i=[],Ue=w,w=null,yt(n),yt(r),w===null?w=this:He.delete(this),this.#f?.resolve()}else this.#u(this.#r),this.#u(this.#t),this.#u(this.#i);for(const s of this.#n)ee(s);for(const s of this.#a)ee(s);this.#n=[],this.#a=[]}#d(t){t.f^=m;for(var n=t.first;n!==null;){var r=n.f,s=(r&(F|se))!==0,a=s&&(r&m)!==0,i=a||(r&B)!==0||this.skipped_effects.has(n);if(!i&&n.fn!==null){if(s)n.f^=m;else if((r&tt)!==0)this.#t.push(n);else if((r&m)===0)if((r&st)!==0){var f=n.b?.is_pending()?this.#a:this.#n;f.push(n)}else ke(n)&&((n.f&ve)!==0&&this.#i.push(n),ee(n));var u=n.first;if(u!==null){n=u;continue}}var l=n.parent;for(n=n.next;n===null&&l!==null;)n=l.next,l=l.parent}}#u(t){for(const n of t)((n.f&C)!==0?this.#c:this.#_).push(n),x(n,m);t.length=0}capture(t,n){this.#l.has(t)||this.#l.set(t,n),this.current.set(t,t.v)}activate(){w=this}deactivate(){w=null,Ue=null;for(const t of ht)if(ht.delete(t),t(),w!==null)break}neuter(){this.#o=!0}flush(){te.length>0?Ke():this.#v(),w===this&&(this.#e===0&&He.delete(this),this.deactivate())}#v(){if(!this.#o)for(const t of this.#s)t();this.#s.clear()}increment(){this.#e+=1}decrement(){if(this.#e-=1,this.#e===0){for(const t of this.#c)x(t,C),_e(t);for(const t of this.#_)x(t,j),_e(t);this.#r=[],this.#t=[],this.flush()}else this.deactivate()}add_callback(t){this.#s.add(t)}settled(){return(this.#f??=En()).promise}static ensure(){if(w===null){const t=w=new ne;He.add(w),Ne||ne.enqueue(()=>{w===t&&t.flush()})}return w}static enqueue(t){De.length===0&&queueMicrotask(Ht),De.unshift(t)}}function Ut(e){var t=Ne;Ne=!0;try{var n;for(e&&(Ke(),n=e());;){if(Kn(),te.length===0&&(w?.flush(),te.length===0))return Ve=null,n;Ke()}}finally{Ne=t}}function Ke(){var e=ce;Ge=!0;try{var t=0;for(mt(!0);te.length>0;){var n=ne.ensure();if(t++>1e3){var r,s;tr()}n.process(te),U.clear()}}finally{Ge=!1,mt(e),Ve=null}}function tr(){try{Rn()}catch(e){lt(e,Ve)}}let z=null;function yt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if((r.f&(de|B))===0&&ke(r)&&(z=[],ee(r),r.deps===null&&r.first===null&&r.nodes_start===null&&(r.teardown===null&&r.ac===null?nn(r):r.fn=null),z?.length>0)){U.clear();for(const s of z)ee(s);z=[]}}z=null}}function _e(e){for(var t=Ve=e;t.parent!==null;){t=t.parent;var n=t.f;if(Ge&&t===h&&(n&ve)!==0)return;if((n&(se|F))!==0){if((n&m)===0)return;t.f^=m}}te.push(t)}const U=new Map;function ct(e,t){var n={f:0,v:e,reactions:null,equals:It,rv:0,wv:0};return n}function V(e,t){const n=ct(e);return an(n),n}function fs(e,t=!1,n=!0){const r=ct(e);return t||(r.equals=Dt),xe&&n&&y!==null&&y.l!==null&&(y.l.s??=[]).push(r),r}function Y(e,t,n=!1){p!==null&&(!I||(p.f&pt)!==0)&&Se()&&(p.f&(k|ve|st|pt))!==0&&!L?.includes(e)&&Dn();let r=n?be(t):t;return Me(e,r)}function Me(e,t){if(!e.equals(t)){var n=e.v;he?U.set(e,t):U.set(e,n),e.v=t;var r=ne.ensure();r.capture(e,n),(e.f&k)!==0&&((e.f&C)!==0&&ot(e),x(e,(e.f&R)===0?m:j)),e.wv=ln(),Bt(e,C),Se()&&h!==null&&(h.f&m)!==0&&(h.f&(F|se))===0&&(O===null?vr([e]):O.push(e))}return t}function os(e,t=1){var n=fe(e),r=t===1?n++:n--;return Y(e,n),r}function Be(e){Y(e,e.v+1)}function Bt(e,t){var n=e.reactions;if(n!==null)for(var r=Se(),s=n.length,a=0;a<s;a++){var i=n[a],f=i.f;if(!(!r&&i===h)){var u=(f&C)===0;u&&x(i,t),(f&k)!==0?Bt(i,j):u&&((f&ve)!==0&&z!==null&&z.push(i),_e(i))}}}function be(e){if(typeof e!="object"||e===null||J in e)return e;const t=St(e);if(t!==wn&&t!==mn)return e;var n=new Map,r=Qe(e),s=V(0),a=Q,i=f=>{if(Q===a)return f();var u=p,l=Q;D(null),Tt(a);var o=f();return D(u),Tt(l),o};return r&&n.set("length",V(e.length)),new Proxy(e,{defineProperty(f,u,l){(!("value"in l)||l.configurable===!1||l.enumerable===!1||l.writable===!1)&&In();var o=n.get(u);return o===void 0?o=i(()=>{var c=V(l.value);return n.set(u,c),c}):Y(o,l.value,!0),!0},deleteProperty(f,u){var l=n.get(u);if(l===void 0){if(u in f){const o=i(()=>V(E));n.set(u,o),Be(s)}}else Y(l,E),Be(s);return!0},get(f,u,l){if(u===J)return e;var o=n.get(u),c=u in f;if(o===void 0&&(!c||we(f,u)?.writable)&&(o=i(()=>{var _=be(c?f[u]:E),d=V(_);return d}),n.set(u,o)),o!==void 0){var v=fe(o);return v===E?void 0:v}return Reflect.get(f,u,l)},getOwnPropertyDescriptor(f,u){var l=Reflect.getOwnPropertyDescriptor(f,u);if(l&&"value"in l){var o=n.get(u);o&&(l.value=fe(o))}else if(l===void 0){var c=n.get(u),v=c?.v;if(c!==void 0&&v!==E)return{enumerable:!0,configurable:!0,value:v,writable:!0}}return l},has(f,u){if(u===J)return!0;var l=n.get(u),o=l!==void 0&&l.v!==E||Reflect.has(f,u);if(l!==void 0||h!==null&&(!o||we(f,u)?.writable)){l===void 0&&(l=i(()=>{var v=o?be(f[u]):E,_=V(v);return _}),n.set(u,l));var c=fe(l);if(c===E)return!1}return o},set(f,u,l,o){var c=n.get(u),v=u in f;if(r&&u==="length")for(var _=l;_<c.v;_+=1){var d=n.get(_+"");d!==void 0?Y(d,E):_ in f&&(d=i(()=>V(E)),n.set(_+"",d))}if(c===void 0)(!v||we(f,u)?.writable)&&(c=i(()=>V(void 0)),Y(c,be(l)),n.set(u,c));else{v=c.v!==E;var T=i(()=>be(l));Y(c,T)}var ae=Reflect.getOwnPropertyDescriptor(f,u);if(ae?.set&&ae.set.call(o,l),!v){if(r&&typeof u=="string"){var Oe=n.get("length"),q=Number(u);Number.isInteger(q)&&q>=Oe.v&&Y(Oe,q+1)}Be(s)}return!0},ownKeys(f){fe(s);var u=Reflect.ownKeys(f).filter(c=>{var v=n.get(c);return v===void 0||v.v!==E});for(var[l,o]of n)o.v!==E&&!(l in f)&&u.push(l);return u},setPrototypeOf(){Pn()}})}function bt(e){try{if(e!==null&&typeof e=="object"&&J in e)return e[J]}catch{}return e}function cs(e,t){return Object.is(bt(e),bt(t))}var gt,$t,Wt,Gt;function ze(){if(gt===void 0){gt=window,$t=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Wt=we(t,"firstChild").get,Gt=we(t,"nextSibling").get,dt(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),dt(n)&&(n.__t=void 0)}}function re(e=""){return document.createTextNode(e)}function P(e){return Wt.call(e)}function K(e){return Gt.call(e)}function _s(e,t){if(!g)return P(e);var n=P(b);if(n===null)n=b.appendChild(re());else if(t&&n.nodeType!==it){var r=re();return n?.before(r),$(r),r}return $(n),n}function vs(e,t){if(!g){var n=P(e);return n instanceof Comment&&n.data===""?K(n):n}return b}function ds(e,t=1,n=!1){let r=g?b:e;for(var s;t--;)s=r,r=K(r);if(!g)return r;if(n&&r?.nodeType!==it){var a=re();return r===null?s?.after(a):r.before(a),$(a),a}return $(r),r}function Kt(e){e.textContent=""}function ps(){return!1}function hs(e,t){if(t){const n=document.body;e.autofocus=!0,jt(()=>{document.activeElement===n&&e.focus()})}}function ys(e){g&&P(e)!==null&&Kt(e)}let wt=!1;function nr(){wt||(wt=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Ye(e){var t=p,n=h;D(null),G(null);try{return e()}finally{D(t),G(n)}}function bs(e,t,n,r=n){e.addEventListener(t,()=>Ye(n));const s=e.__on_r;s?e.__on_r=()=>{s(),r(!0)}:e.__on_r=()=>r(!0),nr()}function zt(e){h===null&&p===null&&On(),p!==null&&(p.f&R)!==0&&h===null&&kn(),he&&Sn()}function rr(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function M(e,t,n,r=!0){var s=h;s!==null&&(s.f&B)!==0&&(e|=B);var a={ctx:y,deps:null,nodes_start:null,nodes_end:null,f:e|C,first:null,fn:t,last:null,next:null,parent:s,b:s&&s.b,prev:null,teardown:null,transitions:null,wv:0,ac:null};if(n)try{ee(a),a.f|=nt}catch(u){throw W(a),u}else t!==null&&_e(a);if(r){var i=a;if(n&&i.deps===null&&i.teardown===null&&i.nodes_start===null&&i.first===i.last&&(i.f&Ae)===0&&(i=i.first),i!==null&&(i.parent=s,s!==null&&rr(i,s),p!==null&&(p.f&k)!==0&&(e&se)===0)){var f=p;(f.effects??=[]).push(i)}}return a}function Xt(e){const t=M(Fe,null,!1);return x(t,m),t.teardown=e,t}function sr(e){zt();var t=h.f,n=!p&&(t&F)!==0&&(t&nt)===0;if(n){var r=y;(r.e??=[]).push(e)}else return Zt(e)}function Zt(e){return M(tt|Ot,e,!1)}function gs(e){return zt(),M(Fe|Ot,e,!0)}function ar(e){ne.ensure();const t=M(se|Ae,e,!0);return(n={})=>new Promise(r=>{n.outro?or(t,()=>{W(t),r(void 0)}):(W(t),r(void 0))})}function ws(e){return M(tt,e,!1)}function ms(e,t){var n=y,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=Jt(()=>{e(),!r.ran&&(r.ran=!0,ye(t))})}function Es(){var e=y;Jt(()=>{for(var t of e.l.$){t.deps();var n=t.effect;(n.f&m)!==0&&x(n,j),ke(n)&&ee(n),t.ran=!1}})}function ir(e){return M(st|Ae,e,!0)}function Jt(e,t=0){return M(Fe|t,e,!0)}function Ts(e,t=[],n=[]){Qn(t,n,r=>{M(Fe,()=>e(...r.map(fe)),!0)})}function ur(e,t=0){var n=M(ve|t,e,!0);return n}function Qt(e,t=!0){return M(F|Ae,e,!0,t)}function en(e){var t=e.teardown;if(t!==null){const n=he,r=p;Et(!0),D(null);try{t.call(null)}finally{Et(n),D(r)}}}function tn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const s=n.ac;s!==null&&Ye(()=>{s.abort(at)});var r=n.next;(n.f&se)!==0?n.parent=null:W(n,t),n=r}}function lr(e){for(var t=e.first;t!==null;){var n=t.next;(t.f&F)===0&&W(t),t=n}}function W(e,t=!0){var n=!1;(t||(e.f&Tn)!==0)&&e.nodes_start!==null&&e.nodes_end!==null&&(fr(e.nodes_start,e.nodes_end),n=!0),tn(e,t&&!n),Le(e,0),x(e,de);var r=e.transitions;if(r!==null)for(const a of r)a.stop();en(e);var s=e.parent;s!==null&&s.first!==null&&nn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes_start=e.nodes_end=e.ac=null}function fr(e,t){for(;e!==null;){var n=e===t?null:K(e);e.remove(),e=n}}function nn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function or(e,t){var n=[];rn(e,n,!0),cr(n,()=>{W(e),t&&t()})}function cr(e,t){var n=e.length;if(n>0){var r=()=>--n||t();for(var s of e)s.out(r)}else t()}function rn(e,t,n){if((e.f&B)===0){if(e.f^=B,e.transitions!==null)for(const i of e.transitions)(i.is_global||n)&&t.push(i);for(var r=e.first;r!==null;){var s=r.next,a=(r.f&rt)!==0||(r.f&F)!==0;rn(r,t,a?n:!1),r=s}}}function As(e){sn(e,!0)}function sn(e,t){if((e.f&B)!==0){e.f^=B,(e.f&m)===0&&(x(e,C),_e(e));for(var n=e.first;n!==null;){var r=n.next,s=(n.f&rt)!==0||(n.f&F)!==0;sn(n,s?t:!1),n=r}if(e.transitions!==null)for(const a of e.transitions)(a.is_global||t)&&a.in()}}let le=null;function _r(e){var t=le;try{if(le=new Set,ye(e),t!==null)for(var n of le)t.add(n);return le}finally{le=t}}function xs(e){for(var t of _r(e))Me(t,t.v)}let ce=!1;function mt(e){ce=e}let he=!1;function Et(e){he=e}let p=null,I=!1;function D(e){p=e}let h=null;function G(e){h=e}let L=null;function an(e){p!==null&&(L===null?L=[e]:L.push(e))}let A=null,S=0,O=null;function vr(e){O=e}let un=1,Te=0,Q=Te;function Tt(e){Q=e}let H=!1;function ln(){return++un}function ke(e){var t=e.f;if((t&C)!==0)return!0;if((t&j)!==0){var n=e.deps,r=(t&R)!==0;if(n!==null){var s,a,i=(t&Ce)!==0,f=r&&h!==null&&!H,u=n.length;if((i||f)&&(h===null||(h.f&de)===0)){var l=e,o=l.parent;for(s=0;s<u;s++)a=n[s],(i||!a?.reactions?.includes(l))&&(a.reactions??=[]).push(l);i&&(l.f^=Ce),f&&o!==null&&(o.f&R)===0&&(l.f^=R)}for(s=0;s<u;s++)if(a=n[s],ke(a)&&Vt(a),a.wv>e.wv)return!0}(!r||h!==null&&!H)&&x(e,m)}return!1}function fn(e,t,n=!0){var r=e.reactions;if(r!==null&&!L?.includes(e))for(var s=0;s<r.length;s++){var a=r[s];(a.f&k)!==0?fn(a,t,!1):t===a&&(n?x(a,C):(a.f&m)!==0&&x(a,j),_e(a))}}function on(e){var t=A,n=S,r=O,s=p,a=H,i=L,f=y,u=I,l=Q,o=e.f;A=null,S=0,O=null,H=(o&R)!==0&&(I||!ce||p===null),p=(o&(F|se))===0?e:null,L=null,Pe(e.ctx),I=!1,Q=++Te,e.ac!==null&&(Ye(()=>{e.ac.abort(at)}),e.ac=null);try{e.f|=We;var c=e.fn,v=c(),_=e.deps;if(A!==null){var d;if(Le(e,S),_!==null&&S>0)for(_.length=S+A.length,d=0;d<A.length;d++)_[S+d]=A[d];else e.deps=_=A;if(!H||(o&k)!==0&&e.reactions!==null)for(d=S;d<_.length;d++)(_[d].reactions??=[]).push(e)}else _!==null&&S<_.length&&(Le(e,S),_.length=S);if(Se()&&O!==null&&!I&&_!==null&&(e.f&(k|j|C))===0)for(d=0;d<O.length;d++)fn(O[d],e);return s!==null&&s!==e&&(Te++,O!==null&&(r===null?r=O:r.push(...O))),(e.f&Z)!==0&&(e.f^=Z),v}catch(T){return Wn(T)}finally{e.f^=We,A=t,S=n,O=r,p=s,H=a,L=i,Pe(f),I=u,Q=l}}function dr(e,t){let n=t.reactions;if(n!==null){var r=yn.call(n,e);if(r!==-1){var s=n.length-1;s===0?n=t.reactions=null:(n[r]=n[s],n.pop())}}n===null&&(t.f&k)!==0&&(A===null||!A.includes(t))&&(x(t,j),(t.f&(R|Ce))===0&&(t.f^=Ce),qt(t),Le(t,0))}function Le(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)dr(e,n[r])}function ee(e){var t=e.f;if((t&de)===0){x(e,m);var n=h,r=ce;h=e,ce=!0;try{(t&ve)!==0?lr(e):tn(e),en(e);var s=on(e);e.teardown=typeof s=="function"?s:null,e.wv=un;var a}finally{ce=r,h=n}}}async function pr(){await Promise.resolve(),Ut()}function hr(){return ne.ensure().settled()}function fe(e){var t=e.f,n=(t&k)!==0;if(le?.add(e),p!==null&&!I){var r=h!==null&&(h.f&de)!==0;if(!r&&!L?.includes(e)){var s=p.deps;if((p.f&We)!==0)e.rv<Te&&(e.rv=Te,A===null&&s!==null&&s[S]===e?S++:A===null?A=[e]:(!H||!A.includes(e))&&A.push(e));else{(p.deps??=[]).push(e);var a=e.reactions;a===null?e.reactions=[p]:a.includes(p)||a.push(p)}}}else if(n&&e.deps===null&&e.effects===null){var i=e,f=i.parent;f!==null&&(f.f&R)===0&&(i.f^=R)}if(he){if(U.has(e))return U.get(e);if(n){i=e;var u=i.v;return((i.f&m)===0&&i.reactions!==null||cn(i))&&(u=ot(i)),U.set(i,u),u}}else n&&(i=e,ke(i)&&Vt(i));if((e.f&Z)!==0)throw e.v;return e.v}function cn(e){if(e.v===E)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(U.has(t)||(t.f&k)!==0&&cn(t))return!0;return!1}function ye(e){var t=I;try{return I=!0,e()}finally{I=t}}const yr=-7169;function x(e,t){e.f=e.f&yr|t}function Ss(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(J in e)Xe(e);else if(!Array.isArray(e))for(let t in e){const n=e[t];typeof n=="object"&&n&&J in n&&Xe(n)}}}function Xe(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let r in e)try{Xe(e[r],t)}catch{}const n=St(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){const r=gn(n);for(let s in r){const a=r[s].get;if(a)try{a.call(e)}catch{}}}}}function ks(e){return e.endsWith("capture")&&e!=="gotpointercapture"&&e!=="lostpointercapture"}const br=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function Os(e){return br.includes(e)}const gr={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject",novalidate:"noValidate",allowfullscreen:"allowFullscreen",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback"};function Rs(e){return e=e.toLowerCase(),gr[e]??e}const wr=["touchstart","touchmove"];function mr(e){return wr.includes(e)}const _n=new Set,Ze=new Set;function Er(e,t,n,r={}){function s(a){if(r.capture||ge.call(t,a),!a.cancelBubble)return Ye(()=>n?.call(this,a))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?jt(()=>{t.addEventListener(e,s,r)}):t.addEventListener(e,s,r),s}function Ns(e,t,n,r,s){var a={capture:r,passive:s},i=Er(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Xt(()=>{t.removeEventListener(e,i,a)})}function Cs(e){for(var t=0;t<e.length;t++)_n.add(e[t]);for(var n of Ze)n(e)}let At=null;function ge(e){var t=this,n=t.ownerDocument,r=e.type,s=e.composedPath?.()||[],a=s[0]||e.target;At=e;var i=0,f=At===e&&e.__root;if(f){var u=s.indexOf(f);if(u!==-1&&(t===document||t===window)){e.__root=t;return}var l=s.indexOf(t);if(l===-1)return;u<=l&&(i=u)}if(a=s[i]||e.target,a!==t){$e(e,"currentTarget",{configurable:!0,get(){return a||n}});var o=p,c=h;D(null),G(null);try{for(var v,_=[];a!==null;){var d=a.assignedSlot||a.parentNode||a.host||null;try{var T=a["__"+r];if(T!=null&&(!a.disabled||e.target===a))if(Qe(T)){var[ae,...Oe]=T;ae.apply(a,[e,...Oe])}else T.call(a,e)}catch(q){v?_.push(q):v=q}if(e.cancelBubble||d===t||d===null)break;a=d}if(v){for(let q of _)queueMicrotask(()=>{throw q});throw v}}finally{e.__root=t,delete e.currentTarget,D(o),G(c)}}}function _t(e){var t=document.createElement("template");return t.innerHTML=e.replaceAll("<!>","<!---->"),t.content}function N(e,t){var n=h;n.nodes_start===null&&(n.nodes_start=e,n.nodes_end=t)}function Is(e,t){var n=(t&Mn)!==0,r=(t&Ln)!==0,s,a=!e.startsWith("<!>");return()=>{if(g)return N(b,null),b;s===void 0&&(s=_t(a?e:"<!>"+e),n||(s=P(s)));var i=r||$t?document.importNode(s,!0):s.cloneNode(!0);if(n){var f=P(i),u=i.lastChild;N(f,u)}else N(i,i);return i}}function Tr(e,t,n="svg"){var r=!e.startsWith("<!>"),s=`<${n}>${r?e:"<!>"+e}</${n}>`,a;return()=>{if(g)return N(b,null),b;if(!a){var i=_t(s),f=P(i);a=P(f)}var u=a.cloneNode(!0);return N(u,u),u}}function Ps(e,t){return Tr(e,t,"svg")}function Ds(e=""){if(!g){var t=re(e+"");return N(t,t),t}var n=b;return n.nodeType!==it&&(n.before(n=re()),$(n)),N(n,n),n}function Ms(){if(g)return N(b,null),b;var e=document.createDocumentFragment(),t=document.createComment(""),n=re();return e.append(t,n),N(t,n),e}function Ls(e,t){if(g){h.nodes_end=b,ut();return}e!==null&&e.before(t)}let xt=!0;function Fs(e,t){var n=t==null?"":typeof t=="object"?t+"":t;n!==(e.__t??=e.nodeValue)&&(e.__t=n,e.nodeValue=n+"")}function vn(e,t){return dn(e,t)}function Ar(e,t){ze(),t.intro=t.intro??!1;const n=t.target,r=g,s=b;try{for(var a=P(n);a&&(a.nodeType!==Ie||a.data!==Nt);)a=K(a);if(!a)throw oe;Re(!0),$(a),ut();const i=dn(e,{...t,anchor:a});if(b===null||b.nodeType!==Ie||b.data!==Ct)throw je(),oe;return Re(!1),i}catch(i){if(i instanceof Error&&i.message.split(`
|
|
2
|
-
`).some(f=>f.startsWith("https://svelte.dev/e/")))throw i;return i!==oe&&console.warn("Failed to hydrate: ",i),t.recover===!1&&Cn(),ze(),Kt(n),Re(!1),vn(e,t)}finally{Re(r),$(s)}}const ie=new Map;function dn(e,{target:t,anchor:n,props:r={},events:s,context:a,intro:i=!0}){ze();var f=new Set,u=c=>{for(var v=0;v<c.length;v++){var _=c[v];if(!f.has(_)){f.add(_);var d=mr(_);t.addEventListener(_,ge,{passive:d});var T=ie.get(_);T===void 0?(document.addEventListener(_,ge,{passive:d}),ie.set(_,1)):ie.set(_,T+1)}}};u(bn(_n)),Ze.add(u);var l=void 0,o=ar(()=>{var c=n??t.appendChild(re());return Qt(()=>{if(a){Hn({});var v=y;v.c=a}s&&(r.$$events=s),g&&N(c,null),xt=i,l=e(c,r)||{},xt=!0,g&&(h.nodes_end=b),a&&Un()}),()=>{for(var v of f){t.removeEventListener(v,ge);var _=ie.get(v);--_===0?(document.removeEventListener(v,ge),ie.delete(v)):ie.set(v,_)}Ze.delete(u),c!==n&&c.parentNode?.removeChild(c)}});return Je.set(l,o),l}let Je=new WeakMap;function xr(e,t){const n=Je.get(e);return n?(Je.delete(e),n(t)):Promise.resolve()}function js(e,t,...n){var r=e,s=X,a;ur(()=>{s!==(s=t())&&(a&&(W(a),a=null),a=Qt(()=>s(r,...n)))},rt),g&&(r=b)}function Sr(e){return(t,...n)=>{var r=e(...n),s;if(g)s=b,ut();else{var a=r.render().trim(),i=_t(a);s=P(i),t.before(s)}const f=r.setup?.(s);N(s,s),typeof f=="function"&&Xt(f)}}function pn(e,t,n){if(e==null)return t(void 0),n&&n(void 0),X;const r=ye(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const ue=[];function kr(e,t){return{subscribe:Or(e,t).subscribe}}function Or(e,t=X){let n=null;const r=new Set;function s(f){if(Pt(e,f)&&(e=f,n)){const u=!ue.length;for(const l of r)l[1](),ue.push(l,e);if(u){for(let l=0;l<ue.length;l+=2)ue[l][0](ue[l+1]);ue.length=0}}}function a(f){s(f(e))}function i(f,u=X){const l=[f,u];return r.add(l),r.size===1&&(n=t(s,a)||X),f(e),()=>{r.delete(l),r.size===0&&n&&(n(),n=null)}}return{set:s,update:a,subscribe:i}}function qs(e,t,n){const r=!Array.isArray(e),s=r?[e]:e;if(!s.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const a=t.length<2;return kr(n,(i,f)=>{let u=!1;const l=[];let o=0,c=X;const v=()=>{if(o)return;c();const d=t(r?l[0]:l,i,f);a?i(d):c=typeof d=="function"?d:X},_=s.map((d,T)=>pn(d,ae=>{l[T]=ae,o&=~(1<<T),u&&v()},()=>{o|=1<<T}));return u=!0,v(),function(){et(_),c(),u=!1}})}function Vs(e){let t;return pn(e,n=>t=n)(),t}function Rr(){return p===null&&Nn(),(p.ac??=new AbortController).signal}function hn(e){y===null&&pe(),xe&&y.l!==null?vt(y).m.push(e):sr(()=>{const t=ye(e);if(typeof t=="function")return t})}function Nr(e){y===null&&pe(),hn(()=>()=>ye(e))}function Cr(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function Ir(){const e=y;return e===null&&pe(),(t,n,r)=>{const s=e.s.$$events?.[t];if(s){const a=Qe(s)?s.slice():[s],i=Cr(t,n,r);for(const f of a)f.call(e.x,i);return!i.defaultPrevented}return!0}}function Pr(e){y===null&&pe(),y.l===null&&Rt(),vt(y).b.push(e)}function Dr(e){y===null&&pe(),y.l===null&&Rt(),vt(y).a.push(e)}function vt(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}const Ys=Object.freeze(Object.defineProperty({__proto__:null,afterUpdate:Dr,beforeUpdate:Pr,createEventDispatcher:Ir,createRawSnippet:Sr,flushSync:Ut,getAbortSignal:Rr,getAllContexts:Yn,getContext:jn,hasContext:Vn,hydrate:Ar,mount:vn,onDestroy:Nr,onMount:hn,setContext:qn,settled:hr,tick:pr,unmount:xr,untrack:ye},Symbol.toStringTag,{value:"Module"}));export{zr as $,or as A,y as B,gs as C,et as D,rt as E,Lr as F,Ss as G,ft as H,is as I,Ts as J,Fs as K,as as L,Fn as M,ss as N,$ as O,Re as P,As as Q,X as R,J as S,fs as T,E as U,pn as V,Vs as W,Xt as X,$e as Y,we as Z,Yr as _,vs as a,Os as a$,Zn as a0,be as a1,he as a2,h as a3,de as a4,Xr as a5,xe as a6,Kr as a7,Gr as a8,Zr as a9,Ur as aA,Br as aB,bn as aC,Qe as aD,Me as aE,B as aF,W as aG,Wr as aH,$r as aI,K as aJ,rn as aK,Kt as aL,cr as aM,ts as aN,cs as aO,bs as aP,Qn as aQ,es as aR,ks as aS,Er as aT,hs as aU,Rs as aV,Qr as aW,St as aX,qr as aY,us as aZ,nr as a_,jr as aa,ct as ab,os as ac,G as ad,ms as ae,Es as af,Ps as ag,Ir as ah,Ns as ai,xs as aj,Ms as ak,ls as al,Ds as am,Fr as an,Ar as ao,vn as ap,Ut as aq,xr as ar,pr as as,Cs as at,Nr as au,js as av,P as aw,Ie as ax,Ct as ay,Hr as az,Ls as b,gn as b0,Ue as b1,Or as b2,xt as b3,ve as b4,nt as b5,Jr as b6,Ye as b7,Mr as b8,qs as b9,fr as ba,je as bb,oe as bc,N as bd,_t as be,ys as bf,Ys as bg,_s as c,Y as d,Un as e,Is as f,V as g,fe as h,ws as i,Jt as j,ye as k,g as l,ut as m,rs as n,hn as o,Hn as p,jt as q,ns as r,ds as s,ur as t,sr as u,re as v,Qt as w,w as x,ps as y,b as z};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{O as K,l as k,aw as Ne,v as de,m as Me,t as ae,h as te,a0 as Oe,L as We,M as Ie,N as ie,P as R,z as D,ax as De,ay as Le,w as H,y as Pe,az as B,aA as J,x as W,aB as ve,aC as he,aD as pe,T as Re,ab as oe,aE as le,Q as we,A as $e,aF as X,q as He,aG as U,aH as Ue,aI as qe,aJ as Fe,aK as Ve,aL as Ye,aM as Be,a3 as Je,i as ne,aN as ze,aO as Ge,X as Ke,aP as se,aQ as Xe,aR as Qe,aS as Ze,aT as je,at as xe,aU as et,aV as tt,U as rt,aW as at,aX as nt,aY as st,aZ as it,a_ as ot,a$ as lt,b0 as ct,as as ft,k as be,j as _e,b1 as ut,b2 as dt}from"./BJF-sFqz.js";function mt(e,t){return t}function vt(e,t,r){for(var a=e.items,n=[],s=t.length,i=0;i<s;i++)Ve(t[i].e,n,!0);var l=s>0&&n.length===0&&r!==null;if(l){var g=r.parentNode;Ye(g),g.append(r),a.clear(),T(e,t[0].prev,t[s-1].next)}Be(n,()=>{for(var d=0;d<s;d++){var S=t[d];l||(a.delete(S.k),T(e,S.prev,S.next)),U(S.e,!l)}})}function Tt(e,t,r,a,n,s=null){var i=e,l={flags:t,items:new Map,first:null},g=(t&ve)!==0;if(g){var d=e;i=k?K(Ne(d)):d.appendChild(de())}k&&Me();var S=null,y=!1,w=new Map,E=Oe(()=>{var h=r();return pe(h)?h:h==null?[]:he(h)}),f,u;function _(){ht(u,f,l,w,i,n,t,a,r),s!==null&&(f.length===0?S?we(S):S=H(()=>s(i)):S!==null&&$e(S,()=>{S=null}))}ae(()=>{u??=Je,f=te(E);var h=f.length;if(y&&h===0)return;y=h===0;let C=!1;if(k){var v=We(i)===Ie;v!==(h===0)&&(i=ie(),K(i),R(!1),C=!0)}if(k){for(var p=null,b,o=0;o<h;o++){if(D.nodeType===De&&D.data===Le){i=D,C=!0,R(!1);break}var c=f[o],A=a(c,o);b=re(D,l,p,null,c,A,o,n,t,r),l.items.set(A,b),p=b}h>0&&K(ie())}if(k)h===0&&s&&(S=H(()=>s(i)));else if(Pe()){var M=new Set,q=W;for(o=0;o<h;o+=1){c=f[o],A=a(c,o);var O=l.items.get(A)??w.get(A);O?(t&(B|J))!==0&&Se(O,c,o,t):(b=re(null,l,null,null,c,A,o,n,t,r,!0),w.set(A,b)),M.add(A)}for(const[m,F]of l.items)M.has(m)||q.skipped_effects.add(F.e);q.add_callback(_)}else _();C&&R(!0),te(E)}),k&&(i=D)}function ht(e,t,r,a,n,s,i,l,g){var d=(i&qe)!==0,S=(i&(B|J))!==0,y=t.length,w=r.items,E=r.first,f=E,u,_=null,h,C=[],v=[],p,b,o,c;if(d)for(c=0;c<y;c+=1)p=t[c],b=l(p,c),o=w.get(b),o!==void 0&&(o.a?.measure(),(h??=new Set).add(o));for(c=0;c<y;c+=1){if(p=t[c],b=l(p,c),o=w.get(b),o===void 0){var A=a.get(b);if(A!==void 0){a.delete(b),w.set(b,A);var M=_?_.next:f;T(r,_,A),T(r,A,M),Q(A,M,n),_=A}else{var q=f?f.e.nodes_start:n;_=re(q,r,_,_===null?r.first:_.next,p,b,c,s,i,g)}w.set(b,_),C=[],v=[],f=_.next;continue}if(S&&Se(o,p,c,i),(o.e.f&X)!==0&&(we(o.e),d&&(o.a?.unfix(),(h??=new Set).delete(o))),o!==f){if(u!==void 0&&u.has(o)){if(C.length<v.length){var O=v[0],m;_=O.prev;var F=C[0],z=C[C.length-1];for(m=0;m<C.length;m+=1)Q(C[m],O,n);for(m=0;m<v.length;m+=1)u.delete(v[m]);T(r,F.prev,z.next),T(r,_,F),T(r,z,O),f=O,_=z,c-=1,C=[],v=[]}else u.delete(o),Q(o,f,n),T(r,o.prev,o.next),T(r,o,_===null?r.first:_.next),T(r,_,o),_=o;continue}for(C=[],v=[];f!==null&&f.k!==b;)(f.e.f&X)===0&&(u??=new Set).add(f),v.push(f),f=f.next;if(f===null)continue;o=f}C.push(o),_=o,f=o.next}if(f!==null||u!==void 0){for(var I=u===void 0?[]:he(u);f!==null;)(f.e.f&X)===0&&I.push(f),f=f.next;var G=I.length;if(G>0){var me=(i&ve)!==0&&y===0?n:null;if(d){for(c=0;c<G;c+=1)I[c].a?.measure();for(c=0;c<G;c+=1)I[c].a?.fix()}vt(r,I,me)}}d&&He(()=>{if(h!==void 0)for(o of h)o.a?.apply()}),e.first=r.first&&r.first.e,e.last=_&&_.e;for(var Te of a.values())U(Te.e);a.clear()}function Se(e,t,r,a){(a&B)!==0&&le(e.v,t),(a&J)!==0?le(e.i,r):e.i=r}function re(e,t,r,a,n,s,i,l,g,d,S){var y=(g&B)!==0,w=(g&Ue)===0,E=y?w?Re(n,!1,!1):oe(n):n,f=(g&J)===0?i:oe(i),u={i:f,v:E,k:s,a:null,e:null,prev:r,next:a};try{if(e===null){var _=document.createDocumentFragment();_.append(e=de())}return u.e=H(()=>l(e,E,f,d),k),u.e.prev=r&&r.e,u.e.next=a&&a.e,r===null?S||(t.first=u):(r.next=u,r.e.next=u.e),a!==null&&(a.prev=u,a.e.prev=u.e),u}finally{}}function Q(e,t,r){for(var a=e.next?e.next.e.nodes_start:r,n=t?t.e.nodes_start:r,s=e.e.nodes_start;s!==null&&s!==a;){var i=Fe(s);n.before(s),s=i}}function T(e,t,r){t===null?e.first=r:(t.next=r,t.e.next=r&&r.e),r!==null&&(r.prev=t,r.e.prev=t&&t.e)}function pt(e,t){var r=void 0,a;ae(()=>{r!==(r=t())&&(a&&(U(a),a=null),r&&(a=H(()=>{ne(()=>r(e))})))})}function ge(e){var t,r,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(t=0;t<n;t++)e[t]&&(r=ge(e[t]))&&(a&&(a+=" "),a+=r)}else for(r in e)e[r]&&(a&&(a+=" "),a+=r);return a}function wt(){for(var e,t,r=0,a="",n=arguments.length;r<n;r++)(e=arguments[r])&&(t=ge(e))&&(a&&(a+=" "),a+=t);return a}function bt(e){return typeof e=="object"?wt(e):e??""}const ce=[...`
|
|
2
|
-
\r\f \v\uFEFF`];function _t(e,t,r){var a=e==null?"":""+e;if(t&&(a=a?a+" "+t:t),r){for(var n in r)if(r[n])a=a?a+" "+n:n;else if(a.length)for(var s=n.length,i=0;(i=a.indexOf(n,i))>=0;){var l=i+s;(i===0||ce.includes(a[i-1]))&&(l===a.length||ce.includes(a[l]))?a=(i===0?"":a.substring(0,i))+a.substring(l+1):i=l}}return a===""?null:a}function fe(e,t=!1){var r=t?" !important;":";",a="";for(var n in e){var s=e[n];s!=null&&s!==""&&(a+=" "+n+": "+s+r)}return a}function Z(e){return e[0]!=="-"||e[1]!=="-"?e.toLowerCase():e}function St(e,t){if(t){var r="",a,n;if(Array.isArray(t)?(a=t[0],n=t[1]):a=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var s=!1,i=0,l=!1,g=[];a&&g.push(...Object.keys(a).map(Z)),n&&g.push(...Object.keys(n).map(Z));var d=0,S=-1;const u=e.length;for(var y=0;y<u;y++){var w=e[y];if(l?w==="/"&&e[y-1]==="*"&&(l=!1):s?s===w&&(s=!1):w==="/"&&e[y+1]==="*"?l=!0:w==='"'||w==="'"?s=w:w==="("?i++:w===")"&&i--,!l&&s===!1&&i===0){if(w===":"&&S===-1)S=y;else if(w===";"||y===u-1){if(S!==-1){var E=Z(e.substring(d,S).trim());if(!g.includes(E)){w!==";"&&y++;var f=e.substring(d,y).trim();r+=" "+f+";"}}d=y+1,S=-1}}}}return a&&(r+=fe(a)),n&&(r+=fe(n,!0)),r=r.trim(),r===""?null:r}return e==null?null:String(e)}function gt(e,t,r,a,n,s){var i=e.__className;if(k||i!==r||i===void 0){var l=_t(r,a,s);(!k||l!==e.getAttribute("class"))&&(l==null?e.removeAttribute("class"):t?e.className=l:e.setAttribute("class",l)),e.__className=r}else if(s&&n!==s)for(var g in s){var d=!!s[g];(n==null||d!==!!n[g])&&e.classList.toggle(g,d)}return s}function j(e,t={},r,a){for(var n in r){var s=r[n];t[n]!==s&&(r[n]==null?e.style.removeProperty(n):e.style.setProperty(n,s,a))}}function yt(e,t,r,a){var n=e.__style;if(k||n!==t){var s=St(t,a);(!k||s!==e.getAttribute("style"))&&(s==null?e.removeAttribute("style"):e.style.cssText=s),e.__style=t}else a&&(Array.isArray(a)?(j(e,r?.[0],a[0]),j(e,r?.[1],a[1],"important")):j(e,r,a));return a}function V(e,t,r=!1){if(e.multiple){if(t==null)return;if(!pe(t))return ze();for(var a of e.options)a.selected=t.includes($(a));return}for(a of e.options){var n=$(a);if(Ge(n,t)){a.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function ye(e){var t=new MutationObserver(()=>{V(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Ke(()=>{t.disconnect()})}function Nt(e,t,r=t){var a=!0;se(e,"change",n=>{var s=n?"[selected]":":checked",i;if(e.multiple)i=[].map.call(e.querySelectorAll(s),$);else{var l=e.querySelector(s)??e.querySelector("option:not([disabled])");i=l&&$(l)}r(i)}),ne(()=>{var n=t();if(V(e,n,a),a&&n===void 0){var s=e.querySelector(":checked");s!==null&&(n=$(s),r(n))}e.__value=n,a=!1}),ye(e)}function $(e){return"__value"in e?e.__value:e.value}const L=Symbol("class"),P=Symbol("style"),Ce=Symbol("is custom element"),Ae=Symbol("is html");function Mt(e){if(k){var t=!1,r=()=>{if(!t){if(t=!0,e.hasAttribute("value")){var a=e.value;Y(e,"value",null),e.value=a}if(e.hasAttribute("checked")){var n=e.checked;Y(e,"checked",null),e.checked=n}}};e.__on_r=r,it(r),ot()}}function Ct(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function Y(e,t,r,a){var n=ke(e);k&&(n[t]=e.getAttribute(t),t==="src"||t==="srcset"||t==="href"&&e.nodeName==="LINK")||n[t]!==(n[t]=r)&&(t==="loading"&&(e[st]=r),r==null?e.removeAttribute(t):typeof r!="string"&&Ee(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function At(e,t,r,a,n=!1){var s=ke(e),i=s[Ce],l=!s[Ae];let g=k&&i;g&&R(!1);var d=t||{},S=e.tagName==="OPTION";for(var y in t)y in r||(r[y]=null);r.class?r.class=bt(r.class):r[L]&&(r.class=null),r[P]&&(r.style??=null);var w=Ee(e);for(const v in r){let p=r[v];if(S&&v==="value"&&p==null){e.value=e.__value="",d[v]=p;continue}if(v==="class"){var E=e.namespaceURI==="http://www.w3.org/1999/xhtml";gt(e,E,p,a,t?.[L],r[L]),d[v]=p,d[L]=r[L];continue}if(v==="style"){yt(e,p,t?.[P],r[P]),d[v]=p,d[P]=r[P];continue}var f=d[v];if(!(p===f&&!(p===void 0&&e.hasAttribute(v)))){d[v]=p;var u=v[0]+v[1];if(u!=="$$")if(u==="on"){const b={},o="$$"+v;let c=v.slice(2);var _=lt(c);if(Ze(c)&&(c=c.slice(0,-7),b.capture=!0),!_&&f){if(p!=null)continue;e.removeEventListener(c,d[o],b),d[o]=null}if(p!=null)if(_)e[`__${c}`]=p,xe([c]);else{let A=function(M){d[v].call(this,M)};d[o]=je(c,e,A,b)}else _&&(e[`__${c}`]=void 0)}else if(v==="style")Y(e,v,p);else if(v==="autofocus")et(e,!!p);else if(!i&&(v==="__value"||v==="value"&&p!=null))e.value=e.__value=p;else if(v==="selected"&&S)Ct(e,p);else{var h=v;l||(h=tt(h));var C=h==="defaultValue"||h==="defaultChecked";if(p==null&&!i&&!C)if(s[v]=null,h==="value"||h==="checked"){let b=e;const o=t===void 0;if(h==="value"){let c=b.defaultValue;b.removeAttribute(h),b.defaultValue=c,b.value=b.__value=o?c:null}else{let c=b.defaultChecked;b.removeAttribute(h),b.defaultChecked=c,b.checked=o?c:!1}}else e.removeAttribute(v);else C||w.includes(h)&&(i||typeof p!="string")?(e[h]=p,h in s&&(s[h]=rt)):typeof p!="function"&&Y(e,h,p)}}}return g&&R(!0),d}function Ot(e,t,r=[],a=[],n,s=!1){Xe(r,a,i=>{var l=void 0,g={},d=e.nodeName==="SELECT",S=!1;if(ae(()=>{var w=t(...i.map(te)),E=At(e,l,w,n,s);S&&d&&"value"in w&&V(e,w.value);for(let u of Object.getOwnPropertySymbols(g))w[u]||U(g[u]);for(let u of Object.getOwnPropertySymbols(w)){var f=w[u];u.description===Qe&&(!l||f!==l[u])&&(g[u]&&U(g[u]),g[u]=H(()=>pt(e,()=>f))),E[u]=f}l=E}),d){var y=e;ne(()=>{V(y,l.value,!0),ye(y)})}S=!0})}function ke(e){return e.__attributes??={[Ce]:e.nodeName.includes("-"),[Ae]:e.namespaceURI===at}}var ue=new Map;function Ee(e){var t=e.getAttribute("is")||e.nodeName,r=ue.get(t);if(r)return r;ue.set(t,r=[]);for(var a,n=e,s=Element.prototype;s!==n;){a=ct(n);for(var i in a)a[i].set&&r.push(i);n=nt(n)}return r}function Wt(e,t,r=t){var a=new WeakSet;se(e,"input",async n=>{var s=n?e.defaultValue:e.value;if(s=x(e)?ee(s):s,r(s),W!==null&&a.add(W),await ft(),s!==(s=t())){var i=e.selectionStart,l=e.selectionEnd;e.value=s??"",l!==null&&(e.selectionStart=i,e.selectionEnd=Math.min(l,e.value.length))}}),(k&&e.defaultValue!==e.value||be(t)==null&&e.value)&&(r(x(e)?ee(e.value):e.value),W!==null&&a.add(W)),_e(()=>{var n=t();if(e===document.activeElement){var s=ut??W;if(a.has(s))return}x(e)&&n===ee(e.value)||e.type==="date"&&!n&&!e.value||n!==e.value&&(e.value=n??"")})}function It(e,t,r=t){se(e,"change",a=>{var n=a?e.defaultChecked:e.checked;r(n)}),(k&&e.defaultChecked!==e.checked||be(t)==null)&&r(e.checked),_e(()=>{var a=t();e.checked=!!a})}function x(e){var t=e.type;return t==="number"||t==="range"}function ee(e){return e===""?null:+e}const N=dt({id:"unknown",name:"Unknown Control Set",currentPath:"",controls:[],mappings:[],families:[],totalControls:0,totalMappings:0,isConnected:!1});class kt{ws=null;reconnectTimer=null;reconnectAttempts=0;maxReconnectAttempts=5;reconnectDelay=1e3;connect(){if(this.ws&&(this.ws.readyState===WebSocket.CONNECTING||this.ws.readyState===WebSocket.OPEN)){console.log("WebSocket already connected or connecting");return}const t=window.location.protocol==="https:"?"wss:":"ws:",r=window.location.hostname==="localhost"?"localhost:3000":window.location.host,a=`${t}//${r}/ws`;console.log("Connecting to WebSocket:",a);try{this.ws=new WebSocket(a),this.ws.onopen=()=>{console.log("WebSocket connected"),this.reconnectAttempts=0,this.reconnectDelay=1e3},this.ws.onmessage=n=>{try{const s=JSON.parse(n.data);this.handleMessage(s)}catch(s){console.error("Failed to parse WebSocket message:",s)}},this.ws.onerror=n=>{console.error("WebSocket error:",n)},this.ws.onclose=()=>{console.log("WebSocket disconnected"),N.update(n=>({...n,isConnected:!1})),this.ws=null,this.scheduleReconnect()}}catch(n){console.error("Failed to create WebSocket:",n),this.scheduleReconnect()}}handleMessage(t){switch(console.log("WebSocket message received:",t),t.type){case"connected":console.log("WebSocket connection confirmed"),N.update(r=>({...r,isConnected:!0}));break;case"state-update":console.log("State update received"),t.payload&&N.set({...t.payload,isConnected:!0,isSwitchingControlSet:!1});break;case"metadata-update":console.log("Metadata update received"),t.payload&&N.update(r=>({...r,...t.payload,isConnected:!0,isSwitchingControlSet:!1}));break;case"controls-update":console.log("Controls update received"),t.payload&&N.update(r=>({...r,controls:t.payload}));break;case"mappings-update":console.log("Mappings update received"),t.payload&&N.update(r=>({...r,mappings:t.payload}));break;case"control-details":console.log("Control details received:",t.payload),t.payload&&window.dispatchEvent(new CustomEvent("control-details",{detail:t.payload}));break;case"control-sets-list":console.log("Control sets list received"),t.payload&&window.dispatchEvent(new CustomEvent("control-sets-list",{detail:t.payload}));break;case"control-updated":console.log("Control updated successfully:",t.payload);break;case"mapping-created":case"mapping-updated":case"mapping-deleted":console.log(`Mapping operation successful: ${t.type}`,t.payload),window.dispatchEvent(new CustomEvent("mappings-changed",{detail:t.payload}));break;case"error":console.error("WebSocket error:",t.payload);break;default:console.warn("Unknown WebSocket message type:",t.type)}}scheduleReconnect(){if(this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectAttempts>=this.maxReconnectAttempts){console.error("Max reconnection attempts reached");return}this.reconnectAttempts++,console.log(`Scheduling reconnect attempt ${this.reconnectAttempts} in ${this.reconnectDelay}ms`),this.reconnectTimer=window.setTimeout(()=>{this.connect()},this.reconnectDelay),this.reconnectDelay=Math.min(this.reconnectDelay*2,3e4)}disconnect(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws&&(this.ws.close(),this.ws=null),N.update(t=>({...t,isConnected:!1}))}isConnected(){return this.ws!==null&&this.ws.readyState===WebSocket.OPEN}async sendCommand(t,r){if(console.log(`Sending WebSocket command: ${t}`,r),!this.ws||this.ws.readyState!==WebSocket.OPEN){console.log("WebSocket not ready, waiting for connection...");try{await this.waitForConnection()}catch(a){throw console.error("Failed to connect:",a),a}}if(this.ws&&this.ws.readyState===WebSocket.OPEN){const a=JSON.stringify({type:t,payload:r});console.log("Sending message:",a),this.ws.send(a)}else{const a=new Error("WebSocket not connected after waiting");throw console.error(a),a}}waitForConnection(t=5e3){return new Promise((r,a)=>{const n=Date.now(),s=()=>{this.ws&&this.ws.readyState===WebSocket.OPEN?r():Date.now()-n>t?a(new Error("WebSocket connection timeout")):setTimeout(s,100)};s()})}async updateControl(t){return this.sendCommand("update-control",t)}async createMapping(t){return this.sendCommand("create-mapping",t)}async updateMapping(t){return this.sendCommand("update-mapping",t)}async deleteMapping(t){return this.sendCommand("delete-mapping",{uuid:t})}async switchControlSet(t){return N.update(r=>({...r,isSwitchingControlSet:!0})),this.sendCommand("switch-control-set",{path:t})}async getControlDetails(t){return this.sendCommand("get-control",{id:t})}async scanControlSets(){return this.sendCommand("scan-control-sets")}send(t){this.ws&&this.ws.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify(t)):console.warn("WebSocket not connected, cannot send message")}}const Dt=new kt;export{Ot as a,Y as b,Wt as c,Nt as d,Tt as e,N as f,bt as g,yt as h,mt as i,It as j,Mt as r,gt as s,Dt as w};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{l as o,a as r}from"../chunks/fCDFfNtz.js";export{o as load_css,r as start};
|