diff --git a/src/docs/peridio-core/tools/peridio-cli/commands/binaries/create.md b/src/docs/peridio-core/tools/peridio-cli/commands/binaries/create.md index 9cc7ea2c..41683c9b 100644 --- a/src/docs/peridio-core/tools/peridio-cli/commands/binaries/create.md +++ b/src/docs/peridio-core/tools/peridio-cli/commands/binaries/create.md @@ -42,13 +42,13 @@ Options: Limit the concurrency of jobs that create and upload binary parts. [default: 2x the core count, to a maximum of 16] -s, --signing-key-pair - The name of a signing key pair in your Peridio CLI config. This will dictate both the private key to create a binary signature with as well as the signing key Peridio will use to verify the binary signature + The name(s) of signing key pair(s) in your Peridio CLI config. This will dictate both the private key to create a binary signature with as well as the signing key Peridio will use to verify the binary signature. Multiple pairs can be specified for multiple signatures --signing-key-private - A path to a PKCS#8 private key encoded as a pem to create a binary signature binary with + Path(s) to PKCS#8 private key(s) encoded as pem to create binary signature(s) with. Multiple keys can be specified for multiple signatures --signing-key-prn - The PRN of the signing key Peridio will use to verify the binary signature + The PRN(s) of the signing key(s) Peridio will use to verify the binary signature(s). Must match the number of private keys provided --skip-upload Create the binary record but do not upload its content nor sign it diff --git a/src/docs/peridio-core/tools/peridio-cli/commands/binary-signatures/list.md b/src/docs/peridio-core/tools/peridio-cli/commands/binary-signatures/list.md new file mode 100644 index 00000000..2a89f199 --- /dev/null +++ b/src/docs/peridio-core/tools/peridio-cli/commands/binary-signatures/list.md @@ -0,0 +1,8 @@ +``` +Usage: peridio binary-signatures list [OPTIONS] + +Options: + -s, --search Search string to filter binary signatures by binary_prn, signature, or keyid + -h, --help Print help + +``` diff --git a/src/docs/peridio-core/tools/peridio-cli/commands/bundles/pull.md b/src/docs/peridio-core/tools/peridio-cli/commands/bundles/pull.md new file mode 100644 index 00000000..2b39b10c --- /dev/null +++ b/src/docs/peridio-core/tools/peridio-cli/commands/bundles/pull.md @@ -0,0 +1,9 @@ +``` +Usage: peridio bundles pull [OPTIONS] --bundle-prn + +Options: + --bundle-prn The PRN of the bundle to pull + -o, --output Output file path for the bundle archive. If not specified, uses bundle name or ID + -h, --help Print help + +``` diff --git a/src/docs/peridio-core/tools/peridio-cli/commands/bundles/push.md b/src/docs/peridio-core/tools/peridio-cli/commands/bundles/push.md new file mode 100644 index 00000000..95109fdd --- /dev/null +++ b/src/docs/peridio-core/tools/peridio-cli/commands/bundles/push.md @@ -0,0 +1,14 @@ +``` +Usage: peridio bundles push [OPTIONS] --path + +Options: + -p, --path + The path to the zstd compressed cpio archive containing the bundle and binaries + --binary-part-size + The size to use when creating binary parts. All binary parts will be equal to this size, except the last one which will be less than or equal to this size [default: 5242880] + --concurrency + Limit the concurrency of jobs that create and upload binary parts. [default: 2x the core count, to a maximum of 16] + -h, --help + Print help + +``` diff --git a/src/docs/peridio-core/tools/peridio-cli/commands/x509/create.md b/src/docs/peridio-core/tools/peridio-cli/commands/x509/create.md index 8d26ef84..f2777f61 100644 --- a/src/docs/peridio-core/tools/peridio-cli/commands/x509/create.md +++ b/src/docs/peridio-core/tools/peridio-cli/commands/x509/create.md @@ -1,11 +1,11 @@ ``` -Usage: peridio x509 create [OPTIONS] --common-name --start-date --end-date +Usage: peridio x509 create [OPTIONS] --common-name --start-date --end-date Options: --common-name The Common Name (CN) for the certificate --is-ca Whether this certificate is a Certificate Authority (CA) - --start-date The start date of the certificate's validity period (format: YYYY-MM-DD) - --end-date The end date of the certificate's validity period (format: YYYY-MM-DD) + --start-date The start date of the certificate's validity period + --end-date The end date of the certificate's validity period --signer-key Path to the private key file of the signer (required if signer_cert is provided) --signer-cert Path to the certificate file of the signer (required if signer_key is provided) --out Directory to save the created certificate and private key to (defaults to current working directory) diff --git a/src/openapi/peridio-admin-openapi.yaml b/src/openapi/peridio-admin-openapi.yaml index ec383f44..82d2ea8d 100644 --- a/src/openapi/peridio-admin-openapi.yaml +++ b/src/openapi/peridio-admin-openapi.yaml @@ -172,6 +172,10 @@ security: tags: - name: Bundles id: bundles + - name: Bundle Overrides + id: bundle-overrides + - name: Bundle Signatures + id: bundle-signatures - name: Users id: users - name: Artifacts @@ -268,6 +272,8 @@ x-tagGroups: - name: Release Management tags: - Bundles + - Bundle Overrides + - Bundle Signatures - Releases - name: Events tags: @@ -732,6 +738,40 @@ paths: /binary_signatures: parameters: - $ref: "#/components/parameters/x-api-version" + get: + operationId: list-binary-signatures + summary: List binary signatures + description: | + **Search** + + This resource has the following searchable fields. + + |Key|Required|Operators|Value| + |-|-|-|-| + |`binary_prn`||`:`|string| + |`inserted_at`||`:`, `>`, `>=`, `<`, `<=`|date-time| + |`prn`||`:`|string| + |`signing_key_prn`||`:`|string| + |`updated_at`||`:`, `>`, `>=`, `<`, `<=`|date-time| + + tags: + - "Binary Signatures" + parameters: + - $ref: "#/components/parameters/limit" + - $ref: "#/components/parameters/order" + - $ref: "#/components/parameters/search" + - $ref: "#/components/parameters/page" + responses: + "200": + description: Ok. + content: + application/json: + schema: + properties: + binary_signatures: + $ref: "#/components/schemas/array-of-binary-signatures" + next_page: + $ref: "#/components/schemas/next-page" post: operationId: create-a-binary-signature summary: Create a binary signature @@ -752,12 +792,20 @@ paths: $ref: "#/components/schemas/prn" signing_key_prn: $ref: "#/components/schemas/prn" + description: The PRN of the signing key. Either this or signing_key_keyid must be provided. + signing_key_keyid: + type: string + description: The keyid of the signing key. Either this or signing_key_prn must be provided. signature: - $ref: "#/components/schemas/binary-signature-signature" + $ref: "#/components/schemas/ed25519-signature" required: - binary_prn - - signing_key_prn - signature + oneOf: + - required: + - signing_key_prn + - required: + - signing_key_keyid responses: "201": description: Ok. @@ -783,6 +831,331 @@ paths: responses: "204": description: Ok. + /binaries/{binary_prn}/download_url: + parameters: + - $ref: "#/components/parameters/x-api-version" + - name: binary_prn + in: path + required: true + schema: + $ref: "#/components/schemas/prn" + get: + operationId: get-binary-download-url + summary: Get binary download URL + description: Returns a pre-signed URL for downloading the binary. + tags: + - "Binaries" + responses: + "200": + description: Ok. + content: + application/json: + schema: + properties: + download_url: + type: string + format: uri + description: A pre-signed URL for downloading the binary. + /bundle_overrides: + parameters: + - $ref: "#/components/parameters/x-api-version" + post: + operationId: create-a-bundle-override + summary: Create a bundle override + tags: + - "Bundle Overrides" + requestBody: + required: true + content: + application/json: + schema: + properties: + bundle_prn: + $ref: "#/components/schemas/bundle-prn" + name: + $ref: "#/components/schemas/bundle-override-name" + description: + $ref: "#/components/schemas/bundle-override-description" + starts_at: + $ref: "#/components/schemas/bundle-override-starts-at" + ends_at: + $ref: "#/components/schemas/bundle-override-ends-at" + required: + - bundle_prn + - name + - starts_at + responses: + "201": + description: Ok. + content: + application/json: + schema: + properties: + bundle_override: + $ref: "#/components/schemas/bundle-override" + get: + operationId: list-bundle-overrides + summary: List bundle overrides + description: | + **Search** + + This resource has the following searchable fields. + + |Key|Required|Operators|Value| + |-|-|-|-| + |`bundle_prn`||`:`|string| + |`inserted_at`||`:`, `>`, `>=`, `<`, `<=`|date-time| + |`name`||`:`, `~`, `-`|string| + |`prn`||`:`|string| + |`updated_at`||`:`, `>`, `>=`, `<`, `<=`|date-time| + + tags: + - "Bundle Overrides" + parameters: + - $ref: "#/components/parameters/limit" + - $ref: "#/components/parameters/order" + - $ref: "#/components/parameters/search" + - $ref: "#/components/parameters/page" + responses: + "200": + description: Ok. + content: + application/json: + schema: + properties: + bundle_overrides: + $ref: "#/components/schemas/array-of-bundle-overrides" + next_page: + $ref: "#/components/schemas/next-page" + /bundle_overrides/{bundle_override_prn}: + parameters: + - $ref: "#/components/parameters/x-api-version" + - name: bundle_override_prn + in: path + required: true + schema: + $ref: "#/components/schemas/bundle-override-prn" + get: + operationId: retrieve-a-bundle-override + summary: Retrieve a bundle override + tags: + - "Bundle Overrides" + responses: + "200": + description: Ok. + content: + application/json: + schema: + properties: + bundle_override: + $ref: "#/components/schemas/bundle-override" + patch: + operationId: update-a-bundle-override + summary: Update a bundle override + tags: + - "Bundle Overrides" + requestBody: + required: true + content: + application/json: + schema: + properties: + bundle_prn: + $ref: "#/components/schemas/bundle-prn" + name: + $ref: "#/components/schemas/bundle-override-name" + description: + $ref: "#/components/schemas/bundle-override-description" + starts_at: + $ref: "#/components/schemas/bundle-override-starts-at" + ends_at: + $ref: "#/components/schemas/bundle-override-ends-at" + responses: + "200": + description: Ok. + content: + application/json: + schema: + properties: + bundle_override: + $ref: "#/components/schemas/bundle-override" + delete: + operationId: delete-a-bundle-override + summary: Delete a bundle override + tags: + - "Bundle Overrides" + responses: + "204": + description: No Content. + /bundle_overrides/{bundle_override_prn}/devices: + parameters: + - $ref: "#/components/parameters/x-api-version" + - name: bundle_override_prn + in: path + required: true + schema: + $ref: "#/components/schemas/bundle-override-prn" + post: + operationId: add-device-to-bundle-override + summary: Add a device to a bundle override + tags: + - "Bundle Overrides" + requestBody: + required: true + content: + application/json: + schema: + properties: + device_prn: + $ref: "#/components/schemas/device-prn" + required: + - device_prn + responses: + "201": + description: Ok. + content: + application/json: + schema: + properties: + device: + $ref: "#/components/schemas/bundle-override-device" + get: + operationId: list-bundle-override-devices + summary: List devices in a bundle override + tags: + - "Bundle Overrides" + parameters: + - $ref: "#/components/parameters/limit" + - $ref: "#/components/parameters/order" + - $ref: "#/components/parameters/page" + responses: + "200": + description: Ok. + content: + application/json: + schema: + properties: + devices: + $ref: "#/components/schemas/array-of-bundle-override-devices" + next_page: + $ref: "#/components/schemas/next-page" + /bundle_overrides/{bundle_override_prn}/devices/{device_prn}: + parameters: + - $ref: "#/components/parameters/x-api-version" + - name: bundle_override_prn + in: path + required: true + schema: + $ref: "#/components/schemas/bundle-override-prn" + - name: device_prn + in: path + required: true + schema: + $ref: "#/components/schemas/device-prn" + delete: + operationId: remove-device-from-bundle-override + summary: Remove a device from a bundle override + tags: + - "Bundle Overrides" + responses: + "204": + description: No Content. + /bundle_signatures: + parameters: + - $ref: "#/components/parameters/x-api-version" + post: + operationId: create-a-bundle-signature + summary: Create a bundle signature + tags: + - "Bundle Signatures" + description: | + Attach a signature to a bundle. + + This endpoint must be used against a bundle that is already created. The + request will fail if the signature is invalid. + requestBody: + required: true + content: + application/json: + schema: + properties: + bundle_prn: + $ref: "#/components/schemas/bundle-prn" + signing_key_prn: + $ref: "#/components/schemas/prn" + description: The PRN of the signing key. Either this or signing_key_keyid must be provided. + signing_key_keyid: + type: string + description: The keyid of the signing key. Either this or signing_key_prn must be provided. + signature: + $ref: "#/components/schemas/ed25519-signature" + required: + - bundle_prn + - signature + oneOf: + - required: + - signing_key_prn + - required: + - signing_key_keyid + responses: + "201": + description: Ok. + content: + application/json: + schema: + properties: + bundle_signature: + $ref: "#/components/schemas/bundle-signature" + get: + operationId: list-bundle-signatures + summary: List bundle signatures + description: | + **Search** + + This resource has the following searchable fields. + + |Key|Required|Operators|Value| + |-|-|-|-| + |`bundle_prn`||`:`|string| + |`inserted_at`||`:`, `>`, `>=`, `<`, `<=`|date-time| + |`prn`||`:`|string| + |`signing_key_prn`||`:`|string| + |`updated_at`||`:`, `>`, `>=`, `<`, `<=`|date-time| + + tags: + - "Bundle Signatures" + parameters: + - $ref: "#/components/parameters/limit" + - $ref: "#/components/parameters/order" + - $ref: "#/components/parameters/search" + - $ref: "#/components/parameters/page" + responses: + "200": + description: Ok. + content: + application/json: + schema: + properties: + bundle_signatures: + $ref: "#/components/schemas/array-of-bundle-signatures" + next_page: + $ref: "#/components/schemas/next-page" + /bundle_signatures/{bundle_signature_prn}: + parameters: + - $ref: "#/components/parameters/x-api-version" + - name: bundle_signature_prn + in: path + required: true + schema: + $ref: "#/components/schemas/prn" + delete: + operationId: delete-a-bundle-signature + summary: Delete a bundle signature + tags: + - "Bundle Signatures" + responses: + "204": + description: No Content. /bundles: parameters: - $ref: "#/components/parameters/x-api-version" @@ -899,6 +1272,39 @@ paths: responses: "204": description: No Content. + /bundles/{bundle_prn}/signatures: + parameters: + - $ref: "#/components/parameters/x-api-version" + - name: bundle_prn + in: path + required: true + schema: + $ref: "#/components/schemas/prn" + get: + operationId: get-bundle-signatures + summary: Get bundle signatures + description: Returns the signatures associated with a bundle. + tags: + - "Bundle Signatures" + responses: + "200": + description: Ok. + content: + application/json: + schema: + properties: + bundle_signatures: + type: array + items: + type: object + properties: + signature: + $ref: "#/components/schemas/ed25519-signature" + signing_key_prn: + $ref: "#/components/schemas/prn" + keyid: + type: string + description: The keyid of the signing key. /ca_certificates: parameters: - $ref: "#/components/parameters/x-api-version" @@ -1353,8 +1759,6 @@ paths: application/json: schema: properties: - product_prn: - $ref: "#/components/schemas/product-prn" cohort_prn: $ref: "#/components/schemas/cohort-prn" description: @@ -2563,6 +2967,10 @@ components: type: array items: $ref: "#/components/schemas/binary" + array-of-binary-signatures: + type: array + items: + $ref: "#/components/schemas/binary-signature" array-of-binary-parts: type: array items: @@ -2571,6 +2979,18 @@ components: type: array items: $ref: "#/components/schemas/bundle" + array-of-bundle-overrides: + type: array + items: + $ref: "#/components/schemas/bundle-override" + array-of-bundle-override-devices: + type: array + items: + $ref: "#/components/schemas/bundle-override-device" + array-of-bundle-signatures: + type: array + items: + $ref: "#/components/schemas/bundle-signature" array-of-ca-certificates: type: array items: @@ -2754,10 +3174,12 @@ components: - "signable" - "signed" - "destroyed" - binary-signature-signature: + ed25519-signature: type: string + minLength: 128 + maxLength: 128 description: | - The lowercase hex encoding of the ed25519 signature of the base16 encoding of the SHA256 hash of the binary. + The lowercase hex encoding of the ed25519 signature of the base16 encoding of the SHA256 hash of the resource. binary-signature: type: object properties: @@ -2768,9 +3190,12 @@ components: prn: $ref: "#/components/schemas/prn" signature: - $ref: "#/components/schemas/binary-signature-signature" + $ref: "#/components/schemas/ed25519-signature" signing_key_prn: $ref: "#/components/schemas/prn" + keyid: + type: string + description: The keyid of the signing key. inserted_at: type: string format: date-time @@ -2825,6 +3250,9 @@ components: properties: binaries: $ref: "#/components/schemas/array-of-binaries-with-metadata" + hash: + type: string + description: The hash of the bundle, computed from the hashes of its binaries. name: $ref: "#/components/schemas/bundle-name" organization_prn: @@ -2846,15 +3274,93 @@ components: example: true type: boolean bundle-name: - - type: string - nullable: true - minLength: 1 - maxLength: 128 - example: "bundle-name" + type: string + nullable: true + minLength: 1 + maxLength: 256 + example: "my-bundle" + bundle-override: + type: object + properties: + bundle_prn: + $ref: "#/components/schemas/bundle-prn" + description: + oneOf: + - $ref: "#/components/schemas/bundle-override-description" + - type: "null" + ends_at: + oneOf: + - type: string + format: date-time + - type: "null" + inserted_at: + type: string + format: date-time + name: + $ref: "#/components/schemas/bundle-override-name" + organization_prn: + $ref: "#/components/schemas/prn" + prn: + $ref: "#/components/schemas/bundle-override-prn" + starts_at: + type: string + format: date-time + updated_at: + type: string + format: date-time + bundle-override-description: + type: string + minLength: 1 + maxLength: 256 + bundle-override-device: + type: object + properties: + device_prn: + $ref: "#/components/schemas/device-prn" + inserted_at: + type: string + format: date-time + updated_at: + type: string + format: date-time + bundle-override-ends-at: + type: string + format: date-time + description: The time at which the bundle override ends. Must be after starts_at. + bundle-override-name: + type: string + minLength: 1 + maxLength: 128 bundle-override-prn: allOf: - $ref: "#/components/schemas/prn" - example: "prn:1:be4d30b4-de6b-47cd-85ea-a75e23fd63ef:bundle_override:b3f1f699-3bc8-4c77-bda2-b974595d5e3f" + bundle-override-starts-at: + type: string + format: date-time + description: The time at which the bundle override starts. + bundle-signature: + type: object + properties: + bundle_prn: + $ref: "#/components/schemas/bundle-prn" + organization_prn: + $ref: "#/components/schemas/prn" + prn: + $ref: "#/components/schemas/prn" + signature: + $ref: "#/components/schemas/ed25519-signature" + signing_key_prn: + $ref: "#/components/schemas/prn" + keyid: + type: string + description: The keyid of the signing key. + inserted_at: + type: string + format: date-time + updated_at: + type: string + format: date-time target-triplet: type: string minLength: 1 @@ -4080,7 +4586,7 @@ components: type: object properties: signature: - $ref: "#/components/schemas/binary-signature-signature" + $ref: "#/components/schemas/ed25519-signature" signing_key_prn: $ref: "#/components/schemas/prn" public_value: @@ -4119,7 +4625,7 @@ components: type: object properties: signature: - $ref: "#/components/schemas/binary-signature-signature" + $ref: "#/components/schemas/ed25519-signature" signing_key_prn: $ref: "#/components/schemas/prn" size: diff --git a/src/package-lock.json b/src/package-lock.json index 5e56790c..f905caab 100644 --- a/src/package-lock.json +++ b/src/package-lock.json @@ -259,7 +259,6 @@ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.39.0.tgz", "integrity": "sha512-/IYpF10BpthGZEJQZMhMqV4AqWr5avcWfZm/SIKK1RvUDmzGqLoW/+xeJVX9C8ZnNkIC8hivbIQFaNaRw0BFZQ==", "license": "MIT", - "peer": true, "dependencies": { "@algolia/client-common": "5.39.0", "@algolia/requester-browser-xhr": "5.39.0", @@ -404,7 +403,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -2159,7 +2157,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -2182,7 +2179,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -2292,7 +2288,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2714,7 +2709,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3633,7 +3627,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.1.tgz", "integrity": "sha512-DyLk9BIA6I9gPIuia8XIL+XIEbNnExam6AHzRsfrEq4zJr7k/DsWW7oi4aJMepDnL7jMRhpVcdsCxdjb0/A9xg==", "license": "MIT", - "peer": true, "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/logger": "3.9.1", @@ -3862,7 +3855,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.9.1.tgz", "integrity": "sha512-LrAIu/mQ04nG6s1cssC0TMmICD8twFIIn/hJ5Pd9uIPQvtKnyAKEn12RefopAul5KfMo9kixPaqogV5jIJr26w==", "license": "MIT", - "peer": true, "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/logger": "3.9.1", @@ -3903,7 +3895,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.1.tgz", "integrity": "sha512-j9adi961F+6Ps9d0jcb5BokMcbjXAAJqKkV43eo8nh4YgmDj7KUNDX4EnOh/MjTQeO06oPY5cxp3yUXdW/8Ggw==", "license": "MIT", - "peer": true, "dependencies": { "@docusaurus/mdx-loader": "3.9.1", "@docusaurus/module-type-aliases": "3.9.1", @@ -4012,7 +4003,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.1.tgz", "integrity": "sha512-YAL4yhhWLl9DXuf5MVig260a6INz4MehrBGFU/CZu8yXmRiYEuQvRFWh9ZsjfAOyaG7za1MNmBVZ4VVAi/CiJA==", "license": "MIT", - "peer": true, "dependencies": { "@docusaurus/logger": "3.9.1", "@docusaurus/types": "3.9.1", @@ -4587,7 +4577,6 @@ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", "license": "MIT", - "peer": true, "dependencies": { "@types/mdx": "^2.0.0" }, @@ -4650,7 +4639,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -5433,7 +5421,6 @@ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -5811,7 +5798,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.0.tgz", "integrity": "sha512-1LOH8xovvsKsCBq1wnT4ntDUdCJKmnEakhsuoUSy6ExlHCkGP2hqnatagYTgFk6oeL0VU31u7SNjunPN+GchtA==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -6012,7 +5998,6 @@ "integrity": "sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.45.0", "@typescript-eslint/types": "8.45.0", @@ -6576,7 +6561,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6671,7 +6655,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -6717,7 +6700,6 @@ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.39.0.tgz", "integrity": "sha512-DzTfhUxzg9QBNGzU/0kZkxEV72TeA4MmPJ7RVfLnQwHNhhliPo7ynglEWJS791rNlLFoTyrKvkapwr/P3EXV9A==", "license": "MIT", - "peer": true, "dependencies": { "@algolia/abtesting": "1.5.0", "@algolia/client-abtesting": "5.39.0", @@ -7407,7 +7389,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.9", "caniuse-lite": "^1.0.30001746", @@ -8257,7 +8238,6 @@ "integrity": "sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==", "hasInstallScript": true, "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -8473,7 +8453,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -9917,7 +9896,6 @@ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -10934,7 +10912,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -13378,7 +13355,6 @@ "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 10.16.0" } @@ -16178,7 +16154,6 @@ "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.15.0.tgz", "integrity": "sha512-UczzB+0nnwGotYSgllfARAqWCJ5e/skuV2K/l+Zyck/H6pJIhLXuBnz+6vn2i211o7DtbE78HQtsYEKICHGI+g==", "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/mobx" @@ -16489,7 +16464,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -17373,7 +17347,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -18289,7 +18262,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -19169,7 +19141,6 @@ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -19252,7 +19223,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -19262,7 +19232,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -19327,7 +19296,6 @@ "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", "license": "MIT", - "peer": true, "dependencies": { "prop-types": "^15.5.0" }, @@ -19356,7 +19324,6 @@ "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", @@ -20337,8 +20304,7 @@ "version": "2.17.3", "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/section-matter": { "version": "1.0.0", @@ -21430,7 +21396,6 @@ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.19.tgz", "integrity": "sha512-1v/e3Dl1BknC37cXMhwGomhO8AkYmN41CqyX9xhUDxry1ns3BFQy2lLDRQXJRdVVWB9OHemv/53xaStimvWyuA==", "license": "MIT", - "peer": true, "dependencies": { "@emotion/is-prop-valid": "1.2.2", "@emotion/unitless": "0.8.1", @@ -21930,8 +21895,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", @@ -22089,7 +22053,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -22491,7 +22454,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -22730,7 +22692,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.0.tgz", "integrity": "sha512-hUtqAR3ZLVEYDEABdBioQCIqSoguHbFn1K7WlPPWSuXmx0031BD73PSE35jKyftdSh4YLDoQNgK4pqBt5Q82MA==", "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -23585,7 +23546,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.11.tgz", "integrity": "sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" }