diff --git a/.github/scripts/dependency-inspector.js b/.github/scripts/dependency-inspector.js index a1d2b5ed6ab..40a40199cc0 100755 --- a/.github/scripts/dependency-inspector.js +++ b/.github/scripts/dependency-inspector.js @@ -484,16 +484,6 @@ With a severity flag, shows all packages with that update type. displayResults(results) { console.log('\nšŸŽÆ DEPENDENCY ANALYSIS RESULTS\n'); - // Summary - console.log('šŸ“ˆ SUMMARY:'); - console.log(` Total dependencies: ${this.directDeps.size}`); - console.log(` Total outdated: ${results.stats.total}`); - console.log(` Major updates: ${results.stats.major}`); - console.log(` Minor updates: ${results.stats.minor}`); - console.log(` Patch updates: ${results.stats.patch}`); - console.log(` Direct deps: ${results.direct.length}`); - console.log(` Transitive deps: ${results.transitive.length}\n`); - // If filtering by severity, show filtered results if (this.filterSeverity) { this.displayFilteredResults(results); @@ -595,6 +585,82 @@ With a severity flag, shows all packages with that update type. } console.log(''); } + + const generatedAt = new Date().toISOString(); + const latestCommit = this.getLatestCommitRef(); + + // Summary at the end + console.log('šŸ“ˆ SUMMARY:'); + console.log(` Generated at: ${generatedAt}`); + console.log(` Latest commit: ${latestCommit}`); + console.log(` Total dependencies: ${this.directDeps.size}`); + console.log(` Total outdated: ${results.stats.total}`); + console.log(` Major updates: ${results.stats.major}`); + console.log(` Minor updates: ${results.stats.minor}`); + console.log(` Patch updates: ${results.stats.patch}`); + console.log(` Direct deps: ${results.direct.length}`); + console.log(` Transitive deps: ${results.transitive.length}\n`); + } + + /** + * Get the latest commit reference for the current checkout + */ + getLatestCommitRef() { + try { + return execSync("git log -1 --format='%h %ad %s' --date=iso-strict", { + encoding: 'utf8' + }).trim(); + } catch (error) { + return 'Unavailable'; + } + } + + /** + * Run yarn audit and display a vulnerability summary + */ + displayAuditSummary() { + console.log('šŸ”’ SECURITY AUDIT:\n'); + + try { + let stdout = ''; + try { + stdout = execSync('yarn audit --json 2>/dev/null', { + encoding: 'utf8', + maxBuffer: 10 * 1024 * 1024 + }); + } catch (error) { + // yarn audit exits with non-zero when vulnerabilities are found + stdout = error.stdout || ''; + } + + // Find the auditSummary line + const lines = stdout.trim().split('\n'); + for (const line of lines) { + try { + const data = JSON.parse(line); + if (data.type === 'auditSummary' && data.data && data.data.vulnerabilities) { + const v = data.data.vulnerabilities; + const total = v.info + v.low + v.moderate + v.high + v.critical; + console.log(` Total vulnerabilities: ${total}`); + console.log(` šŸ”“ Critical: ${v.critical}`); + console.log(` 🟠 High: ${v.high}`); + console.log(` 🟔 Moderate: ${v.moderate}`); + console.log(` 🟢 Low: ${v.low}`); + if (v.info > 0) { + console.log(` ā„¹ļø Info: ${v.info}`); + } + console.log(` Total dependencies scanned: ${data.data.totalDependencies}\n`); + return; + } + } catch (e) { + // Skip non-JSON lines + } + } + + console.log(' āš ļø Could not parse audit summary\n'); + } catch (error) { + console.log(` āš ļø Audit failed: ${error.message}\n`); + } } async run() { @@ -615,6 +681,7 @@ With a severity flag, shows all packages with that update type. const results = this.processOutdatedPackages(outdatedData); this.displayResults(results); + this.displayAuditSummary(); } catch (error) { console.error('āŒ Error:', error.message); diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b7d946d163..2fcf7c061b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -738,11 +738,6 @@ jobs: image: tinybirdco/tinybird-local:latest ports: - 7181:7181 - env: - TINYBIRD_HOST: ${{ secrets.TINYBIRD_HOST }} - TINYBIRD_TOKEN: ${{ secrets.TINYBIRD_TOKEN }} - TINYBIRD_HOST_STAGING: ${{ secrets.TINYBIRD_HOST_STAGING }} - TINYBIRD_TOKEN_STAGING: ${{ secrets.TINYBIRD_TOKEN_STAGING }} steps: - uses: actions/checkout@v6 - name: Install Tinybird CLI @@ -751,10 +746,43 @@ jobs: run: tb build - name: Test project run: tb test run - - name: Deployment check - Staging - run: tb --cloud --host ${{ env.TINYBIRD_HOST_STAGING }} --token ${{ env.TINYBIRD_TOKEN_STAGING }} deploy --check - - name: Deployment check - Production - run: tb --cloud --host ${{ env.TINYBIRD_HOST }} --token ${{ env.TINYBIRD_TOKEN }} deploy --check + - name: Trigger and watch traffic analytics infra Tinybird workflow + if: github.repository == 'TryGhost/Ghost' + env: + GH_TOKEN: ${{ secrets.TRAFFIC_ANALYTICS_GITHUB_TOKEN }} + run: | + set -euo pipefail + + REPO="TryGhost/traffic-analytics-infra" + WORKFLOW="tinybird.yml" + BRANCH="main" + DISPATCH_RESPONSE=$(gh api \ + --method POST \ + -H "Accept: application/vnd.github+json" \ + "repos/$REPO/actions/workflows/$WORKFLOW/dispatches" \ + --input - <
- + onPurchase(e, product)} + disabled={isDisabled} + isRunning={isPurchasing} + brandColor={brandColor} + style={{width: '100%'}} + />
@@ -132,10 +134,11 @@ function GiftPriceSwitch({selectedInterval, setSelectedInterval, products}) { } const GiftPage = () => { - const {site, member} = useContext(AppContext); + const {site, member, brandColor, action, doAction} = useContext(AppContext); const [email, setEmail] = useState(member?.email || ''); const [emailError, setEmailError] = useState(''); const [selectedInterval, setSelectedInterval] = useState(null); + const [selectedProduct, setSelectedProduct] = useState(null); if (!site) { return ; @@ -176,7 +179,8 @@ const GiftPage = () => { const siteIcon = site.icon; const siteTitle = site.title || ''; - const disabled = isCookiesDisabled(); + const isPurchasing = action === 'checkoutGift:running'; + const isDisabled = isCookiesDisabled() || isPurchasing; const emailField = [{ type: 'email', @@ -190,7 +194,7 @@ const GiftPage = () => { errorMessage: emailError }]; - const handlePurchase = (e) => { + const handlePurchase = (e, product) => { e.preventDefault(); const errors = ValidateInputForm({fields: emailField}); @@ -201,7 +205,13 @@ const GiftPage = () => { } setEmailError(''); - // TODO: implement gift checkout using priceId and email + setSelectedProduct(product.id); + + doAction('checkoutGift', { + tierId: product.id, + cadence: activeInterval, + email + }); }; return ( @@ -243,10 +253,12 @@ const GiftPage = () => { {products.map(product => ( ))} diff --git a/apps/portal/src/utils/api.js b/apps/portal/src/utils/api.js index 2c57f01e47e..2890c78bbac 100644 --- a/apps/portal/src/utils/api.js +++ b/apps/portal/src/utils/api.js @@ -509,6 +509,60 @@ function setupGhostApi({siteUrl = window.location.origin, apiUrl, apiKey}) { }); }, + async checkoutGift({tierId, cadence, email: customerEmail} = {}) { + const url = endpointFor({type: 'members', resource: 'create-stripe-checkout-session'}); + + let identity = null; + try { + identity = await api.member.identity(); + } catch (e) { + // Not authenticated - that's fine for gift purchases + } + + const body = { + identity, + metadata: { + requestSrc: 'portal' + }, + type: 'gift', + tierId, + cadence, + customerEmail + }; + + const response = await makeRequest({ + url, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(body) + }); + + let responseJson = {}; + try { + responseJson = await response.json(); + } catch (e) { + // response may not be JSON (e.g. HTML error page from proxy) + } + + if (!response.ok) { + const error = responseJson?.errors?.[0]; + + if (error) { + throw error; + } + + throw new Error('Failed to process gift checkout, please try again.'); + } + + if (responseJson.url) { + return window.location.assign(responseJson.url); + } + + throw new Error('Failed to process gift checkout, please try again.'); + }, + async checkoutDonation({successUrl, cancelUrl, metadata = {}, personalNote = ''} = {}) { const identity = await api.member.identity(); const url = endpointFor({type: 'members', resource: 'create-stripe-checkout-session'}); diff --git a/apps/portal/test/actions.test.ts b/apps/portal/test/actions.test.ts index 3ea51468957..d246826f8a3 100644 --- a/apps/portal/test/actions.test.ts +++ b/apps/portal/test/actions.test.ts @@ -343,3 +343,47 @@ describe('verifyOTC action', () => { }); }); }); + +describe('checkoutGift action', () => { + test('calls api.member.checkoutGift with correct data', async () => { + const mockApi = { + member: { + checkoutGift: vi.fn(() => Promise.resolve()) + } + }; + + const result = await ActionHandler({ + action: 'checkoutGift', + data: {tierId: 'tier_123', cadence: 'month', email: 'buyer@example.com'}, + state: {}, + api: mockApi + }); + + expect(mockApi.member.checkoutGift).toHaveBeenCalledWith({ + tierId: 'tier_123', + cadence: 'month', + email: 'buyer@example.com' + }); + expect(result.action).toBe('checkoutGift:success'); + }); + + test('returns failed action with notification on error', async () => { + const mockApi = { + member: { + checkoutGift: vi.fn(() => Promise.reject(new Error('Stripe error'))) + } + }; + + const result = await ActionHandler({ + action: 'checkoutGift', + data: {tierId: 'tier_123', cadence: 'month', email: 'buyer@example.com'}, + state: {}, + api: mockApi + }); + + expect(result.action).toBe('checkoutGift:failed'); + expect(result.popupNotification).toBeDefined(); + expect(result.popupNotification.type).toBe('checkoutGift:failed'); + expect(result.popupNotification.status).toBe('error'); + }); +}); diff --git a/apps/posts/package.json b/apps/posts/package.json index 3de54d5c3ae..6faf94ed733 100644 --- a/apps/posts/package.json +++ b/apps/posts/package.json @@ -33,9 +33,9 @@ "@tanstack/react-virtual": "3.13.23", "@testing-library/react": "14.3.1", "@types/jest": "29.5.14", - "@types/react": "18.3.26", + "@types/react": "18.3.28", "msw": "2.11.5", - "vite": "5.4.20", + "vite": "5.4.21", "vitest": "1.6.1" }, "dependencies": { diff --git a/apps/shade/package.json b/apps/shade/package.json index 9651845cb1b..e7e33a937fc 100644 --- a/apps/shade/package.json +++ b/apps/shade/package.json @@ -82,7 +82,7 @@ "@testing-library/react": "14.3.1", "@testing-library/react-hooks": "8.0.1", "@types/lodash-es": "4.17.12", - "@types/node": "22.18.10", + "@types/node": "22.19.16", "@types/react-world-flags": "1.6.0", "@vitejs/plugin-react": "4.7.0", "c8": "10.1.3", @@ -100,7 +100,7 @@ "tailwindcss": "4.2.1", "tw-animate-css": "1.4.0", "typescript": "5.8.3", - "vite": "5.4.20", + "vite": "5.4.21", "vite-plugin-svgr": "3.3.0", "vitest": "1.6.1" }, @@ -142,7 +142,7 @@ "react-colorful": "5.6.1", "react-dom": "18.3.1", "react-dropzone": "14.2.3", - "react-hook-form": "7.65.0", + "react-hook-form": "7.72.1", "react-hot-toast": "2.6.0", "react-select": "5.10.2", "react-world-flags": "1.6.0", diff --git a/apps/signup-form/package.json b/apps/signup-form/package.json index 68bad68f90b..5dd095d5b8e 100644 --- a/apps/signup-form/package.json +++ b/apps/signup-form/package.json @@ -1,6 +1,6 @@ { "name": "@tryghost/signup-form", - "version": "0.3.9", + "version": "0.3.10", "license": "MIT", "repository": "https://github.com/TryGhost/Ghost", "author": "Ghost Foundation", @@ -46,7 +46,7 @@ "@storybook/testing-library": "0.2.2", "@tailwindcss/line-clamp": "0.4.4", "@tryghost/i18n": "0.0.0", - "@types/react": "18.3.26", + "@types/react": "18.3.28", "@types/react-dom": "18.3.7", "@vitejs/plugin-react": "4.7.0", "autoprefixer": "10.4.21", @@ -62,7 +62,7 @@ "storybook": "8.6.14", "stylelint": "15.11.0", "tailwindcss": "3.4.18", - "vite": "5.4.20", + "vite": "5.4.21", "vite-plugin-svgr": "3.3.0", "vitest": "1.6.1" } diff --git a/apps/sodo-search/package.json b/apps/sodo-search/package.json index f0438553af1..fa77de47d2d 100644 --- a/apps/sodo-search/package.json +++ b/apps/sodo-search/package.json @@ -1,6 +1,6 @@ { "name": "@tryghost/sodo-search", - "version": "1.8.7", + "version": "1.8.8", "license": "MIT", "repository": "https://github.com/TryGhost/Ghost", "author": "Ghost Foundation", @@ -99,7 +99,7 @@ "jsdom": "28.1.0", "nock": "13.5.6", "tailwindcss": "3.4.18", - "vite": "5.4.20", + "vite": "5.4.21", "vite-plugin-svgr": "3.3.0", "vitest": "1.6.1" } diff --git a/apps/stats/package.json b/apps/stats/package.json index 999703768ce..ed160af0d4d 100644 --- a/apps/stats/package.json +++ b/apps/stats/package.json @@ -39,12 +39,12 @@ "@testing-library/jest-dom": "5.17.0", "@testing-library/react": "14.3.1", "@types/jest": "29.5.14", - "@types/react": "18.3.26", + "@types/react": "18.3.28", "@types/react-svg-map": "2.1.4", "@vitejs/plugin-react": "4.7.0", "dotenv": "17.3.1", "msw": "2.11.5", - "vite": "5.4.20", + "vite": "5.4.21", "vite-plugin-svgr": "4.5.0", "vitest": "1.6.1" }, diff --git a/compose.dev.analytics.yaml b/compose.dev.analytics.yaml index cdd99bca4fa..3a9b7308803 100644 --- a/compose.dev.analytics.yaml +++ b/compose.dev.analytics.yaml @@ -5,7 +5,7 @@ services: analytics: - image: ghost/traffic-analytics:1.0.116 + image: ghost/traffic-analytics:1.0.172@sha256:14a736594128b06a0f7222d45e29ce284011f7346b17d2d5f0a7de9aa00cd11a container_name: ghost-dev-analytics platform: linux/amd64 command: ["node", "--enable-source-maps", "dist/server.js"] diff --git a/e2e/package.json b/e2e/package.json index bfd5bf5b30f..c30360d45d4 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -34,7 +34,7 @@ "@playwright/test": "1.58.2", "@tryghost/debug": "0.1.35", "@tryghost/logging": "2.4.23", - "@types/dockerode": "3.3.44", + "@types/dockerode": "3.3.47", "typescript-eslint": "8.58.0", "c8": "10.1.3", "dockerode": "4.0.9", diff --git a/ghost/admin/app/styles/layouts/editor.css b/ghost/admin/app/styles/layouts/editor.css index f5db7ba70b5..966bbbd8cc2 100644 --- a/ghost/admin/app/styles/layouts/editor.css +++ b/ghost/admin/app/styles/layouts/editor.css @@ -1022,7 +1022,6 @@ body[data-user-is-dragging] .gh-editor-feature-image-dropzone { line-height: 34px; background: var(--white); border-radius: var(--border-radius); - margin-left: 8px; } @media (max-width: 500px) { @@ -1078,6 +1077,7 @@ body[data-user-is-dragging] .gh-editor-feature-image-dropzone { .gh-editor-publish-buttons { display: flex; align-items: center; + gap: 8px; height: 100%; pointer-events: auto; } @@ -1098,15 +1098,7 @@ body[data-user-is-dragging] .gh-editor-feature-image-dropzone { border-radius: var(--border-radius); } -.gh-editor-save-trigger { - margin-right: 8px; -} -@media (max-width: 500px) { - .gh-editor-save-trigger { - margin-right: 0; - } -} .gh-editor-preview-trigger { height: 34px; diff --git a/ghost/admin/app/templates/lexical-editor.hbs b/ghost/admin/app/templates/lexical-editor.hbs index 5f85a02edc3..fc6dc8be825 100644 --- a/ghost/admin/app/templates/lexical-editor.hbs +++ b/ghost/admin/app/templates/lexical-editor.hbs @@ -16,7 +16,7 @@ @saveTask={{this.saveTask}} as |publishManagement| > -
+
{{#if this.ui.isFullScreen}} {{#if this.fromAnalytics}} diff --git a/ghost/core/core/server/data/exporter/table-lists.js b/ghost/core/core/server/data/exporter/table-lists.js index cb79d54497a..00af696410a 100644 --- a/ghost/core/core/server/data/exporter/table-lists.js +++ b/ghost/core/core/server/data/exporter/table-lists.js @@ -57,7 +57,8 @@ const BACKUP_TABLES = [ 'recommendations', 'recommendation_click_events', 'recommendation_subscribe_events', - 'outbox' + 'outbox', + 'gifts' ]; // NOTE: exposing only tables which are going to be included in a "default" export file diff --git a/ghost/core/core/server/data/migrations/versions/6.27/2026-04-06-07-48-06-add-gifts-table.js b/ghost/core/core/server/data/migrations/versions/6.27/2026-04-06-07-48-06-add-gifts-table.js new file mode 100644 index 00000000000..53d3cde5c37 --- /dev/null +++ b/ghost/core/core/server/data/migrations/versions/6.27/2026-04-06-07-48-06-add-gifts-table.js @@ -0,0 +1,31 @@ +const {addTable} = require('../../utils'); + +module.exports = addTable('gifts', { + id: {type: 'string', maxlength: 24, nullable: false, primary: true}, + token: {type: 'string', maxlength: 48, nullable: false, unique: true}, + + buyer_email: {type: 'string', maxlength: 191, nullable: false}, + buyer_member_id: {type: 'string', maxlength: 24, nullable: true, unique: false, references: 'members.id', setNullDelete: true}, + + redeemer_member_id: {type: 'string', maxlength: 24, nullable: true, unique: false, references: 'members.id', setNullDelete: true}, + + tier_id: {type: 'string', maxlength: 24, nullable: false, unique: false, references: 'products.id'}, + cadence: {type: 'string', maxlength: 50, nullable: false}, + duration: {type: 'integer', nullable: false, unsigned: true}, + + currency: {type: 'string', maxlength: 50, nullable: false}, + amount: {type: 'integer', nullable: false, unsigned: true}, + + stripe_checkout_session_id: {type: 'string', maxlength: 255, nullable: false, unique: true}, + stripe_payment_intent_id: {type: 'string', maxlength: 255, nullable: false, unique: true}, + + consumes_at: {type: 'dateTime', nullable: true}, + expires_at: {type: 'dateTime', nullable: true}, + + status: {type: 'string', maxlength: 50, nullable: false}, + purchased_at: {type: 'dateTime', nullable: false}, + redeemed_at: {type: 'dateTime', nullable: true}, + consumed_at: {type: 'dateTime', nullable: true}, + expired_at: {type: 'dateTime', nullable: true}, + refunded_at: {type: 'dateTime', nullable: true} +}); diff --git a/ghost/core/core/server/data/schema/schema.js b/ghost/core/core/server/data/schema/schema.js index 8fd74f64ca0..aa88739d5e8 100644 --- a/ghost/core/core/server/data/schema/schema.js +++ b/ghost/core/core/server/data/schema/schema.js @@ -1194,5 +1194,42 @@ module.exports = { member_name: {type: 'string', maxlength: 191, nullable: true}, created_at: {type: 'dateTime', nullable: false}, updated_at: {type: 'dateTime', nullable: true} + }, + gifts: { + id: {type: 'string', maxlength: 24, nullable: false, primary: true}, + token: {type: 'string', maxlength: 48, nullable: false, unique: true}, + + buyer_email: {type: 'string', maxlength: 191, nullable: false, validations: {isEmail: true}}, + buyer_member_id: {type: 'string', maxlength: 24, nullable: true, unique: false, references: 'members.id', setNullDelete: true}, + + redeemer_member_id: {type: 'string', maxlength: 24, nullable: true, unique: false, references: 'members.id', setNullDelete: true}, + + tier_id: {type: 'string', maxlength: 24, nullable: false, unique: false, references: 'products.id'}, + cadence: { + type: 'string', maxlength: 50, nullable: false, validations: { + isIn: [['month', 'year']] + } + }, + duration: {type: 'integer', nullable: false, unsigned: true}, + + currency: {type: 'string', maxlength: 50, nullable: false}, + amount: {type: 'integer', nullable: false, unsigned: true}, + + stripe_checkout_session_id: {type: 'string', maxlength: 255, nullable: false, unique: true}, + stripe_payment_intent_id: {type: 'string', maxlength: 255, nullable: false, unique: true}, + + consumes_at: {type: 'dateTime', nullable: true}, + expires_at: {type: 'dateTime', nullable: true}, + + status: { + type: 'string', maxlength: 50, nullable: false, validations: { + isIn: [['purchased', 'redeemed', 'consumed', 'expired', 'refunded']] + } + }, + purchased_at: {type: 'dateTime', nullable: false}, + redeemed_at: {type: 'dateTime', nullable: true}, + consumed_at: {type: 'dateTime', nullable: true}, + expired_at: {type: 'dateTime', nullable: true}, + refunded_at: {type: 'dateTime', nullable: true} } }; diff --git a/ghost/core/core/server/data/tinybird/tests/api_kpis.yaml b/ghost/core/core/server/data/tinybird/tests/api_kpis.yaml index 7bfefd0655a..73a3a02443f 100644 --- a/ghost/core/core/server/data/tinybird/tests/api_kpis.yaml +++ b/ghost/core/core/server/data/tinybird/tests/api_kpis.yaml @@ -1,4 +1,5 @@ + - name: Date range description: All fixture data parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07 diff --git a/ghost/core/core/server/services/members/members-api/controllers/router-controller.js b/ghost/core/core/server/services/members/members-api/controllers/router-controller.js index b4c183885d2..f08543d9138 100644 --- a/ghost/core/core/server/services/members/members-api/controllers/router-controller.js +++ b/ghost/core/core/server/services/members/members-api/controllers/router-controller.js @@ -29,6 +29,7 @@ const messages = { memberNotFound: 'No member exists with this e-mail address.', invalidType: 'Invalid checkout type.', notConfigured: 'This site is not accepting payments at the moment.', + giftSubscriptionsNotEnabled: 'Gift subscriptions are not enabled on this site.', invalidNewsletters: 'Cannot subscribe to invalid newsletters {newsletters}', archivedNewsletters: 'Cannot subscribe to archived newsletters {newsletters}', otcNotSupported: 'OTC verification not supported.', @@ -598,6 +599,39 @@ module.exports = class RouterController { } } + /** + * @param {object} options + * @param {object} options.tier + * @param {'month'|'year'} options.cadence + * @param {string} options.email + * @param {string} options.successUrl + * @param {string} options.cancelUrl + * @param {object} options.metadata + * @param {object} [options.member] + * @param {boolean} options.isAuthenticated + * @returns + */ + async _createGiftCheckoutSession(options) { + if (!this._paymentsService.stripeAPIService.configured) { + throw new DisabledFeatureError({ + message: tpl(messages.notConfigured) + }); + } + + try { + const paymentLink = await this._paymentsService.getGiftPaymentLink(options); + + return {url: paymentLink}; + } catch (err) { + logging.error(err); + this._sentry?.captureException?.(err); + throw new BadRequestError({ + err, + message: tpl(messages.unableToCheckout) + }); + } + } + async createCheckoutSession(req, res) { const type = req.body.type ?? 'subscription'; const metadata = req.body.metadata ?? {}; @@ -605,7 +639,7 @@ module.exports = class RouterController { const membersEnabled = true; // Check this checkout type is supported - if (typeof type !== 'string' || !['subscription', 'donation'].includes(type)) { + if (typeof type !== 'string' || !['subscription', 'donation', 'gift'].includes(type)) { throw new BadRequestError({ message: tpl(messages.invalidType) }); @@ -682,6 +716,42 @@ module.exports = class RouterController { } else if (type === 'donation') { options.personalNote = parsePersonalNote(req.body.personalNote); response = await this._createDonationCheckoutSession(options); + } else if (type === 'gift') { + if (!this.labsService.isSet('giftSubscriptions')) { + throw new BadRequestError({ + message: tpl(messages.giftSubscriptionsNotEnabled) + }); + } + + if (!membersEnabled) { + throw new BadRequestError({ + message: tpl(messages.badRequest) + }); + } + + if (typeof req.body.customerEmail !== 'string' || !isEmail(req.body.customerEmail)) { + throw new BadRequestError({ + message: tpl(messages.badRequest), + context: 'A valid email address is required to purchase a gift subscription' + }); + } + + if (req.body.offerId) { + throw new BadRequestError({ + message: tpl(messages.badRequest), + context: 'Offers cannot be applied to gift subscriptions' + }); + } + + const data = await this._getSubscriptionCheckoutData(req.body); + + response = await this._createGiftCheckoutSession({ + ...options, + ...data, + duration: 1, // gifts are currently 1 month or 1 year only + successUrl: this._urlUtils.getSiteUrl(), + cancelUrl: this._urlUtils.getSiteUrl() + }); } res.writeHead(200, { diff --git a/ghost/core/core/server/services/members/members-api/services/payments-service.js b/ghost/core/core/server/services/members/members-api/services/payments-service.js index 6920cd3422b..96bbd30b866 100644 --- a/ghost/core/core/server/services/members/members-api/services/payments-service.js +++ b/ghost/core/core/server/services/members/members-api/services/payments-service.js @@ -1,3 +1,4 @@ +const crypto = require('node:crypto'); const logging = require('@tryghost/logging'); const DomainEvents = require('@tryghost/domain-events'); const TierCreatedEvent = require('../../../tiers/tier-created-event'); @@ -150,6 +151,61 @@ class PaymentsService { return session.url; } + /** + * @param {object} params + * @param {import('../../../tiers/tier')} params.tier + * @param {'month'|'year'} params.cadence + * @param {number} params.duration + * @param {string} params.email + * @param {string} params.successUrl + * @param {string} params.cancelUrl + * @param {object} params.metadata + * @param {object} [params.member] + * @param {boolean} params.isAuthenticated + * + * @returns {Promise} + */ + async getGiftPaymentLink({tier, cadence, duration, email, metadata, successUrl, cancelUrl, member, isAuthenticated}) { + let customer = null; + if (member && isAuthenticated) { + customer = await this.getCustomerForMember(member); + } + + const amount = tier.getPrice(cadence); + const currency = tier.currency.toLowerCase(); + + const token = crypto.randomUUID(); + + const successUrlObj = new URL(successUrl); + successUrlObj.searchParams.set('stripe', 'gift-purchase-success'); + successUrlObj.searchParams.set('gift_token', token); + + const data = { + amount, + currency, + tierName: tier.name, + cadence, + duration, + metadata: { + ...metadata, + ghost_gift: 'true', + gift_token: token, + tier_id: tier.id.toHexString(), + cadence, + duration: String(duration), + purchaser_email: email + }, + successUrl: successUrlObj.toString(), + cancelUrl, + customer, + customerEmail: !customer ? email : null + }; + + const session = await this.stripeAPIService.createGiftCheckoutSession(data); + + return session.url; + } + async getCustomerForMember(member) { const rows = await this.StripeCustomerModel.where({ member_id: member.id diff --git a/ghost/core/core/server/services/stripe/stripe-api.js b/ghost/core/core/server/services/stripe/stripe-api.js index 98443c0cecf..a2f99b0ced9 100644 --- a/ghost/core/core/server/services/stripe/stripe-api.js +++ b/ghost/core/core/server/services/stripe/stripe-api.js @@ -682,6 +682,61 @@ module.exports = class StripeAPI { return session; } + /** + * Create a new Stripe Checkout Session for a gift subscription. + * + * @param {object} options + * @param {number} options.amount + * @param {string} options.currency + * @param {string} options.tierName + * @param {'month'|'year'} options.cadence + * @param {number} options.duration + * @param {object} options.metadata + * @param {string} options.successUrl + * @param {string} options.cancelUrl + * @param {ICustomer|null} options.customer + * @param {string|null} options.customerEmail + * + * @returns {Promise} + */ + async createGiftCheckoutSession({amount, currency, tierName, cadence, duration, metadata, successUrl, cancelUrl, customer, customerEmail}) { + await this._rateLimitBucket.throttle(); + + const cadenceLabel = duration === 1 ? `1 ${cadence}` : `${duration} ${cadence}s`; + + const stripeSessionOptions = { + mode: 'payment', + success_url: successUrl, + cancel_url: cancelUrl, + automatic_tax: { + enabled: this._config.enableAutomaticTax + }, + metadata, + customer: customer ? customer.id : undefined, + customer_email: !customer && customerEmail ? customerEmail : undefined, + submit_type: 'pay', + line_items: [{ + price_data: { + currency, + unit_amount: amount, + product_data: { + name: `Gift Subscription - ${tierName} (${cadenceLabel})` + } + }, + quantity: 1 + }] + }; + + if (customer && this._config.enableAutomaticTax) { + stripeSessionOptions.customer_update = {address: 'auto'}; + } + + // @ts-ignore + const session = await this._stripe.checkout.sessions.create(stripeSessionOptions); + + return session; + } + /** * Create a new Stripe Checkout Setup Session. * diff --git a/ghost/core/package.json b/ghost/core/package.json index 4ddbad9822c..e295295163d 100644 --- a/ghost/core/package.json +++ b/ghost/core/package.json @@ -67,7 +67,7 @@ "cli": "^1.27.0" }, "dependencies": { - "@aws-sdk/client-s3": "3.864.0", + "@aws-sdk/client-s3": "3.1023.0", "@extractus/oembed-extractor": "3.2.1", "@faker-js/faker": "7.6.0", "@isaacs/ttlcache": "1.4.1", @@ -234,9 +234,9 @@ "@types/common-tags": "1.8.4", "@types/jsonwebtoken": "9.0.10", "@types/mime-types": "3.0.1", - "@types/node": "22.18.10", + "@types/node": "22.19.16", "@types/node-jose": "1.1.13", - "@types/nodemailer": "6.4.20", + "@types/nodemailer": "6.4.23", "@types/sinon": "17.0.4", "@types/supertest": "6.0.3", "c8": "10.1.3", diff --git a/ghost/core/test/integration/exporter/exporter.test.js b/ghost/core/test/integration/exporter/exporter.test.js index a467f575be1..da134343d0c 100644 --- a/ghost/core/test/integration/exporter/exporter.test.js +++ b/ghost/core/test/integration/exporter/exporter.test.js @@ -42,6 +42,7 @@ describe('Exporter', function () { 'email_recipients', 'email_spam_complaint_events', 'emails', + 'gifts', 'integrations', 'invites', 'jobs', @@ -133,7 +134,8 @@ describe('Exporter', function () { 'members_status_events', 'members_paid_subscription_events', 'members_subscribe_events', - 'outbox' + 'outbox', + 'gifts' ]; excludedTables.forEach((tableName) => { diff --git a/ghost/core/test/unit/server/data/schema/integrity.test.js b/ghost/core/test/unit/server/data/schema/integrity.test.js index d0a091098f7..9c4d3488ae9 100644 --- a/ghost/core/test/unit/server/data/schema/integrity.test.js +++ b/ghost/core/test/unit/server/data/schema/integrity.test.js @@ -35,7 +35,7 @@ const validateRouteSettings = require('../../../../../core/server/services/route */ describe('DB version integrity', function () { // Only these variables should need updating - const currentSchemaHash = '3371efe39a471bf7c67cf23c29790c8b'; + const currentSchemaHash = '6c63467aae47d05d9a67e695905f08d4'; const currentFixturesHash = '2f86ab1e3820e86465f9ad738dd0ee93'; const currentSettingsHash = 'a102b80d2ab0cd92325ed007c94d7da6'; const currentRoutesHash = '3d180d52c663d173a6be791ef411ed01'; diff --git a/ghost/core/test/unit/server/data/seeders/data-generator.test.js b/ghost/core/test/unit/server/data/seeders/data-generator.test.js index 7c853863e9a..6f85fe1fbba 100644 --- a/ghost/core/test/unit/server/data/seeders/data-generator.test.js +++ b/ghost/core/test/unit/server/data/seeders/data-generator.test.js @@ -1,5 +1,4 @@ const assert = require('node:assert/strict'); -const {spawnSync} = require('node:child_process'); const knex = require('knex').default; @@ -256,20 +255,18 @@ describe('Importer', function () { describe('Events Generator', function () { it('Parses database timestamps as UTC in non-UTC timezones', function () { - const script = ` - const dateToDatabaseString = require(${JSON.stringify(require.resolve('../../../../../core/server/data/seeders/utils/database-date'))}); - process.stdout.write(dateToDatabaseString.parse('2026-03-26 11:50:00.000').toISOString()); - `; - const result = spawnSync(process.execPath, ['-e', script], { - env: { - ...process.env, - TZ: 'America/New_York' - }, - encoding: 'utf8' - }); - - assert.equal(result.status, 0); - assert.equal(result.stdout, '2026-03-26T11:50:00.000Z'); + const originalTZ = process.env.TZ; + try { + process.env.TZ = 'America/New_York'; + const result = dateToDatabaseString.parse('2026-03-26 11:50:00.000'); + assert.equal(result.toISOString(), '2026-03-26T11:50:00.000Z'); + } finally { + if (originalTZ === undefined) { + delete process.env.TZ; + } else { + process.env.TZ = originalTZ; + } + } }); it('Returns the start date when a range is inverted', function () { diff --git a/ghost/core/test/unit/server/services/members/members-api/controllers/router-controller.test.js b/ghost/core/test/unit/server/services/members/members-api/controllers/router-controller.test.js index ccb200203cc..4fb04a999a5 100644 --- a/ghost/core/test/unit/server/services/members/members-api/controllers/router-controller.test.js +++ b/ghost/core/test/unit/server/services/members/members-api/controllers/router-controller.test.js @@ -681,6 +681,143 @@ describe('RouterController', function () { }); }); + describe('gift checkout', function () { + let getGiftLinkSpy; + + beforeEach(function () { + getGiftLinkSpy = sinon.stub().resolves('https://checkout.stripe.com/gift'); + paymentsService.getGiftPaymentLink = getGiftLinkSpy; + }); + + function createGiftController(overrides = {}) { + return new RouterController({ + tiersService, + paymentsService, + offersAPI, + stripeAPIService, + labsService, + settingsCache, + settingsHelpers, + memberRepository: {get: sinon.stub().resolves(null)}, + urlUtils: {getSiteUrl: sinon.stub().returns('https://example.com/')}, + memberAttributionService: {getAttribution: sinon.stub().resolves({})}, + emailAddressService, + ...overrides + }); + } + + const mockRes = {writeHead: () => {}, end: () => {}}; + + function paidTierService(price = 5000) { + return { + api: { + read: sinon.stub().resolves({ + id: {toHexString: () => 'tier_123'}, + status: 'active', + getPrice: sinon.stub().returns(price) + }) + } + }; + } + + it('calls getGiftPaymentLink with correct options', async function () { + const controller = createGiftController({tiersService: paidTierService()}); + + await controller.createCheckoutSession({ + body: {type: 'gift', tierId: 'tier_123', cadence: 'month', customerEmail: 'buyer@example.com', metadata: {}} + }, mockRes); + + sinon.assert.calledOnce(getGiftLinkSpy); + sinon.assert.calledWith(getGiftLinkSpy, sinon.match({ + successUrl: 'https://example.com/', + cancelUrl: 'https://example.com/', + email: 'buyer@example.com' + })); + }); + + it('rejects when giftSubscriptions labs flag is disabled', async function () { + labsService.isSet = sinon.stub().returns(false); + const controller = createGiftController(); + + try { + await controller.createCheckoutSession({ + body: {type: 'gift', tierId: 'tier_123', cadence: 'month', customerEmail: 'buyer@example.com', metadata: {}} + }, mockRes); + + assert.fail('Should have thrown'); + } catch (error) { + assert(error instanceof errors.BadRequestError); + } + }); + + it('rejects when customerEmail is not provided', async function () { + const controller = createGiftController({tiersService: paidTierService()}); + + try { + await controller.createCheckoutSession({ + body: {type: 'gift', tierId: 'tier_123', cadence: 'month', metadata: {}} + }, mockRes); + + assert.fail('Should have thrown'); + } catch (error) { + assert(error instanceof errors.BadRequestError); + assert.equal(error.context, 'A valid email address is required to purchase a gift subscription'); + } + }); + + it('rejects when customerEmail is invalid', async function () { + const controller = createGiftController({tiersService: paidTierService()}); + + try { + await controller.createCheckoutSession({ + body: {type: 'gift', tierId: 'tier_123', cadence: 'month', customerEmail: 'not-an-email', metadata: {}} + }, mockRes); + assert.fail('Should have thrown'); + } catch (error) { + assert(error instanceof errors.BadRequestError); + assert.equal(error.context, 'A valid email address is required to purchase a gift subscription'); + } + }); + + it('rejects when offerId is provided', async function () { + const controller = createGiftController(); + + try { + await controller.createCheckoutSession({ + body: {type: 'gift', offerId: 'offer_123', customerEmail: 'buyer@example.com', metadata: {}} + }, mockRes); + assert.fail('Should have thrown'); + } catch (error) { + assert(error instanceof errors.BadRequestError); + assert.equal(error.context, 'Offers cannot be applied to gift subscriptions'); + } + }); + + it('does not block paid members from purchasing gifts', async function () { + const controller = createGiftController({ + tiersService: paidTierService(), + tokenService: {decodeToken: sinon.stub().resolves({sub: 'member@example.com'})}, + memberRepository: { + get: sinon.stub().resolves({ + id: 'member_123', + get: sinon.stub().returns('paid'), + related: sinon.stub().returns({ + query: sinon.stub().returns({ + fetch: sinon.stub().resolves([]) + }) + }) + }) + } + }); + + await controller.createCheckoutSession({ + body: {type: 'gift', tierId: 'tier_123', cadence: 'month', customerEmail: 'buyer@example.com', identity: 'valid-token', metadata: {}} + }, mockRes); + + sinon.assert.calledOnce(getGiftLinkSpy); + }); + }); + it('adds welcomePageUrl to response for authenticated members when tier has welcomePageURL', async function () { const routerController = new RouterController({ tiersService: { diff --git a/ghost/core/test/unit/server/services/members/members-api/services/payments-service.test.js b/ghost/core/test/unit/server/services/members/members-api/services/payments-service.test.js index a47765312e1..d59f4ca51b8 100644 --- a/ghost/core/test/unit/server/services/members/members-api/services/payments-service.test.js +++ b/ghost/core/test/unit/server/services/members/members-api/services/payments-service.test.js @@ -300,4 +300,152 @@ describe('PaymentsService', function () { assert.equal(stripeAPIService.createCheckoutSession.getCall(0).args[2].trialDays, undefined); }); }); + + describe('getGiftPaymentLink', function () { + let createGiftCheckoutSessionStub; + let service; + + beforeEach(function () { + createGiftCheckoutSessionStub = sinon.fake.resolves({ + url: 'https://checkout.stripe.com/gift-session' + }); + service = new PaymentsService({ + stripeAPIService: {createGiftCheckoutSession: createGiftCheckoutSessionStub} + }); + }); + + async function createTier(overrides = {}) { + return Tier.create({ + name: 'Pro', + slug: 'pro', + currency: 'usd', + monthlyPrice: 1000, + yearlyPrice: 10000, + ...overrides + }); + } + + const defaultGiftOptions = { + successUrl: 'https://example.com/', + cancelUrl: 'https://example.com/', + email: 'buyer@example.com', + duration: 1, + metadata: {} + }; + + function getStripeArgs() { + return createGiftCheckoutSessionStub.firstCall.firstArg; + } + + it('generates a token and passes correct metadata to Stripe', async function () { + const tier = await createTier(); + + const url = await service.getGiftPaymentLink({ + ...defaultGiftOptions, + tier, + cadence: 'month', + metadata: {requestSrc: 'portal'} + }); + + assert.equal(url, 'https://checkout.stripe.com/gift-session'); + + sinon.assert.calledOnce(createGiftCheckoutSessionStub); + + const args = getStripeArgs(); + assert.equal(args.amount, 1000); + assert.equal(args.currency, 'usd'); + assert.equal(args.tierName, 'Pro'); + assert.equal(args.cadence, 'month'); + assert.equal(args.metadata.ghost_gift, 'true'); + assert.equal(args.metadata.tier_id, tier.id.toHexString()); + assert.equal(args.metadata.cadence, 'month'); + assert.equal(args.metadata.duration, '1'); + assert.equal(args.metadata.purchaser_email, 'buyer@example.com'); + assert.equal(args.metadata.requestSrc, 'portal'); + assert.match(args.metadata.gift_token, /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/); + }); + + it('appends gift token to success URL', async function () { + const tier = await createTier({monthlyPrice: 5000, yearlyPrice: 50000}); + + await service.getGiftPaymentLink({...defaultGiftOptions, tier, cadence: 'year'}); + + const args = getStripeArgs(); + const successUrl = new URL(args.successUrl); + + assert.equal(successUrl.searchParams.get('stripe'), 'gift-purchase-success'); + assert.equal(successUrl.searchParams.get('gift_token'), args.metadata.gift_token); + }); + + it('prevents caller metadata from overwriting gift-specific keys', async function () { + const tier = await createTier(); + + await service.getGiftPaymentLink({ + ...defaultGiftOptions, + tier, + cadence: 'month', + metadata: {ghost_gift: 'false', gift_token: 'malicious-token'} + }); + + const args = getStripeArgs(); + + assert.equal(args.metadata.ghost_gift, 'true'); + assert.notEqual(args.metadata.gift_token, 'malicious-token'); + }); + + it('looks up Stripe customer for authenticated members', async function () { + const mockCustomer = {id: 'cus_123', email: 'member@example.com'}; + sinon.stub(service, 'getCustomerForMember').resolves(mockCustomer); + + const tier = await createTier(); + const mockMember = {id: 'member_123', get: sinon.stub().returns('member@example.com')}; + + await service.getGiftPaymentLink({ + ...defaultGiftOptions, + tier, + cadence: 'month', + member: mockMember, + isAuthenticated: true + }); + + sinon.assert.calledOnce(service.getCustomerForMember); + sinon.assert.calledWith(service.getCustomerForMember, mockMember); + assert.equal(getStripeArgs().customer, mockCustomer); + assert.equal(getStripeArgs().customerEmail, null); + }); + + it('passes customerEmail when purchaser is not authenticated', async function () { + const tier = await createTier(); + + await service.getGiftPaymentLink({ + ...defaultGiftOptions, + tier, + cadence: 'month', + email: 'guest@example.com', + isAuthenticated: false + }); + + assert.equal(getStripeArgs().customer, null); + assert.equal(getStripeArgs().customerEmail, 'guest@example.com'); + }); + + it('does not set customerEmail when customer is present', async function () { + const mockCustomer = {id: 'cus_123', email: 'member@example.com'}; + sinon.stub(service, 'getCustomerForMember').resolves(mockCustomer); + + const tier = await createTier(); + + await service.getGiftPaymentLink({ + ...defaultGiftOptions, + tier, + cadence: 'month', + email: 'should-be-ignored@example.com', + member: {id: 'member_123', get: sinon.stub().returns('member@example.com')}, + isAuthenticated: true + }); + + assert.equal(getStripeArgs().customer, mockCustomer); + assert.equal(getStripeArgs().customerEmail, null); + }); + }); }); diff --git a/ghost/core/test/unit/server/services/stripe/stripe-api.test.js b/ghost/core/test/unit/server/services/stripe/stripe-api.test.js index a1da596fac2..a1c9947bd97 100644 --- a/ghost/core/test/unit/server/services/stripe/stripe-api.test.js +++ b/ghost/core/test/unit/server/services/stripe/stripe-api.test.js @@ -655,4 +655,227 @@ describe('StripeAPI', function () { assert(mockStripe.checkout.sessions.create.firstCall.firstArg.custom_fields.length <= 3); }); }); + + describe('createGiftCheckoutSession', function () { + beforeEach(function () { + mockStripe = { + checkout: { + sessions: { + create: sinon.stub().resolves({url: 'https://checkout.stripe.com/session'}) + } + } + }; + + sinon.stub(mockLabs, 'isSet'); + + const mockStripeConstructor = sinon.stub().returns(mockStripe); + + StripeAPI.__set__('Stripe', mockStripeConstructor); + + api.configure({ + checkoutSessionSuccessUrl: '/success', + checkoutSessionCancelUrl: '/cancel', + checkoutSetupSessionSuccessUrl: '/setup-success', + checkoutSetupSessionCancelUrl: '/setup-cancel', + secretKey: '' + }); + }); + + afterEach(function () { + sinon.restore(); + }); + + it('creates a session with mode payment and inline price_data', async function () { + await api.createGiftCheckoutSession({ + amount: 5000, + currency: 'usd', + tierName: 'Pro', + cadence: 'year', + duration: 1, + successUrl: '/gift-success', + cancelUrl: '/gift-cancel', + metadata: {ghost_gift: 'true', gift_token: 'abc-123'} + }); + + const args = mockStripe.checkout.sessions.create.firstCall.firstArg; + + assert.equal(args.mode, 'payment'); + assert.equal(args.submit_type, 'pay'); + assert.equal(args.success_url, '/gift-success'); + assert.equal(args.cancel_url, '/gift-cancel'); + assert.equal(args.line_items[0].quantity, 1); + assert.equal(args.line_items[0].price_data.unit_amount, 5000); + assert.equal(args.line_items[0].price_data.currency, 'usd'); + assert.equal(args.line_items[0].price_data.product_data.name, 'Gift Subscription - Pro (1 year)'); + }); + + it('uses 1 month label for monthly cadence', async function () { + await api.createGiftCheckoutSession({ + amount: 1000, + currency: 'usd', + tierName: 'Basic', + cadence: 'month', + duration: 1, + successUrl: '/gift-success', + cancelUrl: '/gift-cancel', + metadata: {} + }); + + const args = mockStripe.checkout.sessions.create.firstCall.firstArg; + + assert.equal(args.line_items[0].price_data.product_data.name, 'Gift Subscription - Basic (1 month)'); + }); + + it('pluralises cadence label when duration is greater than 1', async function () { + await api.createGiftCheckoutSession({ + amount: 3000, + currency: 'usd', + tierName: 'Pro', + cadence: 'month', + duration: 3, + successUrl: '/gift-success', + cancelUrl: '/gift-cancel', + metadata: {} + }); + + const args = mockStripe.checkout.sessions.create.firstCall.firstArg; + + assert.equal(args.line_items[0].price_data.product_data.name, 'Gift Subscription - Pro (3 months)'); + }); + + it('passes metadata through directly', async function () { + const metadata = { + ghost_gift: 'true', + gift_token: 'token-xyz', + tier_id: 'tier_123', + cadence: 'month', + purchaser_email: 'buyer@example.com' + }; + + await api.createGiftCheckoutSession({ + amount: 1000, + currency: 'usd', + tierName: 'Basic', + cadence: 'month', + duration: 1, + successUrl: '/gift-success', + cancelUrl: '/gift-cancel', + metadata + }); + + const args = mockStripe.checkout.sessions.create.firstCall.firstArg; + + assert.deepEqual(args.metadata, metadata); + }); + + it('passes customer ID when customer is provided', async function () { + await api.createGiftCheckoutSession({ + amount: 5000, + currency: 'usd', + tierName: 'Pro', + cadence: 'year', + duration: 1, + successUrl: '/gift-success', + cancelUrl: '/gift-cancel', + metadata: {}, + customer: {id: mockCustomerId} + }); + + const args = mockStripe.checkout.sessions.create.firstCall.firstArg; + + assert.equal(args.customer, mockCustomerId); + assert.equal(args.customer_email, undefined); + }); + + it('passes customer_email when no customer is provided', async function () { + await api.createGiftCheckoutSession({ + amount: 5000, + currency: 'usd', + tierName: 'Pro', + cadence: 'year', + duration: 1, + successUrl: '/gift-success', + cancelUrl: '/gift-cancel', + metadata: {}, + customerEmail: mockCustomerEmail + }); + + const args = mockStripe.checkout.sessions.create.firstCall.firstArg; + + assert.equal(args.customer, undefined); + assert.equal(args.customer_email, mockCustomerEmail); + }); + + it('does not include invoice_creation or custom_fields', async function () { + await api.createGiftCheckoutSession({ + amount: 5000, + currency: 'usd', + tierName: 'Pro', + cadence: 'year', + duration: 1, + successUrl: '/gift-success', + cancelUrl: '/gift-cancel', + metadata: {} + }); + + const args = mockStripe.checkout.sessions.create.firstCall.firstArg; + + assert.equal(args.invoice_creation, undefined); + assert.equal(args.custom_fields, undefined); + }); + + it('sets customer_update when customer and automatic tax are enabled', async function () { + api.configure({ + checkoutSessionSuccessUrl: '/success', + checkoutSessionCancelUrl: '/cancel', + checkoutSetupSessionSuccessUrl: '/setup-success', + checkoutSetupSessionCancelUrl: '/setup-cancel', + secretKey: '', + enableAutomaticTax: true + }); + + await api.createGiftCheckoutSession({ + amount: 5000, + currency: 'usd', + tierName: 'Pro', + cadence: 'year', + duration: 1, + successUrl: '/gift-success', + cancelUrl: '/gift-cancel', + metadata: {}, + customer: {id: mockCustomerId} + }); + + const args = mockStripe.checkout.sessions.create.firstCall.firstArg; + + assert.deepEqual(args.customer_update, {address: 'auto'}); + }); + + it('does not set customer_update without customer', async function () { + api.configure({ + checkoutSessionSuccessUrl: '/success', + checkoutSessionCancelUrl: '/cancel', + checkoutSetupSessionSuccessUrl: '/setup-success', + checkoutSetupSessionCancelUrl: '/setup-cancel', + secretKey: '', + enableAutomaticTax: true + }); + + await api.createGiftCheckoutSession({ + amount: 5000, + currency: 'usd', + tierName: 'Pro', + cadence: 'year', + duration: 1, + successUrl: '/gift-success', + cancelUrl: '/gift-cancel', + metadata: {}, + customerEmail: mockCustomerEmail + }); + + const args = mockStripe.checkout.sessions.create.firstCall.firstArg; + + assert.equal(args.customer_update, undefined); + }); + }); }); diff --git a/yarn.lock b/yarn.lock index df8cc11d595..15cf7ad2fdc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -163,71 +163,68 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" -"@aws-sdk/client-s3@3.864.0": - version "3.864.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.864.0.tgz#ffbcbf0ba861fad711261b4174da3be19b1c7d5f" - integrity sha512-QGYi9bWliewxumsvbJLLyx9WC0a4DP4F+utygBcq0zwPxaM0xDfBspQvP1dsepi7mW5aAjZmJ2+Xb7X0EhzJ/g== +"@aws-sdk/client-s3@3.1023.0": + version "3.1023.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.1023.0.tgz#2d23522b0635942d3653d0c290ed1fc7e7a7621a" + integrity sha512-IvNy49sdoCWd3fgHQxail3y0UQdfKj1Xk0VPu9HTwlog60o9Lmp5ykjZ2LlIuHEPaxq4Siih707GB/ulUWgetw== dependencies: "@aws-crypto/sha1-browser" "5.2.0" "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.864.0" - "@aws-sdk/credential-provider-node" "3.864.0" - "@aws-sdk/middleware-bucket-endpoint" "3.862.0" - "@aws-sdk/middleware-expect-continue" "3.862.0" - "@aws-sdk/middleware-flexible-checksums" "3.864.0" - "@aws-sdk/middleware-host-header" "3.862.0" - "@aws-sdk/middleware-location-constraint" "3.862.0" - "@aws-sdk/middleware-logger" "3.862.0" - "@aws-sdk/middleware-recursion-detection" "3.862.0" - "@aws-sdk/middleware-sdk-s3" "3.864.0" - "@aws-sdk/middleware-ssec" "3.862.0" - "@aws-sdk/middleware-user-agent" "3.864.0" - "@aws-sdk/region-config-resolver" "3.862.0" - "@aws-sdk/signature-v4-multi-region" "3.864.0" - "@aws-sdk/types" "3.862.0" - "@aws-sdk/util-endpoints" "3.862.0" - "@aws-sdk/util-user-agent-browser" "3.862.0" - "@aws-sdk/util-user-agent-node" "3.864.0" - "@aws-sdk/xml-builder" "3.862.0" - "@smithy/config-resolver" "^4.1.5" - "@smithy/core" "^3.8.0" - "@smithy/eventstream-serde-browser" "^4.0.5" - "@smithy/eventstream-serde-config-resolver" "^4.1.3" - "@smithy/eventstream-serde-node" "^4.0.5" - "@smithy/fetch-http-handler" "^5.1.1" - "@smithy/hash-blob-browser" "^4.0.5" - "@smithy/hash-node" "^4.0.5" - "@smithy/hash-stream-node" "^4.0.5" - "@smithy/invalid-dependency" "^4.0.5" - "@smithy/md5-js" "^4.0.5" - "@smithy/middleware-content-length" "^4.0.5" - "@smithy/middleware-endpoint" "^4.1.18" - "@smithy/middleware-retry" "^4.1.19" - "@smithy/middleware-serde" "^4.0.9" - "@smithy/middleware-stack" "^4.0.5" - "@smithy/node-config-provider" "^4.1.4" - "@smithy/node-http-handler" "^4.1.1" - "@smithy/protocol-http" "^5.1.3" - "@smithy/smithy-client" "^4.4.10" - "@smithy/types" "^4.3.2" - "@smithy/url-parser" "^4.0.5" - "@smithy/util-base64" "^4.0.0" - "@smithy/util-body-length-browser" "^4.0.0" - "@smithy/util-body-length-node" "^4.0.0" - "@smithy/util-defaults-mode-browser" "^4.0.26" - "@smithy/util-defaults-mode-node" "^4.0.26" - "@smithy/util-endpoints" "^3.0.7" - "@smithy/util-middleware" "^4.0.5" - "@smithy/util-retry" "^4.0.7" - "@smithy/util-stream" "^4.2.4" - "@smithy/util-utf8" "^4.0.0" - "@smithy/util-waiter" "^4.0.7" - "@types/uuid" "^9.0.1" + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/credential-provider-node" "^3.972.29" + "@aws-sdk/middleware-bucket-endpoint" "^3.972.8" + "@aws-sdk/middleware-expect-continue" "^3.972.8" + "@aws-sdk/middleware-flexible-checksums" "^3.974.6" + "@aws-sdk/middleware-host-header" "^3.972.8" + "@aws-sdk/middleware-location-constraint" "^3.972.8" + "@aws-sdk/middleware-logger" "^3.972.8" + "@aws-sdk/middleware-recursion-detection" "^3.972.9" + "@aws-sdk/middleware-sdk-s3" "^3.972.27" + "@aws-sdk/middleware-ssec" "^3.972.8" + "@aws-sdk/middleware-user-agent" "^3.972.28" + "@aws-sdk/region-config-resolver" "^3.972.10" + "@aws-sdk/signature-v4-multi-region" "^3.996.15" + "@aws-sdk/types" "^3.973.6" + "@aws-sdk/util-endpoints" "^3.996.5" + "@aws-sdk/util-user-agent-browser" "^3.972.8" + "@aws-sdk/util-user-agent-node" "^3.973.14" + "@smithy/config-resolver" "^4.4.13" + "@smithy/core" "^3.23.13" + "@smithy/eventstream-serde-browser" "^4.2.12" + "@smithy/eventstream-serde-config-resolver" "^4.3.12" + "@smithy/eventstream-serde-node" "^4.2.12" + "@smithy/fetch-http-handler" "^5.3.15" + "@smithy/hash-blob-browser" "^4.2.13" + "@smithy/hash-node" "^4.2.12" + "@smithy/hash-stream-node" "^4.2.12" + "@smithy/invalid-dependency" "^4.2.12" + "@smithy/md5-js" "^4.2.12" + "@smithy/middleware-content-length" "^4.2.12" + "@smithy/middleware-endpoint" "^4.4.28" + "@smithy/middleware-retry" "^4.4.46" + "@smithy/middleware-serde" "^4.2.16" + "@smithy/middleware-stack" "^4.2.12" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/node-http-handler" "^4.5.1" + "@smithy/protocol-http" "^5.3.12" + "@smithy/smithy-client" "^4.12.8" + "@smithy/types" "^4.13.1" + "@smithy/url-parser" "^4.2.12" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.44" + "@smithy/util-defaults-mode-node" "^4.2.48" + "@smithy/util-endpoints" "^3.3.3" + "@smithy/util-middleware" "^4.2.12" + "@smithy/util-retry" "^4.2.13" + "@smithy/util-stream" "^4.5.21" + "@smithy/util-utf8" "^4.2.2" + "@smithy/util-waiter" "^4.2.14" tslib "^2.6.2" - uuid "^9.0.1" -"@aws-sdk/client-ses@^3.31.0", "@aws-sdk/client-ses@^3.731.1": +"@aws-sdk/client-ses@^3.31.0": version "3.864.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-ses/-/client-ses-3.864.0.tgz#7063e59a42919065fbb24f080b0979b41a4da6fd" integrity sha512-cmsOrJZsrNa892gD2cAsbVkweDulgmC8PE38cz//bM//1BW/R1MMFClapF+Q9gACtsRVTRBXNtsIsBq8Gm1Urw== @@ -338,6 +335,33 @@ fast-xml-parser "5.2.5" tslib "^2.6.2" +"@aws-sdk/core@^3.973.26": + version "3.973.26" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.973.26.tgz#5989c5300f9da7ed57f34b88091c77b4fa5d7256" + integrity sha512-A/E6n2W42ruU+sfWk+mMUOyVXbsSgGrY3MJ9/0Az5qUdG67y8I6HYzzoAa+e/lzxxl1uCYmEL6BTMi9ZiZnplQ== + dependencies: + "@aws-sdk/types" "^3.973.6" + "@aws-sdk/xml-builder" "^3.972.16" + "@smithy/core" "^3.23.13" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/property-provider" "^4.2.12" + "@smithy/protocol-http" "^5.3.12" + "@smithy/signature-v4" "^5.3.12" + "@smithy/smithy-client" "^4.12.8" + "@smithy/types" "^4.13.1" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-middleware" "^4.2.12" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/crc64-nvme@^3.972.5": + version "3.972.5" + resolved "https://registry.yarnpkg.com/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.5.tgz#8b6213341e86759568dbf2d7631c6820580d2969" + integrity sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg== + dependencies: + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-env@3.864.0": version "3.864.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.864.0.tgz#32e048eafaad51e3c67ef34d1310cc19f2f67c38" @@ -349,6 +373,17 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" +"@aws-sdk/credential-provider-env@^3.972.24": + version "3.972.24" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.24.tgz#bc33a34f15704d02552aa8b3994d17008b991f86" + integrity sha512-FWg8uFmT6vQM7VuzELzwVo5bzExGaKHdubn0StjgrcU5FvuLExUe+k06kn/40uKv59rYzhez8eFNM4yYE/Yb/w== + dependencies: + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/types" "^3.973.6" + "@smithy/property-provider" "^4.2.12" + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-http@3.864.0": version "3.864.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.864.0.tgz#e312b137c1fdce87adb5140b039516c077726f5c" @@ -365,6 +400,22 @@ "@smithy/util-stream" "^4.2.4" tslib "^2.6.2" +"@aws-sdk/credential-provider-http@^3.972.26": + version "3.972.26" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.26.tgz#6524c3681dbb62d3c4de82262631ab94b800f00e" + integrity sha512-CY4ppZ+qHYqcXqBVi//sdHST1QK3KzOEiLtpLsc9W2k2vfZPKExGaQIsOwcyvjpjUEolotitmd3mUNY56IwDEA== + dependencies: + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/types" "^3.973.6" + "@smithy/fetch-http-handler" "^5.3.15" + "@smithy/node-http-handler" "^4.5.1" + "@smithy/property-provider" "^4.2.12" + "@smithy/protocol-http" "^5.3.12" + "@smithy/smithy-client" "^4.12.8" + "@smithy/types" "^4.13.1" + "@smithy/util-stream" "^4.5.21" + tslib "^2.6.2" + "@aws-sdk/credential-provider-ini@3.864.0": version "3.864.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.864.0.tgz#3149745e91d030f191ad618e7ee15c92101ad24e" @@ -384,6 +435,40 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" +"@aws-sdk/credential-provider-ini@^3.972.28": + version "3.972.28" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.28.tgz#6bc0d684c245914dca7a1a4dd3c2d84212833320" + integrity sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw== + dependencies: + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/credential-provider-env" "^3.972.24" + "@aws-sdk/credential-provider-http" "^3.972.26" + "@aws-sdk/credential-provider-login" "^3.972.28" + "@aws-sdk/credential-provider-process" "^3.972.24" + "@aws-sdk/credential-provider-sso" "^3.972.28" + "@aws-sdk/credential-provider-web-identity" "^3.972.28" + "@aws-sdk/nested-clients" "^3.996.18" + "@aws-sdk/types" "^3.973.6" + "@smithy/credential-provider-imds" "^4.2.12" + "@smithy/property-provider" "^4.2.12" + "@smithy/shared-ini-file-loader" "^4.4.7" + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-login@^3.972.28": + version "3.972.28" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.28.tgz#b2d47d4d43690d2d824edc94ce955d86dd3877f1" + integrity sha512-ZSTfO6jqUTCysbdBPtEX5OUR//3rbD0lN7jO3sQeS2Gjr/Y+DT6SbIJ0oT2cemNw3UzKu97sNONd1CwNMthuZQ== + dependencies: + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/nested-clients" "^3.996.18" + "@aws-sdk/types" "^3.973.6" + "@smithy/property-provider" "^4.2.12" + "@smithy/protocol-http" "^5.3.12" + "@smithy/shared-ini-file-loader" "^4.4.7" + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-node@3.864.0": version "3.864.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.864.0.tgz#d01277b53ac179d2ea97ba16147ba0cb3f710aae" @@ -402,6 +487,24 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" +"@aws-sdk/credential-provider-node@^3.972.29": + version "3.972.29" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.29.tgz#4bcc991fcbf245f75494a119b3446a678a51e019" + integrity sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g== + dependencies: + "@aws-sdk/credential-provider-env" "^3.972.24" + "@aws-sdk/credential-provider-http" "^3.972.26" + "@aws-sdk/credential-provider-ini" "^3.972.28" + "@aws-sdk/credential-provider-process" "^3.972.24" + "@aws-sdk/credential-provider-sso" "^3.972.28" + "@aws-sdk/credential-provider-web-identity" "^3.972.28" + "@aws-sdk/types" "^3.973.6" + "@smithy/credential-provider-imds" "^4.2.12" + "@smithy/property-provider" "^4.2.12" + "@smithy/shared-ini-file-loader" "^4.4.7" + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-process@3.864.0": version "3.864.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.864.0.tgz#5f39e34a084cfa07966874955fa3aa0f966bcf15" @@ -414,6 +517,18 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" +"@aws-sdk/credential-provider-process@^3.972.24": + version "3.972.24" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.24.tgz#940c76a2db0aece23879dcf75ac5b6ee8f8fa135" + integrity sha512-Q2k/XLrFXhEztPHqj4SLCNID3hEPdlhh1CDLBpNnM+1L8fq7P+yON9/9M1IGN/dA5W45v44ylERfXtDAlmMNmw== + dependencies: + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/types" "^3.973.6" + "@smithy/property-provider" "^4.2.12" + "@smithy/shared-ini-file-loader" "^4.4.7" + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-sso@3.864.0": version "3.864.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.864.0.tgz#1556640016f9bd3dd1c2e140270098a75c922ca3" @@ -428,6 +543,20 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" +"@aws-sdk/credential-provider-sso@^3.972.28": + version "3.972.28" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.28.tgz#bf150bfb7e708d58f35bb2b5786b902df19fd92d" + integrity sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A== + dependencies: + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/nested-clients" "^3.996.18" + "@aws-sdk/token-providers" "3.1021.0" + "@aws-sdk/types" "^3.973.6" + "@smithy/property-provider" "^4.2.12" + "@smithy/shared-ini-file-loader" "^4.4.7" + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-web-identity@3.864.0": version "3.864.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.864.0.tgz#5cf54ec064957552e4c8c9070fd2b313f152a776" @@ -440,46 +569,60 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" -"@aws-sdk/middleware-bucket-endpoint@3.862.0": - version "3.862.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.862.0.tgz#8d318eccfa987cfa4e6c5f62539d99bcbe6dec30" - integrity sha512-Wcsc7VPLjImQw+CP1/YkwyofMs9Ab6dVq96iS8p0zv0C6YTaMjvillkau4zFfrrrTshdzFWKptIFhKK8Zsei1g== - dependencies: - "@aws-sdk/types" "3.862.0" - "@aws-sdk/util-arn-parser" "3.804.0" - "@smithy/node-config-provider" "^4.1.4" - "@smithy/protocol-http" "^5.1.3" - "@smithy/types" "^4.3.2" - "@smithy/util-config-provider" "^4.0.0" +"@aws-sdk/credential-provider-web-identity@^3.972.28": + version "3.972.28" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.28.tgz#27fc2a0fe0d2ff1460171d2a6912898c2235a7df" + integrity sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ== + dependencies: + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/nested-clients" "^3.996.18" + "@aws-sdk/types" "^3.973.6" + "@smithy/property-provider" "^4.2.12" + "@smithy/shared-ini-file-loader" "^4.4.7" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@aws-sdk/middleware-expect-continue@3.862.0": - version "3.862.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.862.0.tgz#f53c28c41f63859362797fd76e993365b598d0ba" - integrity sha512-oG3AaVUJ+26p0ESU4INFn6MmqqiBFZGrebST66Or+YBhteed2rbbFl7mCfjtPWUFgquQlvT1UP19P3LjQKeKpw== +"@aws-sdk/middleware-bucket-endpoint@^3.972.8": + version "3.972.8" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.8.tgz#cbb5eccad6e699991027dbd35e88153f92ea5082" + integrity sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw== + dependencies: + "@aws-sdk/types" "^3.973.6" + "@aws-sdk/util-arn-parser" "^3.972.3" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" + "@smithy/util-config-provider" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/middleware-expect-continue@^3.972.8": + version "3.972.8" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.8.tgz#47857e3f8d792c702a0212dc565d32eefa4fac67" + integrity sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ== dependencies: - "@aws-sdk/types" "3.862.0" - "@smithy/protocol-http" "^5.1.3" - "@smithy/types" "^4.3.2" + "@aws-sdk/types" "^3.973.6" + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@aws-sdk/middleware-flexible-checksums@3.864.0": - version "3.864.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.864.0.tgz#fcbb40ae1513f96185ec961693c0f55ec1f4da18" - integrity sha512-MvakvzPZi9uyP3YADuIqtk/FAcPFkyYFWVVMf5iFs/rCdk0CUzn02Qf4CSuyhbkS6Y0KrAsMgKR4MgklPU79Wg== +"@aws-sdk/middleware-flexible-checksums@^3.974.6": + version "3.974.6" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.6.tgz#9c2fcda36161c60dc7555b655d66bc4cf3c7337c" + integrity sha512-YckB8k1ejbyCg/g36gUMFLNzE4W5cERIa4MtsdO+wpTmJEP0+TB7okWIt7d8TDOvnb7SwvxJ21E4TGOBxFpSWQ== dependencies: "@aws-crypto/crc32" "5.2.0" "@aws-crypto/crc32c" "5.2.0" "@aws-crypto/util" "5.2.0" - "@aws-sdk/core" "3.864.0" - "@aws-sdk/types" "3.862.0" - "@smithy/is-array-buffer" "^4.0.0" - "@smithy/node-config-provider" "^4.1.4" - "@smithy/protocol-http" "^5.1.3" - "@smithy/types" "^4.3.2" - "@smithy/util-middleware" "^4.0.5" - "@smithy/util-stream" "^4.2.4" - "@smithy/util-utf8" "^4.0.0" + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/crc64-nvme" "^3.972.5" + "@aws-sdk/types" "^3.973.6" + "@smithy/is-array-buffer" "^4.2.2" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" + "@smithy/util-middleware" "^4.2.12" + "@smithy/util-stream" "^4.5.21" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" "@aws-sdk/middleware-host-header@3.862.0": @@ -492,13 +635,23 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" -"@aws-sdk/middleware-location-constraint@3.862.0": - version "3.862.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.862.0.tgz#d55babadc9f9b7150c56b028fc6953021a5a565a" - integrity sha512-MnwLxCw7Cc9OngEH3SHFhrLlDI9WVxaBkp3oTsdY9JE7v8OE38wQ9vtjaRsynjwu0WRtrctSHbpd7h/QVvtjyA== +"@aws-sdk/middleware-host-header@^3.972.8": + version "3.972.8" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz#72186e96500b49b38fb5482d6b7bf95e5b985281" + integrity sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ== dependencies: - "@aws-sdk/types" "3.862.0" - "@smithy/types" "^4.3.2" + "@aws-sdk/types" "^3.973.6" + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-location-constraint@^3.972.8": + version "3.972.8" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.8.tgz#67e15d3ca55e825596fcc36da9aaf9f482da6fc9" + integrity sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw== + dependencies: + "@aws-sdk/types" "^3.973.6" + "@smithy/types" "^4.13.1" tslib "^2.6.2" "@aws-sdk/middleware-logger@3.862.0": @@ -510,6 +663,15 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" +"@aws-sdk/middleware-logger@^3.972.8": + version "3.972.8" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz#7fee4223afcb6f7828dbdf4ea745ce15027cf384" + integrity sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA== + dependencies: + "@aws-sdk/types" "^3.973.6" + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + "@aws-sdk/middleware-recursion-detection@3.862.0": version "3.862.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.862.0.tgz#d83433251e550b7ed9cd731a447c92aaec378f01" @@ -520,33 +682,44 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" -"@aws-sdk/middleware-sdk-s3@3.864.0": - version "3.864.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.864.0.tgz#5142210471ed702452277ad653af483147c42598" - integrity sha512-GjYPZ6Xnqo17NnC8NIQyvvdzzO7dm+Ks7gpxD/HsbXPmV2aEfuFveJXneGW9e1BheSKFff6FPDWu8Gaj2Iu1yg== +"@aws-sdk/middleware-recursion-detection@^3.972.9": + version "3.972.9" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.9.tgz#53a2cc0cf827863163b2351209212f642015c2e2" + integrity sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ== dependencies: - "@aws-sdk/core" "3.864.0" - "@aws-sdk/types" "3.862.0" - "@aws-sdk/util-arn-parser" "3.804.0" - "@smithy/core" "^3.8.0" - "@smithy/node-config-provider" "^4.1.4" - "@smithy/protocol-http" "^5.1.3" - "@smithy/signature-v4" "^5.1.3" - "@smithy/smithy-client" "^4.4.10" - "@smithy/types" "^4.3.2" - "@smithy/util-config-provider" "^4.0.0" - "@smithy/util-middleware" "^4.0.5" - "@smithy/util-stream" "^4.2.4" - "@smithy/util-utf8" "^4.0.0" + "@aws-sdk/types" "^3.973.6" + "@aws/lambda-invoke-store" "^0.2.2" + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@aws-sdk/middleware-ssec@3.862.0": - version "3.862.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.862.0.tgz#d6c7d03c966cb6642acec8c7f046afd3a72c0f7c" - integrity sha512-72VtP7DZC8lYTE2L3Efx2BrD98oe9WTK8X6hmd3WTLkbIjvgWQWIdjgaFXBs8WevsXkewIctfyA3KEezvL5ggw== +"@aws-sdk/middleware-sdk-s3@^3.972.27": + version "3.972.27" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.27.tgz#df02460d364f46886fc553e224850b14d1c87097" + integrity sha512-gomO6DZwx+1D/9mbCpcqO5tPBqYBK7DtdgjTIjZ4yvfh/S7ETwAPS0XbJgP2JD8Ycr5CwVrEkV1sFtu3ShXeOw== + dependencies: + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/types" "^3.973.6" + "@aws-sdk/util-arn-parser" "^3.972.3" + "@smithy/core" "^3.23.13" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/protocol-http" "^5.3.12" + "@smithy/signature-v4" "^5.3.12" + "@smithy/smithy-client" "^4.12.8" + "@smithy/types" "^4.13.1" + "@smithy/util-config-provider" "^4.2.2" + "@smithy/util-middleware" "^4.2.12" + "@smithy/util-stream" "^4.5.21" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/middleware-ssec@^3.972.8": + version "3.972.8" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.8.tgz#4f71982bad76a907e4f5771796d18372e063c511" + integrity sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw== dependencies: - "@aws-sdk/types" "3.862.0" - "@smithy/types" "^4.3.2" + "@aws-sdk/types" "^3.973.6" + "@smithy/types" "^4.13.1" tslib "^2.6.2" "@aws-sdk/middleware-user-agent@3.864.0": @@ -562,6 +735,20 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" +"@aws-sdk/middleware-user-agent@^3.972.28": + version "3.972.28" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.28.tgz#7f81d96d2fed0334ff601af62d77e14f67fb9d22" + integrity sha512-cfWZFlVh7Va9lRay4PN2A9ARFzaBYcA097InT5M2CdRS05ECF5yaz86jET8Wsl2WcyKYEvVr/QNmKtYtafUHtQ== + dependencies: + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/types" "^3.973.6" + "@aws-sdk/util-endpoints" "^3.996.5" + "@smithy/core" "^3.23.13" + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" + "@smithy/util-retry" "^4.2.13" + tslib "^2.6.2" + "@aws-sdk/nested-clients@3.864.0": version "3.864.0" resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.864.0.tgz#8d8b7e8e481649ae0f6ef37339b07cd8f6405e74" @@ -606,6 +793,50 @@ "@smithy/util-utf8" "^4.0.0" tslib "^2.6.2" +"@aws-sdk/nested-clients@^3.996.18": + version "3.996.18" + resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.996.18.tgz#b5f2403bef822e1ac01d3f7f6f2849f23d94beb9" + integrity sha512-c7ZSIXrESxHKx2Mcopgd8AlzZgoXMr20fkx5ViPWPOLBvmyhw9VwJx/Govg8Ef/IhEon5R9l53Z8fdYSEmp6VA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/middleware-host-header" "^3.972.8" + "@aws-sdk/middleware-logger" "^3.972.8" + "@aws-sdk/middleware-recursion-detection" "^3.972.9" + "@aws-sdk/middleware-user-agent" "^3.972.28" + "@aws-sdk/region-config-resolver" "^3.972.10" + "@aws-sdk/types" "^3.973.6" + "@aws-sdk/util-endpoints" "^3.996.5" + "@aws-sdk/util-user-agent-browser" "^3.972.8" + "@aws-sdk/util-user-agent-node" "^3.973.14" + "@smithy/config-resolver" "^4.4.13" + "@smithy/core" "^3.23.13" + "@smithy/fetch-http-handler" "^5.3.15" + "@smithy/hash-node" "^4.2.12" + "@smithy/invalid-dependency" "^4.2.12" + "@smithy/middleware-content-length" "^4.2.12" + "@smithy/middleware-endpoint" "^4.4.28" + "@smithy/middleware-retry" "^4.4.46" + "@smithy/middleware-serde" "^4.2.16" + "@smithy/middleware-stack" "^4.2.12" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/node-http-handler" "^4.5.1" + "@smithy/protocol-http" "^5.3.12" + "@smithy/smithy-client" "^4.12.8" + "@smithy/types" "^4.13.1" + "@smithy/url-parser" "^4.2.12" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.44" + "@smithy/util-defaults-mode-node" "^4.2.48" + "@smithy/util-endpoints" "^3.3.3" + "@smithy/util-middleware" "^4.2.12" + "@smithy/util-retry" "^4.2.13" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@aws-sdk/region-config-resolver@3.862.0": version "3.862.0" resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.862.0.tgz#99e7942be513abacb715d06781e6f4d62b3e9cf2" @@ -618,16 +849,40 @@ "@smithy/util-middleware" "^4.0.5" tslib "^2.6.2" -"@aws-sdk/signature-v4-multi-region@3.864.0": - version "3.864.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.864.0.tgz#75e24f5382aa77b7e629f8feb366bcf2a358ffb8" - integrity sha512-w2HIn/WIcUyv1bmyCpRUKHXB5KdFGzyxPkp/YK5g+/FuGdnFFYWGfcO8O+How4jwrZTarBYsAHW9ggoKvwr37w== +"@aws-sdk/region-config-resolver@^3.972.10": + version "3.972.10" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.10.tgz#cbabd969a2d4fedb652273403e64d98b79d0144c" + integrity sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ== dependencies: - "@aws-sdk/middleware-sdk-s3" "3.864.0" - "@aws-sdk/types" "3.862.0" - "@smithy/protocol-http" "^5.1.3" - "@smithy/signature-v4" "^5.1.3" - "@smithy/types" "^4.3.2" + "@aws-sdk/types" "^3.973.6" + "@smithy/config-resolver" "^4.4.13" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + +"@aws-sdk/signature-v4-multi-region@^3.996.15": + version "3.996.15" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.15.tgz#aa361982c5cc6c4d36fb6ac9d04bd18e043720bd" + integrity sha512-Ukw2RpqvaL96CjfH/FgfBmy/ZosHBqoHBCFsN61qGg99F33vpntIVii8aNeh65XuOja73arSduskoa4OJea9RQ== + dependencies: + "@aws-sdk/middleware-sdk-s3" "^3.972.27" + "@aws-sdk/types" "^3.973.6" + "@smithy/protocol-http" "^5.3.12" + "@smithy/signature-v4" "^5.3.12" + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + +"@aws-sdk/token-providers@3.1021.0": + version "3.1021.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.1021.0.tgz#90905a8def49f90e54a73849e25ad4bcc4dbea2a" + integrity sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA== + dependencies: + "@aws-sdk/core" "^3.973.26" + "@aws-sdk/nested-clients" "^3.996.18" + "@aws-sdk/types" "^3.973.6" + "@smithy/property-provider" "^4.2.12" + "@smithy/shared-ini-file-loader" "^4.4.7" + "@smithy/types" "^4.13.1" tslib "^2.6.2" "@aws-sdk/token-providers@3.864.0": @@ -643,7 +898,7 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" -"@aws-sdk/types@3.862.0", "@aws-sdk/types@^3.222.0": +"@aws-sdk/types@3.862.0": version "3.862.0" resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.862.0.tgz#2f5622e1aa3a5281d4f419f5d2c90f87dd5ff0cf" integrity sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg== @@ -651,10 +906,18 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" -"@aws-sdk/util-arn-parser@3.804.0": - version "3.804.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz#d0b52bf5f9ae5b2c357a635551e5844dcad074c8" - integrity sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ== +"@aws-sdk/types@^3.222.0", "@aws-sdk/types@^3.973.6": + version "3.973.6" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.973.6.tgz#1964a7c01b5cb18befa445998ad1d02f86c5432d" + integrity sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw== + dependencies: + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + +"@aws-sdk/util-arn-parser@^3.972.3": + version "3.972.3" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz#ed989862bbb172ce16d9e1cd5790e5fe367219c2" + integrity sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA== dependencies: tslib "^2.6.2" @@ -669,6 +932,17 @@ "@smithy/util-endpoints" "^3.0.7" tslib "^2.6.2" +"@aws-sdk/util-endpoints@^3.996.5": + version "3.996.5" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz#6b12e80869ae6e84075bc24c2a4e6273ea87dfc2" + integrity sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw== + dependencies: + "@aws-sdk/types" "^3.973.6" + "@smithy/types" "^4.13.1" + "@smithy/url-parser" "^4.2.12" + "@smithy/util-endpoints" "^3.3.3" + tslib "^2.6.2" + "@aws-sdk/util-locate-window@^3.0.0": version "3.188.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.188.0.tgz#0bef2b4d932d1401bd78dc1ddd258b14a3652f96" @@ -686,6 +960,16 @@ bowser "^2.11.0" tslib "^2.6.2" +"@aws-sdk/util-user-agent-browser@^3.972.8": + version "3.972.8" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz#1044845c97c898cd68fc3f9c773494a6a98cdf80" + integrity sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA== + dependencies: + "@aws-sdk/types" "^3.973.6" + "@smithy/types" "^4.13.1" + bowser "^2.11.0" + tslib "^2.6.2" + "@aws-sdk/util-user-agent-node@3.864.0": version "3.864.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.864.0.tgz#2fd8276a6d7d0ee3d6fe75421c5565e63ae6a0d5" @@ -697,6 +981,18 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" +"@aws-sdk/util-user-agent-node@^3.973.14": + version "3.973.14" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.14.tgz#955e50e8222c9861fdf8f273ba8ff8e28ba04a5c" + integrity sha512-vNSB/DYaPOyujVZBg/zUznH9QC142MaTHVmaFlF7uzzfg3CgT9f/l4C0Yi+vU/tbBhxVcXVB90Oohk5+o+ZbWw== + dependencies: + "@aws-sdk/middleware-user-agent" "^3.972.28" + "@aws-sdk/types" "^3.973.6" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/types" "^4.13.1" + "@smithy/util-config-provider" "^4.2.2" + tslib "^2.6.2" + "@aws-sdk/xml-builder@3.862.0": version "3.862.0" resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.862.0.tgz#d368c76f0f129d43b3ffbc2dc18f53ddd64ec328" @@ -705,6 +1001,20 @@ "@smithy/types" "^4.3.2" tslib "^2.6.2" +"@aws-sdk/xml-builder@^3.972.16": + version "3.972.16" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.972.16.tgz#ea22fe022cf12d12b07f6faf75c4fa214dea00bc" + integrity sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A== + dependencies: + "@smithy/types" "^4.13.1" + fast-xml-parser "5.5.8" + tslib "^2.6.2" + +"@aws/lambda-invoke-store@^0.2.2": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz#802f6a50f6b6589063ef63ba8acdee86fcb9f395" + integrity sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ== + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" @@ -6637,159 +6947,151 @@ "@types/node" ">=18.0.0" axios "^1.11.0" -"@smithy/abort-controller@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-4.0.5.tgz#2872a12d0f11dfdcc4254b39566d5f24ab26a4ab" - integrity sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g== +"@smithy/chunked-blob-reader-native@^4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz#9e79a80d8d44798e7ce7a8f968cbbbaf5a40d950" + integrity sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw== dependencies: - "@smithy/types" "^4.3.2" + "@smithy/util-base64" "^4.3.2" tslib "^2.6.2" -"@smithy/chunked-blob-reader-native@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz#380266951d746b522b4ab2b16bfea6b451147b41" - integrity sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ== +"@smithy/chunked-blob-reader@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz#3af48e37b10e5afed478bb31d2b7bc03c81d196c" + integrity sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw== dependencies: - "@smithy/util-base64" "^4.3.0" tslib "^2.6.2" -"@smithy/chunked-blob-reader@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz#776fec5eaa5ab5fa70d0d0174b7402420b24559c" - integrity sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA== +"@smithy/config-resolver@^4.1.5", "@smithy/config-resolver@^4.4.13": + version "4.4.13" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-4.4.13.tgz#8bffd41de647ec349b4a74bf02bdd1b32452bacd" + integrity sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg== dependencies: + "@smithy/node-config-provider" "^4.3.12" + "@smithy/types" "^4.13.1" + "@smithy/util-config-provider" "^4.2.2" + "@smithy/util-endpoints" "^3.3.3" + "@smithy/util-middleware" "^4.2.12" tslib "^2.6.2" -"@smithy/config-resolver@^4.1.5": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-4.1.5.tgz#3cb7cde8d13ca64630e5655812bac9ffe8182469" - integrity sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw== - dependencies: - "@smithy/node-config-provider" "^4.1.4" - "@smithy/types" "^4.3.2" - "@smithy/util-config-provider" "^4.0.0" - "@smithy/util-middleware" "^4.0.5" +"@smithy/core@^3.23.13", "@smithy/core@^3.8.0": + version "3.23.13" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.23.13.tgz#343e0d78b907f463b560d9e50d8ae16456281830" + integrity sha512-J+2TT9D6oGsUVXVEMvz8h2EmdVnkBiy2auCie4aSJMvKlzUtO5hqjEzXhoCUkIMo7gAYjbQcN0g/MMSXEhDs1Q== + dependencies: + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" + "@smithy/url-parser" "^4.2.12" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-middleware" "^4.2.12" + "@smithy/util-stream" "^4.5.21" + "@smithy/util-utf8" "^4.2.2" + "@smithy/uuid" "^1.1.2" tslib "^2.6.2" -"@smithy/core@^3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.8.0.tgz#321d03564b753025b92e4476579efcd5c505ab1f" - integrity sha512-EYqsIYJmkR1VhVE9pccnk353xhs+lB6btdutJEtsp7R055haMJp2yE16eSxw8fv+G0WUY6vqxyYOP8kOqawxYQ== - dependencies: - "@smithy/middleware-serde" "^4.0.9" - "@smithy/protocol-http" "^5.1.3" - "@smithy/types" "^4.3.2" - "@smithy/util-base64" "^4.0.0" - "@smithy/util-body-length-browser" "^4.0.0" - "@smithy/util-middleware" "^4.0.5" - "@smithy/util-stream" "^4.2.4" - "@smithy/util-utf8" "^4.0.0" - "@types/uuid" "^9.0.1" - tslib "^2.6.2" - uuid "^9.0.1" - -"@smithy/credential-provider-imds@^4.0.7": - version "4.0.7" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.7.tgz#d8bb566ffd8d9e556810b83d6e0b01b39036b810" - integrity sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw== +"@smithy/credential-provider-imds@^4.0.7", "@smithy/credential-provider-imds@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.12.tgz#fa2e52116cac7eaf5625e0bfd399a4927b598f66" + integrity sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg== dependencies: - "@smithy/node-config-provider" "^4.1.4" - "@smithy/property-provider" "^4.0.5" - "@smithy/types" "^4.3.2" - "@smithy/url-parser" "^4.0.5" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/property-provider" "^4.2.12" + "@smithy/types" "^4.13.1" + "@smithy/url-parser" "^4.2.12" tslib "^2.6.2" -"@smithy/eventstream-codec@^4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-4.2.4.tgz#f9cc680b156d3fac4cc631a8b0159f5e87205143" - integrity sha512-aV8blR9RBDKrOlZVgjOdmOibTC2sBXNiT7WA558b4MPdsLTV6sbyc1WIE9QiIuYMJjYtnPLciefoqSW8Gi+MZQ== +"@smithy/eventstream-codec@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-4.2.12.tgz#8cd62d08709344fb8b35fd17870fdf1435de61a3" + integrity sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA== dependencies: "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^4.8.1" - "@smithy/util-hex-encoding" "^4.2.0" + "@smithy/types" "^4.13.1" + "@smithy/util-hex-encoding" "^4.2.2" tslib "^2.6.2" -"@smithy/eventstream-serde-browser@^4.0.5": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.4.tgz#6aa94f14dd4d3376cb3389a0f6f245994e9e97c7" - integrity sha512-d5T7ZS3J/r8P/PDjgmCcutmNxnSRvPH1U6iHeXjzI50sMr78GLmFcrczLw33Ap92oEKqa4CLrkAPeSSOqvGdUA== +"@smithy/eventstream-serde-browser@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.12.tgz#3ceb8743750edaf5d6e42cd1a2327e048f85ba4e" + integrity sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A== dependencies: - "@smithy/eventstream-serde-universal" "^4.2.4" - "@smithy/types" "^4.8.1" + "@smithy/eventstream-serde-universal" "^4.2.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/eventstream-serde-config-resolver@^4.1.3": - version "4.3.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.4.tgz#6ddd88c57274a6fe72e11bfd5ac858977573dc46" - integrity sha512-lxfDT0UuSc1HqltOGsTEAlZ6H29gpfDSdEPTapD5G63RbnYToZ+ezjzdonCCH90j5tRRCw3aLXVbiZaBW3VRVg== +"@smithy/eventstream-serde-config-resolver@^4.3.12": + version "4.3.12" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.12.tgz#a29164bc5480d935ece9dbdca0f79924259e519a" + integrity sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q== dependencies: - "@smithy/types" "^4.8.1" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/eventstream-serde-node@^4.0.5": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.4.tgz#61934c44c511bec5b07cfbbf59a2282806cd2ff8" - integrity sha512-TPhiGByWnYyzcpU/K3pO5V7QgtXYpE0NaJPEZBCa1Y5jlw5SjqzMSbFiLb+ZkJhqoQc0ImGyVINqnq1ze0ZRcQ== +"@smithy/eventstream-serde-node@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.12.tgz#2cc06a1ea1108f679d376aab81e95a6f69877b4a" + integrity sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA== dependencies: - "@smithy/eventstream-serde-universal" "^4.2.4" - "@smithy/types" "^4.8.1" + "@smithy/eventstream-serde-universal" "^4.2.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/eventstream-serde-universal@^4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.4.tgz#7c19762047b429d53af4664dc1168482706b4ee7" - integrity sha512-GNI/IXaY/XBB1SkGBFmbW033uWA0tj085eCxYih0eccUe/PFR7+UBQv9HNDk2fD9TJu7UVsCWsH99TkpEPSOzQ== +"@smithy/eventstream-serde-universal@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.12.tgz#a3640d1e7c3e348168360035661db8d21b51e078" + integrity sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ== dependencies: - "@smithy/eventstream-codec" "^4.2.4" - "@smithy/types" "^4.8.1" + "@smithy/eventstream-codec" "^4.2.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/fetch-http-handler@^5.1.1": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.1.1.tgz#a444c99bffdf314deb447370429cc3e719f1a866" - integrity sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ== +"@smithy/fetch-http-handler@^5.1.1", "@smithy/fetch-http-handler@^5.3.15": + version "5.3.15" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.15.tgz#acf69a8b3bab0396d2782fc901bad0b957c8c6a2" + integrity sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A== dependencies: - "@smithy/protocol-http" "^5.1.3" - "@smithy/querystring-builder" "^4.0.5" - "@smithy/types" "^4.3.2" - "@smithy/util-base64" "^4.0.0" + "@smithy/protocol-http" "^5.3.12" + "@smithy/querystring-builder" "^4.2.12" + "@smithy/types" "^4.13.1" + "@smithy/util-base64" "^4.3.2" tslib "^2.6.2" -"@smithy/hash-blob-browser@^4.0.5": - version "4.2.5" - resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.5.tgz#c82e032747b72811f735c2c1f0ed0c1aeb4de910" - integrity sha512-kCdgjD2J50qAqycYx0imbkA9tPtyQr1i5GwbK/EOUkpBmJGSkJe4mRJm+0F65TUSvvui1HZ5FFGFCND7l8/3WQ== +"@smithy/hash-blob-browser@^4.2.13": + version "4.2.13" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.13.tgz#464a7fb6b8355f6a56ddd0de194857760543248f" + integrity sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g== dependencies: - "@smithy/chunked-blob-reader" "^5.2.0" - "@smithy/chunked-blob-reader-native" "^4.2.1" - "@smithy/types" "^4.8.1" + "@smithy/chunked-blob-reader" "^5.2.2" + "@smithy/chunked-blob-reader-native" "^4.2.3" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/hash-node@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-4.0.5.tgz#16cf8efe42b8b611b1f56f78464b97b27ca6a3ec" - integrity sha512-cv1HHkKhpyRb6ahD8Vcfb2Hgz67vNIXEp2vnhzfxLFGRukLCNEA5QdsorbUEzXma1Rco0u3rx5VTqbM06GcZqQ== +"@smithy/hash-node@^4.0.5", "@smithy/hash-node@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-4.2.12.tgz#0ee7f6a1d2958c313ee24b07159dcb9547792441" + integrity sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w== dependencies: - "@smithy/types" "^4.3.2" - "@smithy/util-buffer-from" "^4.0.0" - "@smithy/util-utf8" "^4.0.0" + "@smithy/types" "^4.13.1" + "@smithy/util-buffer-from" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/hash-stream-node@^4.0.5": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-4.2.4.tgz#553fa9a8fe567b0018cf99be3dafb920bc241a7f" - integrity sha512-amuh2IJiyRfO5MV0X/YFlZMD6banjvjAwKdeJiYGUbId608x+oSNwv3vlyW2Gt6AGAgl3EYAuyYLGRX/xU8npQ== +"@smithy/hash-stream-node@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-4.2.12.tgz#cff200a551bd3f246f8d0aed4309d05873039437" + integrity sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw== dependencies: - "@smithy/types" "^4.8.1" - "@smithy/util-utf8" "^4.2.0" + "@smithy/types" "^4.13.1" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/invalid-dependency@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-4.0.5.tgz#ed88e209668266b09c4b501f9bd656728b5ece60" - integrity sha512-IVnb78Qtf7EJpoEVo7qJ8BEXQwgC4n3igeJNNKEj/MLYtapnx8A67Zt/J3RXAj2xSO1910zk0LdFiygSemuLow== +"@smithy/invalid-dependency@^4.0.5", "@smithy/invalid-dependency@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-4.2.12.tgz#1a28c13fb33684b91848d4d6ec5104a1c1413e7f" + integrity sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g== dependencies: - "@smithy/types" "^4.3.2" + "@smithy/types" "^4.13.1" tslib "^2.6.2" "@smithy/is-array-buffer@^2.2.0": @@ -6799,210 +7101,209 @@ dependencies: tslib "^2.6.2" -"@smithy/is-array-buffer@^4.0.0", "@smithy/is-array-buffer@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz#b0f874c43887d3ad44f472a0f3f961bcce0550c2" - integrity sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ== +"@smithy/is-array-buffer@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz#c401ce54b12a16529eb1c938a0b6c2247cb763b8" + integrity sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow== dependencies: tslib "^2.6.2" -"@smithy/md5-js@^4.0.5": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-4.2.4.tgz#e012464383ffde0bd423d38ef9b5caf720ee90eb" - integrity sha512-h7kzNWZuMe5bPnZwKxhVbY1gan5+TZ2c9JcVTHCygB14buVGOZxLl+oGfpY2p2Xm48SFqEWdghpvbBdmaz3ncQ== +"@smithy/md5-js@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-4.2.12.tgz#8f4f0bd4d57eee488bb4dec712f3c4d25ea6f5d7" + integrity sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ== dependencies: - "@smithy/types" "^4.8.1" - "@smithy/util-utf8" "^4.2.0" + "@smithy/types" "^4.13.1" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/middleware-content-length@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-4.0.5.tgz#c5d6e47f5a9fbba20433602bec9bffaeeb821ff3" - integrity sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ== +"@smithy/middleware-content-length@^4.0.5", "@smithy/middleware-content-length@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-4.2.12.tgz#dec97ea1444b12e734156b764e9953b2b37c70fd" + integrity sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA== dependencies: - "@smithy/protocol-http" "^5.1.3" - "@smithy/types" "^4.3.2" + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/middleware-endpoint@^4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.18.tgz#81b2f85e3c72b0f1a2d8776e01b0a2968af62c0a" - integrity sha512-ZhvqcVRPZxnZlokcPaTwb+r+h4yOIOCJmx0v2d1bpVlmP465g3qpVSf7wxcq5zZdu4jb0H4yIMxuPwDJSQc3MQ== - dependencies: - "@smithy/core" "^3.8.0" - "@smithy/middleware-serde" "^4.0.9" - "@smithy/node-config-provider" "^4.1.4" - "@smithy/shared-ini-file-loader" "^4.0.5" - "@smithy/types" "^4.3.2" - "@smithy/url-parser" "^4.0.5" - "@smithy/util-middleware" "^4.0.5" +"@smithy/middleware-endpoint@^4.1.18", "@smithy/middleware-endpoint@^4.4.28": + version "4.4.28" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.28.tgz#201b568f3669bd816f60a6043d914c134d80f46c" + integrity sha512-p1gfYpi91CHcs5cBq982UlGlDrxoYUX6XdHSo91cQ2KFuz6QloHosO7Jc60pJiVmkWrKOV8kFYlGFFbQ2WUKKQ== + dependencies: + "@smithy/core" "^3.23.13" + "@smithy/middleware-serde" "^4.2.16" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/shared-ini-file-loader" "^4.4.7" + "@smithy/types" "^4.13.1" + "@smithy/url-parser" "^4.2.12" + "@smithy/util-middleware" "^4.2.12" tslib "^2.6.2" -"@smithy/middleware-retry@^4.1.19": - version "4.1.19" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.1.19.tgz#19c013c1a548e1185cc1bfabfab3f498667c9e89" - integrity sha512-X58zx/NVECjeuUB6A8HBu4bhx72EoUz+T5jTMIyeNKx2lf+Gs9TmWPNNkH+5QF0COjpInP/xSpJGJ7xEnAklQQ== - dependencies: - "@smithy/node-config-provider" "^4.1.4" - "@smithy/protocol-http" "^5.1.3" - "@smithy/service-error-classification" "^4.0.7" - "@smithy/smithy-client" "^4.4.10" - "@smithy/types" "^4.3.2" - "@smithy/util-middleware" "^4.0.5" - "@smithy/util-retry" "^4.0.7" - "@types/uuid" "^9.0.1" +"@smithy/middleware-retry@^4.1.19", "@smithy/middleware-retry@^4.4.46": + version "4.4.46" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.4.46.tgz#dbbf0af08c1bd03fe2afa09a6cfb7a9056387ce6" + integrity sha512-SpvWNNOPOrKQGUqZbEPO+es+FRXMWvIyzUKUOYdDgdlA6BdZj/R58p4umoQ76c2oJC44PiM7mKizyyex1IJzow== + dependencies: + "@smithy/node-config-provider" "^4.3.12" + "@smithy/protocol-http" "^5.3.12" + "@smithy/service-error-classification" "^4.2.12" + "@smithy/smithy-client" "^4.12.8" + "@smithy/types" "^4.13.1" + "@smithy/util-middleware" "^4.2.12" + "@smithy/util-retry" "^4.2.13" + "@smithy/uuid" "^1.1.2" tslib "^2.6.2" - uuid "^9.0.1" -"@smithy/middleware-serde@^4.0.9": - version "4.0.9" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-4.0.9.tgz#71213158bb11c1d632829001ca3f233323fb2a7c" - integrity sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg== +"@smithy/middleware-serde@^4.0.9", "@smithy/middleware-serde@^4.2.16": + version "4.2.16" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-4.2.16.tgz#7f259e1e4e43332ad29b53cf3b4d9f14fde690ce" + integrity sha512-beqfV+RZ9RSv+sQqor3xroUUYgRFCGRw6niGstPG8zO9LgTl0B0MCucxjmrH/2WwksQN7UUgI7KNANoZv+KALA== dependencies: - "@smithy/protocol-http" "^5.1.3" - "@smithy/types" "^4.3.2" + "@smithy/core" "^3.23.13" + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/middleware-stack@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-4.0.5.tgz#577050d4c0afe816f1ea85f335b2ef64f73e4328" - integrity sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ== +"@smithy/middleware-stack@^4.0.5", "@smithy/middleware-stack@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-4.2.12.tgz#96b43b2fab0d4a6723f813f76b72418b0fdb6ba0" + integrity sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw== dependencies: - "@smithy/types" "^4.3.2" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/node-config-provider@^4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-4.1.4.tgz#42f231b7027e5a7ce003fd80180e586fe814944a" - integrity sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w== +"@smithy/node-config-provider@^4.1.4", "@smithy/node-config-provider@^4.3.12": + version "4.3.12" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-4.3.12.tgz#bb722da6e2a130ae585754fa7bc8d909f9f5d702" + integrity sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw== dependencies: - "@smithy/property-provider" "^4.0.5" - "@smithy/shared-ini-file-loader" "^4.0.5" - "@smithy/types" "^4.3.2" + "@smithy/property-provider" "^4.2.12" + "@smithy/shared-ini-file-loader" "^4.4.7" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/node-http-handler@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.1.1.tgz#dd806d9e08b6e73125040dd0808ab56d16a178e9" - integrity sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw== +"@smithy/node-http-handler@^4.1.1", "@smithy/node-http-handler@^4.5.1": + version "4.5.1" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.5.1.tgz#9f05b4478ccfc6db82af37579a36fa48ee8f6067" + integrity sha512-ejjxdAXjkPIs9lyYyVutOGNOraqUE9v/NjGMKwwFrfOM354wfSD8lmlj8hVwUzQmlLLF4+udhfCX9Exnbmvfzw== dependencies: - "@smithy/abort-controller" "^4.0.5" - "@smithy/protocol-http" "^5.1.3" - "@smithy/querystring-builder" "^4.0.5" - "@smithy/types" "^4.3.2" + "@smithy/protocol-http" "^5.3.12" + "@smithy/querystring-builder" "^4.2.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/property-provider@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-4.0.5.tgz#d3b368b31d5b130f4c30cc0c91f9ebb28d9685fc" - integrity sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ== +"@smithy/property-provider@^4.0.5", "@smithy/property-provider@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-4.2.12.tgz#e9f8e5ce125413973b16e39c87cf4acd41324e21" + integrity sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A== dependencies: - "@smithy/types" "^4.3.2" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/protocol-http@^5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-5.1.3.tgz#86855b528c0e4cb9fa6fb4ed6ba3cdf5960f88f4" - integrity sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w== +"@smithy/protocol-http@^5.1.3", "@smithy/protocol-http@^5.3.12": + version "5.3.12" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-5.3.12.tgz#c913053e7dfbac6cdd7f374f0b4f5aa7c518d0e1" + integrity sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw== dependencies: - "@smithy/types" "^4.3.2" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/querystring-builder@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-4.0.5.tgz#158ae170f8ec2d8af6b84cdaf774205a7dfacf68" - integrity sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A== +"@smithy/querystring-builder@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-4.2.12.tgz#20a0266b151a4b58409f901e1463257a72835c16" + integrity sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg== dependencies: - "@smithy/types" "^4.3.2" - "@smithy/util-uri-escape" "^4.0.0" + "@smithy/types" "^4.13.1" + "@smithy/util-uri-escape" "^4.2.2" tslib "^2.6.2" -"@smithy/querystring-parser@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-4.0.5.tgz#95706e56aa769f09dc8922d1b19ffaa06946e252" - integrity sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w== +"@smithy/querystring-parser@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-4.2.12.tgz#918cb609b2d606ab81f2727bfde0265d2ebb2758" + integrity sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw== dependencies: - "@smithy/types" "^4.3.2" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/service-error-classification@^4.0.7": - version "4.0.7" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-4.0.7.tgz#24072198a8c110d29677762162a5096e29eb4862" - integrity sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg== +"@smithy/service-error-classification@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-4.2.12.tgz#795e9484207acf63817a9e9cf67e90b42e720840" + integrity sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ== dependencies: - "@smithy/types" "^4.3.2" + "@smithy/types" "^4.13.1" -"@smithy/shared-ini-file-loader@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.5.tgz#8d8a493276cd82a7229c755bef8d375256c5ebb9" - integrity sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ== +"@smithy/shared-ini-file-loader@^4.0.5", "@smithy/shared-ini-file-loader@^4.4.7": + version "4.4.7" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.7.tgz#18cc5a21f871509fafbe535a7bf44bde5a500727" + integrity sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw== dependencies: - "@smithy/types" "^4.3.2" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/signature-v4@^5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.1.3.tgz#92a4f6e9ce66730eeb0d996cd0478c5cbaf5b3f5" - integrity sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw== - dependencies: - "@smithy/is-array-buffer" "^4.0.0" - "@smithy/protocol-http" "^5.1.3" - "@smithy/types" "^4.3.2" - "@smithy/util-hex-encoding" "^4.0.0" - "@smithy/util-middleware" "^4.0.5" - "@smithy/util-uri-escape" "^4.0.0" - "@smithy/util-utf8" "^4.0.0" +"@smithy/signature-v4@^5.1.3", "@smithy/signature-v4@^5.3.12": + version "5.3.12" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.3.12.tgz#b61ce40a94bdd91dfdd8f5f2136631c8eb67f253" + integrity sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw== + dependencies: + "@smithy/is-array-buffer" "^4.2.2" + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" + "@smithy/util-hex-encoding" "^4.2.2" + "@smithy/util-middleware" "^4.2.12" + "@smithy/util-uri-escape" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/smithy-client@^4.4.10": - version "4.4.10" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.4.10.tgz#c4b49c1d1ff9eb813f88f1e425a5dfac25a03180" - integrity sha512-iW6HjXqN0oPtRS0NK/zzZ4zZeGESIFcxj2FkWed3mcK8jdSdHzvnCKXSjvewESKAgGKAbJRA+OsaqKhkdYRbQQ== - dependencies: - "@smithy/core" "^3.8.0" - "@smithy/middleware-endpoint" "^4.1.18" - "@smithy/middleware-stack" "^4.0.5" - "@smithy/protocol-http" "^5.1.3" - "@smithy/types" "^4.3.2" - "@smithy/util-stream" "^4.2.4" +"@smithy/smithy-client@^4.12.8", "@smithy/smithy-client@^4.4.10": + version "4.12.8" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.12.8.tgz#b2982fe8b72e44621c139045d991555c07df0e1a" + integrity sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA== + dependencies: + "@smithy/core" "^3.23.13" + "@smithy/middleware-endpoint" "^4.4.28" + "@smithy/middleware-stack" "^4.2.12" + "@smithy/protocol-http" "^5.3.12" + "@smithy/types" "^4.13.1" + "@smithy/util-stream" "^4.5.21" tslib "^2.6.2" -"@smithy/types@^4.3.2", "@smithy/types@^4.8.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.8.1.tgz#0ecad4e329340c8844e38a18c7608d84cc1c853c" - integrity sha512-N0Zn0OT1zc+NA+UVfkYqQzviRh5ucWwO7mBV3TmHHprMnfcJNfhlPicDkBHi0ewbh+y3evR6cNAW0Raxvb01NA== +"@smithy/types@^4.13.1", "@smithy/types@^4.3.2": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.13.1.tgz#8aaf15bb0f42b4e7c93c87018a3678a06d74691d" + integrity sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g== dependencies: tslib "^2.6.2" -"@smithy/url-parser@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-4.0.5.tgz#1824a9c108b85322c5a31f345f608d47d06f073a" - integrity sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw== +"@smithy/url-parser@^4.0.5", "@smithy/url-parser@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-4.2.12.tgz#e940557bf0b8e9a25538a421970f64bd827f456f" + integrity sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA== dependencies: - "@smithy/querystring-parser" "^4.0.5" - "@smithy/types" "^4.3.2" + "@smithy/querystring-parser" "^4.2.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/util-base64@^4.0.0", "@smithy/util-base64@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-4.3.0.tgz#5e287b528793aa7363877c1a02cd880d2e76241d" - integrity sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ== +"@smithy/util-base64@^4.0.0", "@smithy/util-base64@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-4.3.2.tgz#be02bcb29a87be744356467ea25ffa413e695cea" + integrity sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ== dependencies: - "@smithy/util-buffer-from" "^4.2.0" - "@smithy/util-utf8" "^4.2.0" + "@smithy/util-buffer-from" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/util-body-length-browser@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz#965d19109a4b1e5fe7a43f813522cce718036ded" - integrity sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA== +"@smithy/util-body-length-browser@^4.0.0", "@smithy/util-body-length-browser@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz#c4404277d22039872abdb80e7800f9a63f263862" + integrity sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ== dependencies: tslib "^2.6.2" -"@smithy/util-body-length-node@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz#3db245f6844a9b1e218e30c93305bfe2ffa473b3" - integrity sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg== +"@smithy/util-body-length-node@^4.0.0", "@smithy/util-body-length-node@^4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz#f923ca530defb86a9ac3ca2d3066bcca7b304fbc" + integrity sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g== dependencies: tslib "^2.6.2" @@ -7014,96 +7315,95 @@ "@smithy/is-array-buffer" "^2.2.0" tslib "^2.6.2" -"@smithy/util-buffer-from@^4.0.0", "@smithy/util-buffer-from@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz#7abd12c4991b546e7cee24d1e8b4bfaa35c68a9d" - integrity sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew== +"@smithy/util-buffer-from@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz#2c6b7857757dfd88f6cd2d36016179a40ccc913b" + integrity sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q== dependencies: - "@smithy/is-array-buffer" "^4.2.0" + "@smithy/is-array-buffer" "^4.2.2" tslib "^2.6.2" -"@smithy/util-config-provider@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz#e0c7c8124c7fba0b696f78f0bd0ccb060997d45e" - integrity sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w== +"@smithy/util-config-provider@^4.0.0", "@smithy/util-config-provider@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz#52ebf9d8942838d18bc5fb1520de1e8699d7aad6" + integrity sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ== dependencies: tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^4.0.26": - version "4.0.26" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.26.tgz#fc04cd466bbb0d80e41930af8d6a8c33c48490f2" - integrity sha512-xgl75aHIS/3rrGp7iTxQAOELYeyiwBu+eEgAk4xfKwJJ0L8VUjhO2shsDpeil54BOFsqmk5xfdesiewbUY5tKQ== +"@smithy/util-defaults-mode-browser@^4.0.26", "@smithy/util-defaults-mode-browser@^4.3.44": + version "4.3.44" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.44.tgz#56c0c69415c7a28aaa65c1407b1c090401a38182" + integrity sha512-eZg6XzaCbVr2S5cAErU5eGBDaOVTuTo1I65i4tQcHENRcZ8rMWhQy1DaIYUSLyZjsfXvmCqZrstSMYyGFocvHA== dependencies: - "@smithy/property-provider" "^4.0.5" - "@smithy/smithy-client" "^4.4.10" - "@smithy/types" "^4.3.2" - bowser "^2.11.0" + "@smithy/property-provider" "^4.2.12" + "@smithy/smithy-client" "^4.12.8" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^4.0.26": - version "4.0.26" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.26.tgz#adfee8c54301ec4cbabed58cd604995a81b4a8dc" - integrity sha512-z81yyIkGiLLYVDetKTUeCZQ8x20EEzvQjrqJtb/mXnevLq2+w3XCEWTJ2pMp401b6BkEkHVfXb/cROBpVauLMQ== - dependencies: - "@smithy/config-resolver" "^4.1.5" - "@smithy/credential-provider-imds" "^4.0.7" - "@smithy/node-config-provider" "^4.1.4" - "@smithy/property-provider" "^4.0.5" - "@smithy/smithy-client" "^4.4.10" - "@smithy/types" "^4.3.2" +"@smithy/util-defaults-mode-node@^4.0.26", "@smithy/util-defaults-mode-node@^4.2.48": + version "4.2.48" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.48.tgz#8ee63e2ea706bd111104e8f3796d858cc186625f" + integrity sha512-FqOKTlqSaoV3nzO55pMs5NBnZX8EhoI0DGmn9kbYeXWppgHD6dchyuj2HLqp4INJDJbSrj6OFYJkAh/WhSzZPg== + dependencies: + "@smithy/config-resolver" "^4.4.13" + "@smithy/credential-provider-imds" "^4.2.12" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/property-provider" "^4.2.12" + "@smithy/smithy-client" "^4.12.8" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/util-endpoints@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-3.0.7.tgz#9d52f2e7e7a1ea4814ae284270a5f1d3930b3773" - integrity sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ== +"@smithy/util-endpoints@^3.0.7", "@smithy/util-endpoints@^3.3.3": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-3.3.3.tgz#0119f15bcac30b3b9af1d3cc0a8477e7199d0185" + integrity sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig== dependencies: - "@smithy/node-config-provider" "^4.1.4" - "@smithy/types" "^4.3.2" + "@smithy/node-config-provider" "^4.3.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/util-hex-encoding@^4.0.0", "@smithy/util-hex-encoding@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz#1c22ea3d1e2c3a81ff81c0a4f9c056a175068a7b" - integrity sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw== +"@smithy/util-hex-encoding@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz#4abf3335dd1eb884041d8589ca7628d81a6fd1d3" + integrity sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg== dependencies: tslib "^2.6.2" -"@smithy/util-middleware@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-4.0.5.tgz#405caf2a66e175ce8ca6c747fa1245b3f5386879" - integrity sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ== +"@smithy/util-middleware@^4.0.5", "@smithy/util-middleware@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-4.2.12.tgz#d6cb837c2390375e2b6957e7f917350ca4bd8757" + integrity sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ== dependencies: - "@smithy/types" "^4.3.2" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/util-retry@^4.0.7": - version "4.0.7" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-4.0.7.tgz#3169450193e917da170a87557fcbdfe0faa86779" - integrity sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ== +"@smithy/util-retry@^4.0.7", "@smithy/util-retry@^4.2.13": + version "4.2.13" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-4.2.13.tgz#ad816d6ddf197095d188e9ef56664fbd392a39c9" + integrity sha512-qQQsIvL0MGIbUjeSrg0/VlQ3jGNKyM3/2iU3FPNgy01z+Sp4OvcaxbgIoFOTvB61ZoohtutuOvOcgmhbD0katQ== dependencies: - "@smithy/service-error-classification" "^4.0.7" - "@smithy/types" "^4.3.2" + "@smithy/service-error-classification" "^4.2.12" + "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/util-stream@^4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-4.2.4.tgz#fa9f0e2fd5a8a5adbd013066b475ea8f9d4f900f" - integrity sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ== - dependencies: - "@smithy/fetch-http-handler" "^5.1.1" - "@smithy/node-http-handler" "^4.1.1" - "@smithy/types" "^4.3.2" - "@smithy/util-base64" "^4.0.0" - "@smithy/util-buffer-from" "^4.0.0" - "@smithy/util-hex-encoding" "^4.0.0" - "@smithy/util-utf8" "^4.0.0" +"@smithy/util-stream@^4.2.4", "@smithy/util-stream@^4.5.21": + version "4.5.21" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-4.5.21.tgz#a9ea13d0299d030c72ab4b4e394db111cd581629" + integrity sha512-KzSg+7KKywLnkoKejRtIBXDmwBfjGvg1U1i/etkC7XSWUyFCoLno1IohV2c74IzQqdhX5y3uE44r/8/wuK+A7Q== + dependencies: + "@smithy/fetch-http-handler" "^5.3.15" + "@smithy/node-http-handler" "^4.5.1" + "@smithy/types" "^4.13.1" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-buffer-from" "^4.2.2" + "@smithy/util-hex-encoding" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/util-uri-escape@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz#a96c160c76f3552458a44d8081fade519d214737" - integrity sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg== +"@smithy/util-uri-escape@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz#48e40206e7fe9daefc8d44bb43a1ab17e76abf4a" + integrity sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw== dependencies: tslib "^2.6.2" @@ -7115,21 +7415,27 @@ "@smithy/util-buffer-from" "^2.2.0" tslib "^2.6.2" -"@smithy/util-utf8@^4.0.0", "@smithy/util-utf8@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-4.2.0.tgz#8b19d1514f621c44a3a68151f3d43e51087fed9d" - integrity sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw== +"@smithy/util-utf8@^4.0.0", "@smithy/util-utf8@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-4.2.2.tgz#21db686982e6f3393ac262e49143b42370130f13" + integrity sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw== dependencies: - "@smithy/util-buffer-from" "^4.2.0" + "@smithy/util-buffer-from" "^4.2.2" tslib "^2.6.2" -"@smithy/util-waiter@^4.0.7": - version "4.0.7" - resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-4.0.7.tgz#c013cf6a5918c21f8b430b4a825dbac132163f4a" - integrity sha512-mYqtQXPmrwvUljaHyGxYUIIRI3qjBTEb/f5QFi3A6VlxhpmZd5mWXn9W+qUkf2pVE1Hv3SqxefiZOPGdxmO64A== +"@smithy/util-waiter@^4.0.7", "@smithy/util-waiter@^4.2.14": + version "4.2.14" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-4.2.14.tgz#73dc3602371ea7e48dd7adae1b97b4825e3fb922" + integrity sha512-2zqq5o/oizvMaFUlNiTyZ7dbgYv1a893aGut2uaxtbzTx/VYYnRxWzDHuD/ftgcw94ffenua+ZNLrbqwUYE+Bg== + dependencies: + "@smithy/types" "^4.13.1" + tslib "^2.6.2" + +"@smithy/uuid@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@smithy/uuid/-/uuid-1.1.2.tgz#b6e97c7158615e4a3c775e809c00d8c269b5a12e" + integrity sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g== dependencies: - "@smithy/abort-controller" "^4.0.5" - "@smithy/types" "^4.3.2" tslib "^2.6.2" "@socket.io/component-emitter@~3.1.0": @@ -10211,10 +10517,10 @@ "@types/node" "*" "@types/ssh2" "*" -"@types/dockerode@3.3.44": - version "3.3.44" - resolved "https://registry.yarnpkg.com/@types/dockerode/-/dockerode-3.3.44.tgz#1e6d5b291646820e9daabfa132cdb33c9d535b56" - integrity sha512-fUpIHlsbYpxAJb285xx3vp7q5wf5mjqSn3cYwl/MhiM+DB99OdO5sOCPlO0PjO+TyOtphPs7tMVLU/RtOo/JjA== +"@types/dockerode@3.3.47": + version "3.3.47" + resolved "https://registry.yarnpkg.com/@types/dockerode/-/dockerode-3.3.47.tgz#cf8c6b4efcd0bb28b0e6009e613e7faab1b96e75" + integrity sha512-ShM1mz7rCjdssXt7Xz0u1/R2BJC7piWa3SJpUBiVjCf2A3XNn4cP6pUVaD8bLanpPVVn4IKzJuw3dOvkJ8IbYw== dependencies: "@types/docker-modem" "*" "@types/node" "*" @@ -10473,10 +10779,10 @@ dependencies: undici-types "~7.10.0" -"@types/node@22.18.10": - version "22.18.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.18.10.tgz#37f0ac8d2ec41af7bba06f162c85ff409e4e3420" - integrity sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg== +"@types/node@22.19.16": + version "22.19.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.16.tgz#b574ab601777831f41003d5c1976dd2c2749e75b" + integrity sha512-K6csxIjY+9RoDxdP6/wzaJzXaCf4znBz0/y0rrQDsbqmzQ5QFsOjubbsYWZhj6ZCgz3mjlyDZS+EJkhA9jWl9Q== dependencies: undici-types "~6.21.0" @@ -10492,12 +10798,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.61.tgz#29f124eddd41c4c74281bd0b455d689109fc2a2d" integrity sha512-/aKAdg5c8n468cYLy2eQrcR5k6chlbNwZNGUj3TboyPa2hcO2QAJcfymlqPzMiRj8B6nYKXjzQz36minFE0RwQ== -"@types/nodemailer@6.4.20": - version "6.4.20" - resolved "https://registry.yarnpkg.com/@types/nodemailer/-/nodemailer-6.4.20.tgz#f597b5f3848f498d259353de41af71a39373765d" - integrity sha512-uj83z0GqwqMUE6RI4EKptPlav0FYE6vpIlqJAnxzu+/sSezRdbH69rSBCMsdW6DdsCAzoFQZ52c2UIlhRVQYDA== +"@types/nodemailer@6.4.23": + version "6.4.23" + resolved "https://registry.yarnpkg.com/@types/nodemailer/-/nodemailer-6.4.23.tgz#2d6048342b66b804ae0c1e75b756321a2be043e2" + integrity sha512-aFV3/NsYFLSx9mbb5gtirBSXJnAlrusoKNuPbxsASWc7vrKLmIrTQRpdcxNcSFL3VW2A2XpeLEavwb2qMi6nlQ== dependencies: - "@aws-sdk/client-ses" "^3.731.1" "@types/node" "*" "@types/normalize-package-data@^2.4.0": @@ -10589,13 +10894,13 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@18.3.26": - version "18.3.26" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.26.tgz#4c5970878d30db3d2a0bca1e4eb5f258e391bbeb" - integrity sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA== +"@types/react@*", "@types/react@18.3.28": + version "18.3.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.28.tgz#0a85b1a7243b4258d9f626f43797ba18eb5f8781" + integrity sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw== dependencies: "@types/prop-types" "*" - csstype "^3.0.2" + csstype "^3.2.2" "@types/react@^17": version "17.0.53" @@ -10725,10 +11030,10 @@ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.7.tgz#b14cebc75455eeeb160d5fe23c2fcc0c64f724d8" integrity sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g== -"@types/validator@13.15.3": - version "13.15.3" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.15.3.tgz#67e8aeacbace03517f9bd3f99e750bb666207ff4" - integrity sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q== +"@types/validator@13.15.10": + version "13.15.10" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.15.10.tgz#742b77ec34d58554b94a76a14cef30d59e3c16b9" + integrity sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA== "@types/yargs-parser@*": version "21.0.0" @@ -16497,10 +16802,10 @@ cssstyle@^6.0.1: css-tree "^3.1.0" lru-cache "^11.2.6" -csstype@^3.0.2, csstype@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +csstype@^3.0.2, csstype@^3.1.3, csstype@^3.2.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a" + integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== csv-writer@1.6.0: version "1.6.0" @@ -20461,6 +20766,13 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== +fast-xml-builder@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz#0c407a1d9d5996336c0cd76f7ff785cac6413017" + integrity sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg== + dependencies: + path-expression-matcher "^1.1.3" + fast-xml-parser@5.2.5: version "5.2.5" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz#4809fdfb1310494e341098c25cb1341a01a9144a" @@ -20468,6 +20780,15 @@ fast-xml-parser@5.2.5: dependencies: strnum "^2.1.0" +fast-xml-parser@5.5.8: + version "5.5.8" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz#929571ed8c5eb96e6d9bd572ba14fc4b84875716" + integrity sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ== + dependencies: + fast-xml-builder "^1.1.4" + path-expression-matcher "^1.2.0" + strnum "^2.2.0" + fastboot-transform@^0.1.2, fastboot-transform@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/fastboot-transform/-/fastboot-transform-0.1.3.tgz#7dea0b117594afd8772baa6c9b0919644e7f7dcd" @@ -28341,6 +28662,11 @@ path-exists@^5.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== +path-expression-matcher@^1.1.3, path-expression-matcher@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.2.1.tgz#04de63e98dcef3e07af8b12a41055466f200e291" + integrity sha512-d7gQQmLvAKXKXE2GeP9apIGbMYKz88zWdsn/BN2HRWVQsDFdUY36WSLTY0Jvd4HWi7Fb30gQ62oAOzdgJA6fZw== + path-is-absolute@1.0.1, path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -30404,10 +30730,10 @@ react-error-boundary@^3.1.0: dependencies: "@babel/runtime" "^7.12.5" -react-hook-form@7.65.0: - version "7.65.0" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.65.0.tgz#6139dac77ed1081d0178b6830dc6f5ff6ff86361" - integrity sha512-xtOzDz063WcXvGWaHgLNrNzlsdFgtUWcb32E6WFaGTd7kPZG3EeDusjdZfUsPwKCKVXy1ZlntifaHZ4l8pAsmw== +react-hook-form@7.72.1: + version "7.72.1" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.72.1.tgz#19a8bbeaf685934f4c9fc422294cc730ade2780e" + integrity sha512-RhwBoy2ygeVZje+C+bwJ8g0NjTdBmDlJvAUHTxRjTmSUKPYsKfMphkS2sgEMotsY03bP358yEYlnUeZy//D9Ig== react-hot-toast@2.6.0: version "2.6.0" @@ -30467,10 +30793,10 @@ react-remove-scroll@^2.6.3: use-callback-ref "^1.3.3" use-sidecar "^1.1.3" -react-router@7.9.4: - version "7.9.4" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.9.4.tgz#2c4249e5d0a6bb8b8f6bf0ede8f5077e4ff8024f" - integrity sha512-SD3G8HKviFHg9xj7dNODUKDFgpG4xqD5nhyd0mYoB5iISepuZAvzSr8ywxgxKJ52yRzf/HWtVHc9AWwoTbljvA== +react-router@7.14.0: + version "7.14.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.14.0.tgz#33169c9ac03b298bb51aad13e038ba548c79a862" + integrity sha512-m/xR9N4LQLmAS0ZhkY2nkPA1N7gQ5TUVa5n8TgANuDTARbn1gt+zLPXEm7W0XDTbrQ2AJSJKhoa6yx1D8BcpxQ== dependencies: cookie "^1.0.1" set-cookie-parser "^2.6.0" @@ -33036,10 +33362,10 @@ stripe@8.222.0: "@types/node" ">=8.1.0" qs "^6.10.3" -strnum@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.1.1.tgz#cf2a6e0cf903728b8b2c4b971b7e36b4e82d46ab" - integrity sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw== +strnum@^2.1.0, strnum@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.2.2.tgz#f11fd94ab62b536ba2ecc615858f3747c2881b3f" + integrity sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA== strtok3@^6.2.4: version "6.3.0" @@ -34876,7 +35202,7 @@ uuid@^8.3.1, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.0, uuid@^9.0.1: +uuid@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== @@ -35127,10 +35453,10 @@ vite-tsconfig-paths@5.1.4: globrex "^0.1.2" tsconfck "^3.0.3" -vite@5.4.20, vite@^5.0.0: - version "5.4.20" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.20.tgz#3267a5e03f21212f44edfd72758138e8fcecd76a" - integrity sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g== +vite@5.4.21, vite@^5.0.0: + version "5.4.21" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.21.tgz#84a4f7c5d860b071676d39ba513c0d598fdc7027" + integrity sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw== dependencies: esbuild "^0.21.3" postcss "^8.4.43"