@sentry/browser 9.22.0 → 9.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/npm/cjs/client.js +34 -24
- package/build/npm/cjs/client.js.map +1 -1
- package/build/npm/cjs/index.js +1 -0
- package/build/npm/cjs/index.js.map +1 -1
- package/build/npm/cjs/integrations/browserapierrors.js +18 -2
- package/build/npm/cjs/integrations/browserapierrors.js.map +1 -1
- package/build/npm/cjs/sdk.js +10 -89
- package/build/npm/cjs/sdk.js.map +1 -1
- package/build/npm/cjs/tracing/browserTracingIntegration.js +37 -41
- package/build/npm/cjs/tracing/browserTracingIntegration.js.map +1 -1
- package/build/npm/cjs/utils/detectBrowserExtension.js +59 -0
- package/build/npm/cjs/utils/detectBrowserExtension.js.map +1 -0
- package/build/npm/esm/client.js +34 -25
- package/build/npm/esm/client.js.map +1 -1
- package/build/npm/esm/index.js +1 -1
- package/build/npm/esm/integrations/browserapierrors.js +18 -2
- package/build/npm/esm/integrations/browserapierrors.js.map +1 -1
- package/build/npm/esm/package.json +1 -1
- package/build/npm/esm/sdk.js +12 -90
- package/build/npm/esm/sdk.js.map +1 -1
- package/build/npm/esm/tracing/browserTracingIntegration.js +39 -43
- package/build/npm/esm/tracing/browserTracingIntegration.js.map +1 -1
- package/build/npm/esm/utils/detectBrowserExtension.js +57 -0
- package/build/npm/esm/utils/detectBrowserExtension.js.map +1 -0
- package/build/npm/types/client.d.ts +9 -5
- package/build/npm/types/client.d.ts.map +1 -1
- package/build/npm/types/exports.d.ts +1 -1
- package/build/npm/types/exports.d.ts.map +1 -1
- package/build/npm/types/integrations/browserapierrors.d.ts +8 -0
- package/build/npm/types/integrations/browserapierrors.d.ts.map +1 -1
- package/build/npm/types/sdk.d.ts +1 -3
- package/build/npm/types/sdk.d.ts.map +1 -1
- package/build/npm/types/tracing/browserTracingIntegration.d.ts +7 -0
- package/build/npm/types/tracing/browserTracingIntegration.d.ts.map +1 -1
- package/build/npm/types/utils/detectBrowserExtension.d.ts +6 -0
- package/build/npm/types/utils/detectBrowserExtension.d.ts.map +1 -0
- package/build/npm/types-ts3.8/client.d.ts +9 -5
- package/build/npm/types-ts3.8/exports.d.ts +1 -1
- package/build/npm/types-ts3.8/integrations/browserapierrors.d.ts +8 -0
- package/build/npm/types-ts3.8/sdk.d.ts +1 -3
- package/build/npm/types-ts3.8/tracing/browserTracingIntegration.d.ts +7 -0
- package/build/npm/types-ts3.8/utils/detectBrowserExtension.d.ts +6 -0
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserapierrors.d.ts","sourceRoot":"","sources":["../../../../src/integrations/browserapierrors.ts"],"names":[],"mappings":"AA0CA,UAAU,uBAAuB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"browserapierrors.d.ts","sourceRoot":"","sources":["../../../../src/integrations/browserapierrors.ts"],"names":[],"mappings":"AA0CA,UAAU,uBAAuB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAEhC;;;;;;OAMG;IACH,2BAA2B,EAAE,OAAO,CAAC;CACtC;AA2CD;;GAEG;AACH,eAAO,MAAM,2BAA2B,gGAAkD,CAAC"}
|
package/build/npm/types/sdk.d.ts
CHANGED
|
@@ -2,8 +2,6 @@ import type { Client, Integration, Options } from '@sentry/core';
|
|
|
2
2
|
import type { BrowserOptions } from './client';
|
|
3
3
|
/** Get the default integrations for the browser SDK. */
|
|
4
4
|
export declare function getDefaultIntegrations(_options: Options): Integration[];
|
|
5
|
-
/** Exported only for tests. */
|
|
6
|
-
export declare function applyDefaultOptions(optionsArg?: BrowserOptions): BrowserOptions;
|
|
7
5
|
/**
|
|
8
6
|
* The Sentry Browser SDK Client.
|
|
9
7
|
*
|
|
@@ -50,7 +48,7 @@ export declare function applyDefaultOptions(optionsArg?: BrowserOptions): Browse
|
|
|
50
48
|
*
|
|
51
49
|
* @see {@link BrowserOptions} for documentation on configuration options.
|
|
52
50
|
*/
|
|
53
|
-
export declare function init(
|
|
51
|
+
export declare function init(options?: BrowserOptions): Client | undefined;
|
|
54
52
|
/**
|
|
55
53
|
* This function is here to be API compatible with the loader.
|
|
56
54
|
* @hidden
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AASjE,OAAO,KAAK,EAAwB,cAAc,EAAE,MAAM,UAAU,CAAC;AAYrE,wDAAwD;AACxD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,EAAE,CAkBvE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,GAAG,SAAS,CAgBrE;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAEjD"}
|
|
@@ -86,6 +86,12 @@ export interface BrowserTracingOptions {
|
|
|
86
86
|
* Default: true
|
|
87
87
|
*/
|
|
88
88
|
enableHTTPTimings: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Resource spans with `op`s matching strings in the array will not be emitted.
|
|
91
|
+
*
|
|
92
|
+
* Default: []
|
|
93
|
+
*/
|
|
94
|
+
ignoreResourceSpans: Array<string>;
|
|
89
95
|
/**
|
|
90
96
|
* Link the currently started trace to a previous trace (e.g. a prior pageload, navigation or
|
|
91
97
|
* manually started span). When enabled, this option will allow you to navigate between traces
|
|
@@ -167,6 +173,7 @@ export interface BrowserTracingOptions {
|
|
|
167
173
|
*/
|
|
168
174
|
export declare const browserTracingIntegration: (_options?: Partial<BrowserTracingOptions>) => {
|
|
169
175
|
name: string;
|
|
176
|
+
setup(client: Client<import("@sentry/core").ClientOptions<import("@sentry/core").BaseTransportOptions>>): void;
|
|
170
177
|
afterAllSetup(client: Client<import("@sentry/core").ClientOptions<import("@sentry/core").BaseTransportOptions>>): void;
|
|
171
178
|
};
|
|
172
179
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserTracingIntegration.d.ts","sourceRoot":"","sources":["../../../../src/tracing/browserTracingIntegration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAiB,IAAI,EAAE,gBAAgB,EAAqB,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"browserTracingIntegration.d.ts","sourceRoot":"","sources":["../../../../src/tracing/browserTracingIntegration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAiB,IAAI,EAAE,gBAAgB,EAAqB,eAAe,EAAE,MAAM,cAAc,CAAC;AAuCtH,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAO/D,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;;;OAMG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,wBAAwB,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;;;;OAKG;IACH,2BAA2B,EAAE,OAAO,CAAC;IAErC;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEnC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,iBAAiB,EAAE,WAAW,GAAG,iBAAiB,GAAG,KAAK,CAAC;IAE3D;;;;;;;;;;;;;;OAcG;IACH,uBAAuB,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;QACpB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,wBAAwB,EAAE,OAAO,CAAC;KACnC,CAAC,CAAC;IAEH;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,gBAAgB,CAAC;IAElE;;;;;OAKG;IACH,0BAA0B,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE9D;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE;QAAE,OAAO,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI,CAAC;CAC1F;AAiBD;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,cAAe,QAAQ,qBAAqB,CAAC;;;;CAkRzD,CAAC;AAE3B;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,gBAAgB,EAC7B,YAAY,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAChF,IAAI,GAAG,SAAS,CAKlB;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAMjH;AAED,sCAAsC;AACtC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASnE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if the SDK is running in an embedded browser extension.
|
|
3
|
+
* Stand-alone browser extensions (which do not share the same data as the main browser page) are fine.
|
|
4
|
+
*/
|
|
5
|
+
export declare function checkAndWarnIfIsEmbeddedBrowserExtension(): boolean;
|
|
6
|
+
//# sourceMappingURL=detectBrowserExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectBrowserExtension.d.ts","sourceRoot":"","sources":["../../../../src/utils/detectBrowserExtension.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,wBAAgB,wCAAwC,IAAI,OAAO,CAelE"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { BrowserClientProfilingOptions, BrowserClientReplayOptions, ClientOptions, Event, EventHint, Options, ParameterizedString, Scope, SeverityLevel } from '@sentry/core';
|
|
2
2
|
import { Client } from '@sentry/core';
|
|
3
3
|
import { BrowserTransportOptions } from './transports/types';
|
|
4
|
+
type BrowserSpecificOptions = BrowserClientReplayOptions & BrowserClientProfilingOptions & {
|
|
5
|
+
/** If configured, this URL will be used as base URL for lazy loading integration. */
|
|
6
|
+
cdnBaseUrl?: string;
|
|
7
|
+
};
|
|
4
8
|
/**
|
|
5
9
|
* Configuration options for the Sentry Browser SDK.
|
|
6
10
|
* @see @sentry/core Options for more information.
|
|
7
11
|
*/
|
|
8
|
-
export type BrowserOptions = Options<BrowserTransportOptions> &
|
|
12
|
+
export type BrowserOptions = Options<BrowserTransportOptions> & BrowserSpecificOptions & {
|
|
9
13
|
/**
|
|
10
14
|
* Important: Only set this option if you know what you are doing!
|
|
11
15
|
*
|
|
@@ -29,10 +33,7 @@ export type BrowserOptions = Options<BrowserTransportOptions> & BrowserClientRep
|
|
|
29
33
|
* Configuration options for the Sentry Browser SDK Client class
|
|
30
34
|
* @see BrowserClient for more information.
|
|
31
35
|
*/
|
|
32
|
-
export type BrowserClientOptions = ClientOptions<BrowserTransportOptions> &
|
|
33
|
-
/** If configured, this URL will be used as base URL for lazy loading integration. */
|
|
34
|
-
cdnBaseUrl?: string;
|
|
35
|
-
};
|
|
36
|
+
export type BrowserClientOptions = ClientOptions<BrowserTransportOptions> & BrowserSpecificOptions;
|
|
36
37
|
/**
|
|
37
38
|
* The Sentry Browser SDK Client.
|
|
38
39
|
*
|
|
@@ -60,4 +61,7 @@ export declare class BrowserClient extends Client<BrowserClientOptions> {
|
|
|
60
61
|
*/
|
|
61
62
|
protected _prepareEvent(event: Event, hint: EventHint, currentScope: Scope, isolationScope: Scope): PromiseLike<Event | null>;
|
|
62
63
|
}
|
|
64
|
+
/** Exported only for tests. */
|
|
65
|
+
export declare function applyDefaultOptions<T extends Partial<BrowserClientOptions>>(optionsArg: T): T;
|
|
66
|
+
export {};
|
|
63
67
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { Breadcrumb, BreadcrumbHint, RequestEventData, SdkInfo, Event, EventHint, ErrorEvent, Exception, SeverityLevel, StackFrame, Stacktrace, Thread, User, Session, ReportDialogOptions, } from '@sentry/core';
|
|
2
2
|
export { BrowserOptions } from './client';
|
|
3
|
-
export { addEventProcessor, addBreadcrumb, addIntegration, captureException, captureEvent, captureFeedback, captureMessage, close, createTransport, lastEventId, flush, getClient, isInitialized, getCurrentScope, getIsolationScope, getGlobalScope, setCurrentClient, Scope, continueTrace, suppressTracing, SDK_VERSION, setContext, setExtra, setExtras, setTag, setTags, setUser, withScope, withIsolationScope, functionToStringIntegration, inboundFiltersIntegration, eventFiltersIntegration, dedupeIntegration, parameterize, startSession, captureSession, endSession, spanToJSON, spanToTraceHeader, spanToBaggageHeader, updateSpanName, } from '@sentry/core';
|
|
3
|
+
export { addEventProcessor, addBreadcrumb, addIntegration, captureException, captureEvent, captureFeedback, captureMessage, close, createTransport, lastEventId, flush, getClient, isInitialized, isEnabled, getCurrentScope, getIsolationScope, getGlobalScope, setCurrentClient, Scope, continueTrace, suppressTracing, SDK_VERSION, setContext, setExtra, setExtras, setTag, setTags, setUser, withScope, withIsolationScope, functionToStringIntegration, inboundFiltersIntegration, eventFiltersIntegration, dedupeIntegration, parameterize, startSession, captureSession, endSession, spanToJSON, spanToTraceHeader, spanToBaggageHeader, updateSpanName, } from '@sentry/core';
|
|
4
4
|
export { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, } from '@sentry/core';
|
|
5
5
|
export { WINDOW } from './helpers';
|
|
6
6
|
export { BrowserClient } from './client';
|
|
@@ -4,6 +4,14 @@ interface BrowserApiErrorsOptions {
|
|
|
4
4
|
requestAnimationFrame: boolean;
|
|
5
5
|
XMLHttpRequest: boolean;
|
|
6
6
|
eventTarget: boolean | string[];
|
|
7
|
+
/**
|
|
8
|
+
* If you experience issues with this integration causing double-invocations of event listeners,
|
|
9
|
+
* try setting this option to `true`. It will unregister the original callbacks from the event targets
|
|
10
|
+
* before adding the instrumented callback.
|
|
11
|
+
*
|
|
12
|
+
* @default false
|
|
13
|
+
*/
|
|
14
|
+
unregisterOriginalCallbacks: boolean;
|
|
7
15
|
}
|
|
8
16
|
/**
|
|
9
17
|
* Wrap timer functions and event targets to catch errors and provide better meta data.
|
|
@@ -2,8 +2,6 @@ import { Client, Integration, Options } from '@sentry/core';
|
|
|
2
2
|
import { BrowserOptions } from './client';
|
|
3
3
|
/** Get the default integrations for the browser SDK. */
|
|
4
4
|
export declare function getDefaultIntegrations(_options: Options): Integration[];
|
|
5
|
-
/** Exported only for tests. */
|
|
6
|
-
export declare function applyDefaultOptions(optionsArg?: BrowserOptions): BrowserOptions;
|
|
7
5
|
/**
|
|
8
6
|
* The Sentry Browser SDK Client.
|
|
9
7
|
*
|
|
@@ -50,7 +48,7 @@ export declare function applyDefaultOptions(optionsArg?: BrowserOptions): Browse
|
|
|
50
48
|
*
|
|
51
49
|
* @see {@link BrowserOptions} for documentation on configuration options.
|
|
52
50
|
*/
|
|
53
|
-
export declare function init(
|
|
51
|
+
export declare function init(options?: BrowserOptions): Client | undefined;
|
|
54
52
|
/**
|
|
55
53
|
* This function is here to be API compatible with the loader.
|
|
56
54
|
* @hidden
|
|
@@ -86,6 +86,12 @@ export interface BrowserTracingOptions {
|
|
|
86
86
|
* Default: true
|
|
87
87
|
*/
|
|
88
88
|
enableHTTPTimings: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Resource spans with `op`s matching strings in the array will not be emitted.
|
|
91
|
+
*
|
|
92
|
+
* Default: []
|
|
93
|
+
*/
|
|
94
|
+
ignoreResourceSpans: Array<string>;
|
|
89
95
|
/**
|
|
90
96
|
* Link the currently started trace to a previous trace (e.g. a prior pageload, navigation or
|
|
91
97
|
* manually started span). When enabled, this option will allow you to navigate between traces
|
|
@@ -167,6 +173,7 @@ export interface BrowserTracingOptions {
|
|
|
167
173
|
*/
|
|
168
174
|
export declare const browserTracingIntegration: (_options?: Partial<BrowserTracingOptions>) => {
|
|
169
175
|
name: string;
|
|
176
|
+
setup(client: Client<import("@sentry/core").ClientOptions<import("@sentry/core").BaseTransportOptions>>): void;
|
|
170
177
|
afterAllSetup(client: Client<import("@sentry/core").ClientOptions<import("@sentry/core").BaseTransportOptions>>): void;
|
|
171
178
|
};
|
|
172
179
|
/**
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if the SDK is running in an embedded browser extension.
|
|
3
|
+
* Stand-alone browser extensions (which do not share the same data as the main browser page) are fine.
|
|
4
|
+
*/
|
|
5
|
+
export declare function checkAndWarnIfIsEmbeddedBrowserExtension(): boolean;
|
|
6
|
+
//# sourceMappingURL=detectBrowserExtension.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentry/browser",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.24.0",
|
|
4
4
|
"description": "Official Sentry SDK for browsers",
|
|
5
5
|
"repository": "git://github.com/getsentry/sentry-javascript.git",
|
|
6
6
|
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser",
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@sentry-internal/browser-utils": "9.
|
|
43
|
-
"@sentry-internal/feedback": "9.
|
|
44
|
-
"@sentry-internal/replay": "9.
|
|
45
|
-
"@sentry-internal/replay-canvas": "9.
|
|
46
|
-
"@sentry/core": "9.
|
|
42
|
+
"@sentry-internal/browser-utils": "9.24.0",
|
|
43
|
+
"@sentry-internal/feedback": "9.24.0",
|
|
44
|
+
"@sentry-internal/replay": "9.24.0",
|
|
45
|
+
"@sentry-internal/replay-canvas": "9.24.0",
|
|
46
|
+
"@sentry/core": "9.24.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@sentry-internal/integration-shims": "9.
|
|
49
|
+
"@sentry-internal/integration-shims": "9.24.0",
|
|
50
50
|
"fake-indexeddb": "^4.0.1"
|
|
51
51
|
},
|
|
52
52
|
"scripts": {
|