diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 0000000000..e5b6d8d6a6 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000000..d9d5734926 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "master", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000..96dfc32c78 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,13 @@ +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "rrdom": "0.1.7", + "rrdom-nodejs": "0.1.7", + "rrweb": "2.0.0-alpha.4", + "rrweb-player": "1.0.0-alpha.4", + "rrweb-snapshot": "2.0.0-alpha.4", + "@rrweb/types": "2.0.0-alpha.4" + }, + "changesets": [] +} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000..f5f4afccce --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,38 @@ +name: Release + +on: + push: + branches: + - master + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + + - name: Setup Node.js lts/* + uses: actions/setup-node@v3 + with: + node-version: lts/* + + - name: Install Dependencies + run: yarn + + - name: Create Release Pull Request or Publish to npm + id: changesets + uses: changesets/action@v1 + with: + publish: yarn run release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + # - name: Send a Slack notification if a publish happens + # if: steps.changesets.outputs.published == 'true' + # # You can do something when a publish happens. + # run: my-slack-bot send-notification --message "A new version of ${GITHUB_REPOSITORY} was published!" diff --git a/package.json b/package.json index 7192130275..2245470f48 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "packages/*" ], "devDependencies": { + "@changesets/cli": "^2.26.0", "@monorepo-utils/workspaces-to-typescript-project-references": "^2.8.2", "@typescript-eslint/eslint-plugin": "^5.25.0", "@typescript-eslint/parser": "^5.25.0", @@ -42,7 +43,8 @@ "repl": "cd packages/rrweb && npm run repl", "live-stream": "cd packages/rrweb && yarn live-stream", "lint": "yarn run concurrently --success=all -r -m=1 'yarn run markdownlint docs' 'yarn eslint packages/*/src --ext .ts,.tsx,.js,.jsx,.svelte'", - "lint:report": "yarn eslint --output-file eslint_report.json --format json packages/*/src --ext .ts,.tsx,.js,.jsx" + "lint:report": "yarn eslint --output-file eslint_report.json --format json packages/*/src --ext .ts,.tsx,.js,.jsx", + "release": "yarn build:all && changeset publish" }, "resolutions": { "**/jsdom/cssom": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz" diff --git a/packages/rrdom-nodejs/src/document-nodejs.ts b/packages/rrdom-nodejs/src/document-nodejs.ts index 69f85b87f5..1d13970d34 100644 --- a/packages/rrdom-nodejs/src/document-nodejs.ts +++ b/packages/rrdom-nodejs/src/document-nodejs.ts @@ -36,15 +36,16 @@ export class RRWindow { export class RRDocument extends BaseRRDocumentImpl(RRNode) - implements IRRDocument { + implements IRRDocument +{ readonly nodeName: '#document' = '#document'; private _nwsapi: NWSAPI; get nwsapi() { if (!this._nwsapi) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call this._nwsapi = nwsapi({ - document: (this as unknown) as Document, - DOMException: (null as unknown) as new ( + document: this as unknown as Document, + DOMException: null as unknown as new ( message?: string, name?: string, ) => DOMException, @@ -97,7 +98,7 @@ export class RRDocument } querySelectorAll(selectors: string): RRNode[] { - return (this.nwsapi.select(selectors) as unknown) as RRNode[]; + return this.nwsapi.select(selectors) as unknown as RRNode[]; } getElementsByTagName(tagName: string): RRElement[] { @@ -220,7 +221,7 @@ export class RRElement extends BaseRRElementImpl(RRNode) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore get style() { - return (this._style as unknown) as CSSStyleDeclaration; + return this._style as unknown as CSSStyleDeclaration; } attachShadow(_init: ShadowRootInit): RRElement { @@ -268,14 +269,14 @@ export class RRElement extends BaseRRElementImpl(RRNode) { querySelectorAll(selectors: string): RRNode[] { const result: RRElement[] = []; if (this.ownerDocument !== null) { - ((this.ownerDocument as RRDocument).nwsapi.select( + (this.ownerDocument as RRDocument).nwsapi.select( selectors, - (this as unknown) as Element, + this as unknown as Element, (element) => { - if (((element as unknown) as RRElement) !== this) - result.push((element as unknown) as RRElement); + if ((element as unknown as RRElement) !== this) + result.push(element as unknown as RRElement); }, - ) as unknown) as RRNode[]; + ) as unknown as RRNode[]; } return result; } @@ -393,6 +394,5 @@ interface RRElementTagNameMap { video: RRMediaElement; } -type RRElementType< - K extends keyof HTMLElementTagNameMap -> = K extends keyof RRElementTagNameMap ? RRElementTagNameMap[K] : RRElement; +type RRElementType = + K extends keyof RRElementTagNameMap ? RRElementTagNameMap[K] : RRElement; diff --git a/packages/rrdom-nodejs/src/polyfill.ts b/packages/rrdom-nodejs/src/polyfill.ts index ae1f88049b..af0dae0cc6 100644 --- a/packages/rrdom-nodejs/src/polyfill.ts +++ b/packages/rrdom-nodejs/src/polyfill.ts @@ -51,10 +51,10 @@ export function polyfillRAF() { } } - (global as Window & - typeof globalThis).requestAnimationFrame = requestAnimationFrame; - (global as Window & - typeof globalThis).cancelAnimationFrame = cancelAnimationFrame; + (global as Window & typeof globalThis).requestAnimationFrame = + requestAnimationFrame; + (global as Window & typeof globalThis).cancelAnimationFrame = + cancelAnimationFrame; } /** @@ -88,5 +88,5 @@ export function polyfillDocument() { rrdom.documentElement!.appendChild(rrdom.createElement('head')); rrdom.documentElement!.appendChild(rrdom.createElement('body')); })(); - global.document = (rrdom as unknown) as Document; + global.document = rrdom as unknown as Document; } diff --git a/packages/rrdom-nodejs/test/polyfill.test.ts b/packages/rrdom-nodejs/test/polyfill.test.ts index 240976ad83..bca249b046 100644 --- a/packages/rrdom-nodejs/test/polyfill.test.ts +++ b/packages/rrdom-nodejs/test/polyfill.test.ts @@ -26,7 +26,7 @@ describe('polyfill for nodejs', () => { polyfillPerformance(); expect(global.performance).toBe(originalPerformance); } - const fakePerformance = (jest.fn() as unknown) as Performance; + const fakePerformance = jest.fn() as unknown as Performance; global.performance = fakePerformance; polyfillPerformance(); expect(global.performance).toEqual(fakePerformance); @@ -72,9 +72,11 @@ describe('polyfill for nodejs', () => { }); it('should not polyfill requestAnimationFrame if it already exists', () => { - const fakeRequestAnimationFrame = (jest.fn() as unknown) as typeof global.requestAnimationFrame; + const fakeRequestAnimationFrame = + jest.fn() as unknown as typeof global.requestAnimationFrame; global.requestAnimationFrame = fakeRequestAnimationFrame; - const fakeCancelAnimationFrame = (jest.fn() as unknown) as typeof global.cancelAnimationFrame; + const fakeCancelAnimationFrame = + jest.fn() as unknown as typeof global.cancelAnimationFrame; global.cancelAnimationFrame = fakeCancelAnimationFrame; polyfillRAF(); expect(global.requestAnimationFrame).toBe(fakeRequestAnimationFrame); @@ -91,7 +93,7 @@ describe('polyfill for nodejs', () => { }); it('should not polyfill Event type if it already exists', () => { - const fakeEvent = (jest.fn() as unknown) as typeof global.Event; + const fakeEvent = jest.fn() as unknown as typeof global.Event; global.Event = fakeEvent; polyfillEvent(); expect(global.Event).toBe(fakeEvent); @@ -106,7 +108,7 @@ describe('polyfill for nodejs', () => { }); it('should not polyfill Node type if it already exists', () => { - const fakeNode = (jest.fn() as unknown) as typeof global.Node; + const fakeNode = jest.fn() as unknown as typeof global.Node; global.Node = fakeNode; polyfillNode(); expect(global.Node).toBe(fakeNode); @@ -121,7 +123,7 @@ describe('polyfill for nodejs', () => { }); it('should not polyfill document object if it already exists', () => { - const fakeDocument = (jest.fn() as unknown) as typeof global.document; + const fakeDocument = jest.fn() as unknown as typeof global.document; global.document = fakeDocument; polyfillDocument(); expect(global.document).toBe(fakeDocument); diff --git a/packages/rrdom/src/diff.ts b/packages/rrdom/src/diff.ts index 842bfb8953..e4e06e8db5 100644 --- a/packages/rrdom/src/diff.ts +++ b/packages/rrdom/src/diff.ts @@ -301,10 +301,9 @@ function diffAfterUpdatingChildren( oldTree.textContent !== (newTree as IRRText | IRRComment | IRRCDATASection).data ) - oldTree.textContent = (newTree as - | IRRText - | IRRComment - | IRRCDATASection).data; + oldTree.textContent = ( + newTree as IRRText | IRRComment | IRRCDATASection + ).data; break; } } diff --git a/packages/rrdom/src/document.ts b/packages/rrdom/src/document.ts index 9f76f82123..6af6e8198d 100644 --- a/packages/rrdom/src/document.ts +++ b/packages/rrdom/src/document.ts @@ -195,7 +195,7 @@ export class BaseRRNode implements IRRNode { } export function BaseRRDocumentImpl< - RRNode extends ConstrainedConstructor + RRNode extends ConstrainedConstructor, >(RRNodeClass: RRNode) { return class BaseRRDocument extends RRNodeClass implements IRRDocument { public readonly nodeType: number = NodeType.DOCUMENT_NODE; @@ -401,13 +401,14 @@ export function BaseRRDocumentImpl< } export function BaseRRDocumentTypeImpl< - RRNode extends ConstrainedConstructor + RRNode extends ConstrainedConstructor, >(RRNodeClass: RRNode) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore return class BaseRRDocumentType extends RRNodeClass - implements IRRDocumentType { + implements IRRDocumentType + { public readonly nodeType: number = NodeType.DOCUMENT_TYPE_NODE; public readonly RRNodeType = RRNodeType.DocumentType; public readonly nodeName: string; @@ -431,7 +432,7 @@ export function BaseRRDocumentTypeImpl< } export function BaseRRElementImpl< - RRNode extends ConstrainedConstructor + RRNode extends ConstrainedConstructor, >(RRNodeClass: RRNode) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -479,9 +480,9 @@ export function BaseRRElementImpl< } public get style() { - const style = (this.attributes.style - ? parseCSSText(this.attributes.style) - : {}) as CSSStyleDeclaration; + const style = ( + this.attributes.style ? parseCSSText(this.attributes.style) : {} + ) as CSSStyleDeclaration; const hyphenateRE = /\B([A-Z])/g; style.setProperty = ( name: string, @@ -583,7 +584,7 @@ export function BaseRRElementImpl< } export function BaseRRMediaElementImpl< - RRElement extends ConstrainedConstructor + RRElement extends ConstrainedConstructor, >(RRElementClass: RRElement) { return class BaseRRMediaElement extends RRElementClass { public currentTime?: number; @@ -637,7 +638,7 @@ export function BaseRRTextImpl>( } export function BaseRRCommentImpl< - RRNode extends ConstrainedConstructor + RRNode extends ConstrainedConstructor, >(RRNodeClass: RRNode) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -667,13 +668,14 @@ export function BaseRRCommentImpl< } export function BaseRRCDATASectionImpl< - RRNode extends ConstrainedConstructor + RRNode extends ConstrainedConstructor, >(RRNodeClass: RRNode) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore return class BaseRRCDATASection extends RRNodeClass - implements IRRCDATASection { + implements IRRCDATASection + { public readonly nodeName: '#cdata-section' = '#cdata-section'; public readonly nodeType: number = NodeType.CDATA_SECTION_NODE; public readonly RRNodeType = RRNodeType.CDATA; diff --git a/packages/rrdom/src/index.ts b/packages/rrdom/src/index.ts index 2b90840db2..eda0dd1912 100644 --- a/packages/rrdom/src/index.ts +++ b/packages/rrdom/src/index.ts @@ -193,9 +193,8 @@ interface RRElementTagNameMap { video: RRMediaElement; } -type RRElementType< - K extends keyof HTMLElementTagNameMap -> = K extends keyof RRElementTagNameMap ? RRElementTagNameMap[K] : RRElement; +type RRElementType = + K extends keyof RRElementTagNameMap ? RRElementTagNameMap[K] : RRElement; function getValidTagName(element: HTMLElement): string { // https://github.com/rrweb-io/rrweb-snapshot/issues/56 diff --git a/packages/rrdom/test/diff.test.ts b/packages/rrdom/test/diff.test.ts index 536641b075..77595adea6 100644 --- a/packages/rrdom/test/diff.test.ts +++ b/packages/rrdom/test/diff.test.ts @@ -65,9 +65,11 @@ function createTree( type TNode = typeof rrDocument extends RRDocument ? RRNode : Node; let root: TNode; - root = (rrDocument - ? rrDocument.createElement(treeNode.tagName) - : document.createElement(treeNode.tagName)) as TNode; + root = ( + rrDocument + ? rrDocument.createElement(treeNode.tagName) + : document.createElement(treeNode.tagName) + ) as TNode; const sn = Object.assign({}, elementSn, { tagName: treeNode.tagName, @@ -75,9 +77,9 @@ function createTree( }); if (rrDocument) { - rrDocument.mirror.add((root as unknown) as RRNode, sn); + rrDocument.mirror.add(root as unknown as RRNode, sn); } else { - mirror.add((root as unknown) as Node, sn); + mirror.add(root as unknown as Node, sn); } if (treeNode.children) @@ -320,8 +322,8 @@ describe('diff algorithm for rrdom', () => { rrNode.attributes = { id: 'node1', class: 'node' }; diff(node, rrNode, replayer); - expect(((node as Node) as HTMLElement).id).toBe('node1'); - expect(((node as Node) as HTMLElement).className).toBe('node'); + expect((node as Node as HTMLElement).id).toBe('node1'); + expect((node as Node as HTMLElement).className).toBe('node'); }); it('can update exist properties', () => { @@ -330,9 +332,9 @@ describe('diff algorithm for rrdom', () => { const sn = Object.assign({}, elementSn, { tagName }); mirror.add(node, sn); - ((node as Node) as HTMLElement).id = 'element1'; - ((node as Node) as HTMLElement).className = 'element'; - ((node as Node) as HTMLElement).setAttribute('style', 'color: black'); + (node as Node as HTMLElement).id = 'element1'; + (node as Node as HTMLElement).className = 'element'; + (node as Node as HTMLElement).setAttribute('style', 'color: black'); const rrDocument = new RRDocument(); const rrNode = rrDocument.createElement(tagName); const sn2 = Object.assign({}, elementSn, { tagName }); @@ -340,17 +342,17 @@ describe('diff algorithm for rrdom', () => { rrNode.attributes = { id: 'node1', class: 'node', style: 'color: white' }; diff(node, rrNode, replayer); - expect(((node as Node) as HTMLElement).id).toBe('node1'); - expect(((node as Node) as HTMLElement).className).toBe('node'); - expect(((node as Node) as HTMLElement).getAttribute('style')).toBe( + expect((node as Node as HTMLElement).id).toBe('node1'); + expect((node as Node as HTMLElement).className).toBe('node'); + expect((node as Node as HTMLElement).getAttribute('style')).toBe( 'color: white', ); rrNode.attributes = { id: 'node2' }; diff(node, rrNode, replayer); - expect(((node as Node) as HTMLElement).id).toBe('node2'); - expect(((node as Node) as HTMLElement).className).toBe(''); - expect(((node as Node) as HTMLElement).getAttribute('style')).toBe(null); + expect((node as Node as HTMLElement).id).toBe('node2'); + expect((node as Node as HTMLElement).className).toBe(''); + expect((node as Node as HTMLElement).getAttribute('style')).toBe(null); }); it('can delete old properties', () => { @@ -359,9 +361,9 @@ describe('diff algorithm for rrdom', () => { const sn = Object.assign({}, elementSn, { tagName }); mirror.add(node, sn); - ((node as Node) as HTMLElement).id = 'element1'; - ((node as Node) as HTMLElement).className = 'element'; - ((node as Node) as HTMLElement).setAttribute('style', 'color: black'); + (node as Node as HTMLElement).id = 'element1'; + (node as Node as HTMLElement).className = 'element'; + (node as Node as HTMLElement).setAttribute('style', 'color: black'); const rrDocument = new RRDocument(); const rrNode = rrDocument.createElement(tagName); const sn2 = Object.assign({}, elementSn, { tagName }); @@ -369,15 +371,15 @@ describe('diff algorithm for rrdom', () => { rrNode.attributes = { id: 'node1' }; diff(node, rrNode, replayer); - expect(((node as Node) as HTMLElement).id).toBe('node1'); - expect(((node as Node) as HTMLElement).className).toBe(''); - expect(((node as Node) as HTMLElement).getAttribute('style')).toBe(null); + expect((node as Node as HTMLElement).id).toBe('node1'); + expect((node as Node as HTMLElement).className).toBe(''); + expect((node as Node as HTMLElement).getAttribute('style')).toBe(null); rrNode.attributes = { src: 'link' }; diff(node, rrNode, replayer); - expect(((node as Node) as HTMLElement).id).toBe(''); - expect(((node as Node) as HTMLElement).className).toBe(''); - expect(((node as Node) as HTMLElement).getAttribute('src')).toBe('link'); + expect((node as Node as HTMLElement).id).toBe(''); + expect((node as Node as HTMLElement).className).toBe(''); + expect((node as Node as HTMLElement).getAttribute('src')).toBe('link'); }); it('can diff scroll positions', () => { @@ -386,8 +388,8 @@ describe('diff algorithm for rrdom', () => { const sn = Object.assign({}, elementSn, { tagName }); mirror.add(node, sn); - expect(((node as Node) as HTMLElement).scrollLeft).toEqual(0); - expect(((node as Node) as HTMLElement).scrollTop).toEqual(0); + expect((node as Node as HTMLElement).scrollLeft).toEqual(0); + expect((node as Node as HTMLElement).scrollTop).toEqual(0); const rrDocument = new RRDocument(); const rrNode = rrDocument.createElement(tagName); const sn2 = Object.assign({}, elementSn, { tagName }); @@ -396,8 +398,8 @@ describe('diff algorithm for rrdom', () => { rrNode.scrollLeft = 100; rrNode.scrollTop = 200; diff(node, rrNode, replayer); - expect(((node as Node) as HTMLElement).scrollLeft).toEqual(100); - expect(((node as Node) as HTMLElement).scrollTop).toEqual(200); + expect((node as Node as HTMLElement).scrollLeft).toEqual(100); + expect((node as Node as HTMLElement).scrollTop).toEqual(200); }); it('can diff properties for SVG elements', () => { @@ -412,9 +414,7 @@ describe('diff algorithm for rrdom', () => { jest.spyOn(Element.prototype, 'setAttributeNS'); diff(element, node, replayer); - expect(((element as Node) as SVGElement).getAttribute('xmlns')).toBe( - value, - ); + expect((element as Node as SVGElement).getAttribute('xmlns')).toBe(value); expect(SVGElement.prototype.setAttributeNS).toHaveBeenCalledWith( 'http://www.w3.org/2000/xmlns/', 'xmlns', @@ -464,9 +464,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(3); expect(rrNode.childNodes.length).toEqual(3); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, + 1, 2, 3, ]); }); @@ -494,11 +492,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(5); expect(rrNode.childNodes.length).toEqual(5); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, - 4, - 5, + 1, 2, 3, 4, 5, ]); }); @@ -526,11 +520,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(5); expect(rrNode.childNodes.length).toEqual(5); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, - 4, - 5, + 1, 2, 3, 4, 5, ]); }); @@ -558,11 +548,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(5); expect(rrNode.childNodes.length).toEqual(5); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, - 4, - 5, + 1, 2, 3, 4, 5, ]); }); @@ -589,9 +575,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(3); expect(rrNode.childNodes.length).toEqual(3); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, + 1, 2, 3, ]); }); @@ -631,11 +615,7 @@ describe('diff algorithm for rrdom', () => { ) as Node; expect(node.childNodes.length).toEqual(5); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, - 4, - 5, + 1, 2, 3, 4, 5, ]); const rrNode = createTree( { @@ -650,9 +630,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(3); expect(rrNode.childNodes.length).toEqual(3); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 3, - 4, - 5, + 3, 4, 5, ]); }); @@ -668,11 +646,7 @@ describe('diff algorithm for rrdom', () => { ) as Node; expect(node.childNodes.length).toEqual(5); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, - 4, - 5, + 1, 2, 3, 4, 5, ]); const rrNode = createTree( { @@ -687,9 +661,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(3); expect(rrNode.childNodes.length).toEqual(3); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, + 1, 2, 3, ]); }); @@ -705,11 +677,7 @@ describe('diff algorithm for rrdom', () => { ) as Node; expect(node.childNodes.length).toEqual(5); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, - 4, - 5, + 1, 2, 3, 4, 5, ]); const rrNode = createTree( { @@ -724,10 +692,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(4); expect(rrNode.childNodes.length).toEqual(4); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 4, - 5, + 1, 2, 4, 5, ]); }); @@ -743,11 +708,7 @@ describe('diff algorithm for rrdom', () => { ) as Node; expect(node.childNodes.length).toEqual(5); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, - 4, - 5, + 1, 2, 3, 4, 5, ]); const rrNode = createTree( { @@ -762,11 +723,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(5); expect(rrNode.childNodes.length).toEqual(5); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 2, - 3, - 4, - 1, - 5, + 2, 3, 4, 1, 5, ]); }); @@ -782,9 +739,7 @@ describe('diff algorithm for rrdom', () => { ) as Node; expect(node.childNodes.length).toEqual(3); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 2, - 3, + 1, 2, 3, ]); const rrNode = createTree( { @@ -799,9 +754,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(3); expect(rrNode.childNodes.length).toEqual(3); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 2, - 3, - 1, + 2, 3, 1, ]); }); @@ -829,10 +782,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(4); expect(rrNode.childNodes.length).toEqual(4); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 1, - 4, - 2, - 3, + 1, 4, 2, 3, ]); }); @@ -860,10 +810,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(4); expect(rrNode.childNodes.length).toEqual(4); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 4, - 2, - 3, - 1, + 4, 2, 3, 1, ]); }); @@ -891,11 +838,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(5); expect(rrNode.childNodes.length).toEqual(5); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 4, - 1, - 2, - 3, - 6, + 4, 1, 2, 3, 6, ]); }); @@ -923,8 +866,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(2); expect(rrNode.childNodes.length).toEqual(2); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 4, - 6, + 4, 6, ]); }); @@ -958,14 +900,7 @@ describe('diff algorithm for rrdom', () => { expect(node.childNodes.length).toEqual(8); expect(rrNode.childNodes.length).toEqual(8); expect(Array.from(node.childNodes).map((c) => mirror.getId(c))).toEqual([ - 8, - 7, - 6, - 5, - 4, - 3, - 2, - 1, + 8, 7, 6, 5, 4, 3, 2, 1, ]); }); @@ -1131,7 +1066,7 @@ describe('diff algorithm for rrdom', () => { id: 1, } as serializedNodeWithId); - expect(((node as Node) as HTMLElement).shadowRoot).toBeNull(); + expect((node as Node as HTMLElement).shadowRoot).toBeNull(); const rrDocument = new RRDocument(); const rrNode = rrDocument.createElement(tagName); @@ -1147,11 +1082,11 @@ describe('diff algorithm for rrdom', () => { expect(rrNode.shadowRoot!.childNodes.length).toBe(1); diff(node, rrNode, replayer, rrDocument.mirror); - expect(((node as Node) as HTMLElement).shadowRoot).not.toBeNull(); - expect( - ((node as Node) as HTMLElement).shadowRoot!.childNodes.length, - ).toBe(1); - const childElement = ((node as Node) as HTMLElement).shadowRoot! + expect((node as Node as HTMLElement).shadowRoot).not.toBeNull(); + expect((node as Node as HTMLElement).shadowRoot!.childNodes.length).toBe( + 1, + ); + const childElement = (node as Node as HTMLElement).shadowRoot! .childNodes[0] as HTMLElement; expect(childElement.tagName).toEqual('DIV'); }); @@ -1623,7 +1558,7 @@ describe('diff algorithm for rrdom', () => { let result = createOrGetNode(rrNode, mirror, rrDocument.mirror); expect(result).toBeInstanceOf(HTMLElement); expect(mirror.getId(result)).toBe(0); - expect(((result as Node) as HTMLElement).tagName).toBe('DIV'); + expect((result as Node as HTMLElement).tagName).toBe('DIV'); }); it('create a node from RRNode', () => { @@ -1639,14 +1574,14 @@ describe('diff algorithm for rrdom', () => { result = createOrGetNode(rrNode, mirror, rrDocument.mirror); expect(result).toBeInstanceOf(Text); expect(mirror.getId(result)).toBe(1); - expect(((result as Node) as Text).textContent).toBe(textContent); + expect((result as Node as Text).textContent).toBe(textContent); rrNode = rrDocument.createComment(textContent); rrDocument.mirror.add(rrNode, getDefaultSN(rrNode, 2)); result = createOrGetNode(rrNode, mirror, rrDocument.mirror); expect(result).toBeInstanceOf(Comment); expect(mirror.getId(result)).toBe(2); - expect(((result as Node) as Comment).textContent).toBe(textContent); + expect((result as Node as Comment).textContent).toBe(textContent); rrNode = rrDocument.createCDATASection(''); rrDocument.mirror.add(rrNode, getDefaultSN(rrNode, 3)); @@ -1665,9 +1600,9 @@ describe('diff algorithm for rrdom', () => { let result = createOrGetNode(rrNode, mirror, rrDocument.mirror); expect(result).toBeInstanceOf(DocumentType); expect(mirror.getId(result)).toBe(0); - expect(((result as Node) as DocumentType).name).toEqual('html'); - expect(((result as Node) as DocumentType).publicId).toEqual(publicId); - expect(((result as Node) as DocumentType).systemId).toEqual(''); + expect((result as Node as DocumentType).name).toEqual('html'); + expect((result as Node as DocumentType).publicId).toEqual(publicId); + expect((result as Node as DocumentType).systemId).toEqual(''); }); it('can get a node if it already exists', () => { @@ -1687,7 +1622,7 @@ describe('diff algorithm for rrdom', () => { expect(result).toBeInstanceOf(Text); expect(mirror.getId(result)).toBe(0); - expect(((result as Node) as Text).textContent).toBe(textContent); + expect((result as Node as Text).textContent).toBe(textContent); expect(result).toEqual(text); // To make sure the existed text node is used. expect(mirror.getMeta(result)).toEqual(mirror.getMeta(text)); @@ -1696,7 +1631,7 @@ describe('diff algorithm for rrdom', () => { describe('apply virtual style rules to node', () => { beforeEach(() => { - const dummyReplayer = new Replayer(([ + const dummyReplayer = new Replayer([ { type: EventType.DomContentLoaded, timestamp: 0, @@ -1709,7 +1644,7 @@ describe('diff algorithm for rrdom', () => { }, timestamp: 0, }, - ] as unknown) as eventWithTime[]); + ] as unknown as eventWithTime[]); replayer.applyStyleSheetMutation = ( data: styleDeclarationData | styleSheetRuleData, styleSheet: CSSStyleSheet, diff --git a/packages/rrdom/test/document.test.ts b/packages/rrdom/test/document.test.ts index 47d9fa73e8..505cc700e4 100644 --- a/packages/rrdom/test/document.test.ts +++ b/packages/rrdom/test/document.test.ts @@ -424,7 +424,7 @@ describe('Basic RRDocument implementation', () => { expect(node.removeAttribute).toBeDefined(); expect(node.attachShadow).toBeDefined(); expect(node.dispatchEvent).toBeDefined(); - expect(node.dispatchEvent((null as unknown) as Event)).toBeTruthy(); + expect(node.dispatchEvent(null as unknown as Event)).toBeTruthy(); expect(node.toString()).toEqual('DIV id="id" class="className" '); }); diff --git a/packages/rrdom/test/utils.ts b/packages/rrdom/test/utils.ts index a189ae365a..6fe53920d2 100644 --- a/packages/rrdom/test/utils.ts +++ b/packages/rrdom/test/utils.ts @@ -1,7 +1,7 @@ import * as rollup from 'rollup'; import * as typescript from 'rollup-plugin-typescript2'; import resolve from '@rollup/plugin-node-resolve'; -const _typescript = (typescript as unknown) as typeof typescript.default; +const _typescript = typescript as unknown as typeof typescript.default; /** * Use rollup to compile an input TS script into JS code string. @@ -10,10 +10,10 @@ export async function compileTSCode(inputFilePath: string) { const bundle = await rollup.rollup({ input: inputFilePath, plugins: [ - (resolve() as unknown) as rollup.Plugin, - (_typescript({ + resolve() as unknown as rollup.Plugin, + _typescript({ tsconfigOverride: { compilerOptions: { module: 'ESNext' } }, - }) as unknown) as rollup.Plugin, + }) as unknown as rollup.Plugin, ], }); const { diff --git a/packages/rrdom/test/virtual-dom.test.ts b/packages/rrdom/test/virtual-dom.test.ts index 0b25f684b2..b99aca5ae4 100644 --- a/packages/rrdom/test/virtual-dom.test.ts +++ b/packages/rrdom/test/virtual-dom.test.ts @@ -98,7 +98,7 @@ describe('RRDocument for browser environment', () => { // build from element expect(mirror.getMeta(document.documentElement)).toBeNull(); rrNode = buildFromNode( - (document.documentElement as unknown) as Node, + document.documentElement as unknown as Node, rrdom, mirror, )!; @@ -378,7 +378,7 @@ describe('RRDocument for browser environment', () => { expect(dom.mirror.getId(node1)).toEqual(0); const node2 = dom.createTextNode('text'); expect(dom.mirror.getId(node2)).toEqual(-1); - expect(dom.mirror.getId((null as unknown) as RRNode)).toEqual(-1); + expect(dom.mirror.getId(null as unknown as RRNode)).toEqual(-1); }); it('has() should return whether the mirror has an ID', () => { diff --git a/packages/rrweb-snapshot/src/rebuild.ts b/packages/rrweb-snapshot/src/rebuild.ts index a491122d6b..bb9e61d645 100644 --- a/packages/rrweb-snapshot/src/rebuild.ts +++ b/packages/rrweb-snapshot/src/rebuild.ts @@ -267,8 +267,8 @@ function buildNode( rr_dataURL: string; }; // If the canvas element is created in RRDom runtime (seeking to a time point), the canvas context isn't supported. So the data has to be stored and not handled until diff process. https://github.com/rrweb-io/rrweb/pull/944 - if (((node as unknown) as RRCanvasElement).RRNodeType) - ((node as unknown) as RRCanvasElement).rr_dataURL = value.toString(); + if ((node as unknown as RRCanvasElement).RRNodeType) + (node as unknown as RRCanvasElement).rr_dataURL = value.toString(); } else if (tagName === 'img' && name === 'rr_dataURL') { const image = node as HTMLImageElement; if (!image.currentSrc.startsWith('data:')) { diff --git a/packages/rrweb-snapshot/src/utils.ts b/packages/rrweb-snapshot/src/utils.ts index 75e9a18008..d505ad0353 100644 --- a/packages/rrweb-snapshot/src/utils.ts +++ b/packages/rrweb-snapshot/src/utils.ts @@ -110,7 +110,7 @@ export class Mirror implements IMirror { if (n.childNodes) { n.childNodes.forEach((childNode) => - this.removeNodeFromMap((childNode as unknown) as Node), + this.removeNodeFromMap(childNode as unknown as Node), ); } } diff --git a/packages/rrweb-snapshot/test/integration.test.ts b/packages/rrweb-snapshot/test/integration.test.ts index ab31b58c4a..c937726071 100644 --- a/packages/rrweb-snapshot/test/integration.test.ts +++ b/packages/rrweb-snapshot/test/integration.test.ts @@ -8,7 +8,7 @@ import * as typescript from 'rollup-plugin-typescript2'; import * as assert from 'assert'; import { waitForRAF } from './utils'; -const _typescript = (typescript as unknown) as () => rollup.Plugin; +const _typescript = typescript as unknown as () => rollup.Plugin; const htmlFolder = path.join(__dirname, 'html'); const htmls = fs.readdirSync(htmlFolder).map((filePath) => { @@ -129,7 +129,8 @@ describe('integration tests', function (this: ISuite) { }); } await waitForRAF(page); - const rebuildHtml = ((await page.evaluate(`${code} + const rebuildHtml = ( + (await page.evaluate(`${code} const x = new XMLSerializer(); const snap = rrweb.snapshot(document); let out = x.serializeToString(rrweb.rebuild(snap, { doc: document })); @@ -138,7 +139,8 @@ describe('integration tests', function (this: ISuite) { out = out.replace(' xmlns=\"http://www.w3.org/1999/xhtml\"', ''); } out; // return - `)) as string) + `)) as string + ) .replace(/\n\n/g, '') .replace( /blob:http:\/\/localhost:\d+\/[0-9a-z\-]+/, diff --git a/packages/rrweb/src/plugins/console/record/index.ts b/packages/rrweb/src/plugins/console/record/index.ts index 221292c486..3413cc0727 100644 --- a/packages/rrweb/src/plugins/console/record/index.ts +++ b/packages/rrweb/src/plugins/console/record/index.ts @@ -90,9 +90,9 @@ function initLogObserver( win: IWindow, // top window or in an iframe options: LogRecordOptions, ): listenerHandler { - const logOptions = (options - ? Object.assign({}, defaultLogOptions, options) - : defaultLogOptions) as { + const logOptions = ( + options ? Object.assign({}, defaultLogOptions, options) : defaultLogOptions + ) as { level: LogLevel[]; lengthThreshold: number; stringifyOptions?: StringifyOptions; @@ -117,9 +117,9 @@ function initLogObserver( const errorHandler = (event: ErrorEvent) => { const message = event.message, error = event.error as Error; - const trace: string[] = ErrorStackParser.parse( - error, - ).map((stackFrame: StackFrame) => stackFrame.toString()); + const trace: string[] = ErrorStackParser.parse(error).map( + (stackFrame: StackFrame) => stackFrame.toString(), + ); const payload = [stringify(message, logOptions.stringifyOptions)]; cb({ level: 'error', @@ -149,9 +149,9 @@ function initLogObserver( stringify(event.reason, logOptions.stringifyOptions), ]; } - const trace: string[] = ErrorStackParser.parse( - error, - ).map((stackFrame: StackFrame) => stackFrame.toString()); + const trace: string[] = ErrorStackParser.parse(error).map( + (stackFrame: StackFrame) => stackFrame.toString(), + ); cb({ level: 'error', trace, diff --git a/packages/rrweb/src/plugins/console/record/stringify.ts b/packages/rrweb/src/plugins/console/record/stringify.ts index eef8c38a40..a767793e8f 100644 --- a/packages/rrweb/src/plugins/console/record/stringify.ts +++ b/packages/rrweb/src/plugins/console/record/stringify.ts @@ -123,7 +123,7 @@ export function stringify( if (value instanceof Event) { const eventResult: Record = {}; for (const eventKey in value) { - const eventValue = ((value as unknown) as Record)[ + const eventValue = (value as unknown as Record)[ eventKey ]; if (Array.isArray(eventValue)) { diff --git a/packages/rrweb/src/plugins/console/replay/index.ts b/packages/rrweb/src/plugins/console/replay/index.ts index db56e18c70..a0915fa6af 100644 --- a/packages/rrweb/src/plugins/console/replay/index.ts +++ b/packages/rrweb/src/plugins/console/replay/index.ts @@ -59,10 +59,10 @@ class LogReplayPlugin { for (const level of this.config.level!) { if (level === 'trace') { replayLogger[level] = (data: LogData) => { - const logger = ((console.log as unknown) as PatchedConsoleLog)[ + const logger = (console.log as unknown as PatchedConsoleLog)[ ORIGINAL_ATTRIBUTE_NAME ] - ? ((console.log as unknown) as PatchedConsoleLog)[ + ? (console.log as unknown as PatchedConsoleLog)[ ORIGINAL_ATTRIBUTE_NAME ] : console.log; @@ -73,10 +73,10 @@ class LogReplayPlugin { }; } else { replayLogger[level] = (data: LogData) => { - const logger = ((console[level] as unknown) as PatchedConsoleLog)[ + const logger = (console[level] as unknown as PatchedConsoleLog)[ ORIGINAL_ATTRIBUTE_NAME ] - ? ((console[level] as unknown) as PatchedConsoleLog)[ + ? (console[level] as unknown as PatchedConsoleLog)[ ORIGINAL_ATTRIBUTE_NAME ] : console[level]; @@ -118,7 +118,7 @@ export const getReplayConsolePlugin: ( event.type === EventType.IncrementalSnapshot && event.data.source === (IncrementalSource.Log as IncrementalSource) ) { - logData = (event.data as unknown) as LogData; + logData = event.data as unknown as LogData; } else if ( event.type === EventType.Plugin && event.data.plugin === PLUGIN_NAME diff --git a/packages/rrweb/src/plugins/sequential-id/replay/index.ts b/packages/rrweb/src/plugins/sequential-id/replay/index.ts index a41edb8474..0f3d94b820 100644 --- a/packages/rrweb/src/plugins/sequential-id/replay/index.ts +++ b/packages/rrweb/src/plugins/sequential-id/replay/index.ts @@ -22,7 +22,7 @@ export const getReplaySequentialIdPlugin: ( return { handler(event: eventWithTime) { if (key in event) { - const id = ((event as unknown) as Record)[key]; + const id = (event as unknown as Record)[key]; if (id !== currentId) { console.error( `[sequential-id-plugin]: expect to get an id with value "${currentId}", but got "${id}"`, diff --git a/packages/rrweb/src/record/cross-origin-iframe-mirror.ts b/packages/rrweb/src/record/cross-origin-iframe-mirror.ts index cec738084b..4e7a69326e 100644 --- a/packages/rrweb/src/record/cross-origin-iframe-mirror.ts +++ b/packages/rrweb/src/record/cross-origin-iframe-mirror.ts @@ -1,6 +1,7 @@ import type { ICrossOriginIframeMirror } from '@rrweb/types'; export default class CrossOriginIframeMirror - implements ICrossOriginIframeMirror { + implements ICrossOriginIframeMirror +{ private iframeIdToRemoteIdMap: WeakMap< HTMLIFrameElement, Map diff --git a/packages/rrweb/src/record/iframe-manager.ts b/packages/rrweb/src/record/iframe-manager.ts index d62713ff0d..377b7bc0ff 100644 --- a/packages/rrweb/src/record/iframe-manager.ts +++ b/packages/rrweb/src/record/iframe-manager.ts @@ -8,16 +8,12 @@ import type { StylesheetManager } from './stylesheet-manager'; export class IframeManager { private iframes: WeakMap = new WeakMap(); - private crossOriginIframeMap: WeakMap< - MessageEventSource, - HTMLIFrameElement - > = new WeakMap(); + private crossOriginIframeMap: WeakMap = + new WeakMap(); public crossOriginIframeMirror = new CrossOriginIframeMirror(genId); public crossOriginIframeStyleMirror: CrossOriginIframeMirror; - public crossOriginIframeRootIdMap: WeakMap< - HTMLIFrameElement, - number - > = new WeakMap(); + public crossOriginIframeRootIdMap: WeakMap = + new WeakMap(); private mirror: Mirror; private mutationCb: mutationCallBack; private wrappedEmit: (e: eventWithTime, isCheckout?: boolean) => void; diff --git a/packages/rrweb/src/record/index.ts b/packages/rrweb/src/record/index.ts index 6c79007690..e7bea4f204 100644 --- a/packages/rrweb/src/record/index.ts +++ b/packages/rrweb/src/record/index.ts @@ -173,9 +173,9 @@ function record( // Disable packing events which will be emitted to parent frames. !passEmitsToParent ) { - e = (packFn(e) as unknown) as eventWithTime; + e = packFn(e) as unknown as eventWithTime; } - return (e as unknown) as T; + return e as unknown as T; }; wrappedEmit = (e: eventWithTime, isCheckout?: boolean) => { if ( diff --git a/packages/rrweb/src/record/mutation.ts b/packages/rrweb/src/record/mutation.ts index d9e27496a2..5c3e4bea7d 100644 --- a/packages/rrweb/src/record/mutation.ts +++ b/packages/rrweb/src/record/mutation.ts @@ -180,29 +180,31 @@ export default class MutationBuffer { private processedNodeManager: observerParam['processedNodeManager']; public init(options: MutationBufferParam) { - ([ - 'mutationCb', - 'blockClass', - 'blockSelector', - 'maskTextClass', - 'maskTextSelector', - 'inlineStylesheet', - 'maskInputOptions', - 'maskTextFn', - 'maskInputFn', - 'keepIframeSrcFn', - 'recordCanvas', - 'inlineImages', - 'slimDOMOptions', - 'dataURLOptions', - 'doc', - 'mirror', - 'iframeManager', - 'stylesheetManager', - 'shadowDomManager', - 'canvasManager', - 'processedNodeManager', - ] as const).forEach((key) => { + ( + [ + 'mutationCb', + 'blockClass', + 'blockSelector', + 'maskTextClass', + 'maskTextSelector', + 'inlineStylesheet', + 'maskInputOptions', + 'maskTextFn', + 'maskInputFn', + 'keepIframeSrcFn', + 'recordCanvas', + 'inlineImages', + 'slimDOMOptions', + 'dataURLOptions', + 'doc', + 'mirror', + 'iframeManager', + 'stylesheetManager', + 'shadowDomManager', + 'canvasManager', + 'processedNodeManager', + ] as const + ).forEach((key) => { // just a type trick, the runtime result is correct this[key] = options[key] as never; }); diff --git a/packages/rrweb/src/record/observer.ts b/packages/rrweb/src/record/observer.ts index e7284104b9..76a78c6fec 100644 --- a/packages/rrweb/src/record/observer.ts +++ b/packages/rrweb/src/record/observer.ts @@ -94,19 +94,18 @@ export function initMutationObserver( * window.__rrMutationObserver = MutationObserver */ (window as WindowWithStoredMutationObserver).__rrMutationObserver; - const angularZoneSymbol = (window as WindowWithAngularZone)?.Zone?.__symbol__?.( - 'MutationObserver', - ); + const angularZoneSymbol = ( + window as WindowWithAngularZone + )?.Zone?.__symbol__?.('MutationObserver'); if ( angularZoneSymbol && - ((window as unknown) as Record)[ + (window as unknown as Record)[ angularZoneSymbol ] ) { - mutationObserverCtor = ((window as unknown) as Record< - string, - typeof MutationObserver - >)[angularZoneSymbol]; + mutationObserverCtor = ( + window as unknown as Record + )[angularZoneSymbol]; } const observer = new (mutationObserverCtor as new ( callback: MutationCallback, @@ -423,9 +422,9 @@ function initInputObserver({ } } const events = sampling.input === 'last' ? ['change'] : ['input', 'change']; - const handlers: Array< - listenerHandler | hookResetter - > = events.map((eventName) => on(eventName, eventHandler, doc)); + const handlers: Array = events.map( + (eventName) => on(eventName, eventHandler, doc), + ); const currentWindow = doc.defaultView; if (!currentWindow) { return () => { @@ -891,12 +890,8 @@ function initMediaInteractionObserver({ ) { return; } - const { - currentTime, - volume, - muted, - playbackRate, - } = target as HTMLMediaElement; + const { currentTime, volume, muted, playbackRate } = + target as HTMLMediaElement; mediaInteractionCb({ type, id: mirror.getId(target as Node), @@ -931,7 +926,7 @@ function initFontObserver({ fontCb, doc }: observerParam): listenerHandler { const fontMap = new WeakMap(); const originalFontFace = win.FontFace; - win.FontFace = (function FontFace( + win.FontFace = function FontFace( family: string, source: string | ArrayBufferLike, descriptors?: FontFaceDescriptors, @@ -947,7 +942,7 @@ function initFontObserver({ fontCb, doc }: observerParam): listenerHandler { : JSON.stringify(Array.from(new Uint8Array(source))), }); return fontFace; - } as unknown) as typeof FontFace; + } as unknown as typeof FontFace; const restoreHandler = patch( doc.fonts, diff --git a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts index a27bac8d2a..ad6781dd58 100644 --- a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts +++ b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts @@ -116,7 +116,8 @@ export class CanvasManager { blockSelector, ); const snapshotInProgressMap: Map = new Map(); - const worker = new ImageBitmapDataURLWorker() as ImageBitmapDataURLRequestWorker; + const worker = + new ImageBitmapDataURLWorker() as ImageBitmapDataURLRequestWorker; worker.onmessage = (e) => { const { id } = e.data; snapshotInProgressMap.set(id, false); diff --git a/packages/rrweb/src/record/shadow-dom-manager.ts b/packages/rrweb/src/record/shadow-dom-manager.ts index fd90d23d90..22034db17b 100644 --- a/packages/rrweb/src/record/shadow-dom-manager.ts +++ b/packages/rrweb/src/record/shadow-dom-manager.ts @@ -81,7 +81,7 @@ export class ShadowDomManager { scrollCb: this.scrollCb, // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813 // scroll is not allowed to pass the boundary, so we need to listen the shadow document - doc: (shadowRoot as unknown) as Document, + doc: shadowRoot as unknown as Document, mirror: this.mirror, }); // Defer this to avoid adoptedStyleSheet events being created before the full snapshot is created or attachShadow action is recorded. @@ -113,9 +113,11 @@ export class ShadowDomManager { const manager = this; this.restorePatches.push( patch( - (iframeElement.contentWindow as Window & { - HTMLElement: { prototype: HTMLElement }; - }).HTMLElement.prototype, + ( + iframeElement.contentWindow as Window & { + HTMLElement: { prototype: HTMLElement }; + } + ).HTMLElement.prototype, 'attachShadow', function (original: (init: ShadowRootInit) => ShadowRoot) { return function (this: HTMLElement, option: ShadowRootInit) { diff --git a/packages/rrweb/src/replay/canvas/2d.ts b/packages/rrweb/src/replay/canvas/2d.ts index ac6fdf4119..f9fefba226 100644 --- a/packages/rrweb/src/replay/canvas/2d.ts +++ b/packages/rrweb/src/replay/canvas/2d.ts @@ -20,7 +20,7 @@ export default async function canvasMutation({ if (mutation.setter) { // skip some read-only type checks - ((ctx as unknown) as Record)[mutation.property] = + (ctx as unknown as Record)[mutation.property] = mutation.args[0]; return; } diff --git a/packages/rrweb/src/replay/index.ts b/packages/rrweb/src/replay/index.ts index edb2b9cb9b..cb9be859d3 100644 --- a/packages/rrweb/src/replay/index.ts +++ b/packages/rrweb/src/replay/index.ts @@ -434,9 +434,10 @@ export class Replayer { public getMetaData(): playerMetaData { const firstEvent = this.service.state.context.events[0]; - const lastEvent = this.service.state.context.events[ - this.service.state.context.events.length - 1 - ]; + const lastEvent = + this.service.state.context.events[ + this.service.state.context.events.length - 1 + ]; return { startTime: firstEvent.timestamp, endTime: lastEvent.timestamp, @@ -855,7 +856,7 @@ export class Replayer { const collected: AppendedIframe[] = []; const afterAppend = (builtNode: Node, id: number) => { this.collectIframeAndAttachDocument(collected, builtNode); - const sn = (mirror as TMirror).getMeta((builtNode as unknown) as TNode); + const sn = (mirror as TMirror).getMeta(builtNode as unknown as TNode); if ( sn?.type === NodeType.Element && sn?.tagName.toUpperCase() === 'HTML' @@ -1263,9 +1264,9 @@ export class Replayer { if (this.usingVirtualDom) { if (d.styleId) this.constructedStyleMutations.push(d); else if (d.id) - (this.virtualDom.mirror.getNode( - d.id, - ) as RRStyleElement | null)?.rules.push(d); + ( + this.virtualDom.mirror.getNode(d.id) as RRStyleElement | null + )?.rules.push(d); } else this.applyStyleSheetMutation(d); break; } @@ -1901,10 +1902,10 @@ export class Replayer { styleSheet: CSSStyleSheet, ) { if (data.set) { - const rule = (getNestedRule( + const rule = getNestedRule( styleSheet.rules, data.index, - ) as unknown) as CSSStyleRule; + ) as unknown as CSSStyleRule; rule.style.setProperty( data.set.property, data.set.value, @@ -1913,10 +1914,10 @@ export class Replayer { } if (data.remove) { - const rule = (getNestedRule( + const rule = getNestedRule( styleSheet.rules, data.index, - ) as unknown) as CSSStyleRule; + ) as unknown as CSSStyleRule; rule.style.removeProperty(data.remove.property); } } @@ -1962,7 +1963,8 @@ export class Replayer { .filter((style) => style !== null) as CSSStyleSheet[]; if (hasShadowRoot(targetHost)) // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - (targetHost as HTMLElement).shadowRoot!.adoptedStyleSheets = stylesToAdopt; + (targetHost as HTMLElement).shadowRoot!.adoptedStyleSheets = + stylesToAdopt; else if (targetHost.nodeName === '#document') (targetHost as Document).adoptedStyleSheets = stylesToAdopt; diff --git a/packages/rrweb/src/types.ts b/packages/rrweb/src/types.ts index c1f5f0d97a..ad35af0039 100644 --- a/packages/rrweb/src/types.ts +++ b/packages/rrweb/src/types.ts @@ -209,4 +209,5 @@ export type CrossOriginIframeMessageEventContent = { origin: string; isCheckout?: boolean; }; -export type CrossOriginIframeMessageEvent = MessageEvent; +export type CrossOriginIframeMessageEvent = + MessageEvent; diff --git a/packages/rrweb/src/utils.ts b/packages/rrweb/src/utils.ts index 8703191f6d..578160273b 100644 --- a/packages/rrweb/src/utils.ts +++ b/packages/rrweb/src/utils.ts @@ -281,14 +281,14 @@ export function isTouchEvent( export function polyfill(win = window) { if ('NodeList' in win && !win.NodeList.prototype.forEach) { // eslint-disable-next-line @typescript-eslint/unbound-method - win.NodeList.prototype.forEach = (Array.prototype - .forEach as unknown) as NodeList['forEach']; + win.NodeList.prototype.forEach = Array.prototype + .forEach as unknown as NodeList['forEach']; } if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) { // eslint-disable-next-line @typescript-eslint/unbound-method - win.DOMTokenList.prototype.forEach = (Array.prototype - .forEach as unknown) as DOMTokenList['forEach']; + win.DOMTokenList.prototype.forEach = Array.prototype + .forEach as unknown as DOMTokenList['forEach']; } // https://github.com/Financial-Times/polyfill-service/pull/183 @@ -433,7 +433,7 @@ export function getBaseDimension( export function hasShadowRoot( n: T, ): n is T & { shadowRoot: ShadowRoot } { - return Boolean(((n as unknown) as Element)?.shadowRoot); + return Boolean((n as unknown as Element)?.shadowRoot); } export function getNestedRule( diff --git a/packages/rrweb/test/events/style-sheet-rule-events.ts b/packages/rrweb/test/events/style-sheet-rule-events.ts index b3d50a9990..577c0caf41 100644 --- a/packages/rrweb/test/events/style-sheet-rule-events.ts +++ b/packages/rrweb/test/events/style-sheet-rule-events.ts @@ -147,8 +147,7 @@ const events: eventWithTime[] = [ id: 101, adds: [ { - rule: - '.css-added-at-500-overwritten-at-3000 {border: 1px solid blue;}', + rule: '.css-added-at-500-overwritten-at-3000 {border: 1px solid blue;}', index: 1, }, ], @@ -163,8 +162,7 @@ const events: eventWithTime[] = [ id: 105, adds: [ { - rule: - '.css-added-at-1000-deleted-at-2500{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-width:60rem;min-height:100vh;color:blue;}', + rule: '.css-added-at-1000-deleted-at-2500{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-width:60rem;min-height:100vh;color:blue;}', index: 2, }, ], diff --git a/packages/rrweb/test/integration.test.ts b/packages/rrweb/test/integration.test.ts index 0371914fe6..fed6aae61a 100644 --- a/packages/rrweb/test/integration.test.ts +++ b/packages/rrweb/test/integration.test.ts @@ -502,7 +502,8 @@ describe('record integration tests', function (this: ISuite) { await page.goto('about:blank'); await page.setContent( getHtml('log.html', { - plugins: ('[rrwebConsoleRecord.getRecordConsolePlugin()]' as unknown) as RecordPlugin[], + plugins: + '[rrwebConsoleRecord.getRecordConsolePlugin()]' as unknown as RecordPlugin[], }), ); @@ -790,8 +791,8 @@ describe('record integration tests', function (this: ISuite) { await page.evaluate(() => { // get contentDocument of iframe five - const contentDocument1 = document.querySelector('iframe')! - .contentDocument!; + const contentDocument1 = + document.querySelector('iframe')!.contentDocument!; // create shadow dom #1 contentDocument1.body.attachShadow({ mode: 'open' }); contentDocument1.body.shadowRoot!.appendChild( diff --git a/packages/rrweb/test/packer.test.ts b/packages/rrweb/test/packer.test.ts index ed2fbadf25..e6487d7a20 100644 --- a/packages/rrweb/test/packer.test.ts +++ b/packages/rrweb/test/packer.test.ts @@ -17,7 +17,7 @@ describe('pack', () => { describe('unpack', () => { it('is compatible with unpacked data 1', () => { - const result = unpack((event as unknown) as string); + const result = unpack(event as unknown as string); expect(result).toEqual(event); }); diff --git a/packages/rrweb/test/record.test.ts b/packages/rrweb/test/record.test.ts index 46ad5e5c7e..1a0a87421f 100644 --- a/packages/rrweb/test/record.test.ts +++ b/packages/rrweb/test/record.test.ts @@ -96,9 +96,9 @@ describe('record', function (this: ISuite) { it('will only have one full snapshot without checkout config', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); }); let count = 30; @@ -120,9 +120,9 @@ describe('record', function (this: ISuite) { it('can checkout full snapshot by count', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, checkoutEveryNth: 10, }); }); @@ -149,9 +149,9 @@ describe('record', function (this: ISuite) { it('can checkout full snapshot by time', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, checkoutEveryNms: 500, }); }); @@ -182,9 +182,9 @@ describe('record', function (this: ISuite) { it('is safe to checkout during async callbacks', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, checkoutEveryNth: 2, }); const p = document.createElement('p'); @@ -208,9 +208,9 @@ describe('record', function (this: ISuite) { it('should record scroll position', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); const p = document.createElement('p'); p.innerText = 'testtesttesttesttesttesttesttesttesttest'; @@ -225,9 +225,9 @@ describe('record', function (this: ISuite) { it('should record selection event', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); const startNode = document.createElement('p'); @@ -266,9 +266,9 @@ describe('record', function (this: ISuite) { it('can add custom event', async () => { await ctx.page.evaluate(() => { - const { record, addCustomEvent } = ((window as unknown) as IWindow).rrweb; + const { record, addCustomEvent } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); addCustomEvent('tag1', 1); addCustomEvent<{ a: string }>('tag2', { @@ -281,10 +281,10 @@ describe('record', function (this: ISuite) { it('captures stylesheet rules', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); const styleElement = document.createElement('style'); @@ -331,10 +331,10 @@ describe('record', function (this: ISuite) { const captureNestedStylesheetRulesTest = async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); const styleElement = document.createElement('style'); @@ -392,10 +392,10 @@ describe('record', function (this: ISuite) { it('captures style property changes', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, ignoreCSSAttributes: new Set(['color']), }); @@ -428,7 +428,7 @@ describe('record', function (this: ISuite) { it('captures inserted style text nodes correctly', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; const styleEl = document.createElement(`style`); styleEl.append(document.createTextNode('div { color: red; }')); @@ -436,7 +436,7 @@ describe('record', function (this: ISuite) { document.head.appendChild(styleEl); record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); styleEl.append(document.createTextNode('span { color: orange; }')); @@ -462,11 +462,11 @@ describe('record', function (this: ISuite) { }); await waitForRAF(ctx.page); await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ inlineStylesheet: true, - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); }); await waitForRAF(ctx.page); @@ -487,14 +487,15 @@ describe('record', function (this: ISuite) { document.adoptedStyleSheets = [sheet]; const iframe = document.querySelector('iframe'); - const sheet2 = new (iframe!.contentWindow! as Window & - typeof globalThis).CSSStyleSheet(); + const sheet2 = new ( + iframe!.contentWindow! as Window & typeof globalThis + ).CSSStyleSheet(); // Add stylesheet to an IFrame document. iframe!.contentDocument!.adoptedStyleSheets = [sheet2]; iframe!.contentDocument!.body.innerHTML = '

