for MPP-2822: add gtag to Layout
This commit is contained in:
Родитель
a624f3b41a
Коммит
25a3d3b77c
|
@ -4,6 +4,7 @@ FXA_PROFILE_ENDPOINT=https://profile.stage.mozaws.net/v1
|
||||||
FXA_BASE_ORIGIN=https://accounts.stage.mozaws.net
|
FXA_BASE_ORIGIN=https://accounts.stage.mozaws.net
|
||||||
FXA_ACCOUNTS_ENDPOINT=https://api-accounts.stage.mozaws.net/v1
|
FXA_ACCOUNTS_ENDPOINT=https://api-accounts.stage.mozaws.net/v1
|
||||||
GOOGLE_ANALYTICS_ID="UA-77033033-33"
|
GOOGLE_ANALYTICS_ID="UA-77033033-33"
|
||||||
|
GA4_MEASUREMENT_ID="G-YXT33S87LT"
|
||||||
GOOGLE_APPLICATION_CREDENTIALS="gcp_key.json"
|
GOOGLE_APPLICATION_CREDENTIALS="gcp_key.json"
|
||||||
GOOGLE_CLOUD_PROFILER_CREDENTIALS_B64=""
|
GOOGLE_CLOUD_PROFILER_CREDENTIALS_B64=""
|
||||||
BASKET_ORIGIN="https://basket-dev.allizom.org"
|
BASKET_ORIGIN="https://basket-dev.allizom.org"
|
||||||
|
|
151
METRICS.md
151
METRICS.md
|
@ -41,6 +41,7 @@ This is the Analytics plan for Firefox Relay. It documents our use of Google Ana
|
||||||
|
|
||||||
|
|
||||||
## Extension Event Collection
|
## Extension Event Collection
|
||||||
|
|
||||||
Events are reported using [Google Analytics Measurement Protocol](https://developers.google.com/analytics/devguides/collection/protocol/v1).
|
Events are reported using [Google Analytics Measurement Protocol](https://developers.google.com/analytics/devguides/collection/protocol/v1).
|
||||||
|
|
||||||
We collect data for the following extension events:
|
We collect data for the following extension events:
|
||||||
|
@ -59,7 +60,6 @@ We collect data for the following extension events:
|
||||||
|
|
||||||
- When panel navigation arrow icons are clicked
|
- When panel navigation arrow icons are clicked
|
||||||
|
|
||||||
|
|
||||||
### In-page events:
|
### In-page events:
|
||||||
|
|
||||||
- When the Relay icon is injected into an email input
|
- When the Relay icon is injected into an email input
|
||||||
|
@ -78,12 +78,10 @@ We collect data for the following extension events:
|
||||||
|
|
||||||
- When the user clicks an outbound link or button
|
- When the user clicks an outbound link or button
|
||||||
|
|
||||||
|
|
||||||
### Context Menu events:
|
### Context Menu events:
|
||||||
|
|
||||||
- When an alias is generated via the context menu
|
- When an alias is generated via the context menu
|
||||||
|
|
||||||
|
|
||||||
### Modal events:
|
### Modal events:
|
||||||
|
|
||||||
- When the modal opens
|
- When the modal opens
|
||||||
|
@ -92,13 +90,11 @@ We collect data for the following extension events:
|
||||||
|
|
||||||
- When "Manage All Aliases" is clicked
|
- When "Manage All Aliases" is clicked
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Website Event Collection
|
## Website Event Collection
|
||||||
|
|
||||||
Events are reported using [Google Analytics](https://developers.google.com/analytics/devguides/collection/analyticsjs).
|
Events are reported using [Google Analytics](https://developers.google.com/analytics/devguides/collection/ga4).
|
||||||
|
|
||||||
We collect data for the following events:
|
We collect data for the following events:
|
||||||
|
|
||||||
|
@ -116,120 +112,125 @@ We collect data for the following events:
|
||||||
|
|
||||||
- When a user changes the forwarding settings for an alias
|
- When a user changes the forwarding settings for an alias
|
||||||
|
|
||||||
|
|
||||||
### Sign Up Buttons & Links
|
### Sign Up Buttons & Links
|
||||||
|
|
||||||
**`Sign In Button`** - **`Add to Firefox Button`** - **`Join the Waitlist Button`**
|
**`Sign In Button`** - **`Add to Firefox Button`** - **`Join the Waitlist Button`**
|
||||||
|
|
||||||
- When a button appears on the page
|
- When a button appears on the page
|
||||||
* `hitType` : event
|
|
||||||
* `eventCategory` : Button ID
|
- `hitType` : event
|
||||||
* `eventAction` : View
|
- `eventCategory` : Button ID
|
||||||
* `eventLabel` : Page location ID.
|
- `eventAction` : View
|
||||||
|
- `eventLabel` : Page location ID.
|
||||||
|
|
||||||
- When a user clicks a link or button.
|
- When a user clicks a link or button.
|
||||||
* `hitType` : event
|
- `hitType` : event
|
||||||
* `eventCategory` : Button or Link ID
|
- `eventCategory` : Button or Link ID
|
||||||
* `eventAction` : Engage
|
- `eventAction` : Engage
|
||||||
* `eventLabel` : Page location ID.
|
- `eventLabel` : Page location ID.
|
||||||
|
|
||||||
|
|
||||||
### Firefox Apps menu (referred to internally as the Bento menu)
|
### Firefox Apps menu (referred to internally as the Bento menu)
|
||||||
|
|
||||||
- When a user opens the Firefox Apps menu
|
- When a user opens the Firefox Apps menu
|
||||||
* `hitType` : event
|
|
||||||
* `eventCategory` : bento
|
- `hitType` : event
|
||||||
* `eventAction` : bento-opened
|
- `eventCategory` : bento
|
||||||
* `eventLabel` : fx-monitor
|
- `eventAction` : bento-opened
|
||||||
|
- `eventLabel` : fx-monitor
|
||||||
|
|
||||||
- When a user closes the Firefox Apps menu
|
- When a user closes the Firefox Apps menu
|
||||||
* `hitType` : event
|
|
||||||
* `eventCategory` : bento
|
- `hitType` : event
|
||||||
* `eventAction` : bento-closed
|
- `eventCategory` : bento
|
||||||
* `eventLabel` : fx-monitor
|
- `eventAction` : bento-closed
|
||||||
|
- `eventLabel` : fx-monitor
|
||||||
|
|
||||||
- When a user clicks on one of the Firefox Apps menu links
|
- When a user clicks on one of the Firefox Apps menu links
|
||||||
* `hitType` : event
|
- `hitType` : event
|
||||||
* `eventCategory` : bento
|
- `eventCategory` : bento
|
||||||
* `eventAction` : bento-app-link-click
|
- `eventAction` : bento-app-link-click
|
||||||
* `eventLabel` : link identifier
|
- `eventLabel` : link identifier
|
||||||
|
|
||||||
### Interview recruitment
|
### Interview recruitment
|
||||||
|
|
||||||
(This is only shown occasionally, when we're trying to recruit people to join in user research.)
|
(This is only shown occasionally, when we're trying to recruit people to join in user research.)
|
||||||
|
|
||||||
- When the recruitment link appears on the page
|
- When the recruitment link appears on the page
|
||||||
* `hitType` : event
|
|
||||||
* `eventCategory` : Recruitment
|
- `hitType` : event
|
||||||
* `eventAction` : View
|
- `eventCategory` : Recruitment
|
||||||
* `eventLabel` : Recruitment text
|
- `eventAction` : View
|
||||||
|
- `eventLabel` : Recruitment text
|
||||||
|
|
||||||
- When the recruitment link is clicked
|
- When the recruitment link is clicked
|
||||||
* `hitType` : event
|
- `hitType` : event
|
||||||
* `eventCategory` : Recruitment
|
- `eventCategory` : Recruitment
|
||||||
* `eventAction` : Engage
|
- `eventAction` : Engage
|
||||||
* `eventLabel` : Recruitment text
|
- `eventLabel` : Recruitment text
|
||||||
|
|
||||||
### Net Promoter Score (NPS)/Customer Satisfaction (CSAT) surveys
|
### Net Promoter Score (NPS)/Customer Satisfaction (CSAT) surveys
|
||||||
|
|
||||||
- When a CSAT survey answer is selected
|
- When a CSAT survey answer is selected
|
||||||
* `hitType` : event
|
|
||||||
* `eventCategory` : CSAT Survey
|
- `hitType` : event
|
||||||
* `eventAction` : submitted
|
- `eventCategory` : CSAT Survey
|
||||||
* `eventLabel` : The given answer
|
- `eventAction` : submitted
|
||||||
* `value` : A numeric value representing the given answer
|
- `eventLabel` : The given answer
|
||||||
* `dimension3` : Whether the given answer respresents satisfaction, neutral feeling, or dissastisfaction.
|
- `value` : A numeric value representing the given answer
|
||||||
* `dimension4` : The given answer
|
- `dimension3` : Whether the given answer respresents satisfaction, neutral feeling, or dissastisfaction.
|
||||||
* `metric10` : Always "1" (to count the number of answers)
|
- `dimension4` : The given answer
|
||||||
* `metric11` : A numeric value representing `dimenstion4`
|
- `metric10` : Always "1" (to count the number of answers)
|
||||||
* `metric12` : A numeric value representing `dimenstion3`
|
- `metric11` : A numeric value representing `dimenstion4`
|
||||||
|
- `metric12` : A numeric value representing `dimenstion3`
|
||||||
|
|
||||||
- When an NPS survey answer is selected
|
- When an NPS survey answer is selected
|
||||||
* `hitType` : event
|
- `hitType` : event
|
||||||
* `eventCategory` : NPS Survey
|
- `eventCategory` : NPS Survey
|
||||||
* `eventAction` : submitted
|
- `eventAction` : submitted
|
||||||
* `eventLabel` : A label for the category of the given answer
|
- `eventLabel` : A label for the category of the given answer
|
||||||
* `value` : A numeric value representing the given answer
|
- `value` : A numeric value representing the given answer
|
||||||
* `dimension1` : A label for the category of the given answer
|
- `dimension1` : A label for the category of the given answer
|
||||||
* `metric10` : Always "1" (to count the number of answers)
|
- `metric10` : Always "1" (to count the number of answers)
|
||||||
* `metric11` : The given answer
|
- `metric11` : The given answer
|
||||||
* `metric12` : A numeric value representing the category of the given answer
|
- `metric12` : A numeric value representing the category of the given answer
|
||||||
|
|
||||||
### Banners
|
### Banners
|
||||||
|
|
||||||
- When a user clicks the link in one of the banners
|
- When a user clicks the link in one of the banners
|
||||||
* `hitType` : event
|
- `hitType` : event
|
||||||
* `eventCategory` : Outbound
|
- `eventCategory` : Outbound
|
||||||
* `eventAction` : Click
|
- `eventAction` : Click
|
||||||
* `eventLabel` : link content
|
- `eventLabel` : link content
|
||||||
|
|
||||||
### Links to upgrade to Premium
|
### Links to upgrade to Premium
|
||||||
|
|
||||||
- When the link appears on the page
|
- When the link appears on the page
|
||||||
* `hitType` : event
|
|
||||||
* `eventCategory` : Purchase Button
|
- `hitType` : event
|
||||||
* `eventAction` : View
|
- `eventCategory` : Purchase Button
|
||||||
* `eventLabel` : link identifier
|
- `eventAction` : View
|
||||||
|
- `eventLabel` : link identifier
|
||||||
|
|
||||||
- When a user clicks the link
|
- When a user clicks the link
|
||||||
* `hitType` : event
|
- `hitType` : event
|
||||||
* `eventCategory` : Purchase Button
|
- `eventCategory` : Purchase Button
|
||||||
* `eventAction` : Engage
|
- `eventAction` : Engage
|
||||||
* `eventLabel` : link identifier
|
- `eventLabel` : link identifier
|
||||||
|
|
||||||
### The onboarding flow for new Premium subscribers
|
### The onboarding flow for new Premium subscribers
|
||||||
|
|
||||||
- When a button/link to continue to the next step scrolls into view
|
- When a button/link to continue to the next step scrolls into view
|
||||||
* `hitType` : event
|
|
||||||
* `eventCategory` : Premium Onboarding
|
- `hitType` : event
|
||||||
* `eventAction` : View
|
- `eventCategory` : Premium Onboarding
|
||||||
* `eventLabel` : link identifier
|
- `eventAction` : View
|
||||||
|
- `eventLabel` : link identifier
|
||||||
|
|
||||||
- When a user clicks a button/link to continue to the next step
|
- When a user clicks a button/link to continue to the next step
|
||||||
* `hitType` : event
|
- `hitType` : event
|
||||||
* `eventCategory` : Premium Onboarding
|
- `eventCategory` : Premium Onboarding
|
||||||
* `eventAction` : Engage
|
- `eventAction` : Engage
|
||||||
* `eventLabel` : link identifier
|
- `eventLabel` : link identifier
|
||||||
|
|
||||||
## Opt Out of Google Analytics Tracking
|
## Opt Out of Google Analytics Tracking
|
||||||
|
|
||||||
|
|
|
@ -200,6 +200,7 @@ def _get_example_plan(plan: Literal["premium", "phones", "bundle"]) -> dict[str,
|
||||||
"FXA_ORIGIN": "https://accounts.firefox.com",
|
"FXA_ORIGIN": "https://accounts.firefox.com",
|
||||||
"PERIODICAL_PREMIUM_PRODUCT_ID": "prod_XXXXXXXXXXXXXX",
|
"PERIODICAL_PREMIUM_PRODUCT_ID": "prod_XXXXXXXXXXXXXX",
|
||||||
"GOOGLE_ANALYTICS_ID": "UA-########-##",
|
"GOOGLE_ANALYTICS_ID": "UA-########-##",
|
||||||
|
"GA4_MEASUREMENT_ID": "G-XXXXXXXXX",
|
||||||
"BUNDLE_PRODUCT_ID": "prod_XXXXXXXXXXXXXX",
|
"BUNDLE_PRODUCT_ID": "prod_XXXXXXXXXXXXXX",
|
||||||
"PHONE_PRODUCT_ID": "prod_XXXXXXXXXXXXXX",
|
"PHONE_PRODUCT_ID": "prod_XXXXXXXXXXXXXX",
|
||||||
"PERIODICAL_PREMIUM_PLANS": _get_example_plan("premium"),
|
"PERIODICAL_PREMIUM_PLANS": _get_example_plan("premium"),
|
||||||
|
@ -235,6 +236,7 @@ def runtime_data(request):
|
||||||
"FXA_ORIGIN": settings.FXA_BASE_ORIGIN,
|
"FXA_ORIGIN": settings.FXA_BASE_ORIGIN,
|
||||||
"PERIODICAL_PREMIUM_PRODUCT_ID": settings.PERIODICAL_PREMIUM_PROD_ID,
|
"PERIODICAL_PREMIUM_PRODUCT_ID": settings.PERIODICAL_PREMIUM_PROD_ID,
|
||||||
"GOOGLE_ANALYTICS_ID": settings.GOOGLE_ANALYTICS_ID,
|
"GOOGLE_ANALYTICS_ID": settings.GOOGLE_ANALYTICS_ID,
|
||||||
|
"GA4_MEASUREMENT_ID": settings.GA4_MEASUREMENT_ID,
|
||||||
"BUNDLE_PRODUCT_ID": settings.BUNDLE_PROD_ID,
|
"BUNDLE_PRODUCT_ID": settings.BUNDLE_PROD_ID,
|
||||||
"PHONE_PRODUCT_ID": settings.PHONE_PROD_ID,
|
"PHONE_PRODUCT_ID": settings.PHONE_PROD_ID,
|
||||||
"PERIODICAL_PREMIUM_PLANS": get_countries_info_from_request_and_mapping(
|
"PERIODICAL_PREMIUM_PLANS": get_countries_info_from_request_and_mapping(
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
"@fluent/langneg": "^0.7.0",
|
"@fluent/langneg": "^0.7.0",
|
||||||
"@fluent/react": "^0.15.2",
|
"@fluent/react": "^0.15.2",
|
||||||
"@mozilla-protocol/core": "^17.0.1",
|
"@mozilla-protocol/core": "^17.0.1",
|
||||||
|
"@next/third-parties": "^14.2.4",
|
||||||
"@stripe/stripe-js": "^3.5.0",
|
"@stripe/stripe-js": "^3.5.0",
|
||||||
"chokidar-cli": "^3.0.0",
|
"chokidar-cli": "^3.0.0",
|
||||||
"cldr-localenames-modern": "^45.0.0",
|
"cldr-localenames-modern": "^45.0.0",
|
||||||
|
|
|
@ -13,6 +13,7 @@ export const mockedRuntimeData: RuntimeData = {
|
||||||
FXA_ORIGIN: "https://fxa-mock.com",
|
FXA_ORIGIN: "https://fxa-mock.com",
|
||||||
BASKET_ORIGIN: "https://basket-mock.com",
|
BASKET_ORIGIN: "https://basket-mock.com",
|
||||||
GOOGLE_ANALYTICS_ID: "UA-123456789-0",
|
GOOGLE_ANALYTICS_ID: "UA-123456789-0",
|
||||||
|
GA4_MEASUREMENT_ID: "G-YXT33S87LT",
|
||||||
PERIODICAL_PREMIUM_PRODUCT_ID: "prod_123456789",
|
PERIODICAL_PREMIUM_PRODUCT_ID: "prod_123456789",
|
||||||
PHONE_PRODUCT_ID: "prod_123456789",
|
PHONE_PRODUCT_ID: "prod_123456789",
|
||||||
BUNDLE_PRODUCT_ID: "prod_123456789",
|
BUNDLE_PRODUCT_ID: "prod_123456789",
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
// Based on: https://github.com/mozilla/blurts-server/blob/8fb1587f1af40b25fed455c79faf138c4be2d0d6/src/app/components/client/GoogleAnalyticsWorkaround.tsx
|
||||||
|
// License for this specific file:
|
||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2024 Vercel, Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use client";
|
||||||
|
|
||||||
|
import { GAParams } from "@next/third-parties/dist/types/google";
|
||||||
|
import Script, { ScriptProps } from "next/script";
|
||||||
|
import { useEffect } from "react";
|
||||||
|
|
||||||
|
// We don't send Analytics events in tests:
|
||||||
|
/* c8 ignore start */
|
||||||
|
|
||||||
|
let currDataLayerName: string | undefined = undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component is based on <GoogleAnalytics> from `@next/third-parties`, but accepting a nonce
|
||||||
|
*
|
||||||
|
* @param props
|
||||||
|
*/
|
||||||
|
export const GoogleAnalyticsWorkaround = (
|
||||||
|
props: GAParams & { nonce?: ScriptProps["nonce"]; debugMode?: boolean },
|
||||||
|
) => {
|
||||||
|
const { gaId, dataLayerName = "dataLayer", nonce, debugMode } = props;
|
||||||
|
|
||||||
|
if (currDataLayerName === undefined) {
|
||||||
|
currDataLayerName = dataLayerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (typeof performance.mark !== "function") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// performance.mark is being used as a feature use signal. While it is traditionally used for performance
|
||||||
|
// benchmarking it is low overhead and thus considered safe to use in production and it is a widely available
|
||||||
|
// existing API.
|
||||||
|
// The performance measurement will be handled by Chrome Aurora
|
||||||
|
|
||||||
|
performance.mark("mark_feature_usage", {
|
||||||
|
detail: {
|
||||||
|
feature: "next-third-parties-ga",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Script
|
||||||
|
id="_next-ga-init"
|
||||||
|
dangerouslySetInnerHTML={{
|
||||||
|
__html: `
|
||||||
|
window['${dataLayerName}'] = window['${dataLayerName}'] || [];
|
||||||
|
function gtag(){window['${dataLayerName}'].push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
|
||||||
|
gtag('config', '${gaId}', { 'debug_mode': ${debugMode} });`,
|
||||||
|
}}
|
||||||
|
nonce={nonce}
|
||||||
|
/>
|
||||||
|
<Script
|
||||||
|
id="_next-ga"
|
||||||
|
src={`https://www.googletagmanager.com/gtag/js?id=${gaId}`}
|
||||||
|
nonce={nonce}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const sendGAEvent = (type: "event", eventName: string, args: object) => {
|
||||||
|
if (process.env.NODE_ENV === "test") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currDataLayerName === undefined) {
|
||||||
|
console.warn(`@next/third-parties: GA has not been initialized`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window[currDataLayerName]) {
|
||||||
|
window.gtag(type, eventName, args);
|
||||||
|
} else {
|
||||||
|
console.warn(
|
||||||
|
`@next/third-parties: GA dataLayer ${currDataLayerName} does not exist`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/* c8 ignore stop */
|
|
@ -32,6 +32,7 @@ import { isPhonesAvailableInCountry } from "../../functions/getPlan";
|
||||||
import { useL10n } from "../../hooks/l10n";
|
import { useL10n } from "../../hooks/l10n";
|
||||||
import { HolidayPromoBanner } from "./topmessage/HolidayPromoBanner";
|
import { HolidayPromoBanner } from "./topmessage/HolidayPromoBanner";
|
||||||
import { isFlagActive } from "../../functions/waffle";
|
import { isFlagActive } from "../../functions/waffle";
|
||||||
|
import { GoogleAnalyticsWorkaround } from "../GoogleAnalyticsWorkaround";
|
||||||
|
|
||||||
export type Props = {
|
export type Props = {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
|
@ -285,6 +286,15 @@ export const Layout = (props: Props) => {
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{props.runtimeData !== undefined ? (
|
||||||
|
<GoogleAnalyticsWorkaround
|
||||||
|
gaId={props.runtimeData.GA4_MEASUREMENT_ID}
|
||||||
|
debugMode={
|
||||||
|
process.env.NEXT_PUBLIC_GA4_DEBUG_MODE === "true" &&
|
||||||
|
process.env.NODE_ENV !== "test"
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -35,6 +35,7 @@ export type ProductData<P extends Partial<PlanData> = PlanData> = {
|
||||||
export type RuntimeData = {
|
export type RuntimeData = {
|
||||||
FXA_ORIGIN: string;
|
FXA_ORIGIN: string;
|
||||||
GOOGLE_ANALYTICS_ID: `UA-${number}-${number}`;
|
GOOGLE_ANALYTICS_ID: `UA-${number}-${number}`;
|
||||||
|
GA4_MEASUREMENT_ID: `G-${string}`;
|
||||||
PERIODICAL_PREMIUM_PRODUCT_ID: `prod_${string}`;
|
PERIODICAL_PREMIUM_PRODUCT_ID: `prod_${string}`;
|
||||||
PHONE_PRODUCT_ID: `prod_${string}`;
|
PHONE_PRODUCT_ID: `prod_${string}`;
|
||||||
BUNDLE_PRODUCT_ID: `prod_${string}`;
|
BUNDLE_PRODUCT_ID: `prod_${string}`;
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
"@fluent/langneg": "^0.7.0",
|
"@fluent/langneg": "^0.7.0",
|
||||||
"@fluent/react": "^0.15.2",
|
"@fluent/react": "^0.15.2",
|
||||||
"@mozilla-protocol/core": "^17.0.1",
|
"@mozilla-protocol/core": "^17.0.1",
|
||||||
|
"@next/third-parties": "^14.2.4",
|
||||||
"@stripe/stripe-js": "^3.5.0",
|
"@stripe/stripe-js": "^3.5.0",
|
||||||
"chokidar-cli": "^3.0.0",
|
"chokidar-cli": "^3.0.0",
|
||||||
"cldr-localenames-modern": "^45.0.0",
|
"cldr-localenames-modern": "^45.0.0",
|
||||||
|
@ -2014,8 +2015,7 @@
|
||||||
"node_modules/@next/env": {
|
"node_modules/@next/env": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz",
|
||||||
"integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==",
|
"integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"node_modules/@next/eslint-plugin-next": {
|
"node_modules/@next/eslint-plugin-next": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
|
@ -2079,7 +2079,6 @@
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"darwin"
|
"darwin"
|
||||||
|
@ -2095,7 +2094,6 @@
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"darwin"
|
"darwin"
|
||||||
|
@ -2111,7 +2109,6 @@
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"linux"
|
"linux"
|
||||||
|
@ -2127,7 +2124,6 @@
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"linux"
|
"linux"
|
||||||
|
@ -2143,7 +2139,6 @@
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"linux"
|
"linux"
|
||||||
|
@ -2159,7 +2154,6 @@
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"linux"
|
"linux"
|
||||||
|
@ -2175,7 +2169,6 @@
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"win32"
|
"win32"
|
||||||
|
@ -2191,7 +2184,6 @@
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"win32"
|
"win32"
|
||||||
|
@ -2207,7 +2199,6 @@
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"win32"
|
"win32"
|
||||||
|
@ -2216,6 +2207,18 @@
|
||||||
"node": ">= 10"
|
"node": ">= 10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@next/third-parties": {
|
||||||
|
"version": "14.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.4.tgz",
|
||||||
|
"integrity": "sha512-bf5d5m4a+Fh9syLz0Pf9Ax7LdLazlp7ur7DqX0LUMDyIx9Z/F0J/XxieklA9lRqM9KjrCVNT8Tkhg0AvotTBTQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"third-party-capital": "1.0.20"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"next": "^13.0.0 || ^14.0.0",
|
||||||
|
"react": "^18.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@nodelib/fs.scandir": {
|
"node_modules/@nodelib/fs.scandir": {
|
||||||
"version": "2.1.5",
|
"version": "2.1.5",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
@ -2300,7 +2303,7 @@
|
||||||
"version": "1.43.1",
|
"version": "1.43.1",
|
||||||
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.43.1.tgz",
|
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.43.1.tgz",
|
||||||
"integrity": "sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==",
|
"integrity": "sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"playwright": "1.43.1"
|
"playwright": "1.43.1"
|
||||||
},
|
},
|
||||||
|
@ -5416,7 +5419,6 @@
|
||||||
"version": "1.6.0",
|
"version": "1.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
|
||||||
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
|
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"streamsearch": "^1.1.0"
|
"streamsearch": "^1.1.0"
|
||||||
},
|
},
|
||||||
|
@ -5462,7 +5464,6 @@
|
||||||
"version": "1.0.30001579",
|
"version": "1.0.30001579",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
|
||||||
"integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==",
|
"integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==",
|
||||||
"dev": true,
|
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
|
@ -7812,8 +7813,7 @@
|
||||||
"node_modules/graceful-fs": {
|
"node_modules/graceful-fs": {
|
||||||
"version": "4.2.11",
|
"version": "4.2.11",
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
||||||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"node_modules/graphemer": {
|
"node_modules/graphemer": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
|
@ -8002,7 +8002,7 @@
|
||||||
},
|
},
|
||||||
"node_modules/immutable": {
|
"node_modules/immutable": {
|
||||||
"version": "4.2.2",
|
"version": "4.2.2",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/import-fresh": {
|
"node_modules/import-fresh": {
|
||||||
|
@ -11771,7 +11771,6 @@
|
||||||
"version": "3.3.7",
|
"version": "3.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
||||||
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
|
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
|
||||||
"dev": true,
|
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
|
@ -11794,7 +11793,6 @@
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/next/-/next-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/next/-/next-14.2.4.tgz",
|
||||||
"integrity": "sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==",
|
"integrity": "sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==",
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@next/env": "14.2.4",
|
"@next/env": "14.2.4",
|
||||||
"@swc/helpers": "0.5.5",
|
"@swc/helpers": "0.5.5",
|
||||||
|
@ -12275,8 +12273,7 @@
|
||||||
"node_modules/picocolors": {
|
"node_modules/picocolors": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
|
||||||
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
|
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"node_modules/picomatch": {
|
"node_modules/picomatch": {
|
||||||
"version": "2.3.1",
|
"version": "2.3.1",
|
||||||
|
@ -12323,7 +12320,7 @@
|
||||||
"version": "1.43.1",
|
"version": "1.43.1",
|
||||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.43.1.tgz",
|
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.43.1.tgz",
|
||||||
"integrity": "sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==",
|
"integrity": "sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"playwright-core": "1.43.1"
|
"playwright-core": "1.43.1"
|
||||||
},
|
},
|
||||||
|
@ -12341,7 +12338,7 @@
|
||||||
"version": "1.43.1",
|
"version": "1.43.1",
|
||||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.43.1.tgz",
|
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.43.1.tgz",
|
||||||
"integrity": "sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==",
|
"integrity": "sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"playwright-core": "cli.js"
|
"playwright-core": "cli.js"
|
||||||
},
|
},
|
||||||
|
@ -12353,7 +12350,6 @@
|
||||||
"version": "8.4.31",
|
"version": "8.4.31",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
||||||
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
||||||
"dev": true,
|
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
|
@ -13067,7 +13063,7 @@
|
||||||
"version": "1.77.6",
|
"version": "1.77.6",
|
||||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz",
|
"resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz",
|
||||||
"integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
|
"integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chokidar": ">=3.0.0 <4.0.0",
|
"chokidar": ">=3.0.0 <4.0.0",
|
||||||
"immutable": "^4.0.0",
|
"immutable": "^4.0.0",
|
||||||
|
@ -13226,7 +13222,6 @@
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
||||||
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
|
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
|
@ -13341,7 +13336,6 @@
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
||||||
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
|
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
}
|
}
|
||||||
|
@ -13583,7 +13577,6 @@
|
||||||
},
|
},
|
||||||
"node_modules/styled-jsx": {
|
"node_modules/styled-jsx": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"client-only": "0.0.1"
|
"client-only": "0.0.1"
|
||||||
|
@ -14173,6 +14166,11 @@
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/third-party-capital": {
|
||||||
|
"version": "1.0.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/third-party-capital/-/third-party-capital-1.0.20.tgz",
|
||||||
|
"integrity": "sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA=="
|
||||||
|
},
|
||||||
"node_modules/tiny-glob": {
|
"node_modules/tiny-glob": {
|
||||||
"version": "0.2.9",
|
"version": "0.2.9",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
@ -16440,8 +16438,7 @@
|
||||||
"@next/env": {
|
"@next/env": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz",
|
||||||
"integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==",
|
"integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"@next/eslint-plugin-next": {
|
"@next/eslint-plugin-next": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
|
@ -16489,65 +16486,64 @@
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz",
|
||||||
"integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==",
|
"integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==",
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-darwin-x64": {
|
"@next/swc-darwin-x64": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz",
|
||||||
"integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==",
|
"integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==",
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-linux-arm64-gnu": {
|
"@next/swc-linux-arm64-gnu": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz",
|
||||||
"integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==",
|
"integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==",
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-linux-arm64-musl": {
|
"@next/swc-linux-arm64-musl": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz",
|
||||||
"integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==",
|
"integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==",
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-linux-x64-gnu": {
|
"@next/swc-linux-x64-gnu": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz",
|
||||||
"integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==",
|
"integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==",
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-linux-x64-musl": {
|
"@next/swc-linux-x64-musl": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz",
|
||||||
"integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==",
|
"integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==",
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-win32-arm64-msvc": {
|
"@next/swc-win32-arm64-msvc": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz",
|
||||||
"integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==",
|
"integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==",
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-win32-ia32-msvc": {
|
"@next/swc-win32-ia32-msvc": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz",
|
||||||
"integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==",
|
"integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==",
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-win32-x64-msvc": {
|
"@next/swc-win32-x64-msvc": {
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz",
|
||||||
"integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==",
|
"integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==",
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
|
"@next/third-parties": {
|
||||||
|
"version": "14.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.4.tgz",
|
||||||
|
"integrity": "sha512-bf5d5m4a+Fh9syLz0Pf9Ax7LdLazlp7ur7DqX0LUMDyIx9Z/F0J/XxieklA9lRqM9KjrCVNT8Tkhg0AvotTBTQ==",
|
||||||
|
"requires": {
|
||||||
|
"third-party-capital": "1.0.20"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@nodelib/fs.scandir": {
|
"@nodelib/fs.scandir": {
|
||||||
"version": "2.1.5",
|
"version": "2.1.5",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
@ -16610,7 +16606,7 @@
|
||||||
"version": "1.43.1",
|
"version": "1.43.1",
|
||||||
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.43.1.tgz",
|
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.43.1.tgz",
|
||||||
"integrity": "sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==",
|
"integrity": "sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"playwright": "1.43.1"
|
"playwright": "1.43.1"
|
||||||
}
|
}
|
||||||
|
@ -18869,7 +18865,6 @@
|
||||||
"version": "1.6.0",
|
"version": "1.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
|
||||||
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
|
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"streamsearch": "^1.1.0"
|
"streamsearch": "^1.1.0"
|
||||||
}
|
}
|
||||||
|
@ -18895,8 +18890,7 @@
|
||||||
"caniuse-lite": {
|
"caniuse-lite": {
|
||||||
"version": "1.0.30001579",
|
"version": "1.0.30001579",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
|
||||||
"integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==",
|
"integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"chalk": {
|
"chalk": {
|
||||||
"version": "2.4.2",
|
"version": "2.4.2",
|
||||||
|
@ -20306,6 +20300,7 @@
|
||||||
"@fluent/react": "^0.15.2",
|
"@fluent/react": "^0.15.2",
|
||||||
"@mozilla-protocol/core": "^17.0.1",
|
"@mozilla-protocol/core": "^17.0.1",
|
||||||
"@next/eslint-plugin-next": "^14.2.3",
|
"@next/eslint-plugin-next": "^14.2.3",
|
||||||
|
"@next/third-parties": "^14.2.4",
|
||||||
"@stripe/stripe-js": "^3.5.0",
|
"@stripe/stripe-js": "^3.5.0",
|
||||||
"@testing-library/dom": "^10.1.0",
|
"@testing-library/dom": "^10.1.0",
|
||||||
"@testing-library/jest-dom": "^6.4.6",
|
"@testing-library/jest-dom": "^6.4.6",
|
||||||
|
@ -20521,8 +20516,7 @@
|
||||||
"graceful-fs": {
|
"graceful-fs": {
|
||||||
"version": "4.2.11",
|
"version": "4.2.11",
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
||||||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"graphemer": {
|
"graphemer": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
|
@ -20637,7 +20631,7 @@
|
||||||
},
|
},
|
||||||
"immutable": {
|
"immutable": {
|
||||||
"version": "4.2.2",
|
"version": "4.2.2",
|
||||||
"dev": true
|
"devOptional": true
|
||||||
},
|
},
|
||||||
"import-fresh": {
|
"import-fresh": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
|
@ -23244,8 +23238,7 @@
|
||||||
"nanoid": {
|
"nanoid": {
|
||||||
"version": "3.3.7",
|
"version": "3.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
||||||
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
|
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"natural-compare": {
|
"natural-compare": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
|
@ -23255,7 +23248,6 @@
|
||||||
"version": "14.2.4",
|
"version": "14.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/next/-/next-14.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/next/-/next-14.2.4.tgz",
|
||||||
"integrity": "sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==",
|
"integrity": "sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"@next/env": "14.2.4",
|
"@next/env": "14.2.4",
|
||||||
"@next/swc-darwin-arm64": "14.2.4",
|
"@next/swc-darwin-arm64": "14.2.4",
|
||||||
|
@ -23559,8 +23551,7 @@
|
||||||
"picocolors": {
|
"picocolors": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
|
||||||
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
|
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"picomatch": {
|
"picomatch": {
|
||||||
"version": "2.3.1"
|
"version": "2.3.1"
|
||||||
|
@ -23586,7 +23577,7 @@
|
||||||
"version": "1.43.1",
|
"version": "1.43.1",
|
||||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.43.1.tgz",
|
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.43.1.tgz",
|
||||||
"integrity": "sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==",
|
"integrity": "sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"fsevents": "2.3.2",
|
"fsevents": "2.3.2",
|
||||||
"playwright-core": "1.43.1"
|
"playwright-core": "1.43.1"
|
||||||
|
@ -23596,13 +23587,12 @@
|
||||||
"version": "1.43.1",
|
"version": "1.43.1",
|
||||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.43.1.tgz",
|
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.43.1.tgz",
|
||||||
"integrity": "sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==",
|
"integrity": "sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==",
|
||||||
"dev": true
|
"devOptional": true
|
||||||
},
|
},
|
||||||
"postcss": {
|
"postcss": {
|
||||||
"version": "8.4.31",
|
"version": "8.4.31",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
||||||
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"nanoid": "^3.3.6",
|
"nanoid": "^3.3.6",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
|
@ -24064,7 +24054,7 @@
|
||||||
"version": "1.77.6",
|
"version": "1.77.6",
|
||||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz",
|
"resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz",
|
||||||
"integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
|
"integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"chokidar": ">=3.0.0 <4.0.0",
|
"chokidar": ">=3.0.0 <4.0.0",
|
||||||
"immutable": "^4.0.0",
|
"immutable": "^4.0.0",
|
||||||
|
@ -24171,8 +24161,7 @@
|
||||||
"source-map-js": {
|
"source-map-js": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
||||||
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
|
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"source-map-support": {
|
"source-map-support": {
|
||||||
"version": "0.5.13",
|
"version": "0.5.13",
|
||||||
|
@ -24262,8 +24251,7 @@
|
||||||
"streamsearch": {
|
"streamsearch": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
||||||
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
|
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"strict-event-emitter": {
|
"strict-event-emitter": {
|
||||||
"version": "0.5.1",
|
"version": "0.5.1",
|
||||||
|
@ -24435,7 +24423,6 @@
|
||||||
},
|
},
|
||||||
"styled-jsx": {
|
"styled-jsx": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"client-only": "0.0.1"
|
"client-only": "0.0.1"
|
||||||
}
|
}
|
||||||
|
@ -24820,6 +24807,11 @@
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"third-party-capital": {
|
||||||
|
"version": "1.0.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/third-party-capital/-/third-party-capital-1.0.20.tgz",
|
||||||
|
"integrity": "sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA=="
|
||||||
|
},
|
||||||
"tiny-glob": {
|
"tiny-glob": {
|
||||||
"version": "0.2.9",
|
"version": "0.2.9",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
|
|
@ -241,6 +241,7 @@ AWS_SQS_QUEUE_URL = config("AWS_SQS_QUEUE_URL", None)
|
||||||
|
|
||||||
RELAY_FROM_ADDRESS: str | None = config("RELAY_FROM_ADDRESS", None)
|
RELAY_FROM_ADDRESS: str | None = config("RELAY_FROM_ADDRESS", None)
|
||||||
GOOGLE_ANALYTICS_ID = config("GOOGLE_ANALYTICS_ID", None)
|
GOOGLE_ANALYTICS_ID = config("GOOGLE_ANALYTICS_ID", None)
|
||||||
|
GA4_MEASUREMENT_ID = config("GA4_MEASUREMENT_ID", None)
|
||||||
GOOGLE_APPLICATION_CREDENTIALS: str = config("GOOGLE_APPLICATION_CREDENTIALS", "")
|
GOOGLE_APPLICATION_CREDENTIALS: str = config("GOOGLE_APPLICATION_CREDENTIALS", "")
|
||||||
GOOGLE_CLOUD_PROFILER_CREDENTIALS_B64: str = config(
|
GOOGLE_CLOUD_PROFILER_CREDENTIALS_B64: str = config(
|
||||||
"GOOGLE_CLOUD_PROFILER_CREDENTIALS_B64", ""
|
"GOOGLE_CLOUD_PROFILER_CREDENTIALS_B64", ""
|
||||||
|
|
Загрузка…
Ссылка в новой задаче