From cd628452d4d3aa2fc04e819c6217d0134a4cf10d Mon Sep 17 00:00:00 2001 From: aaronabbott Date: Fri, 26 Jun 2026 22:58:09 +0000 Subject: [PATCH 1/3] chore!: drop support for Node.js 14 and 16 BREAKING CHANGE: Node.js 14 and 16 are no longer supported. --- .github/workflows/ci.yaml | 9 ++------- README.md | 18 ++++++++---------- package-lock.json | 6 +++--- package.json | 2 +- system-test/system_test.sh | 4 ++-- tools/build/Dockerfile.alpine | 2 +- tools/build/Dockerfile.linux | 4 ++-- tools/build/build.sh | 2 +- 8 files changed, 20 insertions(+), 27 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f27d2273..0d471711 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -10,16 +10,13 @@ jobs: strategy: fail-fast: false matrix: - node: [14, 16, 18, 20] + node: [18, 20, 22] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} - run: node --version - # Upgrade npm to newest supported version so it understands lockfile v3 - - run: npm install -g npm@9.9.3 - if: matrix.node == 14 - run: npm install - run: npm test - name: coverage @@ -32,8 +29,6 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 14 - # Upgrade npm to newest supported version so it understands lockfile v3 - - run: npm install -g npm@9.9.3 + node-version: 20 - run: npm install - run: npm run lint diff --git a/README.md b/README.md index 9ffa3d09..fd1ddd74 100644 --- a/README.md +++ b/README.md @@ -7,16 +7,14 @@ [pprof][pprof-url] support for Node.js. ## Prerequisites -1. Your application will need to be using Node.js 14 or greater. This package is tested against -[current versions of Node.js][node-versions]: 14, 16, 18, and 20. - -2. The `pprof` module has a native component that is used to collect profiles -with v8's CPU and Heap profilers. You may need to install additional -dependencies to build this module. -The module [`node-gyp`](https://www.npmjs.com/package/node-gyp) is used to -build the native component. See `node-gyp`'s -[documentation](https://github.com/nodejs/node-gyp#installation) -for information on dependencies required to build binaries with `node-gyp`. +1. Your application will need to be using Node.js 18 or greater. This package is tested against +[current versions of Node.js][node-versions]: 18, 20, and 22. + +2. The `pprof` module has a native component that is compiled on installation using +[`node-gyp`](https://www.npmjs.com/package/node-gyp). You will need to install the build +dependencies for `node-gyp`. See `node-gyp`'s +[documentation](https://github.com/nodejs/node-gyp#installation) for details on +the dependencies required for your platform. 3. The [`pprof`][pprof-url] CLI can be used to view profiles collected with this module. Instructions for installing the `pprof` CLI can be found diff --git a/package-lock.json b/package-lock.json index 5c7ee29e..14b947da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pprof", - "version": "4.0.0", + "version": "5.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pprof", - "version": "4.0.0", + "version": "5.0.0", "license": "Apache-2.0", "dependencies": { "bindings": "^1.2.1", @@ -41,7 +41,7 @@ "typescript": "^5.1.6" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { diff --git a/package.json b/package.json index db0679d3..f31fcba6 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ ] }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" }, "publishConfig": { "registry": "https://wombat-dressing-room.appspot.com" diff --git a/system-test/system_test.sh b/system-test/system_test.sh index c29f718c..2badbc39 100755 --- a/system-test/system_test.sh +++ b/system-test/system_test.sh @@ -14,11 +14,11 @@ cd $(dirname $0) # official releases. https://nodejs.org/en/about/releases/ if [[ -z "$BINARY_HOST" ]]; then ADDITIONAL_PACKAGES="python3 g++ make" - NODE_VERSIONS=(14 16 18 20) + NODE_VERSIONS=(18 20 22) else # Tested versions for pre-built binaries are limited based on # what node-pre-gyp can specify as its target version. - NODE_VERSIONS=(14 16) + NODE_VERSIONS=(18 20 22) fi for i in ${NODE_VERSIONS[@]}; do diff --git a/tools/build/Dockerfile.alpine b/tools/build/Dockerfile.alpine index 85eb24d8..656dae91 100644 --- a/tools/build/Dockerfile.alpine +++ b/tools/build/Dockerfile.alpine @@ -1,2 +1,2 @@ -FROM node:14-alpine +FROM node:20-alpine RUN apk add --no-cache python3 curl bash g++ make diff --git a/tools/build/Dockerfile.linux b/tools/build/Dockerfile.linux index 798fb75a..5ac9895b 100644 --- a/tools/build/Dockerfile.linux +++ b/tools/build/Dockerfile.linux @@ -3,6 +3,6 @@ # are dynamically linked to certain C++ libraries, like libstdc++. Using an # older docker image allows for some backwards compatibility. -# node:14-stretch images has dependencies required to build pre-built binaries +# node:20-bookworm images has dependencies required to build pre-built binaries # already installed. -FROM node:14-stretch +FROM node:20-bookworm diff --git a/tools/build/build.sh b/tools/build/build.sh index 5f2df100..04c7039f 100755 --- a/tools/build/build.sh +++ b/tools/build/build.sh @@ -28,7 +28,7 @@ mkdir -p "$ARTIFACTS_OUT" npm install --quiet -for version in 12.0.0 14.0.0 16.0.0 17.0.1 +for version in 18.0.0 20.0.0 22.0.0 do ./node_modules/.bin/node-pre-gyp configure rebuild package \ --target=$version --target_arch="x64" From c9d2867ece1fadb4d62811624cce1e6851a39ace Mon Sep 17 00:00:00 2001 From: aaronabbott Date: Fri, 26 Jun 2026 18:28:41 +0000 Subject: [PATCH 2/3] chore(deps): squash dependency updates Squashed Renovate PRs: - #332 (tmp to v0.2.6) - #330 (protobufjs-cli to v1.3.2) - #328 (protobufjs to ~7.6.0) - #325/#317 (debian docker tag to 12) - #323 (@mapbox/node-pre-gyp to v2) - #322 (@types/sinon to v21) - #319 (mocha to v11) - #318 (linkinator to v7) - #316 (golang docker tag to 1.24) - #289 (@types/pretty-ms to v5) Excluded: - #326 (p-limit to v7) because versions >= 4.0.0 are ESM-only. TAG=agy CONV=4ca117e0-d8fa-4e4c-8cfa-b52e896710d3 --- js-green-licenses.json | 8 + package-lock.json | 688 ++++++++++++---------- system-test/Dockerfile.linux | 4 +- system-test/Dockerfile.node-alpine | 2 +- system-test/busybench-js/src/busybench.js | 5 +- system-test/busybench/src/busybench.ts | 5 +- system-test/test.sh | 2 +- 7 files changed, 411 insertions(+), 303 deletions(-) create mode 100644 js-green-licenses.json diff --git a/js-green-licenses.json b/js-green-licenses.json new file mode 100644 index 00000000..3c5b655d --- /dev/null +++ b/js-green-licenses.json @@ -0,0 +1,8 @@ +{ + "packageAllowlist": [ + "tar", + "minipass", + "chownr", + "yallist" + ] +} diff --git a/package-lock.json b/package-lock.json index 14b947da..64ecdfb8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -656,6 +656,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -669,10 +670,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -680,29 +682,19 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -716,12 +708,13 @@ } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -730,23 +723,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -933,6 +909,7 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -953,7 +930,8 @@ "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", @@ -961,22 +939,24 @@ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" }, "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", + "license": "BSD-3-Clause", "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@protobufjs/aspromise": "^1.1.1" } }, "node_modules/@protobufjs/float": { @@ -985,9 +965,10 @@ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.2.tgz", + "integrity": "sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { "version": "1.1.2", @@ -1000,9 +981,10 @@ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", + "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", + "license": "BSD-3-Clause" }, "node_modules/@sindresorhus/is": { "version": "4.6.0", @@ -1166,20 +1148,18 @@ "dev": true }, "node_modules/@types/p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-fGFbybl1r0oE9mqgfc2EHHUin9ZL5rbQIexWI6jYRU1ADVn4I3LHzT+g/kpPpZsfp8PB94CQ655pfAjNF8LP6A==", - "deprecated": "This is a stub types definition. p-limit provides its own type definitions, so you do not need this installed.", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-qorhClbttP1axgmbMP3rozj6WF6TPAOeKmW3qyC3I7hAgPMvH76Avt/F3seqEciacgLWk8pQxP9Rtde4BnBEpA==", "dev": true, - "dependencies": { - "p-limit": "*" - } + "license": "MIT" }, "node_modules/@types/pretty-ms": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/pretty-ms/-/pretty-ms-4.0.0.tgz", "integrity": "sha512-l5aIszYIm3s4jIL4wLDwajEml1w3E4zqGDDUgvnroX1ux6YAxsCrgRHLUafgrHFGTHlx7TpwiwSwcHV8IBvccw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/request": { "version": "2.48.12", @@ -1209,10 +1189,11 @@ "dev": true }, "node_modules/@types/sinon": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", - "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", + "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", "dev": true, + "license": "MIT", "dependencies": { "@types/sinonjs__fake-timers": "*" } @@ -1492,10 +1473,11 @@ } }, "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1556,6 +1538,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1641,12 +1624,16 @@ "dev": true }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bindings": { @@ -1894,16 +1881,11 @@ "dev": true }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1916,6 +1898,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -1925,6 +1910,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1967,12 +1953,31 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", @@ -2054,10 +2059,11 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2068,12 +2074,13 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2214,10 +2221,11 @@ } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -2251,6 +2259,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -2260,6 +2269,19 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -2270,13 +2292,15 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -2288,10 +2312,11 @@ } }, "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -2305,7 +2330,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { "version": "1.4.655", @@ -2329,10 +2355,11 @@ } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -3137,6 +3164,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3209,23 +3237,23 @@ } }, "node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -3243,21 +3271,23 @@ } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/glob/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -3268,12 +3298,13 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -3287,6 +3318,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -3481,9 +3513,9 @@ "dev": true }, "node_modules/htmlparser2": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -3492,11 +3524,12 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" + "domutils": "^3.2.2", + "entities": "^7.0.1" } }, "node_modules/http-cache-semantics": { @@ -3687,6 +3720,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -3936,16 +3970,14 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -4163,17 +4195,18 @@ } }, "node_modules/linkinator": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/linkinator/-/linkinator-6.0.4.tgz", - "integrity": "sha512-gxZ9ePUBeoaCk29p+2gAwrRIVnKOqAV8ZVCEM8N7MvpwbccDBQiKjXFyS6nQx56K1CCZLboan2i5iJfpWCsnSQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/linkinator/-/linkinator-6.3.0.tgz", + "integrity": "sha512-MRKxkkIK5XlK+IKzIhJydJBF72TpygT7atR9CCUZrKl9hpEPVkm3Kcu66M38HJUvUBg4iskzCQENwas7HIiJeg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^5.0.0", "escape-html": "^1.0.3", "gaxios": "^6.0.0", "glob": "^10.3.10", - "htmlparser2": "^9.0.0", - "marked": "^10.0.0", + "htmlparser2": "^10.0.0", + "marked": "^13.0.0", "meow": "^13.0.0", "mime": "^4.0.0", "server-destroy": "^1.0.1", @@ -4187,13 +4220,11 @@ } }, "node_modules/linkinator/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, + "license": "MIT", "engines": { "node": ">= 14" } @@ -4211,27 +4242,30 @@ } }, "node_modules/linkinator/node_modules/gaxios": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.2.0.tgz", - "integrity": "sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" }, "engines": { "node": ">=14" } }, "node_modules/linkinator/node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -4239,10 +4273,11 @@ } }, "node_modules/linkinator/node_modules/meow": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.1.0.tgz", - "integrity": "sha512-o5R/R3Tzxq0PJ3v3qcQJtSvSE9nKOLSAaDuuoMzDVuGTwHdccMWcYomh9Xolng2tjT6O/Y83d+0coVGof6tqmA==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -4250,6 +4285,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/linkinator/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4311,9 +4361,10 @@ } }, "node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" }, "node_modules/lowercase-keys": { "version": "2.0.0", @@ -4414,10 +4465,11 @@ } }, "node_modules/marked": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-10.0.0.tgz", - "integrity": "sha512-YiGcYcWj50YrwBgNzFoYhQ1hT6GmQbFG8SksnYJX1z4BXTHSOrz1GB5/Jm2yQvMg4nN1FHP4M6r03R10KrVUiA==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz", + "integrity": "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==", "dev": true, + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -4596,10 +4648,11 @@ } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -4617,32 +4670,32 @@ } }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", @@ -4650,10 +4703,6 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" } }, "node_modules/mocha/node_modules/argparse": { @@ -4662,38 +4711,37 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -4707,10 +4755,11 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4718,21 +4767,6 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -4748,20 +4782,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/mute-stream": { "version": "0.0.8", @@ -4775,18 +4801,6 @@ "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", "license": "MIT" }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4879,6 +4893,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5251,6 +5266,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5315,29 +5337,28 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "license": "ISC" }, "node_modules/path-to-regexp": { "version": "6.2.1", @@ -5355,10 +5376,11 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -5513,6 +5535,7 @@ "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.2.tgz", "integrity": "sha512-8ivXWxT39gZN4mm4ArQyJrRgnIwZqffBWoLDsE21TmMcKI3XwJMV4lEF2WU02C4JAtgYYc2SfJIltelD8to35g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "chalk": "^4.0.0", "escodegen": "^1.13.0", @@ -5637,6 +5660,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -5799,6 +5823,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -6055,7 +6080,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -6079,10 +6105,11 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -6091,7 +6118,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/set-blocking": { "version": "2.0.0", @@ -6144,15 +6172,6 @@ "url": "https://opencollective.com/sinon" } }, - "node_modules/sinon/node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -6350,6 +6369,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6377,6 +6397,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6544,6 +6565,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, + "license": "MIT", "dependencies": { "rimraf": "^3.0.0" }, @@ -6819,23 +6841,25 @@ } }, "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -6847,6 +6871,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -6859,6 +6884,73 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -6889,6 +6981,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -6900,10 +6993,11 @@ "dev": true }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.2.tgz", + "integrity": "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", diff --git a/system-test/Dockerfile.linux b/system-test/Dockerfile.linux index 42c8168e..b6d175d4 100644 --- a/system-test/Dockerfile.linux +++ b/system-test/Dockerfile.linux @@ -1,11 +1,11 @@ -FROM golang:1.22-bullseye as builder +FROM golang:1.24-bullseye as builder RUN apt-get update && apt-get install -y \ git \ && rm -rf /var/lib/apt/lists/* WORKDIR /root/ RUN go install github.com/google/pprof@v0.0.0-20240827171923-fa2c70bbbfe5 -FROM debian:11 +FROM debian:12 ARG NODE_VERSION ARG ADDITIONAL_PACKAGES diff --git a/system-test/Dockerfile.node-alpine b/system-test/Dockerfile.node-alpine index 339bad56..9264bb65 100644 --- a/system-test/Dockerfile.node-alpine +++ b/system-test/Dockerfile.node-alpine @@ -1,6 +1,6 @@ ARG NODE_VERSION -FROM golang:1.22-alpine as builder +FROM golang:1.24-alpine as builder RUN apk add --no-cache git WORKDIR /root/ RUN go install github.com/google/pprof@v0.0.0-20240827171923-fa2c70bbbfe5 diff --git a/system-test/busybench-js/src/busybench.js b/system-test/busybench-js/src/busybench.js index e904957d..db170923 100644 --- a/system-test/busybench-js/src/busybench.js +++ b/system-test/busybench-js/src/busybench.js @@ -31,7 +31,10 @@ function busyLoop(durationSeconds) { } } if (Date.now() - startTime < 1000 * durationSeconds) { - setTimeout(() => busyLoop(durationSeconds), 5); + const busyLoopTick = () => { + busyLoop(durationSeconds); + }; + setTimeout(busyLoopTick, 5); } } diff --git a/system-test/busybench/src/busybench.ts b/system-test/busybench/src/busybench.ts index 4381d8bf..0234cb70 100644 --- a/system-test/busybench/src/busybench.ts +++ b/system-test/busybench/src/busybench.ts @@ -33,7 +33,10 @@ function busyLoop(durationSeconds: number) { } } if (Date.now() - startTime < 1000 * durationSeconds) { - setTimeout(() => busyLoop(durationSeconds), 5); + const busyLoopTick = () => { + busyLoop(durationSeconds); + }; + setTimeout(busyLoopTick, 5); } } diff --git a/system-test/test.sh b/system-test/test.sh index 562ae09c..8dd41226 100755 --- a/system-test/test.sh +++ b/system-test/test.sh @@ -60,7 +60,7 @@ node --trace-warnings "$BENCHPATH" 10 $VERIFY_TIME_LINE_NUMBERS if [[ "$VERIFY_TIME_LINE_NUMBERS" == "true" ]]; then pprof -lines -top -nodecount=2 time.pb.gz | tee $tty | \ - grep "busyLoop.*src/busybench.js:[2-3][08-9]" + grep "busyLoop.*src/busybench.js:[2-4][0-9]" pprof -filefunctions -top -nodecount=2 heap.pb.gz | tee $tty | \ grep "busyLoop.*src/busybench.js" else From 82a5268683f1892b9b99a1ceb10baada32e323b7 Mon Sep 17 00:00:00 2001 From: aaronabbott Date: Tue, 30 Jun 2026 19:16:36 +0000 Subject: [PATCH 3/3] build(deps-dev): apply missing Renovate upgrades in package.json PR #333 claimed to squash and merge several devDependency upgrades from Renovate, but only updated package-lock.json without modifying package.json. This commit updates package.json to match those intended versions: - @types/pretty-ms to ^5.0.0 (#289) - @types/sinon to ^21.0.0 (#322) - linkinator to ^7.0.0 (#318) - mocha to ^11.0.0 (#319) - protobufjs-cli to 1.3.2 (#330) - tmp to 0.2.6 (#332) - Bump protobufjs from ~7.4.0 to ~7.6.4 to address critical prototype pollution and DoS advisories - Regenerate proto/profile.js and proto/profile.d.ts with updated pbjs/pbts compiler --- package-lock.json | 758 ++++++++++++++++++----------------------- package.json | 14 +- proto/profile.js | 852 ++++++++++++++++++++++++++++++---------------- 3 files changed, 896 insertions(+), 728 deletions(-) diff --git a/package-lock.json b/package-lock.json index 64ecdfb8..ac1f77ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pprof", - "version": "5.0.0", + "version": "4.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pprof", - "version": "5.0.0", + "version": "4.0.0", "license": "Apache-2.0", "dependencies": { "bindings": "^1.2.1", @@ -14,7 +14,7 @@ "findit2": "^2.2.3", "nan": "^2.22.0", "p-limit": "^3.0.0", - "protobufjs": "~7.4.0", + "protobufjs": "~7.6.4", "source-map": "~0.8.0-beta.0", "split": "^1.0.1" }, @@ -22,21 +22,21 @@ "@types/mocha": "^10.0.0", "@types/node": "^16.0.0", "@types/p-limit": "^2.0.0", - "@types/pretty-ms": "^4.0.0", + "@types/pretty-ms": "^5.0.0", "@types/request": "^2.47.1", - "@types/sinon": "^17.0.0", + "@types/sinon": "^21.0.0", "@types/tmp": "0.2.6", "codecov": "^3.0.0", "deep-copy": "^1.4.2", "gts": "^5.3.1", "js-green-licenses": "^4.0.0", - "linkinator": "^6.0.0", - "mocha": "^10.0.0", + "linkinator": "^7.0.0", + "mocha": "^11.0.0", "nyc": "^15.0.0", - "protobufjs-cli": "1.1.2", + "protobufjs-cli": "1.3.2", "sinon": "^17.0.0", "source-map-support": "^0.5.12", - "tmp": "0.2.1", + "tmp": "0.2.6", "ts-mockito": "^2.2.5", "typescript": "^5.1.6" }, @@ -682,6 +682,19 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -723,6 +736,24 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -964,12 +995,6 @@ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.2.tgz", - "integrity": "sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw==", - "license": "BSD-3-Clause" - }, "node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", @@ -1155,11 +1180,15 @@ "license": "MIT" }, "node_modules/@types/pretty-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/pretty-ms/-/pretty-ms-4.0.0.tgz", - "integrity": "sha512-l5aIszYIm3s4jIL4wLDwajEml1w3E4zqGDDUgvnroX1ux6YAxsCrgRHLUafgrHFGTHlx7TpwiwSwcHV8IBvccw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/pretty-ms/-/pretty-ms-5.0.1.tgz", + "integrity": "sha512-FFR4uj0p47Yq6JCrOt7DCaiUJIw7t9Vh7wwt3bF6qq99QRqjSH/doEGZsIIgZqhDmwjBObVBkrn0ICm1pY+mPg==", + "deprecated": "This is a stub types definition. pretty-ms provides its own type definitions, so you do not need this installed.", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "pretty-ms": "*" + } }, "node_modules/@types/request": { "version": "2.48.12", @@ -1189,9 +1218,9 @@ "dev": true }, "node_modules/@types/sinon": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", - "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-21.0.1.tgz", + "integrity": "sha512-5yoJSqLbjH8T9V2bksgRayuhpZy+723/z6wBOR+Soe4ZlXC0eW8Na71TeaZPUWDQvM7LYKa9UGFc6LRqxiR5fQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1472,16 +1501,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -1533,20 +1552,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/append-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", @@ -1623,19 +1628,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", @@ -1881,41 +1873,19 @@ "dev": true }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" } }, "node_modules/clean-stack": { @@ -1949,33 +1919,18 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=12" } }, "node_modules/clone-response": { @@ -3158,21 +3113,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -3236,23 +3176,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "dev": true, + "license": "ISC" + }, "node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3270,57 +3213,40 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/glob/node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "18 || 20 || >=22" } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3715,19 +3641,6 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -4195,38 +4108,28 @@ } }, "node_modules/linkinator": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/linkinator/-/linkinator-6.3.0.tgz", - "integrity": "sha512-MRKxkkIK5XlK+IKzIhJydJBF72TpygT7atR9CCUZrKl9hpEPVkm3Kcu66M38HJUvUBg4iskzCQENwas7HIiJeg==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/linkinator/-/linkinator-7.6.1.tgz", + "integrity": "sha512-+VzKKZXA8wyCW1x0B0YeQvyuenDu3vZGIWMdzK1yEK0HlBfmEKopt87+Judt4VdPOGRMioKzJK0+X8ifIvOc5Q==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^5.0.0", "escape-html": "^1.0.3", - "gaxios": "^6.0.0", - "glob": "^10.3.10", + "glob": "^13.0.0", "htmlparser2": "^10.0.0", - "marked": "^13.0.0", - "meow": "^13.0.0", + "marked": "^17.0.0", + "marked-gfm-heading-id": "^4.1.3", + "meow": "^14.0.0", "mime": "^4.0.0", - "server-destroy": "^1.0.1", - "srcset": "^5.0.0" + "srcset": "^5.0.0", + "undici": "^7.16.0" }, "bin": { "linkinator": "build/src/cli.js" }, "engines": { - "node": ">=18" - } - }, - "node_modules/linkinator/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" + "node": ">=20" } }, "node_modules/linkinator/node_modules/chalk": { @@ -4241,65 +4144,19 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/linkinator/node_modules/gaxios": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", - "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/linkinator/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/linkinator/node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-14.1.0.tgz", + "integrity": "sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/linkinator/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4465,16 +4322,29 @@ } }, "node_modules/marked": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz", - "integrity": "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==", + "version": "17.0.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.6.tgz", + "integrity": "sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==", "dev": true, "license": "MIT", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 18" + "node": ">= 20" + } + }, + "node_modules/marked-gfm-heading-id": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/marked-gfm-heading-id/-/marked-gfm-heading-id-4.1.4.tgz", + "integrity": "sha512-CspnvVfHSkb/znqdPS4jUR8HtCjq3M/DnrsJCrfLBLvdrgbemmoINKpeWKQYkBiXAoBGejw0cV7xzqrPdup3WA==", + "dev": true, + "license": "MIT", + "dependencies": { + "github-slugger": "^2.0.0" + }, + "peerDependencies": { + "marked": ">=13 <19" } }, "node_modules/mdurl": { @@ -4670,31 +4540,32 @@ } }, "node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "version": "11.7.6", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.6.tgz", + "integrity": "sha512-nS9xOGbw2I3cjCpxwZAEJ9xK9lmJ08vEkQvLtz4du9ZrF9UrjRpeJGiIgl2Z+Qs++pmB4ecDe48Fwsh+j+j7xA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", + "chokidar": "^4.0.1", "debug": "^4.3.5", - "diff": "^5.2.0", + "diff": "^7.0.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", - "glob": "^8.1.0", + "glob": "^10.4.5", "he": "^1.2.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", + "minimatch": "^9.0.5", "ms": "^2.1.3", + "picocolors": "^1.1.1", "serialize-javascript": "^6.0.2", "strip-json-comments": "^3.1.1", "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", + "workerpool": "^9.2.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", "yargs-unparser": "^2.0.0" }, "bin": { @@ -4702,7 +4573,7 @@ "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 14.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/mocha/node_modules/argparse": { @@ -4721,22 +4592,50 @@ "balanced-match": "^1.0.0" } }, + "node_modules/mocha/node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/mocha/node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mocha/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=12" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4754,17 +4653,57 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/mocha/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mocha/node_modules/supports-color": { @@ -4782,6 +4721,16 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -4888,16 +4837,6 @@ "node": ">=10" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", @@ -5303,6 +5242,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5337,28 +5289,31 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", "dev": true, - "license": "ISC" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } }, "node_modules/path-to-regexp": { "version": "6.2.1", @@ -5494,6 +5449,22 @@ "node": ">=6.0.0" } }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/process-on-spawn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", @@ -5507,33 +5478,32 @@ } }, "node_modules/protobufjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", - "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.4.tgz", + "integrity": "sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", + "@protobufjs/codegen": "^2.0.5", + "@protobufjs/eventemitter": "^1.1.1", + "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", + "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", - "long": "^5.0.0" + "long": "^5.3.2" }, "engines": { "node": ">=12.0.0" } }, "node_modules/protobufjs-cli": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.2.tgz", - "integrity": "sha512-8ivXWxT39gZN4mm4ArQyJrRgnIwZqffBWoLDsE21TmMcKI3XwJMV4lEF2WU02C4JAtgYYc2SfJIltelD8to35g==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.3.2.tgz", + "integrity": "sha512-suTWiLuVUML04D8/uUpushosIscIiTwo657pK0yfQJP5qKIDL/ZnRVtA/2jdlNsnH6B8vZw6keL9Oo46NQlNEg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5556,7 +5526,7 @@ "node": ">=12.0.0" }, "peerDependencies": { - "protobufjs": "^7.0.0" + "protobufjs": "^7.6.2" } }, "node_modules/protobufjs-cli/node_modules/brace-expansion": { @@ -5819,16 +5789,17 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/redent": { @@ -6114,13 +6085,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true, - "license": "ISC" - }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -6561,16 +6525,13 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.6.tgz", + "integrity": "sha512-5sJPdPjfI5Kx+qbrDesxkglRBxW//g7hCsqspEjwkewGvBMGIKMOTKzLt1hFVJzyadba3lDUN20O9qhvbQUSTA==", "dev": true, "license": "MIT", - "dependencies": { - "rimraf": "^3.0.0" - }, "engines": { - "node": ">=8.17.0" + "node": ">=14.14" } }, "node_modules/to-fast-properties": { @@ -6718,6 +6679,16 @@ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "dev": true }, + "node_modules/undici": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz", + "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -6841,25 +6812,25 @@ } }, "node_modules/workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", + "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", "dev": true, "license": "Apache-2.0" }, "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -6884,73 +6855,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -6993,22 +6897,22 @@ "dev": true }, "node_modules/yargs": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.2.tgz", - "integrity": "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==", + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { @@ -7068,6 +6972,16 @@ "node": ">=8" } }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index f31fcba6..8b7cc7aa 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "findit2": "^2.2.3", "nan": "^2.22.0", "p-limit": "^3.0.0", - "protobufjs": "~7.4.0", + "protobufjs": "~7.6.4", "source-map": "~0.8.0-beta.0", "split": "^1.0.1" }, @@ -44,21 +44,21 @@ "@types/mocha": "^10.0.0", "@types/node": "^16.0.0", "@types/p-limit": "^2.0.0", - "@types/pretty-ms": "^4.0.0", + "@types/pretty-ms": "^5.0.0", "@types/request": "^2.47.1", - "@types/sinon": "^17.0.0", + "@types/sinon": "^21.0.0", "@types/tmp": "0.2.6", "codecov": "^3.0.0", "deep-copy": "^1.4.2", "gts": "^5.3.1", "js-green-licenses": "^4.0.0", - "linkinator": "^6.0.0", - "mocha": "^10.0.0", + "linkinator": "^7.0.0", + "mocha": "^11.0.0", "nyc": "^15.0.0", - "protobufjs-cli": "1.1.2", + "protobufjs-cli": "1.3.2", "sinon": "^17.0.0", "source-map-support": "^0.5.12", - "tmp": "0.2.1", + "tmp": "0.2.6", "ts-mockito": "^2.2.5", "typescript": "^5.1.6" }, diff --git a/proto/profile.js b/proto/profile.js index 121dd0f6..65578309 100644 --- a/proto/profile.js +++ b/proto/profile.js @@ -67,7 +67,7 @@ $root.perftools = (function() { this.comment = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -204,24 +204,28 @@ $root.perftools = (function() { * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Profile.encode = function encode(message, writer) { + Profile.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.sampleType != null && message.sampleType.length) for (var i = 0; i < message.sampleType.length; ++i) - $root.perftools.profiles.ValueType.encode(message.sampleType[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.perftools.profiles.ValueType.encode(message.sampleType[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.sample != null && message.sample.length) for (var i = 0; i < message.sample.length; ++i) - $root.perftools.profiles.Sample.encode(message.sample[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.perftools.profiles.Sample.encode(message.sample[i], writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.mapping != null && message.mapping.length) for (var i = 0; i < message.mapping.length; ++i) - $root.perftools.profiles.Mapping.encode(message.mapping[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.perftools.profiles.Mapping.encode(message.mapping[i], writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.location != null && message.location.length) for (var i = 0; i < message.location.length; ++i) - $root.perftools.profiles.Location.encode(message.location[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.perftools.profiles.Location.encode(message.location[i], writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message["function"] != null && message["function"].length) for (var i = 0; i < message["function"].length; ++i) - $root.perftools.profiles.Function.encode(message["function"][i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.perftools.profiles.Function.encode(message["function"][i], writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.stringTable != null && message.stringTable.length) for (var i = 0; i < message.stringTable.length; ++i) writer.uint32(/* id 6, wireType 2 =*/50).string(message.stringTable[i]); @@ -234,7 +238,7 @@ $root.perftools = (function() { if (message.durationNanos != null && Object.hasOwnProperty.call(message, "durationNanos")) writer.uint32(/* id 10, wireType 0 =*/80).int64(message.durationNanos); if (message.periodType != null && Object.hasOwnProperty.call(message, "periodType")) - $root.perftools.profiles.ValueType.encode(message.periodType, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + $root.perftools.profiles.ValueType.encode(message.periodType, writer.uint32(/* id 11, wireType 2 =*/90).fork(), q + 1).ldelim(); if (message.period != null && Object.hasOwnProperty.call(message, "period")) writer.uint32(/* id 12, wireType 0 =*/96).int64(message.period); if (message.comment != null && message.comment.length) { @@ -272,41 +276,47 @@ $root.perftools = (function() { * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Profile.decode = function decode(reader, length) { + Profile.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.perftools.profiles.Profile(); while (reader.pos < end) { var tag = reader.uint32(); + if (tag === error) + break; switch (tag >>> 3) { case 1: { if (!(message.sampleType && message.sampleType.length)) message.sampleType = []; - message.sampleType.push($root.perftools.profiles.ValueType.decode(reader, reader.uint32())); + message.sampleType.push($root.perftools.profiles.ValueType.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { if (!(message.sample && message.sample.length)) message.sample = []; - message.sample.push($root.perftools.profiles.Sample.decode(reader, reader.uint32())); + message.sample.push($root.perftools.profiles.Sample.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { if (!(message.mapping && message.mapping.length)) message.mapping = []; - message.mapping.push($root.perftools.profiles.Mapping.decode(reader, reader.uint32())); + message.mapping.push($root.perftools.profiles.Mapping.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 4: { if (!(message.location && message.location.length)) message.location = []; - message.location.push($root.perftools.profiles.Location.decode(reader, reader.uint32())); + message.location.push($root.perftools.profiles.Location.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 5: { if (!(message["function"] && message["function"].length)) message["function"] = []; - message["function"].push($root.perftools.profiles.Function.decode(reader, reader.uint32())); + message["function"].push($root.perftools.profiles.Function.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 6: { @@ -332,7 +342,7 @@ $root.perftools = (function() { break; } case 11: { - message.periodType = $root.perftools.profiles.ValueType.decode(reader, reader.uint32()); + message.periodType = $root.perftools.profiles.ValueType.decode(reader, reader.uint32(), undefined, long + 1); break; } case 12: { @@ -355,7 +365,7 @@ $root.perftools = (function() { break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -386,89 +396,93 @@ $root.perftools = (function() { * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Profile.verify = function verify(message) { + Profile.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.sampleType != null && message.hasOwnProperty("sampleType")) { + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.sampleType != null && Object.hasOwnProperty.call(message, "sampleType")) { if (!Array.isArray(message.sampleType)) return "sampleType: array expected"; for (var i = 0; i < message.sampleType.length; ++i) { - var error = $root.perftools.profiles.ValueType.verify(message.sampleType[i]); + var error = $root.perftools.profiles.ValueType.verify(message.sampleType[i], long + 1); if (error) return "sampleType." + error; } } - if (message.sample != null && message.hasOwnProperty("sample")) { + if (message.sample != null && Object.hasOwnProperty.call(message, "sample")) { if (!Array.isArray(message.sample)) return "sample: array expected"; for (var i = 0; i < message.sample.length; ++i) { - var error = $root.perftools.profiles.Sample.verify(message.sample[i]); + var error = $root.perftools.profiles.Sample.verify(message.sample[i], long + 1); if (error) return "sample." + error; } } - if (message.mapping != null && message.hasOwnProperty("mapping")) { + if (message.mapping != null && Object.hasOwnProperty.call(message, "mapping")) { if (!Array.isArray(message.mapping)) return "mapping: array expected"; for (var i = 0; i < message.mapping.length; ++i) { - var error = $root.perftools.profiles.Mapping.verify(message.mapping[i]); + var error = $root.perftools.profiles.Mapping.verify(message.mapping[i], long + 1); if (error) return "mapping." + error; } } - if (message.location != null && message.hasOwnProperty("location")) { + if (message.location != null && Object.hasOwnProperty.call(message, "location")) { if (!Array.isArray(message.location)) return "location: array expected"; for (var i = 0; i < message.location.length; ++i) { - var error = $root.perftools.profiles.Location.verify(message.location[i]); + var error = $root.perftools.profiles.Location.verify(message.location[i], long + 1); if (error) return "location." + error; } } - if (message["function"] != null && message.hasOwnProperty("function")) { + if (message["function"] != null && Object.hasOwnProperty.call(message, "function")) { if (!Array.isArray(message["function"])) return "function: array expected"; for (var i = 0; i < message["function"].length; ++i) { - var error = $root.perftools.profiles.Function.verify(message["function"][i]); + var error = $root.perftools.profiles.Function.verify(message["function"][i], long + 1); if (error) return "function." + error; } } - if (message.stringTable != null && message.hasOwnProperty("stringTable")) { + if (message.stringTable != null && Object.hasOwnProperty.call(message, "stringTable")) { if (!Array.isArray(message.stringTable)) return "stringTable: array expected"; for (var i = 0; i < message.stringTable.length; ++i) if (!$util.isString(message.stringTable[i])) return "stringTable: string[] expected"; } - if (message.dropFrames != null && message.hasOwnProperty("dropFrames")) + if (message.dropFrames != null && Object.hasOwnProperty.call(message, "dropFrames")) if (!$util.isInteger(message.dropFrames) && !(message.dropFrames && $util.isInteger(message.dropFrames.low) && $util.isInteger(message.dropFrames.high))) return "dropFrames: integer|Long expected"; - if (message.keepFrames != null && message.hasOwnProperty("keepFrames")) + if (message.keepFrames != null && Object.hasOwnProperty.call(message, "keepFrames")) if (!$util.isInteger(message.keepFrames) && !(message.keepFrames && $util.isInteger(message.keepFrames.low) && $util.isInteger(message.keepFrames.high))) return "keepFrames: integer|Long expected"; - if (message.timeNanos != null && message.hasOwnProperty("timeNanos")) + if (message.timeNanos != null && Object.hasOwnProperty.call(message, "timeNanos")) if (!$util.isInteger(message.timeNanos) && !(message.timeNanos && $util.isInteger(message.timeNanos.low) && $util.isInteger(message.timeNanos.high))) return "timeNanos: integer|Long expected"; - if (message.durationNanos != null && message.hasOwnProperty("durationNanos")) + if (message.durationNanos != null && Object.hasOwnProperty.call(message, "durationNanos")) if (!$util.isInteger(message.durationNanos) && !(message.durationNanos && $util.isInteger(message.durationNanos.low) && $util.isInteger(message.durationNanos.high))) return "durationNanos: integer|Long expected"; - if (message.periodType != null && message.hasOwnProperty("periodType")) { - var error = $root.perftools.profiles.ValueType.verify(message.periodType); + if (message.periodType != null && Object.hasOwnProperty.call(message, "periodType")) { + var error = $root.perftools.profiles.ValueType.verify(message.periodType, long + 1); if (error) return "periodType." + error; } - if (message.period != null && message.hasOwnProperty("period")) + if (message.period != null && Object.hasOwnProperty.call(message, "period")) if (!$util.isInteger(message.period) && !(message.period && $util.isInteger(message.period.low) && $util.isInteger(message.period.high))) return "period: integer|Long expected"; - if (message.comment != null && message.hasOwnProperty("comment")) { + if (message.comment != null && Object.hasOwnProperty.call(message, "comment")) { if (!Array.isArray(message.comment)) return "comment: array expected"; for (var i = 0; i < message.comment.length; ++i) if (!$util.isInteger(message.comment[i]) && !(message.comment[i] && $util.isInteger(message.comment[i].low) && $util.isInteger(message.comment[i].high))) return "comment: integer|Long[] expected"; } - if (message.defaultSampleType != null && message.hasOwnProperty("defaultSampleType")) + if (message.defaultSampleType != null && Object.hasOwnProperty.call(message, "defaultSampleType")) if (!$util.isInteger(message.defaultSampleType) && !(message.defaultSampleType && $util.isInteger(message.defaultSampleType.low) && $util.isInteger(message.defaultSampleType.high))) return "defaultSampleType: integer|Long expected"; return null; @@ -482,18 +496,24 @@ $root.perftools = (function() { * @param {Object.} object Plain object * @returns {perftools.profiles.Profile} Profile */ - Profile.fromObject = function fromObject(object) { + Profile.fromObject = function fromObject(object, long) { if (object instanceof $root.perftools.profiles.Profile) return object; + if (!$util.isObject(object)) + throw TypeError(".perftools.profiles.Profile: object expected"); + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.perftools.profiles.Profile(); if (object.sampleType) { if (!Array.isArray(object.sampleType)) throw TypeError(".perftools.profiles.Profile.sampleType: array expected"); message.sampleType = []; for (var i = 0; i < object.sampleType.length; ++i) { - if (typeof object.sampleType[i] !== "object") + if (!$util.isObject(object.sampleType[i])) throw TypeError(".perftools.profiles.Profile.sampleType: object expected"); - message.sampleType[i] = $root.perftools.profiles.ValueType.fromObject(object.sampleType[i]); + message.sampleType[i] = $root.perftools.profiles.ValueType.fromObject(object.sampleType[i], long + 1); } } if (object.sample) { @@ -501,9 +521,9 @@ $root.perftools = (function() { throw TypeError(".perftools.profiles.Profile.sample: array expected"); message.sample = []; for (var i = 0; i < object.sample.length; ++i) { - if (typeof object.sample[i] !== "object") + if (!$util.isObject(object.sample[i])) throw TypeError(".perftools.profiles.Profile.sample: object expected"); - message.sample[i] = $root.perftools.profiles.Sample.fromObject(object.sample[i]); + message.sample[i] = $root.perftools.profiles.Sample.fromObject(object.sample[i], long + 1); } } if (object.mapping) { @@ -511,9 +531,9 @@ $root.perftools = (function() { throw TypeError(".perftools.profiles.Profile.mapping: array expected"); message.mapping = []; for (var i = 0; i < object.mapping.length; ++i) { - if (typeof object.mapping[i] !== "object") + if (!$util.isObject(object.mapping[i])) throw TypeError(".perftools.profiles.Profile.mapping: object expected"); - message.mapping[i] = $root.perftools.profiles.Mapping.fromObject(object.mapping[i]); + message.mapping[i] = $root.perftools.profiles.Mapping.fromObject(object.mapping[i], long + 1); } } if (object.location) { @@ -521,9 +541,9 @@ $root.perftools = (function() { throw TypeError(".perftools.profiles.Profile.location: array expected"); message.location = []; for (var i = 0; i < object.location.length; ++i) { - if (typeof object.location[i] !== "object") + if (!$util.isObject(object.location[i])) throw TypeError(".perftools.profiles.Profile.location: object expected"); - message.location[i] = $root.perftools.profiles.Location.fromObject(object.location[i]); + message.location[i] = $root.perftools.profiles.Location.fromObject(object.location[i], long + 1); } } if (object["function"]) { @@ -531,9 +551,9 @@ $root.perftools = (function() { throw TypeError(".perftools.profiles.Profile.function: array expected"); message["function"] = []; for (var i = 0; i < object["function"].length; ++i) { - if (typeof object["function"][i] !== "object") + if (!$util.isObject(object["function"][i])) throw TypeError(".perftools.profiles.Profile.function: object expected"); - message["function"][i] = $root.perftools.profiles.Function.fromObject(object["function"][i]); + message["function"][i] = $root.perftools.profiles.Function.fromObject(object["function"][i], long + 1); } } if (object.stringTable) { @@ -545,7 +565,7 @@ $root.perftools = (function() { } if (object.dropFrames != null) if ($util.Long) - (message.dropFrames = $util.Long.fromValue(object.dropFrames)).unsigned = false; + message.dropFrames = $util.Long.fromValue(object.dropFrames, false); else if (typeof object.dropFrames === "string") message.dropFrames = parseInt(object.dropFrames, 10); else if (typeof object.dropFrames === "number") @@ -554,7 +574,7 @@ $root.perftools = (function() { message.dropFrames = new $util.LongBits(object.dropFrames.low >>> 0, object.dropFrames.high >>> 0).toNumber(); if (object.keepFrames != null) if ($util.Long) - (message.keepFrames = $util.Long.fromValue(object.keepFrames)).unsigned = false; + message.keepFrames = $util.Long.fromValue(object.keepFrames, false); else if (typeof object.keepFrames === "string") message.keepFrames = parseInt(object.keepFrames, 10); else if (typeof object.keepFrames === "number") @@ -563,7 +583,7 @@ $root.perftools = (function() { message.keepFrames = new $util.LongBits(object.keepFrames.low >>> 0, object.keepFrames.high >>> 0).toNumber(); if (object.timeNanos != null) if ($util.Long) - (message.timeNanos = $util.Long.fromValue(object.timeNanos)).unsigned = false; + message.timeNanos = $util.Long.fromValue(object.timeNanos, false); else if (typeof object.timeNanos === "string") message.timeNanos = parseInt(object.timeNanos, 10); else if (typeof object.timeNanos === "number") @@ -572,7 +592,7 @@ $root.perftools = (function() { message.timeNanos = new $util.LongBits(object.timeNanos.low >>> 0, object.timeNanos.high >>> 0).toNumber(); if (object.durationNanos != null) if ($util.Long) - (message.durationNanos = $util.Long.fromValue(object.durationNanos)).unsigned = false; + message.durationNanos = $util.Long.fromValue(object.durationNanos, false); else if (typeof object.durationNanos === "string") message.durationNanos = parseInt(object.durationNanos, 10); else if (typeof object.durationNanos === "number") @@ -580,13 +600,13 @@ $root.perftools = (function() { else if (typeof object.durationNanos === "object") message.durationNanos = new $util.LongBits(object.durationNanos.low >>> 0, object.durationNanos.high >>> 0).toNumber(); if (object.periodType != null) { - if (typeof object.periodType !== "object") + if (!$util.isObject(object.periodType)) throw TypeError(".perftools.profiles.Profile.periodType: object expected"); - message.periodType = $root.perftools.profiles.ValueType.fromObject(object.periodType); + message.periodType = $root.perftools.profiles.ValueType.fromObject(object.periodType, long + 1); } if (object.period != null) if ($util.Long) - (message.period = $util.Long.fromValue(object.period)).unsigned = false; + message.period = $util.Long.fromValue(object.period, false); else if (typeof object.period === "string") message.period = parseInt(object.period, 10); else if (typeof object.period === "number") @@ -599,7 +619,7 @@ $root.perftools = (function() { message.comment = []; for (var i = 0; i < object.comment.length; ++i) if ($util.Long) - (message.comment[i] = $util.Long.fromValue(object.comment[i])).unsigned = false; + message.comment[i] = $util.Long.fromValue(object.comment[i], false); else if (typeof object.comment[i] === "string") message.comment[i] = parseInt(object.comment[i], 10); else if (typeof object.comment[i] === "number") @@ -609,7 +629,7 @@ $root.perftools = (function() { } if (object.defaultSampleType != null) if ($util.Long) - (message.defaultSampleType = $util.Long.fromValue(object.defaultSampleType)).unsigned = false; + message.defaultSampleType = $util.Long.fromValue(object.defaultSampleType, false); else if (typeof object.defaultSampleType === "string") message.defaultSampleType = parseInt(object.defaultSampleType, 10); else if (typeof object.defaultSampleType === "number") @@ -628,9 +648,13 @@ $root.perftools = (function() { * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Profile.toObject = function toObject(message, options) { + Profile.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.sampleType = []; @@ -644,103 +668,117 @@ $root.perftools = (function() { if (options.defaults) { if ($util.Long) { var long = new $util.Long(0, 0, false); - object.dropFrames = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.dropFrames = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.dropFrames = options.longs === String ? "0" : 0; + object.dropFrames = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.keepFrames = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.keepFrames = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.keepFrames = options.longs === String ? "0" : 0; + object.keepFrames = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.timeNanos = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.timeNanos = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.timeNanos = options.longs === String ? "0" : 0; + object.timeNanos = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.durationNanos = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.durationNanos = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.durationNanos = options.longs === String ? "0" : 0; + object.durationNanos = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; object.periodType = null; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.period = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.period = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.period = options.longs === String ? "0" : 0; + object.period = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.defaultSampleType = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.defaultSampleType = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.defaultSampleType = options.longs === String ? "0" : 0; + object.defaultSampleType = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } if (message.sampleType && message.sampleType.length) { object.sampleType = []; for (var j = 0; j < message.sampleType.length; ++j) - object.sampleType[j] = $root.perftools.profiles.ValueType.toObject(message.sampleType[j], options); + object.sampleType[j] = $root.perftools.profiles.ValueType.toObject(message.sampleType[j], options, q + 1); } if (message.sample && message.sample.length) { object.sample = []; for (var j = 0; j < message.sample.length; ++j) - object.sample[j] = $root.perftools.profiles.Sample.toObject(message.sample[j], options); + object.sample[j] = $root.perftools.profiles.Sample.toObject(message.sample[j], options, q + 1); } if (message.mapping && message.mapping.length) { object.mapping = []; for (var j = 0; j < message.mapping.length; ++j) - object.mapping[j] = $root.perftools.profiles.Mapping.toObject(message.mapping[j], options); + object.mapping[j] = $root.perftools.profiles.Mapping.toObject(message.mapping[j], options, q + 1); } if (message.location && message.location.length) { object.location = []; for (var j = 0; j < message.location.length; ++j) - object.location[j] = $root.perftools.profiles.Location.toObject(message.location[j], options); + object.location[j] = $root.perftools.profiles.Location.toObject(message.location[j], options, q + 1); } if (message["function"] && message["function"].length) { object["function"] = []; for (var j = 0; j < message["function"].length; ++j) - object["function"][j] = $root.perftools.profiles.Function.toObject(message["function"][j], options); + object["function"][j] = $root.perftools.profiles.Function.toObject(message["function"][j], options, q + 1); } if (message.stringTable && message.stringTable.length) { object.stringTable = []; for (var j = 0; j < message.stringTable.length; ++j) object.stringTable[j] = message.stringTable[j]; } - if (message.dropFrames != null && message.hasOwnProperty("dropFrames")) - if (typeof message.dropFrames === "number") + if (message.dropFrames != null && Object.hasOwnProperty.call(message, "dropFrames")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.dropFrames = typeof message.dropFrames === "number" ? BigInt(message.dropFrames) : $util.Long.fromBits(message.dropFrames.low >>> 0, message.dropFrames.high >>> 0, false).toBigInt(); + else if (typeof message.dropFrames === "number") object.dropFrames = options.longs === String ? String(message.dropFrames) : message.dropFrames; else object.dropFrames = options.longs === String ? $util.Long.prototype.toString.call(message.dropFrames) : options.longs === Number ? new $util.LongBits(message.dropFrames.low >>> 0, message.dropFrames.high >>> 0).toNumber() : message.dropFrames; - if (message.keepFrames != null && message.hasOwnProperty("keepFrames")) - if (typeof message.keepFrames === "number") + if (message.keepFrames != null && Object.hasOwnProperty.call(message, "keepFrames")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.keepFrames = typeof message.keepFrames === "number" ? BigInt(message.keepFrames) : $util.Long.fromBits(message.keepFrames.low >>> 0, message.keepFrames.high >>> 0, false).toBigInt(); + else if (typeof message.keepFrames === "number") object.keepFrames = options.longs === String ? String(message.keepFrames) : message.keepFrames; else object.keepFrames = options.longs === String ? $util.Long.prototype.toString.call(message.keepFrames) : options.longs === Number ? new $util.LongBits(message.keepFrames.low >>> 0, message.keepFrames.high >>> 0).toNumber() : message.keepFrames; - if (message.timeNanos != null && message.hasOwnProperty("timeNanos")) - if (typeof message.timeNanos === "number") + if (message.timeNanos != null && Object.hasOwnProperty.call(message, "timeNanos")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.timeNanos = typeof message.timeNanos === "number" ? BigInt(message.timeNanos) : $util.Long.fromBits(message.timeNanos.low >>> 0, message.timeNanos.high >>> 0, false).toBigInt(); + else if (typeof message.timeNanos === "number") object.timeNanos = options.longs === String ? String(message.timeNanos) : message.timeNanos; else object.timeNanos = options.longs === String ? $util.Long.prototype.toString.call(message.timeNanos) : options.longs === Number ? new $util.LongBits(message.timeNanos.low >>> 0, message.timeNanos.high >>> 0).toNumber() : message.timeNanos; - if (message.durationNanos != null && message.hasOwnProperty("durationNanos")) - if (typeof message.durationNanos === "number") + if (message.durationNanos != null && Object.hasOwnProperty.call(message, "durationNanos")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.durationNanos = typeof message.durationNanos === "number" ? BigInt(message.durationNanos) : $util.Long.fromBits(message.durationNanos.low >>> 0, message.durationNanos.high >>> 0, false).toBigInt(); + else if (typeof message.durationNanos === "number") object.durationNanos = options.longs === String ? String(message.durationNanos) : message.durationNanos; else object.durationNanos = options.longs === String ? $util.Long.prototype.toString.call(message.durationNanos) : options.longs === Number ? new $util.LongBits(message.durationNanos.low >>> 0, message.durationNanos.high >>> 0).toNumber() : message.durationNanos; - if (message.periodType != null && message.hasOwnProperty("periodType")) - object.periodType = $root.perftools.profiles.ValueType.toObject(message.periodType, options); - if (message.period != null && message.hasOwnProperty("period")) - if (typeof message.period === "number") + if (message.periodType != null && Object.hasOwnProperty.call(message, "periodType")) + object.periodType = $root.perftools.profiles.ValueType.toObject(message.periodType, options, q + 1); + if (message.period != null && Object.hasOwnProperty.call(message, "period")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.period = typeof message.period === "number" ? BigInt(message.period) : $util.Long.fromBits(message.period.low >>> 0, message.period.high >>> 0, false).toBigInt(); + else if (typeof message.period === "number") object.period = options.longs === String ? String(message.period) : message.period; else object.period = options.longs === String ? $util.Long.prototype.toString.call(message.period) : options.longs === Number ? new $util.LongBits(message.period.low >>> 0, message.period.high >>> 0).toNumber() : message.period; if (message.comment && message.comment.length) { object.comment = []; for (var j = 0; j < message.comment.length; ++j) - if (typeof message.comment[j] === "number") + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.comment[j] = typeof message.comment[j] === "number" ? BigInt(message.comment[j]) : $util.Long.fromBits(message.comment[j].low >>> 0, message.comment[j].high >>> 0, false).toBigInt(); + else if (typeof message.comment[j] === "number") object.comment[j] = options.longs === String ? String(message.comment[j]) : message.comment[j]; else object.comment[j] = options.longs === String ? $util.Long.prototype.toString.call(message.comment[j]) : options.longs === Number ? new $util.LongBits(message.comment[j].low >>> 0, message.comment[j].high >>> 0).toNumber() : message.comment[j]; } - if (message.defaultSampleType != null && message.hasOwnProperty("defaultSampleType")) - if (typeof message.defaultSampleType === "number") + if (message.defaultSampleType != null && Object.hasOwnProperty.call(message, "defaultSampleType")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.defaultSampleType = typeof message.defaultSampleType === "number" ? BigInt(message.defaultSampleType) : $util.Long.fromBits(message.defaultSampleType.low >>> 0, message.defaultSampleType.high >>> 0, false).toBigInt(); + else if (typeof message.defaultSampleType === "number") object.defaultSampleType = options.longs === String ? String(message.defaultSampleType) : message.defaultSampleType; else object.defaultSampleType = options.longs === String ? $util.Long.prototype.toString.call(message.defaultSampleType) : options.longs === Number ? new $util.LongBits(message.defaultSampleType.low >>> 0, message.defaultSampleType.high >>> 0).toNumber() : message.defaultSampleType; @@ -797,7 +835,7 @@ $root.perftools = (function() { function ValueType(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -838,9 +876,13 @@ $root.perftools = (function() { * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ValueType.encode = function encode(message, writer) { + ValueType.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.type != null && Object.hasOwnProperty.call(message, "type")) writer.uint32(/* id 1, wireType 0 =*/8).int64(message.type); if (message.unit != null && Object.hasOwnProperty.call(message, "unit")) @@ -872,12 +914,18 @@ $root.perftools = (function() { * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ValueType.decode = function decode(reader, length) { + ValueType.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.perftools.profiles.ValueType(); while (reader.pos < end) { var tag = reader.uint32(); + if (tag === error) + break; switch (tag >>> 3) { case 1: { message.type = reader.int64(); @@ -888,7 +936,7 @@ $root.perftools = (function() { break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -919,13 +967,17 @@ $root.perftools = (function() { * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ValueType.verify = function verify(message) { + ValueType.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.type != null && message.hasOwnProperty("type")) + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.type != null && Object.hasOwnProperty.call(message, "type")) if (!$util.isInteger(message.type) && !(message.type && $util.isInteger(message.type.low) && $util.isInteger(message.type.high))) return "type: integer|Long expected"; - if (message.unit != null && message.hasOwnProperty("unit")) + if (message.unit != null && Object.hasOwnProperty.call(message, "unit")) if (!$util.isInteger(message.unit) && !(message.unit && $util.isInteger(message.unit.low) && $util.isInteger(message.unit.high))) return "unit: integer|Long expected"; return null; @@ -939,13 +991,19 @@ $root.perftools = (function() { * @param {Object.} object Plain object * @returns {perftools.profiles.ValueType} ValueType */ - ValueType.fromObject = function fromObject(object) { + ValueType.fromObject = function fromObject(object, long) { if (object instanceof $root.perftools.profiles.ValueType) return object; + if (!$util.isObject(object)) + throw TypeError(".perftools.profiles.ValueType: object expected"); + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.perftools.profiles.ValueType(); if (object.type != null) if ($util.Long) - (message.type = $util.Long.fromValue(object.type)).unsigned = false; + message.type = $util.Long.fromValue(object.type, false); else if (typeof object.type === "string") message.type = parseInt(object.type, 10); else if (typeof object.type === "number") @@ -954,7 +1012,7 @@ $root.perftools = (function() { message.type = new $util.LongBits(object.type.low >>> 0, object.type.high >>> 0).toNumber(); if (object.unit != null) if ($util.Long) - (message.unit = $util.Long.fromValue(object.unit)).unsigned = false; + message.unit = $util.Long.fromValue(object.unit, false); else if (typeof object.unit === "string") message.unit = parseInt(object.unit, 10); else if (typeof object.unit === "number") @@ -973,29 +1031,37 @@ $root.perftools = (function() { * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ValueType.toObject = function toObject(message, options) { + ValueType.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { if ($util.Long) { var long = new $util.Long(0, 0, false); - object.type = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.type = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.type = options.longs === String ? "0" : 0; + object.type = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.unit = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.unit = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.unit = options.longs === String ? "0" : 0; + object.unit = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } - if (message.type != null && message.hasOwnProperty("type")) - if (typeof message.type === "number") + if (message.type != null && Object.hasOwnProperty.call(message, "type")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.type = typeof message.type === "number" ? BigInt(message.type) : $util.Long.fromBits(message.type.low >>> 0, message.type.high >>> 0, false).toBigInt(); + else if (typeof message.type === "number") object.type = options.longs === String ? String(message.type) : message.type; else object.type = options.longs === String ? $util.Long.prototype.toString.call(message.type) : options.longs === Number ? new $util.LongBits(message.type.low >>> 0, message.type.high >>> 0).toNumber() : message.type; - if (message.unit != null && message.hasOwnProperty("unit")) - if (typeof message.unit === "number") + if (message.unit != null && Object.hasOwnProperty.call(message, "unit")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.unit = typeof message.unit === "number" ? BigInt(message.unit) : $util.Long.fromBits(message.unit.low >>> 0, message.unit.high >>> 0, false).toBigInt(); + else if (typeof message.unit === "number") object.unit = options.longs === String ? String(message.unit) : message.unit; else object.unit = options.longs === String ? $util.Long.prototype.toString.call(message.unit) : options.longs === Number ? new $util.LongBits(message.unit.low >>> 0, message.unit.high >>> 0).toNumber() : message.unit; @@ -1056,7 +1122,7 @@ $root.perftools = (function() { this.label = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -1105,9 +1171,13 @@ $root.perftools = (function() { * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Sample.encode = function encode(message, writer) { + Sample.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.locationId != null && message.locationId.length) { writer.uint32(/* id 1, wireType 2 =*/10).fork(); for (var i = 0; i < message.locationId.length; ++i) @@ -1122,7 +1192,7 @@ $root.perftools = (function() { } if (message.label != null && message.label.length) for (var i = 0; i < message.label.length; ++i) - $root.perftools.profiles.Label.encode(message.label[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.perftools.profiles.Label.encode(message.label[i], writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); return writer; }; @@ -1150,12 +1220,18 @@ $root.perftools = (function() { * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Sample.decode = function decode(reader, length) { + Sample.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.perftools.profiles.Sample(); while (reader.pos < end) { var tag = reader.uint32(); + if (tag === error) + break; switch (tag >>> 3) { case 1: { if (!(message.locationId && message.locationId.length)) @@ -1182,11 +1258,11 @@ $root.perftools = (function() { case 3: { if (!(message.label && message.label.length)) message.label = []; - message.label.push($root.perftools.profiles.Label.decode(reader, reader.uint32())); + message.label.push($root.perftools.profiles.Label.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -1217,28 +1293,32 @@ $root.perftools = (function() { * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Sample.verify = function verify(message) { + Sample.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.locationId != null && message.hasOwnProperty("locationId")) { + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.locationId != null && Object.hasOwnProperty.call(message, "locationId")) { if (!Array.isArray(message.locationId)) return "locationId: array expected"; for (var i = 0; i < message.locationId.length; ++i) if (!$util.isInteger(message.locationId[i]) && !(message.locationId[i] && $util.isInteger(message.locationId[i].low) && $util.isInteger(message.locationId[i].high))) return "locationId: integer|Long[] expected"; } - if (message.value != null && message.hasOwnProperty("value")) { + if (message.value != null && Object.hasOwnProperty.call(message, "value")) { if (!Array.isArray(message.value)) return "value: array expected"; for (var i = 0; i < message.value.length; ++i) if (!$util.isInteger(message.value[i]) && !(message.value[i] && $util.isInteger(message.value[i].low) && $util.isInteger(message.value[i].high))) return "value: integer|Long[] expected"; } - if (message.label != null && message.hasOwnProperty("label")) { + if (message.label != null && Object.hasOwnProperty.call(message, "label")) { if (!Array.isArray(message.label)) return "label: array expected"; for (var i = 0; i < message.label.length; ++i) { - var error = $root.perftools.profiles.Label.verify(message.label[i]); + var error = $root.perftools.profiles.Label.verify(message.label[i], long + 1); if (error) return "label." + error; } @@ -1254,9 +1334,15 @@ $root.perftools = (function() { * @param {Object.} object Plain object * @returns {perftools.profiles.Sample} Sample */ - Sample.fromObject = function fromObject(object) { + Sample.fromObject = function fromObject(object, long) { if (object instanceof $root.perftools.profiles.Sample) return object; + if (!$util.isObject(object)) + throw TypeError(".perftools.profiles.Sample: object expected"); + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.perftools.profiles.Sample(); if (object.locationId) { if (!Array.isArray(object.locationId)) @@ -1264,7 +1350,7 @@ $root.perftools = (function() { message.locationId = []; for (var i = 0; i < object.locationId.length; ++i) if ($util.Long) - (message.locationId[i] = $util.Long.fromValue(object.locationId[i])).unsigned = true; + message.locationId[i] = $util.Long.fromValue(object.locationId[i], true); else if (typeof object.locationId[i] === "string") message.locationId[i] = parseInt(object.locationId[i], 10); else if (typeof object.locationId[i] === "number") @@ -1278,7 +1364,7 @@ $root.perftools = (function() { message.value = []; for (var i = 0; i < object.value.length; ++i) if ($util.Long) - (message.value[i] = $util.Long.fromValue(object.value[i])).unsigned = false; + message.value[i] = $util.Long.fromValue(object.value[i], false); else if (typeof object.value[i] === "string") message.value[i] = parseInt(object.value[i], 10); else if (typeof object.value[i] === "number") @@ -1291,9 +1377,9 @@ $root.perftools = (function() { throw TypeError(".perftools.profiles.Sample.label: array expected"); message.label = []; for (var i = 0; i < object.label.length; ++i) { - if (typeof object.label[i] !== "object") + if (!$util.isObject(object.label[i])) throw TypeError(".perftools.profiles.Sample.label: object expected"); - message.label[i] = $root.perftools.profiles.Label.fromObject(object.label[i]); + message.label[i] = $root.perftools.profiles.Label.fromObject(object.label[i], long + 1); } } return message; @@ -1308,9 +1394,13 @@ $root.perftools = (function() { * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Sample.toObject = function toObject(message, options) { + Sample.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.locationId = []; @@ -1320,7 +1410,9 @@ $root.perftools = (function() { if (message.locationId && message.locationId.length) { object.locationId = []; for (var j = 0; j < message.locationId.length; ++j) - if (typeof message.locationId[j] === "number") + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.locationId[j] = typeof message.locationId[j] === "number" ? BigInt(message.locationId[j]) : $util.Long.fromBits(message.locationId[j].low >>> 0, message.locationId[j].high >>> 0, true).toBigInt(); + else if (typeof message.locationId[j] === "number") object.locationId[j] = options.longs === String ? String(message.locationId[j]) : message.locationId[j]; else object.locationId[j] = options.longs === String ? $util.Long.prototype.toString.call(message.locationId[j]) : options.longs === Number ? new $util.LongBits(message.locationId[j].low >>> 0, message.locationId[j].high >>> 0).toNumber(true) : message.locationId[j]; @@ -1328,7 +1420,9 @@ $root.perftools = (function() { if (message.value && message.value.length) { object.value = []; for (var j = 0; j < message.value.length; ++j) - if (typeof message.value[j] === "number") + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.value[j] = typeof message.value[j] === "number" ? BigInt(message.value[j]) : $util.Long.fromBits(message.value[j].low >>> 0, message.value[j].high >>> 0, false).toBigInt(); + else if (typeof message.value[j] === "number") object.value[j] = options.longs === String ? String(message.value[j]) : message.value[j]; else object.value[j] = options.longs === String ? $util.Long.prototype.toString.call(message.value[j]) : options.longs === Number ? new $util.LongBits(message.value[j].low >>> 0, message.value[j].high >>> 0).toNumber() : message.value[j]; @@ -1336,7 +1430,7 @@ $root.perftools = (function() { if (message.label && message.label.length) { object.label = []; for (var j = 0; j < message.label.length; ++j) - object.label[j] = $root.perftools.profiles.Label.toObject(message.label[j], options); + object.label[j] = $root.perftools.profiles.Label.toObject(message.label[j], options, q + 1); } return object; }; @@ -1393,7 +1487,7 @@ $root.perftools = (function() { function Label(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -1450,9 +1544,13 @@ $root.perftools = (function() { * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Label.encode = function encode(message, writer) { + Label.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.key != null && Object.hasOwnProperty.call(message, "key")) writer.uint32(/* id 1, wireType 0 =*/8).int64(message.key); if (message.str != null && Object.hasOwnProperty.call(message, "str")) @@ -1488,12 +1586,18 @@ $root.perftools = (function() { * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Label.decode = function decode(reader, length) { + Label.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.perftools.profiles.Label(); while (reader.pos < end) { var tag = reader.uint32(); + if (tag === error) + break; switch (tag >>> 3) { case 1: { message.key = reader.int64(); @@ -1512,7 +1616,7 @@ $root.perftools = (function() { break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -1543,19 +1647,23 @@ $root.perftools = (function() { * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Label.verify = function verify(message) { + Label.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.key != null && message.hasOwnProperty("key")) + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.key != null && Object.hasOwnProperty.call(message, "key")) if (!$util.isInteger(message.key) && !(message.key && $util.isInteger(message.key.low) && $util.isInteger(message.key.high))) return "key: integer|Long expected"; - if (message.str != null && message.hasOwnProperty("str")) + if (message.str != null && Object.hasOwnProperty.call(message, "str")) if (!$util.isInteger(message.str) && !(message.str && $util.isInteger(message.str.low) && $util.isInteger(message.str.high))) return "str: integer|Long expected"; - if (message.num != null && message.hasOwnProperty("num")) + if (message.num != null && Object.hasOwnProperty.call(message, "num")) if (!$util.isInteger(message.num) && !(message.num && $util.isInteger(message.num.low) && $util.isInteger(message.num.high))) return "num: integer|Long expected"; - if (message.numUnit != null && message.hasOwnProperty("numUnit")) + if (message.numUnit != null && Object.hasOwnProperty.call(message, "numUnit")) if (!$util.isInteger(message.numUnit) && !(message.numUnit && $util.isInteger(message.numUnit.low) && $util.isInteger(message.numUnit.high))) return "numUnit: integer|Long expected"; return null; @@ -1569,13 +1677,19 @@ $root.perftools = (function() { * @param {Object.} object Plain object * @returns {perftools.profiles.Label} Label */ - Label.fromObject = function fromObject(object) { + Label.fromObject = function fromObject(object, long) { if (object instanceof $root.perftools.profiles.Label) return object; + if (!$util.isObject(object)) + throw TypeError(".perftools.profiles.Label: object expected"); + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.perftools.profiles.Label(); if (object.key != null) if ($util.Long) - (message.key = $util.Long.fromValue(object.key)).unsigned = false; + message.key = $util.Long.fromValue(object.key, false); else if (typeof object.key === "string") message.key = parseInt(object.key, 10); else if (typeof object.key === "number") @@ -1584,7 +1698,7 @@ $root.perftools = (function() { message.key = new $util.LongBits(object.key.low >>> 0, object.key.high >>> 0).toNumber(); if (object.str != null) if ($util.Long) - (message.str = $util.Long.fromValue(object.str)).unsigned = false; + message.str = $util.Long.fromValue(object.str, false); else if (typeof object.str === "string") message.str = parseInt(object.str, 10); else if (typeof object.str === "number") @@ -1593,7 +1707,7 @@ $root.perftools = (function() { message.str = new $util.LongBits(object.str.low >>> 0, object.str.high >>> 0).toNumber(); if (object.num != null) if ($util.Long) - (message.num = $util.Long.fromValue(object.num)).unsigned = false; + message.num = $util.Long.fromValue(object.num, false); else if (typeof object.num === "string") message.num = parseInt(object.num, 10); else if (typeof object.num === "number") @@ -1602,7 +1716,7 @@ $root.perftools = (function() { message.num = new $util.LongBits(object.num.low >>> 0, object.num.high >>> 0).toNumber(); if (object.numUnit != null) if ($util.Long) - (message.numUnit = $util.Long.fromValue(object.numUnit)).unsigned = false; + message.numUnit = $util.Long.fromValue(object.numUnit, false); else if (typeof object.numUnit === "string") message.numUnit = parseInt(object.numUnit, 10); else if (typeof object.numUnit === "number") @@ -1621,49 +1735,61 @@ $root.perftools = (function() { * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Label.toObject = function toObject(message, options) { + Label.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { if ($util.Long) { var long = new $util.Long(0, 0, false); - object.key = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.key = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.key = options.longs === String ? "0" : 0; + object.key = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.str = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.str = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.str = options.longs === String ? "0" : 0; + object.str = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.num = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.num = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.num = options.longs === String ? "0" : 0; + object.num = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.numUnit = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.numUnit = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.numUnit = options.longs === String ? "0" : 0; + object.numUnit = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } - if (message.key != null && message.hasOwnProperty("key")) - if (typeof message.key === "number") + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.key = typeof message.key === "number" ? BigInt(message.key) : $util.Long.fromBits(message.key.low >>> 0, message.key.high >>> 0, false).toBigInt(); + else if (typeof message.key === "number") object.key = options.longs === String ? String(message.key) : message.key; else object.key = options.longs === String ? $util.Long.prototype.toString.call(message.key) : options.longs === Number ? new $util.LongBits(message.key.low >>> 0, message.key.high >>> 0).toNumber() : message.key; - if (message.str != null && message.hasOwnProperty("str")) - if (typeof message.str === "number") + if (message.str != null && Object.hasOwnProperty.call(message, "str")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.str = typeof message.str === "number" ? BigInt(message.str) : $util.Long.fromBits(message.str.low >>> 0, message.str.high >>> 0, false).toBigInt(); + else if (typeof message.str === "number") object.str = options.longs === String ? String(message.str) : message.str; else object.str = options.longs === String ? $util.Long.prototype.toString.call(message.str) : options.longs === Number ? new $util.LongBits(message.str.low >>> 0, message.str.high >>> 0).toNumber() : message.str; - if (message.num != null && message.hasOwnProperty("num")) - if (typeof message.num === "number") + if (message.num != null && Object.hasOwnProperty.call(message, "num")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.num = typeof message.num === "number" ? BigInt(message.num) : $util.Long.fromBits(message.num.low >>> 0, message.num.high >>> 0, false).toBigInt(); + else if (typeof message.num === "number") object.num = options.longs === String ? String(message.num) : message.num; else object.num = options.longs === String ? $util.Long.prototype.toString.call(message.num) : options.longs === Number ? new $util.LongBits(message.num.low >>> 0, message.num.high >>> 0).toNumber() : message.num; - if (message.numUnit != null && message.hasOwnProperty("numUnit")) - if (typeof message.numUnit === "number") + if (message.numUnit != null && Object.hasOwnProperty.call(message, "numUnit")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.numUnit = typeof message.numUnit === "number" ? BigInt(message.numUnit) : $util.Long.fromBits(message.numUnit.low >>> 0, message.numUnit.high >>> 0, false).toBigInt(); + else if (typeof message.numUnit === "number") object.numUnit = options.longs === String ? String(message.numUnit) : message.numUnit; else object.numUnit = options.longs === String ? $util.Long.prototype.toString.call(message.numUnit) : options.longs === Number ? new $util.LongBits(message.numUnit.low >>> 0, message.numUnit.high >>> 0).toNumber() : message.numUnit; @@ -1728,7 +1854,7 @@ $root.perftools = (function() { function Mapping(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -1833,9 +1959,13 @@ $root.perftools = (function() { * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Mapping.encode = function encode(message, writer) { + Mapping.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.id != null && Object.hasOwnProperty.call(message, "id")) writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.id); if (message.memoryStart != null && Object.hasOwnProperty.call(message, "memoryStart")) @@ -1883,12 +2013,18 @@ $root.perftools = (function() { * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Mapping.decode = function decode(reader, length) { + Mapping.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.perftools.profiles.Mapping(); while (reader.pos < end) { var tag = reader.uint32(); + if (tag === error) + break; switch (tag >>> 3) { case 1: { message.id = reader.uint64(); @@ -1931,7 +2067,7 @@ $root.perftools = (function() { break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -1962,37 +2098,41 @@ $root.perftools = (function() { * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Mapping.verify = function verify(message) { + Mapping.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.id != null && Object.hasOwnProperty.call(message, "id")) if (!$util.isInteger(message.id) && !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))) return "id: integer|Long expected"; - if (message.memoryStart != null && message.hasOwnProperty("memoryStart")) + if (message.memoryStart != null && Object.hasOwnProperty.call(message, "memoryStart")) if (!$util.isInteger(message.memoryStart) && !(message.memoryStart && $util.isInteger(message.memoryStart.low) && $util.isInteger(message.memoryStart.high))) return "memoryStart: integer|Long expected"; - if (message.memoryLimit != null && message.hasOwnProperty("memoryLimit")) + if (message.memoryLimit != null && Object.hasOwnProperty.call(message, "memoryLimit")) if (!$util.isInteger(message.memoryLimit) && !(message.memoryLimit && $util.isInteger(message.memoryLimit.low) && $util.isInteger(message.memoryLimit.high))) return "memoryLimit: integer|Long expected"; - if (message.fileOffset != null && message.hasOwnProperty("fileOffset")) + if (message.fileOffset != null && Object.hasOwnProperty.call(message, "fileOffset")) if (!$util.isInteger(message.fileOffset) && !(message.fileOffset && $util.isInteger(message.fileOffset.low) && $util.isInteger(message.fileOffset.high))) return "fileOffset: integer|Long expected"; - if (message.filename != null && message.hasOwnProperty("filename")) + if (message.filename != null && Object.hasOwnProperty.call(message, "filename")) if (!$util.isInteger(message.filename) && !(message.filename && $util.isInteger(message.filename.low) && $util.isInteger(message.filename.high))) return "filename: integer|Long expected"; - if (message.buildId != null && message.hasOwnProperty("buildId")) + if (message.buildId != null && Object.hasOwnProperty.call(message, "buildId")) if (!$util.isInteger(message.buildId) && !(message.buildId && $util.isInteger(message.buildId.low) && $util.isInteger(message.buildId.high))) return "buildId: integer|Long expected"; - if (message.hasFunctions != null && message.hasOwnProperty("hasFunctions")) + if (message.hasFunctions != null && Object.hasOwnProperty.call(message, "hasFunctions")) if (typeof message.hasFunctions !== "boolean") return "hasFunctions: boolean expected"; - if (message.hasFilenames != null && message.hasOwnProperty("hasFilenames")) + if (message.hasFilenames != null && Object.hasOwnProperty.call(message, "hasFilenames")) if (typeof message.hasFilenames !== "boolean") return "hasFilenames: boolean expected"; - if (message.hasLineNumbers != null && message.hasOwnProperty("hasLineNumbers")) + if (message.hasLineNumbers != null && Object.hasOwnProperty.call(message, "hasLineNumbers")) if (typeof message.hasLineNumbers !== "boolean") return "hasLineNumbers: boolean expected"; - if (message.hasInlineFrames != null && message.hasOwnProperty("hasInlineFrames")) + if (message.hasInlineFrames != null && Object.hasOwnProperty.call(message, "hasInlineFrames")) if (typeof message.hasInlineFrames !== "boolean") return "hasInlineFrames: boolean expected"; return null; @@ -2006,13 +2146,19 @@ $root.perftools = (function() { * @param {Object.} object Plain object * @returns {perftools.profiles.Mapping} Mapping */ - Mapping.fromObject = function fromObject(object) { + Mapping.fromObject = function fromObject(object, long) { if (object instanceof $root.perftools.profiles.Mapping) return object; + if (!$util.isObject(object)) + throw TypeError(".perftools.profiles.Mapping: object expected"); + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.perftools.profiles.Mapping(); if (object.id != null) if ($util.Long) - (message.id = $util.Long.fromValue(object.id)).unsigned = true; + message.id = $util.Long.fromValue(object.id, true); else if (typeof object.id === "string") message.id = parseInt(object.id, 10); else if (typeof object.id === "number") @@ -2021,7 +2167,7 @@ $root.perftools = (function() { message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(true); if (object.memoryStart != null) if ($util.Long) - (message.memoryStart = $util.Long.fromValue(object.memoryStart)).unsigned = true; + message.memoryStart = $util.Long.fromValue(object.memoryStart, true); else if (typeof object.memoryStart === "string") message.memoryStart = parseInt(object.memoryStart, 10); else if (typeof object.memoryStart === "number") @@ -2030,7 +2176,7 @@ $root.perftools = (function() { message.memoryStart = new $util.LongBits(object.memoryStart.low >>> 0, object.memoryStart.high >>> 0).toNumber(true); if (object.memoryLimit != null) if ($util.Long) - (message.memoryLimit = $util.Long.fromValue(object.memoryLimit)).unsigned = true; + message.memoryLimit = $util.Long.fromValue(object.memoryLimit, true); else if (typeof object.memoryLimit === "string") message.memoryLimit = parseInt(object.memoryLimit, 10); else if (typeof object.memoryLimit === "number") @@ -2039,7 +2185,7 @@ $root.perftools = (function() { message.memoryLimit = new $util.LongBits(object.memoryLimit.low >>> 0, object.memoryLimit.high >>> 0).toNumber(true); if (object.fileOffset != null) if ($util.Long) - (message.fileOffset = $util.Long.fromValue(object.fileOffset)).unsigned = true; + message.fileOffset = $util.Long.fromValue(object.fileOffset, true); else if (typeof object.fileOffset === "string") message.fileOffset = parseInt(object.fileOffset, 10); else if (typeof object.fileOffset === "number") @@ -2048,7 +2194,7 @@ $root.perftools = (function() { message.fileOffset = new $util.LongBits(object.fileOffset.low >>> 0, object.fileOffset.high >>> 0).toNumber(true); if (object.filename != null) if ($util.Long) - (message.filename = $util.Long.fromValue(object.filename)).unsigned = false; + message.filename = $util.Long.fromValue(object.filename, false); else if (typeof object.filename === "string") message.filename = parseInt(object.filename, 10); else if (typeof object.filename === "number") @@ -2057,7 +2203,7 @@ $root.perftools = (function() { message.filename = new $util.LongBits(object.filename.low >>> 0, object.filename.high >>> 0).toNumber(); if (object.buildId != null) if ($util.Long) - (message.buildId = $util.Long.fromValue(object.buildId)).unsigned = false; + message.buildId = $util.Long.fromValue(object.buildId, false); else if (typeof object.buildId === "string") message.buildId = parseInt(object.buildId, 10); else if (typeof object.buildId === "number") @@ -2084,83 +2230,99 @@ $root.perftools = (function() { * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Mapping.toObject = function toObject(message, options) { + Mapping.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { if ($util.Long) { var long = new $util.Long(0, 0, true); - object.id = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.id = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.id = options.longs === String ? "0" : 0; + object.id = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, true); - object.memoryStart = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.memoryStart = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.memoryStart = options.longs === String ? "0" : 0; + object.memoryStart = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, true); - object.memoryLimit = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.memoryLimit = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.memoryLimit = options.longs === String ? "0" : 0; + object.memoryLimit = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, true); - object.fileOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.fileOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.fileOffset = options.longs === String ? "0" : 0; + object.fileOffset = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.filename = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.filename = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.filename = options.longs === String ? "0" : 0; + object.filename = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.buildId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.buildId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.buildId = options.longs === String ? "0" : 0; + object.buildId = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; object.hasFunctions = false; object.hasFilenames = false; object.hasLineNumbers = false; object.hasInlineFrames = false; } - if (message.id != null && message.hasOwnProperty("id")) - if (typeof message.id === "number") + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.id = typeof message.id === "number" ? BigInt(message.id) : $util.Long.fromBits(message.id.low >>> 0, message.id.high >>> 0, true).toBigInt(); + else if (typeof message.id === "number") object.id = options.longs === String ? String(message.id) : message.id; else object.id = options.longs === String ? $util.Long.prototype.toString.call(message.id) : options.longs === Number ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber(true) : message.id; - if (message.memoryStart != null && message.hasOwnProperty("memoryStart")) - if (typeof message.memoryStart === "number") + if (message.memoryStart != null && Object.hasOwnProperty.call(message, "memoryStart")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.memoryStart = typeof message.memoryStart === "number" ? BigInt(message.memoryStart) : $util.Long.fromBits(message.memoryStart.low >>> 0, message.memoryStart.high >>> 0, true).toBigInt(); + else if (typeof message.memoryStart === "number") object.memoryStart = options.longs === String ? String(message.memoryStart) : message.memoryStart; else object.memoryStart = options.longs === String ? $util.Long.prototype.toString.call(message.memoryStart) : options.longs === Number ? new $util.LongBits(message.memoryStart.low >>> 0, message.memoryStart.high >>> 0).toNumber(true) : message.memoryStart; - if (message.memoryLimit != null && message.hasOwnProperty("memoryLimit")) - if (typeof message.memoryLimit === "number") + if (message.memoryLimit != null && Object.hasOwnProperty.call(message, "memoryLimit")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.memoryLimit = typeof message.memoryLimit === "number" ? BigInt(message.memoryLimit) : $util.Long.fromBits(message.memoryLimit.low >>> 0, message.memoryLimit.high >>> 0, true).toBigInt(); + else if (typeof message.memoryLimit === "number") object.memoryLimit = options.longs === String ? String(message.memoryLimit) : message.memoryLimit; else object.memoryLimit = options.longs === String ? $util.Long.prototype.toString.call(message.memoryLimit) : options.longs === Number ? new $util.LongBits(message.memoryLimit.low >>> 0, message.memoryLimit.high >>> 0).toNumber(true) : message.memoryLimit; - if (message.fileOffset != null && message.hasOwnProperty("fileOffset")) - if (typeof message.fileOffset === "number") + if (message.fileOffset != null && Object.hasOwnProperty.call(message, "fileOffset")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.fileOffset = typeof message.fileOffset === "number" ? BigInt(message.fileOffset) : $util.Long.fromBits(message.fileOffset.low >>> 0, message.fileOffset.high >>> 0, true).toBigInt(); + else if (typeof message.fileOffset === "number") object.fileOffset = options.longs === String ? String(message.fileOffset) : message.fileOffset; else object.fileOffset = options.longs === String ? $util.Long.prototype.toString.call(message.fileOffset) : options.longs === Number ? new $util.LongBits(message.fileOffset.low >>> 0, message.fileOffset.high >>> 0).toNumber(true) : message.fileOffset; - if (message.filename != null && message.hasOwnProperty("filename")) - if (typeof message.filename === "number") + if (message.filename != null && Object.hasOwnProperty.call(message, "filename")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.filename = typeof message.filename === "number" ? BigInt(message.filename) : $util.Long.fromBits(message.filename.low >>> 0, message.filename.high >>> 0, false).toBigInt(); + else if (typeof message.filename === "number") object.filename = options.longs === String ? String(message.filename) : message.filename; else object.filename = options.longs === String ? $util.Long.prototype.toString.call(message.filename) : options.longs === Number ? new $util.LongBits(message.filename.low >>> 0, message.filename.high >>> 0).toNumber() : message.filename; - if (message.buildId != null && message.hasOwnProperty("buildId")) - if (typeof message.buildId === "number") + if (message.buildId != null && Object.hasOwnProperty.call(message, "buildId")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.buildId = typeof message.buildId === "number" ? BigInt(message.buildId) : $util.Long.fromBits(message.buildId.low >>> 0, message.buildId.high >>> 0, false).toBigInt(); + else if (typeof message.buildId === "number") object.buildId = options.longs === String ? String(message.buildId) : message.buildId; else object.buildId = options.longs === String ? $util.Long.prototype.toString.call(message.buildId) : options.longs === Number ? new $util.LongBits(message.buildId.low >>> 0, message.buildId.high >>> 0).toNumber() : message.buildId; - if (message.hasFunctions != null && message.hasOwnProperty("hasFunctions")) + if (message.hasFunctions != null && Object.hasOwnProperty.call(message, "hasFunctions")) object.hasFunctions = message.hasFunctions; - if (message.hasFilenames != null && message.hasOwnProperty("hasFilenames")) + if (message.hasFilenames != null && Object.hasOwnProperty.call(message, "hasFilenames")) object.hasFilenames = message.hasFilenames; - if (message.hasLineNumbers != null && message.hasOwnProperty("hasLineNumbers")) + if (message.hasLineNumbers != null && Object.hasOwnProperty.call(message, "hasLineNumbers")) object.hasLineNumbers = message.hasLineNumbers; - if (message.hasInlineFrames != null && message.hasOwnProperty("hasInlineFrames")) + if (message.hasInlineFrames != null && Object.hasOwnProperty.call(message, "hasInlineFrames")) object.hasInlineFrames = message.hasInlineFrames; return object; }; @@ -2218,7 +2380,7 @@ $root.perftools = (function() { this.line = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -2275,9 +2437,13 @@ $root.perftools = (function() { * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Location.encode = function encode(message, writer) { + Location.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.id != null && Object.hasOwnProperty.call(message, "id")) writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.id); if (message.mappingId != null && Object.hasOwnProperty.call(message, "mappingId")) @@ -2286,7 +2452,7 @@ $root.perftools = (function() { writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.address); if (message.line != null && message.line.length) for (var i = 0; i < message.line.length; ++i) - $root.perftools.profiles.Line.encode(message.line[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.perftools.profiles.Line.encode(message.line[i], writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); return writer; }; @@ -2314,12 +2480,18 @@ $root.perftools = (function() { * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Location.decode = function decode(reader, length) { + Location.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.perftools.profiles.Location(); while (reader.pos < end) { var tag = reader.uint32(); + if (tag === error) + break; switch (tag >>> 3) { case 1: { message.id = reader.uint64(); @@ -2336,11 +2508,11 @@ $root.perftools = (function() { case 4: { if (!(message.line && message.line.length)) message.line = []; - message.line.push($root.perftools.profiles.Line.decode(reader, reader.uint32())); + message.line.push($root.perftools.profiles.Line.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -2371,23 +2543,27 @@ $root.perftools = (function() { * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Location.verify = function verify(message) { + Location.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.id != null && Object.hasOwnProperty.call(message, "id")) if (!$util.isInteger(message.id) && !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))) return "id: integer|Long expected"; - if (message.mappingId != null && message.hasOwnProperty("mappingId")) + if (message.mappingId != null && Object.hasOwnProperty.call(message, "mappingId")) if (!$util.isInteger(message.mappingId) && !(message.mappingId && $util.isInteger(message.mappingId.low) && $util.isInteger(message.mappingId.high))) return "mappingId: integer|Long expected"; - if (message.address != null && message.hasOwnProperty("address")) + if (message.address != null && Object.hasOwnProperty.call(message, "address")) if (!$util.isInteger(message.address) && !(message.address && $util.isInteger(message.address.low) && $util.isInteger(message.address.high))) return "address: integer|Long expected"; - if (message.line != null && message.hasOwnProperty("line")) { + if (message.line != null && Object.hasOwnProperty.call(message, "line")) { if (!Array.isArray(message.line)) return "line: array expected"; for (var i = 0; i < message.line.length; ++i) { - var error = $root.perftools.profiles.Line.verify(message.line[i]); + var error = $root.perftools.profiles.Line.verify(message.line[i], long + 1); if (error) return "line." + error; } @@ -2403,13 +2579,19 @@ $root.perftools = (function() { * @param {Object.} object Plain object * @returns {perftools.profiles.Location} Location */ - Location.fromObject = function fromObject(object) { + Location.fromObject = function fromObject(object, long) { if (object instanceof $root.perftools.profiles.Location) return object; + if (!$util.isObject(object)) + throw TypeError(".perftools.profiles.Location: object expected"); + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.perftools.profiles.Location(); if (object.id != null) if ($util.Long) - (message.id = $util.Long.fromValue(object.id)).unsigned = true; + message.id = $util.Long.fromValue(object.id, true); else if (typeof object.id === "string") message.id = parseInt(object.id, 10); else if (typeof object.id === "number") @@ -2418,7 +2600,7 @@ $root.perftools = (function() { message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(true); if (object.mappingId != null) if ($util.Long) - (message.mappingId = $util.Long.fromValue(object.mappingId)).unsigned = true; + message.mappingId = $util.Long.fromValue(object.mappingId, true); else if (typeof object.mappingId === "string") message.mappingId = parseInt(object.mappingId, 10); else if (typeof object.mappingId === "number") @@ -2427,7 +2609,7 @@ $root.perftools = (function() { message.mappingId = new $util.LongBits(object.mappingId.low >>> 0, object.mappingId.high >>> 0).toNumber(true); if (object.address != null) if ($util.Long) - (message.address = $util.Long.fromValue(object.address)).unsigned = true; + message.address = $util.Long.fromValue(object.address, true); else if (typeof object.address === "string") message.address = parseInt(object.address, 10); else if (typeof object.address === "number") @@ -2439,9 +2621,9 @@ $root.perftools = (function() { throw TypeError(".perftools.profiles.Location.line: array expected"); message.line = []; for (var i = 0; i < object.line.length; ++i) { - if (typeof object.line[i] !== "object") + if (!$util.isObject(object.line[i])) throw TypeError(".perftools.profiles.Location.line: object expected"); - message.line[i] = $root.perftools.profiles.Line.fromObject(object.line[i]); + message.line[i] = $root.perftools.profiles.Line.fromObject(object.line[i], long + 1); } } return message; @@ -2456,48 +2638,58 @@ $root.perftools = (function() { * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Location.toObject = function toObject(message, options) { + Location.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.line = []; if (options.defaults) { if ($util.Long) { var long = new $util.Long(0, 0, true); - object.id = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.id = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.id = options.longs === String ? "0" : 0; + object.id = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, true); - object.mappingId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.mappingId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.mappingId = options.longs === String ? "0" : 0; + object.mappingId = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, true); - object.address = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.address = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.address = options.longs === String ? "0" : 0; + object.address = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } - if (message.id != null && message.hasOwnProperty("id")) - if (typeof message.id === "number") + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.id = typeof message.id === "number" ? BigInt(message.id) : $util.Long.fromBits(message.id.low >>> 0, message.id.high >>> 0, true).toBigInt(); + else if (typeof message.id === "number") object.id = options.longs === String ? String(message.id) : message.id; else object.id = options.longs === String ? $util.Long.prototype.toString.call(message.id) : options.longs === Number ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber(true) : message.id; - if (message.mappingId != null && message.hasOwnProperty("mappingId")) - if (typeof message.mappingId === "number") + if (message.mappingId != null && Object.hasOwnProperty.call(message, "mappingId")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.mappingId = typeof message.mappingId === "number" ? BigInt(message.mappingId) : $util.Long.fromBits(message.mappingId.low >>> 0, message.mappingId.high >>> 0, true).toBigInt(); + else if (typeof message.mappingId === "number") object.mappingId = options.longs === String ? String(message.mappingId) : message.mappingId; else object.mappingId = options.longs === String ? $util.Long.prototype.toString.call(message.mappingId) : options.longs === Number ? new $util.LongBits(message.mappingId.low >>> 0, message.mappingId.high >>> 0).toNumber(true) : message.mappingId; - if (message.address != null && message.hasOwnProperty("address")) - if (typeof message.address === "number") + if (message.address != null && Object.hasOwnProperty.call(message, "address")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.address = typeof message.address === "number" ? BigInt(message.address) : $util.Long.fromBits(message.address.low >>> 0, message.address.high >>> 0, true).toBigInt(); + else if (typeof message.address === "number") object.address = options.longs === String ? String(message.address) : message.address; else object.address = options.longs === String ? $util.Long.prototype.toString.call(message.address) : options.longs === Number ? new $util.LongBits(message.address.low >>> 0, message.address.high >>> 0).toNumber(true) : message.address; if (message.line && message.line.length) { object.line = []; for (var j = 0; j < message.line.length; ++j) - object.line[j] = $root.perftools.profiles.Line.toObject(message.line[j], options); + object.line[j] = $root.perftools.profiles.Line.toObject(message.line[j], options, q + 1); } return object; }; @@ -2552,7 +2744,7 @@ $root.perftools = (function() { function Line(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -2593,9 +2785,13 @@ $root.perftools = (function() { * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Line.encode = function encode(message, writer) { + Line.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.functionId != null && Object.hasOwnProperty.call(message, "functionId")) writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.functionId); if (message.line != null && Object.hasOwnProperty.call(message, "line")) @@ -2627,12 +2823,18 @@ $root.perftools = (function() { * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Line.decode = function decode(reader, length) { + Line.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.perftools.profiles.Line(); while (reader.pos < end) { var tag = reader.uint32(); + if (tag === error) + break; switch (tag >>> 3) { case 1: { message.functionId = reader.uint64(); @@ -2643,7 +2845,7 @@ $root.perftools = (function() { break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -2674,13 +2876,17 @@ $root.perftools = (function() { * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Line.verify = function verify(message) { + Line.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.functionId != null && message.hasOwnProperty("functionId")) + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.functionId != null && Object.hasOwnProperty.call(message, "functionId")) if (!$util.isInteger(message.functionId) && !(message.functionId && $util.isInteger(message.functionId.low) && $util.isInteger(message.functionId.high))) return "functionId: integer|Long expected"; - if (message.line != null && message.hasOwnProperty("line")) + if (message.line != null && Object.hasOwnProperty.call(message, "line")) if (!$util.isInteger(message.line) && !(message.line && $util.isInteger(message.line.low) && $util.isInteger(message.line.high))) return "line: integer|Long expected"; return null; @@ -2694,13 +2900,19 @@ $root.perftools = (function() { * @param {Object.} object Plain object * @returns {perftools.profiles.Line} Line */ - Line.fromObject = function fromObject(object) { + Line.fromObject = function fromObject(object, long) { if (object instanceof $root.perftools.profiles.Line) return object; + if (!$util.isObject(object)) + throw TypeError(".perftools.profiles.Line: object expected"); + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.perftools.profiles.Line(); if (object.functionId != null) if ($util.Long) - (message.functionId = $util.Long.fromValue(object.functionId)).unsigned = true; + message.functionId = $util.Long.fromValue(object.functionId, true); else if (typeof object.functionId === "string") message.functionId = parseInt(object.functionId, 10); else if (typeof object.functionId === "number") @@ -2709,7 +2921,7 @@ $root.perftools = (function() { message.functionId = new $util.LongBits(object.functionId.low >>> 0, object.functionId.high >>> 0).toNumber(true); if (object.line != null) if ($util.Long) - (message.line = $util.Long.fromValue(object.line)).unsigned = false; + message.line = $util.Long.fromValue(object.line, false); else if (typeof object.line === "string") message.line = parseInt(object.line, 10); else if (typeof object.line === "number") @@ -2728,29 +2940,37 @@ $root.perftools = (function() { * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Line.toObject = function toObject(message, options) { + Line.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { if ($util.Long) { var long = new $util.Long(0, 0, true); - object.functionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.functionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.functionId = options.longs === String ? "0" : 0; + object.functionId = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.line = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.line = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.line = options.longs === String ? "0" : 0; + object.line = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } - if (message.functionId != null && message.hasOwnProperty("functionId")) - if (typeof message.functionId === "number") + if (message.functionId != null && Object.hasOwnProperty.call(message, "functionId")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.functionId = typeof message.functionId === "number" ? BigInt(message.functionId) : $util.Long.fromBits(message.functionId.low >>> 0, message.functionId.high >>> 0, true).toBigInt(); + else if (typeof message.functionId === "number") object.functionId = options.longs === String ? String(message.functionId) : message.functionId; else object.functionId = options.longs === String ? $util.Long.prototype.toString.call(message.functionId) : options.longs === Number ? new $util.LongBits(message.functionId.low >>> 0, message.functionId.high >>> 0).toNumber(true) : message.functionId; - if (message.line != null && message.hasOwnProperty("line")) - if (typeof message.line === "number") + if (message.line != null && Object.hasOwnProperty.call(message, "line")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.line = typeof message.line === "number" ? BigInt(message.line) : $util.Long.fromBits(message.line.low >>> 0, message.line.high >>> 0, false).toBigInt(); + else if (typeof message.line === "number") object.line = options.longs === String ? String(message.line) : message.line; else object.line = options.longs === String ? $util.Long.prototype.toString.call(message.line) : options.longs === Number ? new $util.LongBits(message.line.low >>> 0, message.line.high >>> 0).toNumber() : message.line; @@ -2810,7 +3030,7 @@ $root.perftools = (function() { function Function(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -2875,9 +3095,13 @@ $root.perftools = (function() { * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Function.encode = function encode(message, writer) { + Function.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.id != null && Object.hasOwnProperty.call(message, "id")) writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.id); if (message.name != null && Object.hasOwnProperty.call(message, "name")) @@ -2915,12 +3139,18 @@ $root.perftools = (function() { * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Function.decode = function decode(reader, length) { + Function.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.perftools.profiles.Function(); while (reader.pos < end) { var tag = reader.uint32(); + if (tag === error) + break; switch (tag >>> 3) { case 1: { message.id = reader.uint64(); @@ -2943,7 +3173,7 @@ $root.perftools = (function() { break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -2974,22 +3204,26 @@ $root.perftools = (function() { * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Function.verify = function verify(message) { + Function.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.id != null && Object.hasOwnProperty.call(message, "id")) if (!$util.isInteger(message.id) && !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))) return "id: integer|Long expected"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isInteger(message.name) && !(message.name && $util.isInteger(message.name.low) && $util.isInteger(message.name.high))) return "name: integer|Long expected"; - if (message.systemName != null && message.hasOwnProperty("systemName")) + if (message.systemName != null && Object.hasOwnProperty.call(message, "systemName")) if (!$util.isInteger(message.systemName) && !(message.systemName && $util.isInteger(message.systemName.low) && $util.isInteger(message.systemName.high))) return "systemName: integer|Long expected"; - if (message.filename != null && message.hasOwnProperty("filename")) + if (message.filename != null && Object.hasOwnProperty.call(message, "filename")) if (!$util.isInteger(message.filename) && !(message.filename && $util.isInteger(message.filename.low) && $util.isInteger(message.filename.high))) return "filename: integer|Long expected"; - if (message.startLine != null && message.hasOwnProperty("startLine")) + if (message.startLine != null && Object.hasOwnProperty.call(message, "startLine")) if (!$util.isInteger(message.startLine) && !(message.startLine && $util.isInteger(message.startLine.low) && $util.isInteger(message.startLine.high))) return "startLine: integer|Long expected"; return null; @@ -3003,13 +3237,19 @@ $root.perftools = (function() { * @param {Object.} object Plain object * @returns {perftools.profiles.Function} Function */ - Function.fromObject = function fromObject(object) { + Function.fromObject = function fromObject(object, long) { if (object instanceof $root.perftools.profiles.Function) return object; + if (!$util.isObject(object)) + throw TypeError(".perftools.profiles.Function: object expected"); + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.perftools.profiles.Function(); if (object.id != null) if ($util.Long) - (message.id = $util.Long.fromValue(object.id)).unsigned = true; + message.id = $util.Long.fromValue(object.id, true); else if (typeof object.id === "string") message.id = parseInt(object.id, 10); else if (typeof object.id === "number") @@ -3018,7 +3258,7 @@ $root.perftools = (function() { message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(true); if (object.name != null) if ($util.Long) - (message.name = $util.Long.fromValue(object.name)).unsigned = false; + message.name = $util.Long.fromValue(object.name, false); else if (typeof object.name === "string") message.name = parseInt(object.name, 10); else if (typeof object.name === "number") @@ -3027,7 +3267,7 @@ $root.perftools = (function() { message.name = new $util.LongBits(object.name.low >>> 0, object.name.high >>> 0).toNumber(); if (object.systemName != null) if ($util.Long) - (message.systemName = $util.Long.fromValue(object.systemName)).unsigned = false; + message.systemName = $util.Long.fromValue(object.systemName, false); else if (typeof object.systemName === "string") message.systemName = parseInt(object.systemName, 10); else if (typeof object.systemName === "number") @@ -3036,7 +3276,7 @@ $root.perftools = (function() { message.systemName = new $util.LongBits(object.systemName.low >>> 0, object.systemName.high >>> 0).toNumber(); if (object.filename != null) if ($util.Long) - (message.filename = $util.Long.fromValue(object.filename)).unsigned = false; + message.filename = $util.Long.fromValue(object.filename, false); else if (typeof object.filename === "string") message.filename = parseInt(object.filename, 10); else if (typeof object.filename === "number") @@ -3045,7 +3285,7 @@ $root.perftools = (function() { message.filename = new $util.LongBits(object.filename.low >>> 0, object.filename.high >>> 0).toNumber(); if (object.startLine != null) if ($util.Long) - (message.startLine = $util.Long.fromValue(object.startLine)).unsigned = false; + message.startLine = $util.Long.fromValue(object.startLine, false); else if (typeof object.startLine === "string") message.startLine = parseInt(object.startLine, 10); else if (typeof object.startLine === "number") @@ -3064,59 +3304,73 @@ $root.perftools = (function() { * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Function.toObject = function toObject(message, options) { + Function.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { if ($util.Long) { var long = new $util.Long(0, 0, true); - object.id = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.id = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.id = options.longs === String ? "0" : 0; + object.id = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.name = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.name = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.name = options.longs === String ? "0" : 0; + object.name = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.systemName = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.systemName = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.systemName = options.longs === String ? "0" : 0; + object.systemName = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.filename = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.filename = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.filename = options.longs === String ? "0" : 0; + object.filename = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.startLine = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.startLine = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.startLine = options.longs === String ? "0" : 0; + object.startLine = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } - if (message.id != null && message.hasOwnProperty("id")) - if (typeof message.id === "number") + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.id = typeof message.id === "number" ? BigInt(message.id) : $util.Long.fromBits(message.id.low >>> 0, message.id.high >>> 0, true).toBigInt(); + else if (typeof message.id === "number") object.id = options.longs === String ? String(message.id) : message.id; else object.id = options.longs === String ? $util.Long.prototype.toString.call(message.id) : options.longs === Number ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber(true) : message.id; - if (message.name != null && message.hasOwnProperty("name")) - if (typeof message.name === "number") + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.name = typeof message.name === "number" ? BigInt(message.name) : $util.Long.fromBits(message.name.low >>> 0, message.name.high >>> 0, false).toBigInt(); + else if (typeof message.name === "number") object.name = options.longs === String ? String(message.name) : message.name; else object.name = options.longs === String ? $util.Long.prototype.toString.call(message.name) : options.longs === Number ? new $util.LongBits(message.name.low >>> 0, message.name.high >>> 0).toNumber() : message.name; - if (message.systemName != null && message.hasOwnProperty("systemName")) - if (typeof message.systemName === "number") + if (message.systemName != null && Object.hasOwnProperty.call(message, "systemName")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.systemName = typeof message.systemName === "number" ? BigInt(message.systemName) : $util.Long.fromBits(message.systemName.low >>> 0, message.systemName.high >>> 0, false).toBigInt(); + else if (typeof message.systemName === "number") object.systemName = options.longs === String ? String(message.systemName) : message.systemName; else object.systemName = options.longs === String ? $util.Long.prototype.toString.call(message.systemName) : options.longs === Number ? new $util.LongBits(message.systemName.low >>> 0, message.systemName.high >>> 0).toNumber() : message.systemName; - if (message.filename != null && message.hasOwnProperty("filename")) - if (typeof message.filename === "number") + if (message.filename != null && Object.hasOwnProperty.call(message, "filename")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.filename = typeof message.filename === "number" ? BigInt(message.filename) : $util.Long.fromBits(message.filename.low >>> 0, message.filename.high >>> 0, false).toBigInt(); + else if (typeof message.filename === "number") object.filename = options.longs === String ? String(message.filename) : message.filename; else object.filename = options.longs === String ? $util.Long.prototype.toString.call(message.filename) : options.longs === Number ? new $util.LongBits(message.filename.low >>> 0, message.filename.high >>> 0).toNumber() : message.filename; - if (message.startLine != null && message.hasOwnProperty("startLine")) - if (typeof message.startLine === "number") + if (message.startLine != null && Object.hasOwnProperty.call(message, "startLine")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.startLine = typeof message.startLine === "number" ? BigInt(message.startLine) : $util.Long.fromBits(message.startLine.low >>> 0, message.startLine.high >>> 0, false).toBigInt(); + else if (typeof message.startLine === "number") object.startLine = options.longs === String ? String(message.startLine) : message.startLine; else object.startLine = options.longs === String ? $util.Long.prototype.toString.call(message.startLine) : options.longs === Number ? new $util.LongBits(message.startLine.low >>> 0, message.startLine.high >>> 0).toNumber() : message.startLine;