diff --git a/.vscodeignore b/.vscodeignore deleted file mode 100644 index 4f1792c..0000000 --- a/.vscodeignore +++ /dev/null @@ -1,8 +0,0 @@ -* -*/** -**/.DS_Store -!package.json -!LICENSE.txt -!README.md -!lib/extension.js -!resources/icon.png diff --git a/README.md b/README.md index 41592d9..f06772a 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ server, so the editor is Microsoft's VS Code. Whether its stable release honours ## Developing -[CONTRIBUTING.md](CONTRIBUTING.md): Go (for `go tool task`), Node 22 and pnpm, and +[CONTRIBUTING.md](https://github.com/spin-stack/open-remote-ssh/blob/HEAD/CONTRIBUTING.md): Go (for `go tool task`), Node 22 and pnpm, and `go tool task ci` runs what CI runs. ## Credit @@ -86,5 +86,5 @@ This extension is a fork of itself a fork of [jeanp413/open-remote-ssh](https://github.com/jeanp413/open-remote-ssh), which resolves the `ssh-remote` authority over SSH; the connection here began as their `SSHConnection`, and the server's answer is read as their install script writes it. Both are MIT -licensed, and their copyright notices are kept in [LICENSE.txt](LICENSE.txt), as is this +licensed, and their copyright notices are kept in [LICENSE.txt](https://github.com/spin-stack/open-remote-ssh/blob/HEAD/LICENSE.txt), as is this fork's licence. diff --git a/Taskfile.yml b/Taskfile.yml index ec8eff8..9160527 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -1,7 +1,7 @@ version: '3' # The VS Code extension spin-stack.spinbox-remote: TypeScript in src/, bundled by esbuild into -# lib/, packaged by vsce. Every install goes through Socket Firewall (sfw), and every workflow +# lib/, packaged into a VSIX by hack/vsix. Every install goes through Socket Firewall (sfw), and every workflow # step is one of these tasks (taskgate), so a developer runs what CI runs. vars: @@ -32,9 +32,10 @@ tasks: - pnpm typecheck test: - desc: The unit tests - Vitest, with vscode replaced by test/mocks/vscode.ts, and coverage held to the floor in vitest.config.ts. + desc: The unit tests - Vitest, with vscode replaced by test/mocks/vscode.ts, and coverage held to the floor in vitest.config.ts - and hack/'s Go. cmds: - pnpm test + - go test ./hack/... coverage:summary: desc: The coverage task test left in coverage/, as the job's summary (hack/coverage-summary.mjs); the HTML is coverage/index.html. @@ -57,10 +58,11 @@ tasks: - pnpm test:e2e package: - desc: Package the extension into spinbox-remote.vsix with vsce. + desc: Package the extension into spinbox-remote.vsix with hack/vsix, the same bytes for the same files. cmds: - task: build - - pnpm package + # Everything the package holds: the rest of the checkout is how it is built and tested. + - go run ./hack/vsix -out spinbox-remote.vsix package.json LICENSE.txt README.md lib/extension.js resources/icon.png # The Marketplace refuses an extension that uses a proposed API (resolvers), so a release is # the GitHub release, which `spin vscode install` downloads and holds to the digest spin's diff --git a/hack/vsix/main.go b/hack/vsix/main.go new file mode 100644 index 0000000..7b69b2c --- /dev/null +++ b/hack/vsix/main.go @@ -0,0 +1,273 @@ +// Command vsix packages the extension into a VSIX: the files it is given under extension/, the +// manifest VS Code installs it by, and the content types the zip's Open Packaging Conventions +// require. +// +// go run ./hack/vsix -out spinbox-remote.vsix package.json LICENSE.txt README.md lib/extension.js resources/icon.png +// +// It stands where vsce stood. vsce brought a few hundred npm packages for what this extension needs +// of it - a zip of five files and an XML manifest - because the Marketplace, which is the rest of +// vsce, refuses an extension that uses a proposed API, so a release is a GitHub release. The zip +// is the same bytes for the same files: entries in a fixed order, each with one fixed time, so a +// release's digest, which spin pins, can be made again from its tag. +package main + +import ( + "archive/zip" + "bytes" + "encoding/json" + "encoding/xml" + "errors" + "flag" + "fmt" + "io/fs" + "os" + "path" + "slices" + "strings" + "text/template" + "time" +) + +func main() { + out := flag.String("out", "", "the VSIX to write") + flag.Parse() + if *out == "" || flag.NArg() == 0 { + fmt.Fprintln(os.Stderr, "usage: vsix -out package.json ...") + os.Exit(2) + } + if err := write(*out, os.DirFS("."), flag.Args()); err != nil { + fmt.Fprintf(os.Stderr, "vsix: %v\n", err) + os.Exit(1) + } +} + +func write(out string, root fs.FS, files []string) error { + data, err := pack(root, files) + if err != nil { + return err + } + return os.WriteFile(out, data, 0o644) +} + +// Every entry's time: the earliest a zip can hold, so the time a file was built at does not reach +// the digest. +var epoch = time.Date(1980, 1, 1, 0, 0, 0, 0, time.UTC) + +// The types the zip's [Content_Types].xml names, by extension. A file of any other kind is refused +// rather than given a guess VS Code might not serve. +var contentTypes = map[string]string{ + ".js": "application/javascript", + ".json": "application/json", + ".md": "text/markdown", + ".png": "image/png", + ".txt": "text/plain", + ".vsixmanifest": "text/xml", +} + +type manifest struct { + Name string `json:"name"` + DisplayName string `json:"displayName"` + Description string `json:"description"` + Version string `json:"version"` + Publisher string `json:"publisher"` + Main string `json:"main"` + Icon string `json:"icon"` + Categories []string `json:"categories"` + Keywords []string `json:"keywords"` + EnabledAPIProposals []string `json:"enabledApiProposals"` + ExtensionKind []string `json:"extensionKind"` + Engines struct { + VSCode string `json:"vscode"` + } `json:"engines"` + Repository struct { + URL string `json:"url"` + } `json:"repository"` + Bugs struct { + URL string `json:"url"` + } `json:"bugs"` +} + +// The package's own files, under extension/, as VS Code finds them: the README is readme.md +// whatever its case, as vsce names it. +func entryName(file string) string { + if strings.EqualFold(file, "README.md") { + return "extension/readme.md" + } + return "extension/" + file +} + +func pack(root fs.FS, files []string) ([]byte, error) { + if files[0] != "package.json" { + return nil, errors.New("package.json must be the first file: the manifest is made from it") + } + contents := make(map[string][]byte, len(files)) + for _, f := range files { + if path.Clean(f) != f || path.IsAbs(f) || strings.HasPrefix(f, "../") { + return nil, fmt.Errorf("%s: a file is named by its path from the checkout's root", f) + } + if _, ok := contentTypes[path.Ext(f)]; !ok { + return nil, fmt.Errorf("%s: no content type for %q files", f, path.Ext(f)) + } + b, err := fs.ReadFile(root, f) + if err != nil { + return nil, err + } + contents[f] = b + } + var m manifest + if err := json.Unmarshal(contents["package.json"], &m); err != nil { + return nil, fmt.Errorf("package.json: %w", err) + } + if m.Name == "" || m.Publisher == "" || m.Version == "" || m.Engines.VSCode == "" { + return nil, errors.New("package.json: name, publisher, version and engines.vscode are what VS Code installs by") + } + for _, want := range []string{mainFile(m.Main), m.Icon} { + if want != "" && !slices.Contains(files, want) { + return nil, fmt.Errorf("package.json names %s, which is not among the files", want) + } + } + license := "" + for _, f := range files { + if strings.HasPrefix(strings.ToUpper(path.Base(f)), "LICENSE") { + license = f + } + } + if license == "" { + return nil, errors.New("no LICENSE among the files") + } + + vsixmanifest, err := renderManifest(m, files, license) + if err != nil { + return nil, err + } + var buf bytes.Buffer + zw := zip.NewWriter(&buf) + add := func(name string, b []byte) error { + w, err := zw.CreateHeader(&zip.FileHeader{Name: name, Method: zip.Deflate, Modified: epoch}) + if err != nil { + return err + } + _, err = w.Write(b) + return err + } + if err := add("extension.vsixmanifest", vsixmanifest); err != nil { + return nil, err + } + if err := add("[Content_Types].xml", renderContentTypes(files)); err != nil { + return nil, err + } + sorted := slices.Clone(files) + slices.Sort(sorted) + for _, f := range sorted { + if err := add(entryName(f), contents[f]); err != nil { + return nil, err + } + } + if err := zw.Close(); err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// The file package.json's main names, as VS Code resolves it: .js when it has no extension. +func mainFile(main string) string { + if main == "" { + return "" + } + f := path.Clean(main) + if path.Ext(f) == "" { + f += ".js" + } + return f +} + +func renderContentTypes(files []string) []byte { + exts := []string{".vsixmanifest"} + for _, f := range files { + if e := path.Ext(f); !slices.Contains(exts, e) { + exts = append(exts, e) + } + } + slices.Sort(exts) + var b strings.Builder + b.WriteString(`` + "\n") + b.WriteString(``) + for _, e := range exts { + fmt.Fprintf(&b, ``, e, contentTypes[e]) + } + b.WriteString("") + return []byte(b.String()) +} + +var manifestTemplate = template.Must(template.New("vsixmanifest").Funcs(template.FuncMap{ + "x": escape, + "join": func(s []string) string { return escape(strings.Join(s, ",")) }, +}).Parse(` + + + + {{x .M.DisplayName}} + {{x .M.Description}} + {{join .M.Keywords}} + {{join .M.Categories}} + Public + + + + + + + + +{{- with .M.Repository.URL}} + +{{- end}} +{{- with .M.Bugs.URL}} + +{{- end}} + + + + {{x .License}} +{{- with .M.Icon}} + extension/{{x .}} +{{- end}} + + + + + + + +{{- with .Readme}} + +{{- end}} + +{{- with .M.Icon}} + +{{- end}} + + +`)) + +func renderManifest(m manifest, files []string, license string) ([]byte, error) { + readme := "" + for _, f := range files { + if strings.EqualFold(f, "README.md") { + readme = entryName(f) + } + } + var b bytes.Buffer + err := manifestTemplate.Execute(&b, struct { + M manifest + License string + Readme string + }{m, entryName(license), readme}) + return b.Bytes(), err +} + +func escape(s string) string { + var b strings.Builder + _ = xml.EscapeText(&b, []byte(s)) // a strings.Builder does not fail a write + return b.String() +} diff --git a/hack/vsix/main_test.go b/hack/vsix/main_test.go new file mode 100644 index 0000000..ba683df --- /dev/null +++ b/hack/vsix/main_test.go @@ -0,0 +1,201 @@ +package main + +import ( + "archive/zip" + "bytes" + "encoding/xml" + "io" + "strings" + "testing" + "testing/fstest" +) + +const packageJSON = `{ + "name": "spinbox-remote", + "displayName": "Spinbox Remote", + "description": "Opens the spin+ remote & more.", + "version": "2.1.0", + "publisher": "spin-stack", + "main": "./lib/extension.js", + "icon": "resources/icon.png", + "engines": { "vscode": "^1.146.0" }, + "enabledApiProposals": ["resolvers"], + "extensionKind": ["ui"], + "keywords": ["remote", "spinbox"], + "categories": ["Other"] +}` + +func checkout() fstest.MapFS { + return fstest.MapFS{ + "package.json": {Data: []byte(packageJSON)}, + "LICENSE.txt": {Data: []byte("MIT")}, + "README.md": {Data: []byte("# Spinbox Remote")}, + "lib/extension.js": {Data: []byte("exports.activate = () => {}")}, + "resources/icon.png": {Data: []byte("\x89PNG")}, + "src/extension.ts": {Data: []byte("export {}")}, + } +} + +var files = []string{"package.json", "LICENSE.txt", "README.md", "lib/extension.js", "resources/icon.png"} + +func entries(t *testing.T, vsix []byte) (*zip.Reader, []string) { + t.Helper() + zr, err := zip.NewReader(bytes.NewReader(vsix), int64(len(vsix))) + if err != nil { + t.Fatal(err) + } + var names []string + for _, f := range zr.File { + names = append(names, f.Name) + } + return zr, names +} + +func entry(t *testing.T, zr *zip.Reader, name string) []byte { + t.Helper() + f, err := zr.Open(name) + if err != nil { + t.Fatal(err) + } + b, err := io.ReadAll(f) + if err != nil { + t.Fatal(err) + } + return b +} + +func TestPackLaysOutWhatVSCodeInstalls(t *testing.T) { + vsix, err := pack(checkout(), files) + if err != nil { + t.Fatal(err) + } + zr, names := entries(t, vsix) + want := []string{ + "extension.vsixmanifest", + "[Content_Types].xml", + "extension/LICENSE.txt", + "extension/readme.md", + "extension/lib/extension.js", + "extension/package.json", + "extension/resources/icon.png", + } + if strings.Join(names, " ") != strings.Join(want, " ") { + t.Fatalf("entries:\n got %v\nwant %v", names, want) + } + for _, f := range zr.File { + if !f.Modified.Equal(epoch) { + t.Errorf("%s: modified %v, want %v", f.Name, f.Modified, epoch) + } + } + if got := string(entry(t, zr, "extension/package.json")); got != packageJSON { + t.Errorf("package.json changed in the package: %q", got) + } + + var m struct { + Metadata struct { + Identity struct { + ID string `xml:"Id,attr"` + Version string `xml:"Version,attr"` + Publisher string `xml:"Publisher,attr"` + } + Description string + Properties struct { + Property []struct { + ID string `xml:"Id,attr"` + Value string `xml:",attr"` + } + } + License string + Icon string + } + Assets struct { + Asset []struct { + Type string `xml:",attr"` + Path string `xml:",attr"` + } + } + } + if err := xml.Unmarshal(entry(t, zr, "extension.vsixmanifest"), &m); err != nil { + t.Fatalf("the manifest is not XML: %v", err) + } + id := m.Metadata.Identity + if id.ID != "spinbox-remote" || id.Version != "2.1.0" || id.Publisher != "spin-stack" { + t.Errorf("identity: %+v", id) + } + if m.Metadata.Description != "Opens the spin+ remote & more." { + t.Errorf("description: %q", m.Metadata.Description) + } + props := map[string]string{} + for _, p := range m.Metadata.Properties.Property { + props[p.ID] = p.Value + } + for k, v := range map[string]string{ + "Microsoft.VisualStudio.Code.Engine": "^1.146.0", + "Microsoft.VisualStudio.Code.EnabledApiProposals": "resolvers", + "Microsoft.VisualStudio.Code.ExtensionKind": "ui", + "Microsoft.VisualStudio.Code.ExecutesCode": "true", + } { + if props[k] != v { + t.Errorf("%s = %q, want %q", k, props[k], v) + } + } + if m.Metadata.License != "extension/LICENSE.txt" || m.Metadata.Icon != "extension/resources/icon.png" { + t.Errorf("license %q, icon %q", m.Metadata.License, m.Metadata.Icon) + } + for _, a := range m.Assets.Asset { + if _, err := zr.Open(a.Path); err != nil { + t.Errorf("asset %s names %s, which the package does not hold", a.Type, a.Path) + } + } + types := string(entry(t, zr, "[Content_Types].xml")) + for _, ext := range []string{".js", ".json", ".md", ".png", ".txt", ".vsixmanifest"} { + if !strings.Contains(types, `Extension="`+ext+`"`) { + t.Errorf("[Content_Types].xml has no %s: %s", ext, types) + } + } +} + +// spin pins the release's digest: the same files make the same bytes, whatever order they are +// named in. +func TestPackIsTheSameBytesForTheSameFiles(t *testing.T) { + a, err := pack(checkout(), files) + if err != nil { + t.Fatal(err) + } + b, err := pack(checkout(), []string{"package.json", "resources/icon.png", "lib/extension.js", "README.md", "LICENSE.txt"}) + if err != nil { + t.Fatal(err) + } + if !bytes.Equal(a, b) { + t.Error("two packages of the same files differ") + } +} + +func TestPackRefuses(t *testing.T) { + without := func(name string) fstest.MapFS { + c := checkout() + delete(c, name) + return c + } + for _, tc := range []struct { + name string + root fstest.MapFS + files []string + want string + }{ + {"package.json not first", checkout(), []string{"LICENSE.txt", "package.json"}, "must be the first"}, + {"a file that is not there", without("README.md"), files, "README.md"}, + {"a kind with no content type", checkout(), append([]string{"package.json", "src/extension.ts"}, files[1:]...), `".ts"`}, + {"a path out of the checkout", checkout(), append(files, "../secret.txt"), "path from the checkout's root"}, + {"main not packaged", checkout(), []string{"package.json", "LICENSE.txt", "resources/icon.png"}, "lib/extension.js"}, + {"icon not packaged", checkout(), []string{"package.json", "LICENSE.txt", "lib/extension.js"}, "resources/icon.png"}, + {"no license", checkout(), []string{"package.json", "lib/extension.js", "resources/icon.png"}, "no LICENSE"}, + } { + t.Run(tc.name, func(t *testing.T) { + _, err := pack(tc.root, tc.files) + if err == nil || !strings.Contains(err.Error(), tc.want) { + t.Fatalf("err = %v, want one naming %s", err, tc.want) + } + }) + } +} diff --git a/package.json b/package.json index a65e640..06210be 100644 --- a/package.json +++ b/package.json @@ -24,15 +24,13 @@ "lint:fix": "biome check --write --error-on-warnings .", "typecheck": "tsc --noEmit", "test": "vitest run --coverage", - "test:e2e": "vitest run --config vitest.e2e.config.mts", - "package": "vsce package --no-dependencies --out spinbox-remote.vsix" + "test:e2e": "vitest run --config vitest.e2e.config.mts" }, "devDependencies": { "@biomejs/biome": "2.6.6", "@types/node": "22.20.5", "@types/vscode": "1.146.0", "@vitest/coverage-v8": "5.1.0", - "@vscode/vsce": "4.1.0", "esbuild": "0.28.2", "typescript": "7.0.2", "vitest": "5.1.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e6168d..bc46d25 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,9 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - minimatch: ^11.0.8 - importers: .: @@ -23,9 +20,6 @@ importers: '@vitest/coverage-v8': specifier: 5.1.0 version: 5.1.0(vitest@5.1.0) - '@vscode/vsce': - specifier: 4.1.0 - version: 4.1.0 esbuild: specifier: 0.28.2 version: 0.28.2 @@ -38,54 +32,6 @@ importers: packages: - '@azure/abort-controller@2.2.0': - resolution: {integrity: sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg==} - engines: {node: '>=22.0.0'} - - '@azure/core-auth@1.11.0': - resolution: {integrity: sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg==} - engines: {node: '>=22.0.0'} - - '@azure/core-client@1.11.2': - resolution: {integrity: sha512-ajuIU1aMoTs/ERYrKnIqQrV5Vz3RL8mwDC5RdedIXUvR7pi6cWzeYmt0LfNz6+W91CuCO4WJG0zA6+PhU1X+hw==} - engines: {node: '>=22.0.0'} - - '@azure/core-process@1.0.0': - resolution: {integrity: sha512-/shnJ+ooO8WPxDhPEeI/2oRQuubn16gZ6CvlbpWbEswZfzwI9tI/sMAHmF3x1LuQ9yZYXfLW3TjzGMLEC5blKg==} - engines: {node: '>=22.0.0'} - - '@azure/core-rest-pipeline@1.25.1': - resolution: {integrity: sha512-fTIA3CAm/cdODqiXkO6jYOIkU2Ylld7vq65KGc70gTwl12sLQsC8v7I5t6tp2N2CfUONzZBXyeFw7KEu6Ks2zg==} - engines: {node: '>=22.0.0'} - - '@azure/core-tracing@1.4.0': - resolution: {integrity: sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ==} - engines: {node: '>=22.0.0'} - - '@azure/core-util@1.14.0': - resolution: {integrity: sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw==} - engines: {node: '>=22.0.0'} - - '@azure/identity@4.14.1': - resolution: {integrity: sha512-HHuuFrmN1uuF9D5A6aAo5eHzNFNX4Q+P4SksZqDKse5YaJFFy/zDLG3wXHEV2FVGgetZ3QM8jGURNBtnQYf1NQ==} - engines: {node: '>=22.0.0'} - - '@azure/logger@1.4.0': - resolution: {integrity: sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA==} - engines: {node: '>=22.0.0'} - - '@azure/msal-browser@5.29.0': - resolution: {integrity: sha512-Ko/Ovw6h+Gu33mp8f0FUyddr/KDWzbGzcgR8HKZaT4wgTYljLPKJP1rcDu0RHj7pkd4CR2hCHK51XFzgvq/Q5Q==} - engines: {node: '>=0.8.0'} - - '@azure/msal-common@16.16.1': - resolution: {integrity: sha512-dSKdL9h/iercb4GumsKFh+wVvLe1ohuDPiviklgnQVHnY2FYNUlbQJ3E1Qd37vkof9CfraK9BQpCW1hoOg0znQ==} - engines: {node: '>=0.8.0'} - - '@azure/msal-node@7.2.1': - resolution: {integrity: sha512-6mntsfCNq7H1eAPSZik74jT3C5at4nRqiVk7OC+D5Hy3Pe3s76uwE4+J0xvDvlVPmoX2kasf3mSwUmzeq9rW/A==} - engines: {node: '>=20'} - '@babel/helper-string-parser@7.29.14': resolution: {integrity: sha512-CXvKMFvM80ihI7Vox9jb+kQjnyjESQNPM+vB7U0Zz6TWuZA+Z/FL0QPMH300h33qJtIx+REeBhXqWOPW48TcAQ==} engines: {node: '>=6.9.0'} @@ -341,9 +287,6 @@ packages: cpu: [x64] os: [win32] - '@isaacs/nonrecursive-glob-match@1.1.0': - resolution: {integrity: sha512-GPm/Dbvk5RLmhRnxXIa7nTpK0xtl4E0wj0MslsuNiJ1FIROU+2+9lgUC/dgF7Ey4QCWhfEsgxilMRMCdHPfDfw==} - '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -354,87 +297,6 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@napi-rs/keyring-darwin-arm64@1.3.0': - resolution: {integrity: sha512-pl76hJvdYUBn6I24bXiOBMA9nbDapo3I5B+f3OorjDU4dUMSypXeKbOVehJe8fhgTiH24flMyTS3aAIy43xegQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@napi-rs/keyring-darwin-x64@1.3.0': - resolution: {integrity: sha512-YcJtEV5LA3cvA4z3BurgxH5IhTsW1JfIvcAAcqcecwk06Si9F9NqkxbZVIfDwQ8oRHgaBmT3zZJnLAotCrVahw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@napi-rs/keyring-freebsd-x64@1.3.0': - resolution: {integrity: sha512-vlLf31TGhfRAaxLDBhg8b89ss0HHD/lyNmL5F3UjSaz5CUXElsJmKYq9fqA/B+cZKUEUcLHHGhF0I/CqcFdaVw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@napi-rs/keyring-linux-arm-gnueabihf@1.3.0': - resolution: {integrity: sha512-KiWdMMu/Inz/bHHIAGrnF7r54FZDYXuHO6UFF/rhIrshUsxbMG1Rl9lEymNtqqsVo927G0VYcb02FzWQ3iBQRQ==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@napi-rs/keyring-linux-arm64-gnu@1.3.0': - resolution: {integrity: sha512-eyKGpY40lm9Jvs1aD294XRH4y7+TlJM0YVAryZeXA6TX0mb4gMkxVXwSQv7MCwgah7raeUd0dKUb4BPAYIgcMg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@napi-rs/keyring-linux-arm64-musl@1.3.0': - resolution: {integrity: sha512-iIK6JWHXAJqDrEyLY3TmswwloVyt2vj+04TZnew+uSJ9gnDO8EwRbp3/iw3LpWaXiDO7VomGO6y8I0Id8uBZSw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@napi-rs/keyring-linux-riscv64-gnu@1.3.0': - resolution: {integrity: sha512-/PGqrwn6EwgtK6vccASSXJRfOSP4vN1F4ASsIQ+7MdrK6hNvAJ1FZPrIuD5gGGdxezo3F++To2Wq7DbuGIeuNQ==} - engines: {node: '>= 10'} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@napi-rs/keyring-linux-x64-gnu@1.3.0': - resolution: {integrity: sha512-2PDK1WKWTu9lBGq9VvNEkSlQD3O7YwVpmnyN2M3cy4v7NJ/8gDMd9GXv3G+FVXN13uhp4gnnPBS+ScefmEeD2A==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@napi-rs/keyring-linux-x64-musl@1.3.0': - resolution: {integrity: sha512-oJ2HkX8YUo46QBkn0pG+HuIKQNqr523q6vBobCn+P95s4C4K6/kLBqHY/1bg5J4ap31DzsznhnFKcfBNBsjCnw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@napi-rs/keyring-win32-arm64-msvc@1.3.0': - resolution: {integrity: sha512-tOd3c/uAaeoE4ycVlmAdSvygz0Zt3zdca6Y7gokBeIbaRDWpjDIUOpU3MvML59XAaqyuKGsVVu0F/DZb1lHPmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@napi-rs/keyring-win32-ia32-msvc@1.3.0': - resolution: {integrity: sha512-sPSqeAFZMGqP1R++M2JTza7GQJJ/TpCo6JU6Vcd4jnebvOaEDs9b7eipakU1PJdSvhpC2yXMCNRk9gXfrhuwHQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@napi-rs/keyring-win32-x64-msvc@1.3.0': - resolution: {integrity: sha512-4DnCWXwDc0HRKwyRlG5y0VhKZW2tNRQfKKfyj6IX/KWfDNyq9hn4n+GL1auyDcOO/v8PwnhmYo2+rOOqCkvvOg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@napi-rs/keyring@1.3.0': - resolution: {integrity: sha512-WrOw/bcXm0f9qHkumlT1QlArXSTWqaY9sunsDpOk+yCCorCKMxvWT/a3xko4EYHVdeZoh00yI2TydXn6eyICDA==} - engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.2.6': resolution: {integrity: sha512-mRyDmEw9/fCDXCGfL1sbgIw/GUK0PVxRW4YwgPN61F3LQ+fSyoBFarJVzgGyhF6kRzEQZ0FejDqm4WLXSeqQmw==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} @@ -549,29 +411,6 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@secretlint/core@10.2.2': - resolution: {integrity: sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==} - engines: {node: '>=20.0.0'} - - '@secretlint/profiler@10.2.2': - resolution: {integrity: sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==} - - '@secretlint/secretlint-rule-no-dotenv@10.2.2': - resolution: {integrity: sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==} - engines: {node: '>=20.0.0'} - - '@secretlint/secretlint-rule-preset-recommend@10.2.2': - resolution: {integrity: sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==} - engines: {node: '>=20.0.0'} - - '@secretlint/source-creator@10.2.2': - resolution: {integrity: sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==} - engines: {node: '>=20.0.0'} - - '@secretlint/types@10.2.2': - resolution: {integrity: sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==} - engines: {node: '>=20.0.0'} - '@tybys/wasm-util@0.10.4': resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==} @@ -710,10 +549,6 @@ packages: cpu: [x64] os: [win32] - '@typespec/ts-http-runtime@0.3.10': - resolution: {integrity: sha512-vddvvtZ7sejSlCv+OIkn2ztjB1O31Fc2JsxI/YK725r3elXXlF/J3o3lbXJFRhoeWRWK1tjdZ+GTi6Fdtrp+EA==} - engines: {node: '>=22.0.0'} - '@vitest/coverage-v8@5.1.0': resolution: {integrity: sha512-OY9aShBQG5KOIw2zCo9fDoCHI9RHliNHJ//nM7m6jGg41Hyke9JOGWmeMlK74xYErsxMoK8mIB3gAeEyFVA7LA==} peerDependencies: @@ -745,63 +580,6 @@ packages: '@vitest/spy@5.1.0': resolution: {integrity: sha512-2DPO5OMHWKrBngC+fCmTQqemNF0gidRhp3lxbBmRhW+M1XJrfgPpqNqWVevXtn2f2ufD5ZaR1B6B641aAlcX5A==} - '@vscode/vsce-sign-alpine-arm64@2.0.6': - resolution: {integrity: sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==} - cpu: [arm64] - os: [alpine] - - '@vscode/vsce-sign-alpine-x64@2.0.6': - resolution: {integrity: sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==} - cpu: [x64] - os: [alpine] - - '@vscode/vsce-sign-darwin-arm64@2.0.6': - resolution: {integrity: sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==} - cpu: [arm64] - os: [darwin] - - '@vscode/vsce-sign-darwin-x64@2.0.6': - resolution: {integrity: sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==} - cpu: [x64] - os: [darwin] - - '@vscode/vsce-sign-linux-arm64@2.0.6': - resolution: {integrity: sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==} - cpu: [arm64] - os: [linux] - - '@vscode/vsce-sign-linux-arm@2.0.6': - resolution: {integrity: sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==} - cpu: [arm] - os: [linux] - - '@vscode/vsce-sign-linux-x64@2.0.6': - resolution: {integrity: sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==} - cpu: [x64] - os: [linux] - - '@vscode/vsce-sign-win32-arm64@2.0.6': - resolution: {integrity: sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==} - cpu: [arm64] - os: [win32] - - '@vscode/vsce-sign-win32-x64@2.0.6': - resolution: {integrity: sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==} - cpu: [x64] - os: [win32] - - '@vscode/vsce-sign@2.1.0': - resolution: {integrity: sha512-9AQrqazrBgTgRSuwleLVXUrIUphY02/SFCh2TKYoLV/xifJAdblhdmEmw5gUrYSPQ3sRwNs9iyCMD14sATEE6g==} - - '@vscode/vsce@4.1.0': - resolution: {integrity: sha512-iWNykEfLWTAU7FC2iBiE0vJvnJDpGm3GlL89dsBtRs62F+8tkPtq80Imi0QSFHjNBWu4QIdYII+3F9v/ZQRExw==} - engines: {node: '>= 22'} - hasBin: true - - agent-base@9.0.0: - resolution: {integrity: sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==} - engines: {node: '>= 20'} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -809,109 +587,17 @@ packages: ast-v8-to-istanbul@1.0.8: resolution: {integrity: sha512-lPdpagk13ANXV+HClJEpCZM7kUsl5XcvgqKzZhaj6Ve1ZFICcY2sGhAN1n1vT0tML6EclT7bfVgTxqL57Gkpow==} - azure-devops-node-api@12.5.0: - resolution: {integrity: sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==} - - balanced-match@4.0.4: - resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} - engines: {node: 18 || 20 || >=22} - - binaryextensions@6.11.0: - resolution: {integrity: sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==} - engines: {node: '>=4'} - - boundary@2.0.0: - resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==} - - brace-expansion@5.0.13: - resolution: {integrity: sha512-Vh3dmFbc4wZeox7M9I/0L9GfFd83Su4+yCck/OF9Gi/P/dAHn0RT7X4K9R7gMNMhDck3DvhR6QXsnQdjjgwNvQ==} - engines: {node: 20 || >=22} - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - - bundle-name@4.1.1: - resolution: {integrity: sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==} - engines: {node: '>=18'} - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - chai@6.3.0: resolution: {integrity: sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==} engines: {node: '>=18'} - cockatiel@3.2.1: - resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==} - engines: {node: '>=16'} - - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - default-browser-id@5.0.1: - resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} - engines: {node: '>=18'} - - default-browser@5.5.1: - resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==} - engines: {node: '>=18'} - - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - - editions@6.22.0: - resolution: {integrity: sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==} - engines: {ecmascript: '>= es5', node: '>=4'} - - entities@9.0.0: - resolution: {integrity: sha512-oJFNDJg3kTPwAD1cNn2+WmUq4wFoo09npc3Ydf1D7ED4smRiWrsKnaLxykrTWgyGEcusc87P5dxlAleol9kpkg==} - engines: {node: '>=20.19.0'} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - es-module-lexer@2.3.2: resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} - es-object-atoms@1.1.2: - resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} - engines: {node: '>= 0.4'} - esbuild@0.28.2: resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} engines: {node: '>=18'} @@ -938,82 +624,9 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - hasown@2.0.4: - resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} - engines: {node: '>= 0.4'} - - hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - - http-proxy-agent@9.1.0: - resolution: {integrity: sha512-2NxoveTT58mjYT4n3RPTEfCZGLMbidoO8XEieXfpSYxu+PQJ1qpx4ypwH6N+uF9twBPIvRRgvkvW5HUTYWENig==} - engines: {node: '>= 20'} - - https-proxy-agent@9.1.0: - resolution: {integrity: sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==} - engines: {node: '>= 20'} - - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - - is-in-ssh@1.0.0: - resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} - engines: {node: '>=20'} - - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - - is-wsl@3.1.1: - resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} - engines: {node: '>=16'} - - istextorbinary@9.5.0: - resolution: {integrity: sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==} - engines: {node: '>=4'} - js-tokens@10.0.0: resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} - jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - - jsonwebtoken@9.0.3: - resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} - engines: {node: '>=12', npm: '>=6'} - - jwa@2.0.1: - resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} - - jws@4.0.1: - resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} - lightningcss-android-arm64@1.33.0: resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} engines: {node: '>= 12.0.0'} @@ -1088,84 +701,21 @@ packages: resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} engines: {node: '>= 12.0.0'} - lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - - lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - - lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - - lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - - lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - magic-string@1.4.5: resolution: {integrity: sha512-oLLC2+YvQUfAa+vxoufE/yc1icb87M9iXIRqAoR/2EhE/8cb3SF/+Gi0c2By1B+5Vz2e2vQtUvHiu1+63Znh+w==} magicast@0.5.5: resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==} - marked@18.2.0: - resolution: {integrity: sha512-KaeL+tAbtvI930q7HE2PN5lYXYdT8EiSmxHlN6F3rsfb57wd5mp5W5TLazpdj4inTQBJdgjYwbs40W/0VUGU+Q==} - engines: {node: '>= 20'} - hasBin: true - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - minimatch@11.0.8: - resolution: {integrity: sha512-nFQuYSTVrGvysVBps5Ih+0BdnYFN/Cj3C816r6+p7yK+FHrVLGE4O4N9AFwykrlNlvM2HYt+Rad1Uiro6h88Ig==} - engines: {node: 20 || >=22} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - nanoid@3.3.20: resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - obug@3.0.0: resolution: {integrity: sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==} engines: {node: '>=12.20.0'} - open@11.0.4: - resolution: {integrity: sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==} - engines: {node: '>=20'} - - parse5@8.1.1: - resolution: {integrity: sha512-EcR/6WDcU7b2N3vQSxKALCk9lXGtUMQxXio008OEMBE0kavu/7JLfBEeFPzi43nMqVDSbEn3QCK+BMCc9zO//w==} - - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1177,74 +727,11 @@ packages: resolution: {integrity: sha512-LJlKCCAUFKOuZxipUdYw1NzIITEsPcgyOG9LkvRJvuKj/bRzbuRY0ARXvL0pWGpsZvn8jku+LMep2eU0seHp8g==} engines: {node: ^10 || ^12 || >=14} - powershell-utils@0.2.1: - resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} - engines: {node: '>=20'} - - proper-lockfile@4.1.2: - resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - - proxy-agent-negotiate@1.1.0: - resolution: {integrity: sha512-N8IBcM3UgCVzz2L2Lqv8DVntDnnC8/hiV4nEDUPkqq72TPUgYWjQc+bdZlBPZK9LzPAvOY//gAt0S0DApoOXWQ==} - engines: {node: '>= 20'} - peerDependencies: - kerberos: ^2.0.0 - peerDependenciesMeta: - kerberos: - optional: true - - qs@6.17.1: - resolution: {integrity: sha512-jd3COkaKVgGUW+ZHyEHCG9bH7RoaaiWuMgzsIBjUMVjLAaWGWpoUAVwljVvBHxRu/2qEHnadLGZrkutYUBPQJA==} - engines: {node: '>=0.6'} - - read@1.0.7: - resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} - engines: {node: '>=0.8'} - - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - rolldown@1.2.19: resolution: {integrity: sha512-QIiV1J9d0pzN4jeeTH4sjPy0AZ6cAy2cG0ExeoE1+U8Rvj+hR3gYkokx0YbeUNGlZqiQJJ2utcETe0oKXwzsuA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - run-applescript@7.1.0: - resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} - engines: {node: '>=18'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - sax@1.6.1: - resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} - engines: {node: '>=11.0.0'} - - semver@7.8.6: - resolution: {integrity: sha512-9lpSSU4Mly3mrtruwLs1eLK6+gzbzqeBFwRNjIjE+9LuDpWdYctrQlQ3ej1Ilgi7gknpsTRnPoLP8DpCHqHIJw==} - engines: {node: '>=10'} - hasBin: true - - side-channel-list@1.0.1: - resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.1: - resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} - engines: {node: '>= 0.4'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - source-map-js@1.2.2: resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} engines: {node: '>=0.10.0'} @@ -1252,13 +739,6 @@ packages: std-env@4.3.0: resolution: {integrity: sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==} - structured-source@4.0.0: - resolution: {integrity: sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==} - - textextensions@6.11.0: - resolution: {integrity: sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==} - engines: {node: '>=4'} - tinybench@6.2.3: resolution: {integrity: sha512-Al01C2JIBnO2CXCAPbpAl6sUiOZHeThGtHYNTa51JRw9PyWOCdr+9Ong05R4qg/Sk3+H645E8ov1h2c58ityNw==} engines: {node: '>=20.0.0'} @@ -1278,31 +758,14 @@ packages: tslib@2.9.1: resolution: {integrity: sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==} - tunnel@0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} - engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - - typed-rest-client@1.8.11: - resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} - typescript@7.0.2: resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} engines: {node: '>=16.20.0'} hasBin: true - underscore@1.13.8: - resolution: {integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - url-join@4.0.1: - resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - - version-range@4.15.0: - resolution: {integrity: sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==} - engines: {node: '>=4'} - vite@8.3.8: resolution: {integrity: sha512-LzOn3h9rG/0vhLdXrV4yJ4QFA9eEoqCl+Yx+kGJd7aB9w6nfNgVHKSYwLPZUHrz4ZGa+t+kXjV9itvcHDLQouA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1392,121 +855,8 @@ packages: engines: {node: '>=20.11'} hasBin: true - wsl-utils@1.0.1: - resolution: {integrity: sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==} - engines: {node: '>=20'} - - xml2js@0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} - engines: {node: '>=4.0.0'} - - xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yauzl@3.4.0: - resolution: {integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==} - engines: {node: '>=12'} - - yazl@2.5.1: - resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} - snapshots: - '@azure/abort-controller@2.2.0': - dependencies: - tslib: 2.9.1 - - '@azure/core-auth@1.11.0': - dependencies: - '@azure/abort-controller': 2.2.0 - '@azure/core-util': 1.14.0 - tslib: 2.9.1 - transitivePeerDependencies: - - kerberos - - supports-color - - '@azure/core-client@1.11.2': - dependencies: - '@azure/abort-controller': 2.2.0 - '@azure/core-auth': 1.11.0 - '@azure/core-rest-pipeline': 1.25.1 - '@azure/core-tracing': 1.4.0 - '@azure/core-util': 1.14.0 - '@azure/logger': 1.4.0 - tslib: 2.9.1 - transitivePeerDependencies: - - kerberos - - supports-color - - '@azure/core-process@1.0.0': {} - - '@azure/core-rest-pipeline@1.25.1': - dependencies: - '@azure/abort-controller': 2.2.0 - '@azure/core-auth': 1.11.0 - '@azure/core-tracing': 1.4.0 - '@azure/core-util': 1.14.0 - '@azure/logger': 1.4.0 - '@typespec/ts-http-runtime': 0.3.10 - tslib: 2.9.1 - transitivePeerDependencies: - - kerberos - - supports-color - - '@azure/core-tracing@1.4.0': - dependencies: - tslib: 2.9.1 - - '@azure/core-util@1.14.0': - dependencies: - '@azure/abort-controller': 2.2.0 - '@typespec/ts-http-runtime': 0.3.10 - tslib: 2.9.1 - transitivePeerDependencies: - - kerberos - - supports-color - - '@azure/identity@4.14.1': - dependencies: - '@azure/abort-controller': 2.2.0 - '@azure/core-auth': 1.11.0 - '@azure/core-client': 1.11.2 - '@azure/core-process': 1.0.0 - '@azure/core-rest-pipeline': 1.25.1 - '@azure/core-tracing': 1.4.0 - '@azure/core-util': 1.14.0 - '@azure/logger': 1.4.0 - '@azure/msal-browser': 5.29.0 - '@azure/msal-node': 7.2.1 - open: 11.0.4 - tslib: 2.9.1 - transitivePeerDependencies: - - kerberos - - supports-color - - '@azure/logger@1.4.0': - dependencies: - '@typespec/ts-http-runtime': 0.3.10 - tslib: 2.9.1 - transitivePeerDependencies: - - kerberos - - supports-color - - '@azure/msal-browser@5.29.0': - dependencies: - '@azure/msal-common': 16.16.1 - - '@azure/msal-common@16.16.1': {} - - '@azure/msal-node@7.2.1': - dependencies: - '@azure/msal-common': 16.16.1 - jsonwebtoken: 9.0.3 - '@babel/helper-string-parser@7.29.14': {} '@babel/helper-validator-identifier@7.29.7': {} @@ -1659,8 +1009,6 @@ snapshots: '@esbuild/win32-x64@0.28.2': optional: true - '@isaacs/nonrecursive-glob-match@1.1.0': {} - '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.6.0': {} @@ -1670,57 +1018,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.6.0 - '@napi-rs/keyring-darwin-arm64@1.3.0': - optional: true - - '@napi-rs/keyring-darwin-x64@1.3.0': - optional: true - - '@napi-rs/keyring-freebsd-x64@1.3.0': - optional: true - - '@napi-rs/keyring-linux-arm-gnueabihf@1.3.0': - optional: true - - '@napi-rs/keyring-linux-arm64-gnu@1.3.0': - optional: true - - '@napi-rs/keyring-linux-arm64-musl@1.3.0': - optional: true - - '@napi-rs/keyring-linux-riscv64-gnu@1.3.0': - optional: true - - '@napi-rs/keyring-linux-x64-gnu@1.3.0': - optional: true - - '@napi-rs/keyring-linux-x64-musl@1.3.0': - optional: true - - '@napi-rs/keyring-win32-arm64-msvc@1.3.0': - optional: true - - '@napi-rs/keyring-win32-ia32-msvc@1.3.0': - optional: true - - '@napi-rs/keyring-win32-x64-msvc@1.3.0': - optional: true - - '@napi-rs/keyring@1.3.0': - optionalDependencies: - '@napi-rs/keyring-darwin-arm64': 1.3.0 - '@napi-rs/keyring-darwin-x64': 1.3.0 - '@napi-rs/keyring-freebsd-x64': 1.3.0 - '@napi-rs/keyring-linux-arm-gnueabihf': 1.3.0 - '@napi-rs/keyring-linux-arm64-gnu': 1.3.0 - '@napi-rs/keyring-linux-arm64-musl': 1.3.0 - '@napi-rs/keyring-linux-riscv64-gnu': 1.3.0 - '@napi-rs/keyring-linux-x64-gnu': 1.3.0 - '@napi-rs/keyring-linux-x64-musl': 1.3.0 - '@napi-rs/keyring-win32-arm64-msvc': 1.3.0 - '@napi-rs/keyring-win32-ia32-msvc': 1.3.0 - '@napi-rs/keyring-win32-x64-msvc': 1.3.0 - '@napi-rs/wasm-runtime@1.2.6(@emnapi/core@2.0.0-beta.2)(@emnapi/runtime@2.0.0-beta.2)': dependencies: '@emnapi/core': 2.0.0-beta.2 @@ -1784,30 +1081,6 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@secretlint/core@10.2.2': - dependencies: - '@secretlint/profiler': 10.2.2 - '@secretlint/types': 10.2.2 - debug: 4.4.3 - structured-source: 4.0.0 - transitivePeerDependencies: - - supports-color - - '@secretlint/profiler@10.2.2': {} - - '@secretlint/secretlint-rule-no-dotenv@10.2.2': - dependencies: - '@secretlint/types': 10.2.2 - - '@secretlint/secretlint-rule-preset-recommend@10.2.2': {} - - '@secretlint/source-creator@10.2.2': - dependencies: - '@secretlint/types': 10.2.2 - istextorbinary: 9.5.0 - - '@secretlint/types@10.2.2': {} - '@tybys/wasm-util@0.10.4': dependencies: tslib: 2.9.1 @@ -1888,15 +1161,6 @@ snapshots: '@typescript/typescript-win32-x64@7.0.2': optional: true - '@typespec/ts-http-runtime@0.3.10': - dependencies: - http-proxy-agent: 9.1.0 - https-proxy-agent: 9.1.0 - tslib: 2.9.1 - transitivePeerDependencies: - - kerberos - - supports-color - '@vitest/coverage-v8@5.1.0(vitest@5.1.0)': dependencies: '@bcoe/v8-coverage': 1.0.2 @@ -1926,79 +1190,6 @@ snapshots: '@vitest/spy@5.1.0': {} - '@vscode/vsce-sign-alpine-arm64@2.0.6': - optional: true - - '@vscode/vsce-sign-alpine-x64@2.0.6': - optional: true - - '@vscode/vsce-sign-darwin-arm64@2.0.6': - optional: true - - '@vscode/vsce-sign-darwin-x64@2.0.6': - optional: true - - '@vscode/vsce-sign-linux-arm64@2.0.6': - optional: true - - '@vscode/vsce-sign-linux-arm@2.0.6': - optional: true - - '@vscode/vsce-sign-linux-x64@2.0.6': - optional: true - - '@vscode/vsce-sign-win32-arm64@2.0.6': - optional: true - - '@vscode/vsce-sign-win32-x64@2.0.6': - optional: true - - '@vscode/vsce-sign@2.1.0': - optionalDependencies: - '@vscode/vsce-sign-alpine-arm64': 2.0.6 - '@vscode/vsce-sign-alpine-x64': 2.0.6 - '@vscode/vsce-sign-darwin-arm64': 2.0.6 - '@vscode/vsce-sign-darwin-x64': 2.0.6 - '@vscode/vsce-sign-linux-arm': 2.0.6 - '@vscode/vsce-sign-linux-arm64': 2.0.6 - '@vscode/vsce-sign-linux-x64': 2.0.6 - '@vscode/vsce-sign-win32-arm64': 2.0.6 - '@vscode/vsce-sign-win32-x64': 2.0.6 - - '@vscode/vsce@4.1.0': - dependencies: - '@azure/identity': 4.14.1 - '@napi-rs/keyring': 1.3.0 - '@secretlint/core': 10.2.2 - '@secretlint/secretlint-rule-no-dotenv': 10.2.2 - '@secretlint/secretlint-rule-preset-recommend': 10.2.2 - '@secretlint/source-creator': 10.2.2 - '@secretlint/types': 10.2.2 - '@vscode/vsce-sign': 2.1.0 - azure-devops-node-api: 12.5.0 - cockatiel: 3.2.1 - commander: 12.1.0 - hosted-git-info: 4.1.0 - jsonc-parser: 3.3.1 - marked: 18.2.0 - mime: 1.6.0 - minimatch: 11.0.8 - parse5: 8.1.1 - proper-lockfile: 4.1.2 - read: 1.0.7 - semver: 7.8.6 - tinyglobby: 0.2.17 - typed-rest-client: 1.8.11 - url-join: 4.0.1 - xml2js: 0.5.0 - yauzl: 3.4.0 - yazl: 2.5.1 - transitivePeerDependencies: - - kerberos - - supports-color - - agent-base@9.0.0: {} - assertion-error@2.0.1: {} ast-v8-to-istanbul@1.0.8: @@ -2007,88 +1198,12 @@ snapshots: estree-walker: 3.0.3 js-tokens: 10.0.0 - azure-devops-node-api@12.5.0: - dependencies: - tunnel: 0.0.6 - typed-rest-client: 1.8.11 - - balanced-match@4.0.4: {} - - binaryextensions@6.11.0: - dependencies: - editions: 6.22.0 - - boundary@2.0.0: {} - - brace-expansion@5.0.13: - dependencies: - balanced-match: 4.0.4 - - buffer-crc32@0.2.13: {} - - buffer-equal-constant-time@1.0.1: {} - - bundle-name@4.1.1: - dependencies: - run-applescript: 7.1.0 - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - chai@6.3.0: {} - cockatiel@3.2.1: {} - - commander@12.1.0: {} - - debug@4.4.3: - dependencies: - ms: 2.1.3 - - default-browser-id@5.0.1: {} - - default-browser@5.5.1: - dependencies: - bundle-name: 4.1.1 - default-browser-id: 5.0.1 - - define-lazy-prop@3.0.0: {} - detect-libc@2.1.2: {} - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - ecdsa-sig-formatter@1.0.11: - dependencies: - safe-buffer: 5.2.1 - - editions@6.22.0: - dependencies: - version-range: 4.15.0 - - entities@9.0.0: {} - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - es-module-lexer@2.3.2: {} - es-object-atoms@1.1.2: - dependencies: - es-errors: 1.3.0 - esbuild@0.28.2: optionalDependencies: '@esbuild/aix-ppc64': 0.28.2 @@ -2131,104 +1246,8 @@ snapshots: fsevents@2.3.3: optional: true - function-bind@1.1.2: {} - - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.4 - math-intrinsics: 1.1.0 - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.2 - - gopd@1.2.0: {} - - graceful-fs@4.2.11: {} - - has-symbols@1.1.0: {} - - hasown@2.0.4: - dependencies: - function-bind: 1.1.2 - - hosted-git-info@4.1.0: - dependencies: - lru-cache: 6.0.0 - - http-proxy-agent@9.1.0: - dependencies: - agent-base: 9.0.0 - debug: 4.4.3 - proxy-agent-negotiate: 1.1.0 - transitivePeerDependencies: - - kerberos - - supports-color - - https-proxy-agent@9.1.0: - dependencies: - agent-base: 9.0.0 - debug: 4.4.3 - proxy-agent-negotiate: 1.1.0 - transitivePeerDependencies: - - kerberos - - supports-color - - is-docker@3.0.0: {} - - is-in-ssh@1.0.0: {} - - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - - is-wsl@3.1.1: - dependencies: - is-inside-container: 1.0.0 - - istextorbinary@9.5.0: - dependencies: - binaryextensions: 6.11.0 - editions: 6.22.0 - textextensions: 6.11.0 - js-tokens@10.0.0: {} - jsonc-parser@3.3.1: {} - - jsonwebtoken@9.0.3: - dependencies: - jws: 4.0.1 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 7.8.6 - - jwa@2.0.1: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - - jws@4.0.1: - dependencies: - jwa: 2.0.1 - safe-buffer: 5.2.1 - lightningcss-android-arm64@1.33.0: optional: true @@ -2278,24 +1297,6 @@ snapshots: lightningcss-win32-arm64-msvc: 1.33.0 lightningcss-win32-x64-msvc: 1.33.0 - lodash.includes@4.3.0: {} - - lodash.isboolean@3.0.3: {} - - lodash.isinteger@4.0.4: {} - - lodash.isnumber@3.0.3: {} - - lodash.isplainobject@4.0.6: {} - - lodash.isstring@4.0.1: {} - - lodash.once@4.1.1: {} - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - magic-string@1.4.5: dependencies: '@jridgewell/sourcemap-codec': 1.6.0 @@ -2306,42 +1307,10 @@ snapshots: '@babel/types': 7.29.14 source-map-js: 1.2.2 - marked@18.2.0: {} - - math-intrinsics@1.1.0: {} - - mime@1.6.0: {} - - minimatch@11.0.8: - dependencies: - '@isaacs/nonrecursive-glob-match': 1.1.0 - brace-expansion: 5.0.13 - - ms@2.1.3: {} - - mute-stream@0.0.8: {} - nanoid@3.3.20: {} - object-inspect@1.13.4: {} - obug@3.0.0: {} - open@11.0.4: - dependencies: - default-browser: 5.5.1 - define-lazy-prop: 3.0.0 - is-in-ssh: 1.0.0 - is-inside-container: 1.0.0 - powershell-utils: 0.2.1 - wsl-utils: 1.0.1 - - parse5@8.1.1: - dependencies: - entities: 9.0.0 - - pend@1.2.0: {} - picocolors@1.1.1: {} picomatch@4.0.7: {} @@ -2352,27 +1321,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.2 - powershell-utils@0.2.1: {} - - proper-lockfile@4.1.2: - dependencies: - graceful-fs: 4.2.11 - retry: 0.12.0 - signal-exit: 3.0.7 - - proxy-agent-negotiate@1.1.0: {} - - qs@6.17.1: - dependencies: - es-define-property: 1.0.1 - side-channel: 1.1.1 - - read@1.0.7: - dependencies: - mute-stream: 0.0.8 - - retry@0.12.0: {} - rolldown@1.2.19: dependencies: '@oxc-project/types': 0.156.0 @@ -2395,56 +1343,10 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.2.19 '@rolldown/binding-win32-x64-msvc': 1.2.19 - run-applescript@7.1.0: {} - - safe-buffer@5.2.1: {} - - sax@1.6.1: {} - - semver@7.8.6: {} - - side-channel-list@1.0.1: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - - side-channel@1.1.1: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.1 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - signal-exit@3.0.7: {} - source-map-js@1.2.2: {} std-env@4.3.0: {} - structured-source@4.0.0: - dependencies: - boundary: 2.0.0 - - textextensions@6.11.0: - dependencies: - editions: 6.22.0 - tinybench@6.2.3: {} tinyexec@1.3.1: {} @@ -2456,15 +1358,8 @@ snapshots: tinyrainbow@3.2.0: {} - tslib@2.9.1: {} - - tunnel@0.0.6: {} - - typed-rest-client@1.8.11: - dependencies: - qs: 6.17.1 - tunnel: 0.0.6 - underscore: 1.13.8 + tslib@2.9.1: + optional: true typescript@7.0.2: optionalDependencies: @@ -2489,14 +1384,8 @@ snapshots: '@typescript/typescript-win32-arm64': 7.0.2 '@typescript/typescript-win32-x64': 7.0.2 - underscore@1.13.8: {} - undici-types@6.21.0: {} - url-join@4.0.1: {} - - version-range@4.15.0: {} - vite@8.3.8(@types/node@22.20.5)(esbuild@0.28.2): dependencies: lightningcss: 1.33.0 @@ -2532,25 +1421,3 @@ snapshots: - msw why-is-node-running@3.2.1: {} - - wsl-utils@1.0.1: - dependencies: - is-wsl: 3.1.1 - powershell-utils: 0.2.1 - - xml2js@0.5.0: - dependencies: - sax: 1.6.1 - xmlbuilder: 11.0.1 - - xmlbuilder@11.0.1: {} - - yallist@4.0.0: {} - - yauzl@3.4.0: - dependencies: - pend: 1.2.0 - - yazl@2.5.1: - dependencies: - buffer-crc32: 0.2.13 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 648a62e..c499c97 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -7,12 +7,3 @@ verifyDepsBeforeRun: error allowBuilds: # install.js checks, and fetches if it has to, the esbuild binary for this platform. esbuild: true - # Its postinstall picks the platform's vsce-sign binary, which signs a package for the - # Marketplace: vsce package runs without it, and nothing here signs yet. - '@vscode/vsce-sign': false - -overrides: - # vsce 4.1 asks for minimatch ^10.2.6, and every 10.x is in GHSA-g3hv-75wg-m249 (globParts - # amplification), fixed from 11.0.1. vsce reads only .vscodeignore's own patterns with it, and - # the VSIX it packages with 11 holds the same files. - minimatch: ^11.0.8