mirror of
https://github.com/bitwarden/browser.git
synced 2025-12-05 09:14:28 +01:00
Merge branch 'main' into platform/handle-401-refresh-token
This commit is contained in:
commit
33739cc5e6
@ -293,14 +293,24 @@ export default class RuntimeBackground {
|
||||
case "openPopup":
|
||||
await this.openPopup();
|
||||
break;
|
||||
case VaultMessages.OpenAtRiskPasswords:
|
||||
case VaultMessages.OpenAtRiskPasswords: {
|
||||
if (await this.shouldRejectManyOriginMessage(msg)) {
|
||||
return;
|
||||
}
|
||||
|
||||
await this.main.openAtRisksPasswordsPage();
|
||||
this.announcePopupOpen();
|
||||
break;
|
||||
case VaultMessages.OpenBrowserExtensionToUrl:
|
||||
}
|
||||
case VaultMessages.OpenBrowserExtensionToUrl: {
|
||||
if (await this.shouldRejectManyOriginMessage(msg)) {
|
||||
return;
|
||||
}
|
||||
|
||||
await this.main.openTheExtensionToPage(msg.url);
|
||||
this.announcePopupOpen();
|
||||
break;
|
||||
}
|
||||
case "bgUpdateContextMenu":
|
||||
case "editedCipher":
|
||||
case "addedCipher":
|
||||
@ -312,10 +322,7 @@ export default class RuntimeBackground {
|
||||
break;
|
||||
}
|
||||
case "authResult": {
|
||||
const env = await firstValueFrom(this.environmentService.environment$);
|
||||
const vaultUrl = env.getWebVaultUrl();
|
||||
|
||||
if (msg.referrer == null || Utils.getHostname(vaultUrl) !== msg.referrer) {
|
||||
if (!(await this.isValidVaultReferrer(msg.referrer))) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -334,10 +341,7 @@ export default class RuntimeBackground {
|
||||
break;
|
||||
}
|
||||
case "webAuthnResult": {
|
||||
const env = await firstValueFrom(this.environmentService.environment$);
|
||||
const vaultUrl = env.getWebVaultUrl();
|
||||
|
||||
if (msg.referrer == null || Utils.getHostname(vaultUrl) !== msg.referrer) {
|
||||
if (!(await this.isValidVaultReferrer(msg.referrer))) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -372,6 +376,48 @@ export default class RuntimeBackground {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For messages that can originate from a vault host page or extension, validate referrer or external
|
||||
*
|
||||
* @param message
|
||||
* @returns true if message fails validation
|
||||
*/
|
||||
private async shouldRejectManyOriginMessage(message: {
|
||||
webExtSender: chrome.runtime.MessageSender;
|
||||
}): Promise<boolean> {
|
||||
const isValidVaultReferrer = await this.isValidVaultReferrer(
|
||||
Utils.getHostname(message?.webExtSender?.origin),
|
||||
);
|
||||
|
||||
if (isValidVaultReferrer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return isExternalMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates a message's referrer matches the configured web vault hostname.
|
||||
*
|
||||
* @param referrer - hostname from message source
|
||||
* @returns true if referrer matches web vault
|
||||
*/
|
||||
private async isValidVaultReferrer(referrer: string | null | undefined): Promise<boolean> {
|
||||
if (!referrer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const env = await firstValueFrom(this.environmentService.environment$);
|
||||
const vaultUrl = env.getWebVaultUrl();
|
||||
const vaultHostname = Utils.getHostname(vaultUrl);
|
||||
|
||||
if (!vaultHostname) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return vaultHostname === referrer;
|
||||
}
|
||||
|
||||
private async autofillPage(tabToAutoFill: chrome.tabs.Tab) {
|
||||
const totpCode = await this.autofillService.doAutoFill({
|
||||
tab: tabToAutoFill,
|
||||
|
||||
@ -1,8 +1,5 @@
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { CommonModule } from "@angular/common";
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { Component, inject } from "@angular/core";
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { ActivatedRoute, RouterModule } from "@angular/router";
|
||||
import { firstValueFrom, map } from "rxjs";
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
// TODO: This needs to be dealt with by moving this folder or updating the lint rule.
|
||||
/* eslint-disable no-restricted-imports */
|
||||
import { ActivatedRoute, RouterModule } from "@angular/router";
|
||||
import { Meta, StoryObj, moduleMetadata } from "@storybook/angular";
|
||||
import { BehaviorSubject, of } from "rxjs";
|
||||
@ -1,6 +1,4 @@
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { CommonModule } from "@angular/common";
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { Component } from "@angular/core";
|
||||
|
||||
import { JslibModule } from "@bitwarden/angular/jslib.module";
|
||||
@ -56,8 +56,8 @@ import { BlockedDomainsComponent } from "../autofill/popup/settings/blocked-doma
|
||||
import { ExcludedDomainsComponent } from "../autofill/popup/settings/excluded-domains.component";
|
||||
import { NotificationsSettingsComponent } from "../autofill/popup/settings/notifications.component";
|
||||
import { PremiumV2Component } from "../billing/popup/settings/premium-v2.component";
|
||||
import { PhishingWarning } from "../dirt/phishing-detection/pages/phishing-warning.component";
|
||||
import { ProtectedByComponent } from "../dirt/phishing-detection/pages/protected-by-component";
|
||||
import { PhishingWarning } from "../dirt/phishing-detection/popup/phishing-warning.component";
|
||||
import { ProtectedByComponent } from "../dirt/phishing-detection/popup/protected-by-component";
|
||||
import { RemovePasswordComponent } from "../key-management/key-connector/remove-password.component";
|
||||
import BrowserPopupUtils from "../platform/browser/browser-popup-utils";
|
||||
import { popupRouterCacheGuard } from "../platform/popup/view-cache/popup-router-cache.service";
|
||||
|
||||
5
apps/desktop/desktop_native/Cargo.lock
generated
5
apps/desktop/desktop_native/Cargo.lock
generated
@ -120,9 +120,9 @@ checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7"
|
||||
|
||||
[[package]]
|
||||
name = "arboard"
|
||||
version = "3.6.0"
|
||||
version = "3.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "55f533f8e0af236ffe5eb979b99381df3258853f00ba2e44b6e1955292c75227"
|
||||
checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf"
|
||||
dependencies = [
|
||||
"clipboard-win",
|
||||
"log",
|
||||
@ -131,6 +131,7 @@ dependencies = [
|
||||
"objc2-foundation",
|
||||
"parking_lot",
|
||||
"percent-encoding",
|
||||
"windows-sys 0.60.2",
|
||||
"wl-clipboard-rs",
|
||||
"x11rb",
|
||||
]
|
||||
|
||||
@ -22,7 +22,7 @@ publish = false
|
||||
aes = "=0.8.4"
|
||||
aes-gcm = "=0.10.3"
|
||||
anyhow = "=1.0.94"
|
||||
arboard = { version = "=3.6.0", default-features = false }
|
||||
arboard = { version = "=3.6.1", default-features = false }
|
||||
ashpd = "=0.11.0"
|
||||
base64 = "=0.22.1"
|
||||
bitwarden-russh = { git = "https://github.com/bitwarden/bitwarden-russh.git", rev = "a641316227227f8777fdf56ac9fa2d6b5f7fe662" }
|
||||
|
||||
@ -154,45 +154,15 @@
|
||||
},
|
||||
"configurations": {
|
||||
"oss": {
|
||||
"buildTarget": "web:build:oss"
|
||||
},
|
||||
"oss-dev": {
|
||||
"buildTarget": "web:build:oss-dev"
|
||||
},
|
||||
"commercial": {
|
||||
"buildTarget": "web:build:commercial"
|
||||
},
|
||||
"commercial-dev": {
|
||||
"buildTarget": "web:build:commercial-dev"
|
||||
},
|
||||
"commercial-qa": {
|
||||
"buildTarget": "web:build:commercial-qa"
|
||||
},
|
||||
"commercial-cloud": {
|
||||
"buildTarget": "web:build:commercial-cloud"
|
||||
},
|
||||
"commercial-euprd": {
|
||||
"buildTarget": "web:build:commercial-euprd"
|
||||
},
|
||||
"commercial-euqa": {
|
||||
"buildTarget": "web:build:commercial-euqa"
|
||||
},
|
||||
"commercial-usdev": {
|
||||
"buildTarget": "web:build:commercial-usdev"
|
||||
},
|
||||
"commercial-ee": {
|
||||
"buildTarget": "web:build:commercial-ee"
|
||||
},
|
||||
"oss-selfhost": {
|
||||
"buildTarget": "web:build:oss-selfhost"
|
||||
},
|
||||
"oss-selfhost-dev": {
|
||||
"buildTarget": "web:build:oss-selfhost-dev"
|
||||
},
|
||||
"commercial-selfhost": {
|
||||
"buildTarget": "web:build:commercial-selfhost"
|
||||
},
|
||||
"commercial-selfhost-dev": {
|
||||
"buildTarget": "web:build:commercial-selfhost-dev"
|
||||
}
|
||||
}
|
||||
|
||||
@ -30,6 +30,8 @@ import { NavigationProductSwitcherComponent } from "./navigation-switcher.compon
|
||||
selector: "[mockOrgs]",
|
||||
standalone: false,
|
||||
})
|
||||
// FIXME(https://bitwarden.atlassian.net/browse/PM-28232): Use Directive suffix
|
||||
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
||||
class MockOrganizationService implements Partial<OrganizationService> {
|
||||
private static _orgs = new BehaviorSubject<Organization[]>([]);
|
||||
|
||||
@ -49,6 +51,8 @@ class MockOrganizationService implements Partial<OrganizationService> {
|
||||
selector: "[mockProviders]",
|
||||
standalone: false,
|
||||
})
|
||||
// FIXME(https://bitwarden.atlassian.net/browse/PM-28232): Use Directive suffix
|
||||
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
||||
class MockProviderService implements Partial<ProviderService> {
|
||||
private static _providers = new BehaviorSubject<Provider[]>([]);
|
||||
|
||||
|
||||
@ -30,6 +30,8 @@ import { ProductSwitcherService } from "./shared/product-switcher.service";
|
||||
selector: "[mockOrgs]",
|
||||
standalone: false,
|
||||
})
|
||||
// FIXME(https://bitwarden.atlassian.net/browse/PM-28232): Use Directive suffix
|
||||
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
||||
class MockOrganizationService implements Partial<OrganizationService> {
|
||||
private static _orgs = new BehaviorSubject<Organization[]>([]);
|
||||
|
||||
@ -49,6 +51,8 @@ class MockOrganizationService implements Partial<OrganizationService> {
|
||||
selector: "[mockProviders]",
|
||||
standalone: false,
|
||||
})
|
||||
// FIXME(https://bitwarden.atlassian.net/browse/PM-28232): Use Directive suffix
|
||||
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
||||
class MockProviderService implements Partial<ProviderService> {
|
||||
private static _providers = new BehaviorSubject<Provider[]>([]);
|
||||
|
||||
|
||||
@ -13,9 +13,11 @@ const config = require(path.resolve(__dirname, "config.js"));
|
||||
const pjson = require(path.resolve(__dirname, "package.json"));
|
||||
|
||||
module.exports.getEnv = function getEnv(params) {
|
||||
const ENV = params.env || (process.env.ENV == null ? "development" : process.env.ENV);
|
||||
const NODE_ENV = process.env.NODE_ENV == null ? "development" : process.env.NODE_ENV;
|
||||
const LOGGING = process.env.LOGGING != "false";
|
||||
const ENV = params.env?.ENV ?? process.env?.ENV ?? "development";
|
||||
const NODE_ENV = params.env?.NODE_ENV ?? process.env?.NODE_ENV ?? "development";
|
||||
const LOGGING =
|
||||
params.env?.LOGGING ??
|
||||
(process.env?.LOGGING === undefined ? true : process.env.LOGGING !== "false");
|
||||
|
||||
return { ENV, NODE_ENV, LOGGING };
|
||||
};
|
||||
@ -35,7 +37,11 @@ const DEFAULT_PARAMS = {
|
||||
* tsConfig: string;
|
||||
* outputPath?: string;
|
||||
* mode?: string;
|
||||
* env?: string;
|
||||
* env?: {
|
||||
* ENV?: string;
|
||||
* NODE_ENV?: string;
|
||||
* LOGGING?: boolean;
|
||||
* };
|
||||
* importAliases?: import("webpack").ResolveOptions["alias"];
|
||||
* }} params
|
||||
*/
|
||||
|
||||
@ -15,6 +15,7 @@ module.exports = (webpackConfig, context) => {
|
||||
},
|
||||
tsConfig: "apps/web/tsconfig.build.json",
|
||||
outputPath: path.resolve(context.context.root, context.options.outputPath),
|
||||
env: context.options.env,
|
||||
});
|
||||
} else {
|
||||
return buildConfig({
|
||||
|
||||
@ -3,6 +3,7 @@ const { buildConfig } = require(path.resolve(__dirname, "../../apps/web/webpack.
|
||||
|
||||
module.exports = (webpackConfig, context) => {
|
||||
const isNxBuild = context && context.options;
|
||||
|
||||
if (isNxBuild) {
|
||||
return buildConfig({
|
||||
configName: "Commercial",
|
||||
@ -23,6 +24,7 @@ module.exports = (webpackConfig, context) => {
|
||||
alias: "@bitwarden/commercial-sdk-internal",
|
||||
},
|
||||
],
|
||||
env: context.options.env,
|
||||
});
|
||||
} else {
|
||||
return buildConfig({
|
||||
|
||||
@ -63,7 +63,7 @@ export default tseslint.config(
|
||||
// TODO: Enable these.
|
||||
"@angular-eslint/component-class-suffix": "error",
|
||||
"@angular-eslint/contextual-lifecycle": "error",
|
||||
"@angular-eslint/directive-class-suffix": 0,
|
||||
"@angular-eslint/directive-class-suffix": "error",
|
||||
"@angular-eslint/no-empty-lifecycle-method": 0,
|
||||
"@angular-eslint/no-input-rename": 0,
|
||||
"@angular-eslint/no-inputs-metadata-property": "error",
|
||||
|
||||
@ -24,6 +24,8 @@ import { KeyService } from "@bitwarden/key-management";
|
||||
selector: "app-user-verification",
|
||||
standalone: false,
|
||||
})
|
||||
// FIXME(https://bitwarden.atlassian.net/browse/PM-28232): Use Directive suffix
|
||||
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
||||
export class UserVerificationComponent implements ControlValueAccessor, OnInit, OnDestroy {
|
||||
private _invalidSecret = false;
|
||||
// FIXME(https://bitwarden.atlassian.net/browse/CL-903): Migrate to Signals
|
||||
|
||||
@ -45,6 +45,8 @@ export function _cipherListVirtualScrollStrategyFactory(cipherListDir: CipherLis
|
||||
},
|
||||
],
|
||||
})
|
||||
// FIXME(https://bitwarden.atlassian.net/browse/PM-28232): Use Directive suffix
|
||||
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
||||
export class CipherListVirtualScroll extends CdkFixedSizeVirtualScroll {
|
||||
_scrollStrategy: CipherListVirtualScrollStrategy;
|
||||
|
||||
|
||||
@ -54,6 +54,14 @@ const buttonStyles: Record<ButtonType, string[]> = {
|
||||
"hover:!tw-text-contrast",
|
||||
...focusRing,
|
||||
],
|
||||
dangerPrimary: [
|
||||
"tw-border-danger-600",
|
||||
"tw-bg-danger-600",
|
||||
"!tw-text-contrast",
|
||||
"hover:tw-bg-danger-700",
|
||||
"hover:tw-border-danger-700",
|
||||
...focusRing,
|
||||
],
|
||||
unstyled: [],
|
||||
};
|
||||
|
||||
|
||||
@ -62,6 +62,13 @@ export const Primary: Story = {
|
||||
},
|
||||
};
|
||||
|
||||
export const DangerPrimary: Story = {
|
||||
...Default,
|
||||
args: {
|
||||
buttonType: "dangerPrimary",
|
||||
},
|
||||
};
|
||||
|
||||
export const Danger: Story = {
|
||||
...Default,
|
||||
args: {
|
||||
@ -77,6 +84,7 @@ export const Small: Story = {
|
||||
<button type="button" bitButton [disabled]="disabled" [loading]="loading" [buttonType]="'primary'" [size]="size" [block]="block">Primary small</button>
|
||||
<button type="button" bitButton [disabled]="disabled" [loading]="loading" [buttonType]="'secondary'" [size]="size" [block]="block">Secondary small</button>
|
||||
<button type="button" bitButton [disabled]="disabled" [loading]="loading" [buttonType]="'danger'" [size]="size" [block]="block">Danger small</button>
|
||||
<button type="button" bitButton [disabled]="disabled" [loading]="loading" [buttonType]="'dangerPrimary'" [size]="size" [block]="block">Danger Primary small</button>
|
||||
</div>
|
||||
`,
|
||||
}),
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import { NgModule } from "@angular/core";
|
||||
|
||||
import { FormControlComponent } from "./form-control.component";
|
||||
import { BitHintComponent } from "./hint.component";
|
||||
import { BitHintDirective } from "./hint.directive";
|
||||
import { BitLabelComponent } from "./label.component";
|
||||
|
||||
@NgModule({
|
||||
imports: [BitLabelComponent, FormControlComponent, BitHintComponent],
|
||||
exports: [FormControlComponent, BitLabelComponent, BitHintComponent],
|
||||
imports: [BitLabelComponent, FormControlComponent, BitHintDirective],
|
||||
exports: [FormControlComponent, BitLabelComponent, BitHintDirective],
|
||||
})
|
||||
export class FormControlModule {}
|
||||
|
||||
@ -9,6 +9,6 @@ let nextId = 0;
|
||||
class: "tw-text-muted tw-font-normal tw-inline-block tw-mt-1 tw-text-xs",
|
||||
},
|
||||
})
|
||||
export class BitHintComponent {
|
||||
export class BitHintDirective {
|
||||
@HostBinding() id = `bit-hint-${nextId++}`;
|
||||
}
|
||||
@ -15,7 +15,7 @@ import {
|
||||
|
||||
import { I18nPipe } from "@bitwarden/ui-common";
|
||||
|
||||
import { BitHintComponent } from "../form-control/hint.component";
|
||||
import { BitHintDirective } from "../form-control/hint.directive";
|
||||
import { BitLabelComponent } from "../form-control/label.component";
|
||||
import { inputBorderClasses } from "../input/input.directive";
|
||||
|
||||
@ -31,7 +31,7 @@ import { BitFormFieldControl } from "./form-field-control";
|
||||
})
|
||||
export class BitFormFieldComponent implements AfterContentChecked {
|
||||
readonly input = contentChild.required(BitFormFieldControl);
|
||||
readonly hint = contentChild(BitHintComponent);
|
||||
readonly hint = contentChild(BitHintDirective);
|
||||
readonly label = contentChild(BitLabelComponent);
|
||||
|
||||
readonly prefixContainer = viewChild<ElementRef<HTMLDivElement>>("prefixContainer");
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ModelSignal } from "@angular/core";
|
||||
|
||||
export type ButtonType = "primary" | "secondary" | "danger" | "unstyled";
|
||||
export type ButtonType = "primary" | "secondary" | "danger" | "dangerPrimary" | "unstyled";
|
||||
|
||||
export type ButtonSize = "default" | "small";
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ import { ControlValueAccessor, NG_VALUE_ACCESSOR } from "@angular/forms";
|
||||
|
||||
import { AriaDisableDirective } from "../a11y";
|
||||
import { FormControlModule } from "../form-control/form-control.module";
|
||||
import { BitHintComponent } from "../form-control/hint.component";
|
||||
import { BitHintDirective } from "../form-control/hint.directive";
|
||||
import { BitLabelComponent } from "../form-control/label.component";
|
||||
|
||||
let nextId = 0;
|
||||
@ -56,7 +56,7 @@ export class SwitchComponent implements ControlValueAccessor, AfterViewInit {
|
||||
protected readonly disabled = model(false);
|
||||
protected readonly disabledReasonText = input<string | null>(null);
|
||||
|
||||
private readonly hintComponent = contentChild<BitHintComponent>(BitHintComponent);
|
||||
private readonly hintComponent = contentChild<BitHintDirective>(BitHintDirective);
|
||||
|
||||
protected readonly disabledReasonTextId = `bit-switch-disabled-text-${nextId++}`;
|
||||
|
||||
|
||||
@ -35,7 +35,7 @@ import { TableComponent } from "./table.component";
|
||||
@Directive({
|
||||
selector: "[bitRowDef]",
|
||||
})
|
||||
export class BitRowDef {
|
||||
export class BitRowDefDirective {
|
||||
constructor(public template: TemplateRef<any>) {}
|
||||
}
|
||||
|
||||
@ -69,7 +69,7 @@ export class TableScrollComponent
|
||||
/** Optional trackBy function. */
|
||||
readonly trackBy = input<TrackByFunction<any> | undefined>();
|
||||
|
||||
protected readonly rowDef = contentChild(BitRowDef);
|
||||
protected readonly rowDef = contentChild(BitRowDefDirective);
|
||||
|
||||
/**
|
||||
* Height of the thead element (in pixels).
|
||||
|
||||
@ -5,14 +5,14 @@ import { NgModule } from "@angular/core";
|
||||
import { CellDirective } from "./cell.directive";
|
||||
import { RowDirective } from "./row.directive";
|
||||
import { SortableComponent } from "./sortable.component";
|
||||
import { BitRowDef, TableScrollComponent } from "./table-scroll.component";
|
||||
import { BitRowDefDirective, TableScrollComponent } from "./table-scroll.component";
|
||||
import { TableBodyDirective, TableComponent } from "./table.component";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
ScrollingModule,
|
||||
BitRowDef,
|
||||
BitRowDefDirective,
|
||||
CellDirective,
|
||||
RowDirective,
|
||||
SortableComponent,
|
||||
@ -21,7 +21,7 @@ import { TableBodyDirective, TableComponent } from "./table.component";
|
||||
TableScrollComponent,
|
||||
],
|
||||
exports: [
|
||||
BitRowDef,
|
||||
BitRowDefDirective,
|
||||
CellDirective,
|
||||
RowDirective,
|
||||
SortableComponent,
|
||||
|
||||
@ -8,6 +8,8 @@ import { firstValueFrom } from "rxjs";
|
||||
providers: [TextFieldModule],
|
||||
hostDirectives: [CdkTextareaAutosize],
|
||||
})
|
||||
// FIXME(https://bitwarden.atlassian.net/browse/PM-28232): Use Directive suffix
|
||||
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
||||
export class VaultAutosizeReadOnlyTextArea implements AfterViewInit {
|
||||
constructor(
|
||||
@Host() private autosize: CdkTextareaAutosize,
|
||||
|
||||
112
package-lock.json
generated
112
package-lock.json
generated
@ -38,7 +38,7 @@
|
||||
"@nx/js": "21.6.8",
|
||||
"@nx/webpack": "21.6.8",
|
||||
"big-integer": "1.6.52",
|
||||
"braintree-web-drop-in": "1.44.0",
|
||||
"braintree-web-drop-in": "1.46.0",
|
||||
"buffer": "6.0.3",
|
||||
"bufferutil": "4.0.9",
|
||||
"chalk": "4.1.2",
|
||||
@ -4798,15 +4798,15 @@
|
||||
"link": true
|
||||
},
|
||||
"node_modules/@braintree/asset-loader": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@braintree/asset-loader/-/asset-loader-2.0.1.tgz",
|
||||
"integrity": "sha512-OGAoBA5MRVsr5qg0sXM6NMJbqHnYZhBudtM6WGgpQnoX42fjUYbE6Y6qFuuerD5z3lsOAjnu80DooBs1VBuh5Q==",
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@braintree/asset-loader/-/asset-loader-2.0.3.tgz",
|
||||
"integrity": "sha512-uREap1j30wKRlC0mK99nNPMpEp77NtB6XixpDfFJPZHmkrmw7IB4skKe+26LZBK1H6oSainFhAyKoP7x3eyOKA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@braintree/browser-detection": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@braintree/browser-detection/-/browser-detection-2.0.1.tgz",
|
||||
"integrity": "sha512-wpRI7AXEUh6o3ILrJbpNOYE7ItfjX/S8JZP7Z5FF66ULngBGYOqE8SeLlLKXG69Nc07HtlL/6nk/h539iz9hcQ==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@braintree/browser-detection/-/browser-detection-2.0.2.tgz",
|
||||
"integrity": "sha512-Zrv/pyodvwv/hsjsBKXKVcwHZOkx4A/5Cy2hViXtqghAhLd3483bYUIfHZJE5JKTrd018ny1FI5pN1PHFtW7vw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@braintree/event-emitter": {
|
||||
@ -4822,9 +4822,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@braintree/iframer": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@braintree/iframer/-/iframer-2.0.0.tgz",
|
||||
"integrity": "sha512-x1kHOyIJNDvi4P1s6pVBZhqhBa1hqDG9+yzcsCR1oNVC0LxH9CAP8bKxioT8/auY1sUyy+D8T4Vp/jv7QqSqLQ==",
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@braintree/iframer/-/iframer-2.0.1.tgz",
|
||||
"integrity": "sha512-t1zJX5+f1yxHAzBJPaQT/XVMocKodUqjTE+hYvuxxWjqEZIbH8/eT5b5n767jY16mYw3+XiDkKHqcp4Pclq1wg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@braintree/sanitize-url": {
|
||||
@ -4834,9 +4834,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@braintree/uuid": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@braintree/uuid/-/uuid-1.0.0.tgz",
|
||||
"integrity": "sha512-AtI5hfttWSuWAgcwLUZdcZ7Fp/8jCCUf9JTs7+Xow9ditU28zuoBovqq083yph2m3SxPYb84lGjOq+cXlXBvJg==",
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@braintree/uuid/-/uuid-1.0.1.tgz",
|
||||
"integrity": "sha512-Tgu5GoODkf4oj4aLlVIapEPEfjitIHrg5ftqY6pa5Ghr4ZUA9XtZIIZ6ZPdP9x8/X0lt/FB8tRq83QuCQCwOrA==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/@braintree/wrap-promise": {
|
||||
@ -17762,40 +17762,40 @@
|
||||
}
|
||||
},
|
||||
"node_modules/braintree-web": {
|
||||
"version": "3.113.0",
|
||||
"resolved": "https://registry.npmjs.org/braintree-web/-/braintree-web-3.113.0.tgz",
|
||||
"integrity": "sha512-qykYxZyld4X1tRNgXZQ3ZGzmhDGTBTRQ6Q24KaG9PuYqo+P2TVDEDOVC6tRbkx2RUIdXLv2M6WpkG7oLqEia9Q==",
|
||||
"version": "3.123.2",
|
||||
"resolved": "https://registry.npmjs.org/braintree-web/-/braintree-web-3.123.2.tgz",
|
||||
"integrity": "sha512-N4IH75vKY67eONc0Ao4e7F+XagFW+3ok+Nfs/eOjw5D/TUt03diMAQ8woOwJghi2ql6/yjqNzZi2zE/sTWXmJg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@braintree/asset-loader": "2.0.1",
|
||||
"@braintree/browser-detection": "2.0.1",
|
||||
"@braintree/asset-loader": "2.0.3",
|
||||
"@braintree/browser-detection": "2.0.2",
|
||||
"@braintree/event-emitter": "0.4.1",
|
||||
"@braintree/extended-promise": "1.0.0",
|
||||
"@braintree/iframer": "2.0.0",
|
||||
"@braintree/iframer": "2.0.1",
|
||||
"@braintree/sanitize-url": "7.0.4",
|
||||
"@braintree/uuid": "1.0.0",
|
||||
"@braintree/uuid": "1.0.1",
|
||||
"@braintree/wrap-promise": "2.1.0",
|
||||
"@paypal/accelerated-checkout-loader": "1.1.0",
|
||||
"card-validator": "10.0.0",
|
||||
"credit-card-type": "10.0.1",
|
||||
"framebus": "6.0.0",
|
||||
"inject-stylesheet": "6.0.1",
|
||||
"card-validator": "10.0.3",
|
||||
"credit-card-type": "10.0.2",
|
||||
"framebus": "6.0.3",
|
||||
"inject-stylesheet": "6.0.2",
|
||||
"promise-polyfill": "8.2.3",
|
||||
"restricted-input": "3.0.5"
|
||||
"restricted-input": "4.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/braintree-web-drop-in": {
|
||||
"version": "1.44.0",
|
||||
"resolved": "https://registry.npmjs.org/braintree-web-drop-in/-/braintree-web-drop-in-1.44.0.tgz",
|
||||
"integrity": "sha512-maOq9SwiXztIzixJhOras7K44x4UIqqnkyQMYAJqxQ8WkADv9AkflCu2j3IeVYCus/Th9gWWFHcBugn3C4sZGw==",
|
||||
"version": "1.46.0",
|
||||
"resolved": "https://registry.npmjs.org/braintree-web-drop-in/-/braintree-web-drop-in-1.46.0.tgz",
|
||||
"integrity": "sha512-KxCjJpaigoMajYD/iIA+ohXaI6Olt2Bj/Yu45WpJOjolKO9n1UmXl9bsq9UIiGOFIGqi/JWva1wI4cIHHvcI1A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@braintree/asset-loader": "2.0.1",
|
||||
"@braintree/browser-detection": "2.0.1",
|
||||
"@braintree/asset-loader": "2.0.3",
|
||||
"@braintree/browser-detection": "2.0.2",
|
||||
"@braintree/event-emitter": "0.4.1",
|
||||
"@braintree/uuid": "1.0.0",
|
||||
"@braintree/uuid": "1.0.1",
|
||||
"@braintree/wrap-promise": "2.1.0",
|
||||
"braintree-web": "3.113.0"
|
||||
"braintree-web": "3.123.2"
|
||||
}
|
||||
},
|
||||
"node_modules/browser-assert": {
|
||||
@ -18444,20 +18444,14 @@
|
||||
"license": "CC-BY-4.0"
|
||||
},
|
||||
"node_modules/card-validator": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/card-validator/-/card-validator-10.0.0.tgz",
|
||||
"integrity": "sha512-2fLyCBOxO7/b56sxoYav8FeJqv9bWpZSyKq8sXKxnpxTGXHnM/0c8WEKG+ZJ+OXFcabnl98pD0EKBtTn+Tql0g==",
|
||||
"version": "10.0.3",
|
||||
"resolved": "https://registry.npmjs.org/card-validator/-/card-validator-10.0.3.tgz",
|
||||
"integrity": "sha512-xOEDsK3hojV0OIpmrR64eZGpngnOqRDEP20O+WSRtvjLSW6nyekW4i2N9SzYg679uFO3RyHcFHxb+mml5tXc4A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"credit-card-type": "^9.1.0"
|
||||
"credit-card-type": "^10.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/card-validator/node_modules/credit-card-type": {
|
||||
"version": "9.1.0",
|
||||
"resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-9.1.0.tgz",
|
||||
"integrity": "sha512-CpNFuLxiPFxuZqhSKml3M+t0K/484pMAnfYWH14JoD7OZMnmC0Lmo+P7JX9SobqFpRoo7ifA18kOHdxJywYPEA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/case-sensitive-paths-webpack-plugin": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
|
||||
@ -19692,9 +19686,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/credit-card-type": {
|
||||
"version": "10.0.1",
|
||||
"resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-10.0.1.tgz",
|
||||
"integrity": "sha512-vQOuWmBgsgG1ovGeDi8m6Zeu1JaqH/JncrxKmaqMbv/LunyOQdLiQhPHtOsNlbUI05TocR5nod/Mbs3HYtr6sQ==",
|
||||
"version": "10.0.2",
|
||||
"resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-10.0.2.tgz",
|
||||
"integrity": "sha512-vt/iQokU0mtrT7ceRU75FSmWnIh5JFpLsUUUWYRmztYekOGm0ZbCuzwFTbNkq41k92y+0B8ChscFhRN9DhVZEA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/cross-dirname": {
|
||||
@ -23410,20 +23404,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/framebus": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/framebus/-/framebus-6.0.0.tgz",
|
||||
"integrity": "sha512-bL9V68hVaVBCY9rveoWbPFFI9hAXIJtESs51B+9XmzvMt38+wP8b4VdiJsavjMS6NfPZ/afQ/jc2qaHmSGI1kQ==",
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/framebus/-/framebus-6.0.3.tgz",
|
||||
"integrity": "sha512-G/N2p+kFZ1xPBge7tbtTq2KcTR1kSKs1rVbTqH//WdtvJSexS33fsTTOq3yfUWvUczqhujyaFc+omawC9YyRBg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@braintree/uuid": "^0.1.0"
|
||||
"@braintree/uuid": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/framebus/node_modules/@braintree/uuid": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@braintree/uuid/-/uuid-0.1.0.tgz",
|
||||
"integrity": "sha512-YvZJdlNcK5EnR+7M8AjgEAf4Qx696+FOSYlPfy5ePn80vODtVAUU0FxHnzKZC0og1VbDNQDDiwhthR65D4Na0g==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/fresh": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
|
||||
@ -24987,9 +24975,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/inject-stylesheet": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/inject-stylesheet/-/inject-stylesheet-6.0.1.tgz",
|
||||
"integrity": "sha512-2fvune1D4+8mvJoLVo95ncY4HrDkIaYIReRzXv8tkWFgdG9iuc5QuX57gtSDPWTWQI/f5BGwwtH85wxHouzucg==",
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/inject-stylesheet/-/inject-stylesheet-6.0.2.tgz",
|
||||
"integrity": "sha512-sswMueya1LXEfwcy7KXPuq3zAW6HvgAeViApEhIaCviCkP4XYoKrQj8ftEmxPmIHn88X4R3xOAsnN/QCPvVKWw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/inquirer": {
|
||||
@ -36154,12 +36142,12 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/restricted-input": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/restricted-input/-/restricted-input-3.0.5.tgz",
|
||||
"integrity": "sha512-lUuXZ3wUnHURRarj5/0C8vomWIfWJO+p7T6RYwB46v7Oyuyr3yyupU+i7SjqUv4S6RAeAAZt1C/QCLJ9xhQBow==",
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/restricted-input/-/restricted-input-4.0.3.tgz",
|
||||
"integrity": "sha512-VpkwT5Fr3DhvoRZfPnmHDhnYAYETjjNzDlvA4NlW0iknFS47C5X4OCHEpOOxaPjvmka5V8d1ty1jVVoorZKvHg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@braintree/browser-detection": "^1.12.1"
|
||||
"@braintree/browser-detection": "^1.17.2"
|
||||
}
|
||||
},
|
||||
"node_modules/restricted-input/node_modules/@braintree/browser-detection": {
|
||||
|
||||
@ -175,7 +175,7 @@
|
||||
"@nx/js": "21.6.8",
|
||||
"@nx/webpack": "21.6.8",
|
||||
"big-integer": "1.6.52",
|
||||
"braintree-web-drop-in": "1.44.0",
|
||||
"braintree-web-drop-in": "1.46.0",
|
||||
"buffer": "6.0.3",
|
||||
"bufferutil": "4.0.9",
|
||||
"chalk": "4.1.2",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user