h1 in iframe

'; - const { rrweb, emit } = (window as unknown) as IWindow; + const { rrweb, emit } = window as unknown as IWindow; rrweb.record({ emit, }); @@ -568,7 +569,7 @@ describe('record', function (this: ISuite) { sheet2.replaceSync!('div {font-size: large;}'); shadowHost.shadowRoot!.adoptedStyleSheets = [sheet2]; - const { rrweb, emit } = (window as unknown) as IWindow; + const { rrweb, emit } = window as unknown as IWindow; rrweb.record({ emit, }); @@ -602,7 +603,7 @@ describe('record', function (this: ISuite) { sheet.replaceSync!('h1 {color: blue;}'); shadowHost.shadowRoot!.adoptedStyleSheets = [sheet]; - const { rrweb, emit } = (window as unknown) as IWindow; + const { rrweb, emit } = window as unknown as IWindow; rrweb.record({ emit, }); @@ -639,11 +640,11 @@ describe('record', function (this: ISuite) { }); await waitForRAF(ctx.page); await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ inlineStylesheet: true, - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); }); await waitForRAF(ctx.page); @@ -683,11 +684,11 @@ describe('record', function (this: ISuite) { it('captures stylesheets that are still loading', async () => { ctx.page.evaluate((serverURL) => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ inlineStylesheet: true, - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); const link1 = document.createElement('link'); @@ -708,11 +709,11 @@ describe('record', function (this: ISuite) { iframe.setAttribute('src', `/html/hello-world.html?2`); document.body.appendChild(iframe); - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ inlineStylesheet: true, - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); }); @@ -743,11 +744,11 @@ describe('record', function (this: ISuite) { // do not `await` the following function, otherwise `waitForResponse` _might_ not be called void ctx.page.evaluate((corsStylesheetURL) => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ inlineStylesheet: true, - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); const link1 = document.createElement('link'); @@ -793,8 +794,9 @@ describe('record', function (this: ISuite) { // Add stylesheet to an IFrame document. const iframe = document.querySelector('iframe'); - const sheet3 = new (iframe!.contentWindow! as IWindow & - typeof globalThis).CSSStyleSheet(); + const sheet3 = new ( + iframe!.contentWindow! as IWindow & typeof globalThis + ).CSSStyleSheet(); sheet3.replaceSync!('h1 { color: blue; }'); iframe!.contentDocument!.adoptedStyleSheets = [sheet3]; @@ -803,8 +805,8 @@ describe('record', function (this: ISuite) { ele.innerText = 'h1 in iframe'; iframe!.contentDocument!.body.appendChild(ele); - ((window as unknown) as IWindow).rrweb.record({ - emit: ((window.top as unknown) as IWindow).emit, + (window as unknown as IWindow).rrweb.record({ + emit: (window.top as unknown as IWindow).emit, }); // Make incremental changes to shadow dom. @@ -819,8 +821,9 @@ describe('record', function (this: ISuite) { document.adoptedStyleSheets = [sheet4, sheet, sheet2]; - const sheet5 = new (iframe!.contentWindow! as IWindow & - typeof globalThis).CSSStyleSheet(); + const sheet5 = new ( + iframe!.contentWindow! as IWindow & typeof globalThis + ).CSSStyleSheet(); sheet5.replaceSync!('h2 { color: purple; }'); iframe!.contentDocument!.adoptedStyleSheets = [sheet5, sheet3]; }, 10); @@ -853,9 +856,9 @@ describe('record iframes', function (this: ISuite) { it('captures iframe content in correct order', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); }); await waitForRAF(ctx.page); @@ -877,10 +880,10 @@ describe('record iframes', function (this: ISuite) { it('captures stylesheet mutations in iframes', async () => { await ctx.page.evaluate(() => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ // need to reference window.top for when we are in an iframe! - emit: ((window.top as unknown) as IWindow).emit, + emit: (window.top as unknown as IWindow).emit, }); const iframe = document.querySelector('iframe'); diff --git a/packages/rrweb/test/record/cross-origin-iframes.test.ts b/packages/rrweb/test/record/cross-origin-iframes.test.ts index 3fa9446270..1b0d00f2d0 100644 --- a/packages/rrweb/test/record/cross-origin-iframes.test.ts +++ b/packages/rrweb/test/record/cross-origin-iframes.test.ts @@ -51,14 +51,14 @@ async function injectRecordScript( }); options = options || {}; await frame.evaluate((options) => { - ((window as unknown) as IWindow).snapshots = []; - const { record, pack } = ((window as unknown) as IWindow).rrweb; + (window as unknown as IWindow).snapshots = []; + const { record, pack } = (window as unknown as IWindow).rrweb; const config: recordOptions = { recordCrossOriginIframes: true, recordCanvas: true, emit(event) { - ((window as unknown) as IWindow).snapshots.push(event); - ((window as unknown) as IWindow).emit(event); + (window as unknown as IWindow).snapshots.push(event); + (window as unknown as IWindow).emit(event); }, }; if (options.usePackFn) { @@ -148,21 +148,21 @@ describe('cross origin iframes', function (this: ISuite) { const frame = await el.contentFrame(); const events = await frame?.evaluate( - () => ((window as unknown) as IWindow).snapshots, + () => (window as unknown as IWindow).snapshots, ); expect(events).toMatchObject([]); }); it('will emit events if it is in the top level iframe', async () => { const events = await ctx.page.evaluate( - () => ((window as unknown) as IWindow).snapshots, + () => (window as unknown as IWindow).snapshots, ); expect(events.length).not.toBe(0); }); it('should emit contents of iframe', async () => { const events = await ctx.page.evaluate( - () => ((window as unknown) as IWindow).snapshots, + () => (window as unknown as IWindow).snapshots, ); await waitForRAF(ctx.page); // two events (full snapshot + meta) from main frame, and one full snapshot from iframe @@ -171,7 +171,7 @@ describe('cross origin iframes', function (this: ISuite) { it('should emit full snapshot event from iframe as mutation event', async () => { const events = await ctx.page.evaluate( - () => ((window as unknown) as IWindow).snapshots, + () => (window as unknown as IWindow).snapshots, ); await waitForRAF(ctx.page); // two events from main frame, and two from iframe @@ -193,7 +193,7 @@ describe('cross origin iframes', function (this: ISuite) { it('should use unique id for child of iframes', async () => { const events: eventWithTime[] = await ctx.page.evaluate( - () => ((window as unknown) as IWindow).snapshots, + () => (window as unknown as IWindow).snapshots, ); await waitForRAF(ctx.page); expect( @@ -211,7 +211,7 @@ describe('cross origin iframes', function (this: ISuite) { await injectRecordScript(ctx.page.mainFrame().childFrames()[0]); // injects script into new iframe const events: eventWithTime[] = await ctx.page.evaluate( - () => ((window as unknown) as IWindow).snapshots, + () => (window as unknown as IWindow).snapshots, ); expect( (events[events.length - 1].data as mutationData).removes, @@ -343,7 +343,7 @@ describe('cross origin iframes', function (this: ISuite) { it('should record custom events', async () => { const frame = ctx.page.mainFrame().childFrames()[0]; await frame.evaluate(() => { - ((window as unknown) as IWindow).rrweb.addCustomEvent('test', { + (window as unknown as IWindow).rrweb.addCustomEvent('test', { id: 1, parentId: 1, nextId: 2, @@ -388,18 +388,17 @@ describe('cross origin iframes', function (this: ISuite) { }); await waitForRAF(ctx.page); await ctx.page.evaluate(() => { - (document.adoptedStyleSheets![0] - .cssRules[0] as CSSStyleRule).style.setProperty('color', 'green'); - (document.adoptedStyleSheets![0] - .cssRules[0] as CSSStyleRule).style.removeProperty('display'); + ( + document.adoptedStyleSheets![0].cssRules[0] as CSSStyleRule + ).style.setProperty('color', 'green'); + ( + document.adoptedStyleSheets![0].cssRules[0] as CSSStyleRule + ).style.removeProperty('display'); }); await frame.evaluate(() => { - (document.adoptedStyleSheets![0] - .cssRules[0] as CSSStyleRule).style.setProperty( - 'font-size', - 'medium', - 'important', - ); + ( + document.adoptedStyleSheets![0].cssRules[0] as CSSStyleRule + ).style.setProperty('font-size', 'medium', 'important'); document.adoptedStyleSheets![0].insertRule('h2 { color: red; }'); }); await waitForRAF(ctx.page); @@ -445,8 +444,9 @@ describe('cross origin iframes', function (this: ISuite) { 'color', 'green', ); - (document.styleSheets[0] - .cssRules[0] as CSSStyleRule).style.removeProperty('display'); + ( + document.styleSheets[0].cssRules[0] as CSSStyleRule + ).style.removeProperty('display'); }); await frame.evaluate(() => { (document.styleSheets[0].cssRules[0] as CSSStyleRule).style.setProperty( @@ -596,7 +596,7 @@ describe('same origin iframes', function (this: ISuite) { it('should emit contents of iframe once', async () => { const events = await ctx.page.evaluate( - () => ((window as unknown) as IWindow).snapshots, + () => (window as unknown as IWindow).snapshots, ); await waitForRAF(ctx.page); // two events (full snapshot + meta) from main frame, diff --git a/packages/rrweb/test/record/webgl.test.ts b/packages/rrweb/test/record/webgl.test.ts index c9dc782b4a..762d3607bd 100644 --- a/packages/rrweb/test/record/webgl.test.ts +++ b/packages/rrweb/test/record/webgl.test.ts @@ -64,13 +64,13 @@ const setup = function ( ctx.page.on('console', (msg) => console.log('PAGE LOG:', msg.text())); await ctx.page.evaluate((canvasSample) => { - const { record } = ((window as unknown) as IWindow).rrweb; + const { record } = (window as unknown as IWindow).rrweb; record({ recordCanvas: true, sampling: { canvas: canvasSample, }, - emit: ((window as unknown) as IWindow).emit, + emit: (window as unknown as IWindow).emit, }); }, canvasSample); }); diff --git a/packages/rrweb/test/replay/webgl-mutation.test.ts b/packages/rrweb/test/replay/webgl-mutation.test.ts index f1ca523c77..378b0636e6 100644 --- a/packages/rrweb/test/replay/webgl-mutation.test.ts +++ b/packages/rrweb/test/replay/webgl-mutation.test.ts @@ -22,9 +22,9 @@ describe('webglMutation', () => { const createShaderMock = jest.fn().mockImplementation(() => { return new WebGLShader(); }); - const context = ({ + const context = { createShader: createShaderMock, - } as unknown) as WebGLRenderingContext; + } as unknown as WebGLRenderingContext; jest.spyOn(canvas, 'getContext').mockImplementation(() => { return context; }); diff --git a/packages/rrweb/test/replayer.test.ts b/packages/rrweb/test/replayer.test.ts index 900f0eeb16..1cf9ab5276 100644 --- a/packages/rrweb/test/replayer.test.ts +++ b/packages/rrweb/test/replayer.test.ts @@ -596,7 +596,9 @@ describe('replayer', function () { expect( await iframeTwoDocument!.evaluate( (iframe) => (iframe as HTMLIFrameElement)!.contentDocument!.doctype, - (await iframeTwoDocument!.$$('iframe'))[1], + ( + await iframeTwoDocument!.$$('iframe') + )[1], ), ).not.toBeNull(); }); diff --git a/packages/rrweb/test/utils.ts b/packages/rrweb/test/utils.ts index 0ece25e5d0..12fa37517c 100644 --- a/packages/rrweb/test/utils.ts +++ b/packages/rrweb/test/utils.ts @@ -17,7 +17,7 @@ import * as url from 'url'; import * as fs from 'fs'; export async function launchPuppeteer( - options?: Parameters[0], + options?: Parameters<(typeof puppeteer)['launch']>[0], ) { return await puppeteer.launch({ headless: process.env.PUPPETEER_HEADLESS ? true : false, @@ -119,7 +119,8 @@ function stringifySnapshots(snapshots: eventWithTime[]): string { s.data.href = 'about:blank'; } // FIXME: travis coordinates seems different with my laptop - const coordinatesReg = /(bottom|top|left|right|width|height): \d+(\.\d+)?px/g; + const coordinatesReg = + /(bottom|top|left|right|width|height): \d+(\.\d+)?px/g; if ( s.type === EventType.IncrementalSnapshot && s.data.source === IncrementalSource.MouseInteraction @@ -178,10 +179,8 @@ function stringifySnapshots(snapshots: eventWithTime[]): string { add.node.attributes.rr_dataURL && typeof add.node.attributes.rr_dataURL === 'string' ) { - add.node.attributes.rr_dataURL = add.node.attributes.rr_dataURL.replace( - /,.+$/, - ',...', - ); + add.node.attributes.rr_dataURL = + add.node.attributes.rr_dataURL.replace(/,.+$/, ',...'); } } }); @@ -284,7 +283,7 @@ export function stripBase64(events: eventWithTime[]) { const base64Strings: string[] = []; function walk(obj: T): T { if (!obj || typeof obj !== 'object') return obj; - if (Array.isArray(obj)) return (obj.map((e) => walk(e)) as unknown) as T; + if (Array.isArray(obj)) return obj.map((e) => walk(e)) as unknown as T; const newObj: Partial = {}; for (const prop in obj) { const value = obj[prop]; diff --git a/yarn.lock b/yarn.lock index 0a13a7eded..4b0fc28a22 100644 --- a/yarn.lock +++ b/yarn.lock @@ -420,6 +420,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/runtime@^7.20.1", "@babel/runtime@^7.5.5": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.15.4", "@babel/template@^7.3.3": version "7.15.4" resolved "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz" @@ -490,6 +497,206 @@ resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@changesets/apply-release-plan@^6.1.3": + version "6.1.3" + resolved "https://registry.yarnpkg.com/@changesets/apply-release-plan/-/apply-release-plan-6.1.3.tgz#3bcc0bd57ba00d50d20df7d0141f1a9b2134eaf7" + integrity sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/config" "^2.3.0" + "@changesets/get-version-range-type" "^0.3.2" + "@changesets/git" "^2.0.0" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + detect-indent "^6.0.0" + fs-extra "^7.0.1" + lodash.startcase "^4.4.0" + outdent "^0.5.0" + prettier "^2.7.1" + resolve-from "^5.0.0" + semver "^5.4.1" + +"@changesets/assemble-release-plan@^5.2.3": + version "5.2.3" + resolved "https://registry.yarnpkg.com/@changesets/assemble-release-plan/-/assemble-release-plan-5.2.3.tgz#5ce6191c6e193d40b566a7b0e01690cfb106f4db" + integrity sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/errors" "^0.1.4" + "@changesets/get-dependents-graph" "^1.3.5" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + semver "^5.4.1" + +"@changesets/changelog-git@^0.1.14": + version "0.1.14" + resolved "https://registry.yarnpkg.com/@changesets/changelog-git/-/changelog-git-0.1.14.tgz#852caa7727dcf91497c131d05bc2cd6248532ada" + integrity sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA== + dependencies: + "@changesets/types" "^5.2.1" + +"@changesets/cli@^2.26.0": + version "2.26.0" + resolved "https://registry.yarnpkg.com/@changesets/cli/-/cli-2.26.0.tgz#f215ddb2b41574ffd0dda9cd77fac927ba048fd3" + integrity sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/apply-release-plan" "^6.1.3" + "@changesets/assemble-release-plan" "^5.2.3" + "@changesets/changelog-git" "^0.1.14" + "@changesets/config" "^2.3.0" + "@changesets/errors" "^0.1.4" + "@changesets/get-dependents-graph" "^1.3.5" + "@changesets/get-release-plan" "^3.0.16" + "@changesets/git" "^2.0.0" + "@changesets/logger" "^0.0.5" + "@changesets/pre" "^1.0.14" + "@changesets/read" "^0.5.9" + "@changesets/types" "^5.2.1" + "@changesets/write" "^0.2.3" + "@manypkg/get-packages" "^1.1.3" + "@types/is-ci" "^3.0.0" + "@types/semver" "^6.0.0" + ansi-colors "^4.1.3" + chalk "^2.1.0" + enquirer "^2.3.0" + external-editor "^3.1.0" + fs-extra "^7.0.1" + human-id "^1.0.2" + is-ci "^3.0.1" + meow "^6.0.0" + outdent "^0.5.0" + p-limit "^2.2.0" + preferred-pm "^3.0.0" + resolve-from "^5.0.0" + semver "^5.4.1" + spawndamnit "^2.0.0" + term-size "^2.1.0" + tty-table "^4.1.5" + +"@changesets/config@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@changesets/config/-/config-2.3.0.tgz#bff074d6492fa772cee139f9a04efa4cd56445bb" + integrity sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ== + dependencies: + "@changesets/errors" "^0.1.4" + "@changesets/get-dependents-graph" "^1.3.5" + "@changesets/logger" "^0.0.5" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + fs-extra "^7.0.1" + micromatch "^4.0.2" + +"@changesets/errors@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@changesets/errors/-/errors-0.1.4.tgz#f79851746c43679a66b383fdff4c012f480f480d" + integrity sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q== + dependencies: + extendable-error "^0.1.5" + +"@changesets/get-dependents-graph@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.5.tgz#f94c6672d2f9a87aa35512eea74550585ba41c21" + integrity sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA== + dependencies: + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + chalk "^2.1.0" + fs-extra "^7.0.1" + semver "^5.4.1" + +"@changesets/get-release-plan@^3.0.16": + version "3.0.16" + resolved "https://registry.yarnpkg.com/@changesets/get-release-plan/-/get-release-plan-3.0.16.tgz#5d9cfc4ffda02c496ef0fde407210de8e3a0fb19" + integrity sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/assemble-release-plan" "^5.2.3" + "@changesets/config" "^2.3.0" + "@changesets/pre" "^1.0.14" + "@changesets/read" "^0.5.9" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + +"@changesets/get-version-range-type@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz#8131a99035edd11aa7a44c341cbb05e668618c67" + integrity sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== + +"@changesets/git@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@changesets/git/-/git-2.0.0.tgz#8de57649baf13a86eb669a25fa51bcad5cea517f" + integrity sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/errors" "^0.1.4" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + is-subdir "^1.1.1" + micromatch "^4.0.2" + spawndamnit "^2.0.0" + +"@changesets/logger@^0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@changesets/logger/-/logger-0.0.5.tgz#68305dd5a643e336be16a2369cb17cdd8ed37d4c" + integrity sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw== + dependencies: + chalk "^2.1.0" + +"@changesets/parse@^0.3.16": + version "0.3.16" + resolved "https://registry.yarnpkg.com/@changesets/parse/-/parse-0.3.16.tgz#f8337b70aeb476dc81745ab3294022909bc4a84a" + integrity sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg== + dependencies: + "@changesets/types" "^5.2.1" + js-yaml "^3.13.1" + +"@changesets/pre@^1.0.14": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@changesets/pre/-/pre-1.0.14.tgz#9df73999a4d15804da7381358d77bb37b00ddf0f" + integrity sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/errors" "^0.1.4" + "@changesets/types" "^5.2.1" + "@manypkg/get-packages" "^1.1.3" + fs-extra "^7.0.1" + +"@changesets/read@^0.5.9": + version "0.5.9" + resolved "https://registry.yarnpkg.com/@changesets/read/-/read-0.5.9.tgz#a1b63a82b8e9409738d7a0f9cc39b6d7c28cbab0" + integrity sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/git" "^2.0.0" + "@changesets/logger" "^0.0.5" + "@changesets/parse" "^0.3.16" + "@changesets/types" "^5.2.1" + chalk "^2.1.0" + fs-extra "^7.0.1" + p-filter "^2.1.0" + +"@changesets/types@^4.0.1": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@changesets/types/-/types-4.1.0.tgz#fb8f7ca2324fd54954824e864f9a61a82cb78fe0" + integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== + +"@changesets/types@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@changesets/types/-/types-5.2.1.tgz#a228c48004aa8a93bce4be2d1d31527ef3bf21f6" + integrity sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg== + +"@changesets/write@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@changesets/write/-/write-0.2.3.tgz#baf6be8ada2a67b9aba608e251bfea4fdc40bc63" + integrity sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/types" "^5.2.1" + fs-extra "^7.0.1" + human-id "^1.0.2" + prettier "^2.7.1" + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -1628,6 +1835,28 @@ npmlog "^4.1.2" write-file-atomic "^3.0.3" +"@manypkg/find-root@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" + integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== + dependencies: + "@babel/runtime" "^7.5.5" + "@types/node" "^12.7.1" + find-up "^4.1.0" + fs-extra "^8.1.0" + +"@manypkg/get-packages@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@manypkg/get-packages/-/get-packages-1.1.3.tgz#e184db9bba792fa4693de4658cfb1463ac2c9c47" + integrity sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A== + dependencies: + "@babel/runtime" "^7.5.5" + "@changesets/types" "^4.0.1" + "@manypkg/find-root" "^1.1.0" + fs-extra "^8.1.0" + globby "^11.0.0" + read-yaml-file "^1.1.0" + "@mdn/browser-compat-data@^3.3.14": version "3.3.14" resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-3.3.14.tgz#b72a37c654e598f9ae6f8335faaee182bebc6b28" @@ -2169,6 +2398,13 @@ "@types/through" "*" rxjs "^7.2.0" +"@types/is-ci@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/is-ci/-/is-ci-3.0.0.tgz#7e8910af6857601315592436f030aaa3ed9783c3" + integrity sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ== + dependencies: + ci-info "^3.1.0" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.3" resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz" @@ -2252,6 +2488,11 @@ resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== +"@types/node@^12.7.1": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + "@types/node@^17.0.21": version "17.0.21" resolved "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz" @@ -2332,6 +2573,11 @@ dependencies: "@types/node" "*" +"@types/semver@^6.0.0": + version "6.2.3" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.3.tgz#5798ecf1bec94eaa64db39ee52808ec0693315aa" + integrity sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A== + "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" @@ -2691,6 +2937,11 @@ alphanum-sort@^1.0.0: resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= +ansi-colors@^4.1.1, ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" @@ -2846,6 +3097,16 @@ array-unique@^0.2.1: resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= +array.prototype.flat@^1.2.3: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" @@ -2890,6 +3151,11 @@ at-least-node@^1.0.0: resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" @@ -3049,6 +3315,13 @@ before-after-hook@^2.2.0: resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== +better-path-resolve@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/better-path-resolve/-/better-path-resolve-1.0.0.tgz#13a35a1104cdd48a7b74bf8758f96a1ee613f99d" + integrity sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g== + dependencies: + is-windows "^1.0.0" + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -3129,13 +3402,20 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" +breakword@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/breakword/-/breakword-1.0.5.tgz#fd420a417f55016736b5b615161cae1c8f819810" + integrity sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg== + dependencies: + wcwidth "^1.0.1" + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" @@ -3366,7 +3646,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3383,7 +3663,7 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.1.0: +chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3460,6 +3740,11 @@ ci-info@^2.0.0: resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz#708a6cdae38915d597afdf3b145f2f8e1ff55f3f" + integrity sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w== + ci-info@^3.1.1: version "3.2.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz" @@ -3509,6 +3794,15 @@ cli-width@^4.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.0.0.tgz#a5622f6a3b0a9e3e711a25f099bf2399f608caf6" integrity sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" @@ -3518,6 +3812,15 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" @@ -3902,6 +4205,15 @@ cross-fetch@3.1.5: dependencies: node-fetch "2.6.7" +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" @@ -4108,6 +4420,31 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +csv-generate@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-3.4.3.tgz#bc42d943b45aea52afa896874291da4b9108ffff" + integrity sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw== + +csv-parse@^4.16.3: + version "4.16.3" + resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" + integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== + +csv-stringify@^5.6.5: + version "5.6.5" + resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" + integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== + +csv@^5.5.0: + version "5.5.3" + resolved "https://registry.yarnpkg.com/csv/-/csv-5.5.3.tgz#cd26c1e45eae00ce6a9b7b27dcb94955ec95207d" + integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== + dependencies: + csv-generate "^3.4.3" + csv-parse "^4.16.3" + csv-stringify "^5.6.5" + stream-transform "^2.1.3" + dargs@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" @@ -4222,6 +4559,14 @@ define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" @@ -4478,6 +4823,13 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" +enquirer@^2.3.0: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + entities@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" @@ -4563,11 +4915,66 @@ es-abstract@^1.18.0-next.2: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" + integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.4" + is-array-buffer "^3.0.1" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + es-module-lexer@^0.9.3: version "0.9.3" resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" @@ -5193,7 +5600,12 @@ extend@~3.0.2: resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: +extendable-error@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/extendable-error/-/extendable-error-0.1.7.tgz#60b9adf206264ac920058a7395685ae4670c2b96" + integrity sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg== + +external-editor@^3.0.3, external-editor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== @@ -5429,6 +5841,14 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-yarn-workspace-root2@1.2.16: + version "1.2.16" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" + integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== + dependencies: + micromatch "^4.0.2" + pkg-dir "^4.2.0" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" @@ -5517,6 +5937,24 @@ fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^7.0.1, fs-extra@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" @@ -5527,15 +5965,6 @@ fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@~7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-minipass@^1.2.7: version "1.2.7" resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" @@ -5565,11 +5994,26 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gauge@~2.7.3: version "2.7.4" resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" @@ -5596,7 +6040,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.5: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -5619,6 +6063,15 @@ get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" +get-intrinsic@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" @@ -5795,7 +6248,14 @@ globals@^13.15.0, globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" -globby@^11.0.1, globby@^11.1.0: +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.0.0, globby@^11.0.1, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -5835,6 +6295,13 @@ glur@^1.1.2: resolved "https://registry.npmjs.org/glur/-/glur-1.1.2.tgz" integrity sha1-8g6jbbEDv8KSNDkh8fkeg8NGdok= +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.2.6" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz" @@ -5845,11 +6312,21 @@ graceful-fs@^4.1.15, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== +graceful-fs@^4.1.5: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + graceful-fs@^4.2.9: version "4.2.9" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + handlebars@^4.7.6: version "4.7.7" resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" @@ -5897,6 +6374,11 @@ has-bigints@^1.0.1: resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" @@ -5917,6 +6399,18 @@ has-own-prop@^2.0.0: resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" @@ -6045,6 +6539,11 @@ https-proxy-agent@5.0.1: agent-base "6" debug "4" +human-id@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/human-id/-/human-id-1.0.2.tgz#e654d4b2b0d8b07e45da9f6020d8af17ec0a5df3" + integrity sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw== + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" @@ -6273,6 +6772,15 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +internal-slot@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.4.tgz#8551e7baf74a7a6ba5f749cfb16aa60722f0d6f3" + integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + side-channel "^1.0.4" + ip@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" @@ -6288,6 +6796,15 @@ is-absolute-url@^2.0.0: resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= +is-array-buffer@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a" + integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" @@ -6332,6 +6849,11 @@ is-callable@^1.2.4: resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" @@ -6346,6 +6868,13 @@ is-ci@^3.0.0: dependencies: ci-info "^3.1.1" +is-ci@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" @@ -6472,6 +7001,11 @@ is-negative-zero@^2.0.1: resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + is-number-object@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz" @@ -6569,6 +7103,13 @@ is-shared-array-buffer@^1.0.1: resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz" integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + is-ssh@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" @@ -6593,6 +7134,13 @@ is-string@^1.0.7: dependencies: has-tostringtag "^1.0.0" +is-subdir@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4" + integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== + dependencies: + better-path-resolve "1.0.0" + is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" @@ -6607,6 +7155,17 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" @@ -6624,6 +7183,18 @@ is-weakref@^1.0.1: dependencies: call-bind "^1.0.0" +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-windows@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" @@ -7626,7 +8197,7 @@ js-tokens@^4.0.0: resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: +js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.6.1: version "3.14.1" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -7814,6 +8385,11 @@ kleur@^3.0.0, kleur@^3.0.3: resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +kleur@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + kolorist@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.6.0.tgz#f43ac794305b30032a5bedcae7799d0f91d2ff36" @@ -7932,6 +8508,16 @@ load-json-file@^6.2.0: strip-bom "^4.0.0" type-fest "^0.6.0" +load-yaml-file@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d" + integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== + dependencies: + graceful-fs "^4.1.5" + js-yaml "^3.13.0" + pify "^4.0.1" + strip-bom "^3.0.0" + loader-utils@^1.1.0: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" @@ -8003,6 +8589,11 @@ lodash.merge@^4.6.2: resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== + lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" @@ -8036,6 +8627,14 @@ log-symbols@^5.1.0: chalk "^5.0.0" is-unicode-supported "^1.1.0" +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" @@ -8194,6 +8793,23 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== +meow@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" + integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "^4.0.2" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" + meow@^7.0.0, meow@^7.1.1: version "7.1.1" resolved "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz" @@ -8267,6 +8883,14 @@ micromatch@^2.3.11: parse-glob "^3.0.4" regex-cache "^0.4.2" +micromatch@^4.0.2: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + micromatch@^4.0.4: version "4.0.4" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" @@ -8352,7 +8976,7 @@ minimatch@~3.0.5: dependencies: brace-expansion "^1.1.7" -minimist-options@4.1.0: +minimist-options@4.1.0, minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== @@ -8453,6 +9077,11 @@ mitt@^3.0.0: resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.0.tgz#69ef9bd5c80ff6f57473e8d89326d01c414be0bd" integrity sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ== +mixme@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.5.tgz#bf8f67d8caf10fdb49fd23198fd1fa6d8e406627" + integrity sha512-/6IupbRx32s7jjEwHcycXikJwFD5UujbVNuJFkeKLYje+92OvtuPniF6JhnFm5JCTDUhS+kYK3W/4BWYQYXz7w== + mkdirp-classic@^0.5.2: version "0.5.3" resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" @@ -8828,6 +9457,11 @@ object-inspect@^1.10.3, object-inspect@^1.11.0: resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz" integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== +object-inspect@^1.12.2: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + object-inspect@^1.9.0: version "1.12.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" @@ -8848,6 +9482,16 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz" @@ -8966,6 +9610,18 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +outdent@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" + integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== + +p-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== + dependencies: + p-map "^2.0.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" @@ -9018,6 +9674,11 @@ p-map-series@^2.1.0: resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + p-map@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" @@ -9262,6 +9923,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" @@ -9720,6 +10386,16 @@ postcss@^8.4.18: picocolors "^1.0.0" source-map-js "^1.0.2" +preferred-pm@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.0.3.tgz#1b6338000371e3edbce52ef2e4f65eb2e73586d6" + integrity sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ== + dependencies: + find-up "^5.0.0" + find-yarn-workspace-root2 "1.2.16" + path-exists "^4.0.0" + which-pm "2.0.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -9740,6 +10416,11 @@ prettier@2.2.1: resolved "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== +prettier@^2.7.1: + version "2.8.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" + integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== + pretty-format@^23.6.0: version "23.6.0" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz" @@ -9838,6 +10519,11 @@ proxy-from-env@1.1.0, proxy-from-env@^1.1.0: resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" @@ -10067,6 +10753,16 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" +read-yaml-file@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-yaml-file/-/read-yaml-file-1.1.0.tgz#9362bbcbdc77007cc8ea4519fe1c0b821a7ce0d8" + integrity sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA== + dependencies: + graceful-fs "^4.1.5" + js-yaml "^3.6.1" + pify "^4.0.1" + strip-bom "^3.0.0" + read@1, read@~1.0.1: version "1.0.7" resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz" @@ -10133,6 +10829,11 @@ regenerator-runtime@^0.11.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" @@ -10140,6 +10841,15 @@ regex-cache@^0.4.2: dependencies: is-equal-shallow "^0.1.3" +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + regexpp@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" @@ -10191,6 +10901,11 @@ require-directory@^2.1.1: resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + require-relative@^0.8.7: version "0.8.7" resolved "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz" @@ -10498,6 +11213,15 @@ safe-identifier@^0.4.1: resolved "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz" integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -10522,7 +11246,7 @@ semver-match@0.1.1: dependencies: semver "^5.1.0" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -10589,7 +11313,7 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@~2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -10702,6 +11426,18 @@ smart-buffer@^4.1.0: resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== +smartwrap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/smartwrap/-/smartwrap-2.0.2.tgz#7e25d3dd58b51c6ca4aba3a9e391650ea62698a4" + integrity sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA== + dependencies: + array.prototype.flat "^1.2.3" + breakword "^1.0.5" + grapheme-splitter "^1.0.4" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + yargs "^15.1.0" + socks-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz" @@ -10771,6 +11507,14 @@ spawn-command@^0.0.2-1: resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= +spawndamnit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/spawndamnit/-/spawndamnit-2.0.0.tgz#9f762ac5c3476abb994b42ad592b5ad22bb4b0ad" + integrity sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA== + dependencies: + cross-spawn "^5.1.0" + signal-exit "^3.0.2" + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" @@ -10872,6 +11616,13 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +stream-transform@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-2.1.3.tgz#a1c3ecd72ddbf500aa8d342b0b9df38f5aa598e3" + integrity sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ== + dependencies: + mixme "^0.5.1" + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -10921,6 +11672,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -10938,6 +11698,15 @@ string.prototype.trimend@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimstart@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" @@ -10946,6 +11715,15 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" @@ -11207,6 +11985,11 @@ temp-write@^4.0.0: temp-dir "^1.0.0" uuid "^3.3.2" +term-size@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" @@ -11460,6 +12243,19 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tty-table@^4.1.5: + version "4.1.6" + resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.1.6.tgz#6bd58338f36c94cce478c3337934d8a65ab40a73" + integrity sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw== + dependencies: + chalk "^4.1.2" + csv "^5.5.0" + kleur "^4.1.4" + smartwrap "^2.0.2" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + yargs "^17.1.1" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" @@ -11623,6 +12419,15 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" @@ -11675,6 +12480,16 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + unbzip2-stream@1.4.3, unbzip2-stream@^1.3.3: version "1.4.3" resolved "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz" @@ -11970,6 +12785,31 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which-pm@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-pm/-/which-pm-2.0.0.tgz#8245609ecfe64bf751d0eef2f376d83bf1ddb7ae" + integrity sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w== + dependencies: + load-yaml-file "^0.2.0" + path-exists "^4.0.0" + +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" @@ -12001,6 +12841,15 @@ wordwrap@^1.0.0: resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" @@ -12116,11 +12965,21 @@ xtend@~4.0.1: resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + yallist@^3.0.0, yallist@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" @@ -12146,7 +13005,7 @@ yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^18.1.3: +yargs-parser@^18.1.2, yargs-parser@^18.1.3: version "18.1.3" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -12154,6 +13013,28 @@ yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.1.0: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" @@ -12167,6 +13048,19 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.1.1: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yauzl@^2.10.0: version "2.10.0" resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz"