sgf-gstin-validator
Advanced tools
Comparing version 1.0.8 to 2.0.0
@@ -40,3 +40,3 @@ /* | ||
"use strict"; | ||
eval("\nvar jwt = __webpack_require__(/*! jsonwebtoken */ \"?44a0\");\nvar certs = __webpack_require__(/*! ./certs.js */ \"./dist/certs.js\");\nfunction calcCheckSum(gstin) {\n var GSTN_CODEPOINT_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n var factor = 2;\n var sum = 0;\n var checkCodePoint = 0;\n var mod = GSTN_CODEPOINT_CHARS.length;\n var i;\n for (i = gstin.length - 2; i >= 0; i--) {\n var codePoint = -1;\n for (var j = 0; j < GSTN_CODEPOINT_CHARS.length; j++) {\n if (GSTN_CODEPOINT_CHARS[j] === gstin[i]) {\n codePoint = j;\n }\n }\n var digit = factor * codePoint;\n factor = factor === 2 ? 1 : 2;\n digit = Math.floor(digit / mod) + (digit % mod);\n sum += digit;\n }\n checkCodePoint = (mod - (sum % mod)) % mod;\n return GSTN_CODEPOINT_CHARS[checkCodePoint];\n}\n// GSTIN Regex validation result\nfunction validatePattern(gstin) {\n // eslint-disable-next-line max-len\n var gstinRegexPattern = /^([0-2][0-9]|[3][0-8])[A-Z]{3}[ABCFGHLJPTK][A-Z]\\d{4}[A-Z][A-Z0-9][Z][A-Z0-9]$/;\n return gstinRegexPattern.test(gstin);\n}\nfunction isValidGSTNumber(gstin) {\n gstin = gstin.toUpperCase();\n if (gstin.length !== 15) {\n return false;\n }\n if (validatePattern(gstin)) {\n return gstin[14] === calcCheckSum(gstin.toUpperCase());\n }\n return false;\n}\nfunction getGSTINInfo(gstin) {\n var _a;\n var states = [\n {\n state_name: 'Andaman and Nicobar Islands',\n state_code: '35',\n state_shortcode: 'AN',\n },\n { state_name: 'Andhra Pradesh', state_code: '28', state_shortcode: 'AP' },\n {\n state_name: 'Andhra Pradesh (New)',\n state_code: '37',\n state_shortcode: 'AD',\n },\n {\n state_name: 'Arunachal Pradesh',\n state_code: '12',\n state_shortcode: 'AR',\n },\n { state_name: 'Assam', state_code: '18', state_shortcode: 'AS' },\n { state_name: 'Bihar', state_code: '10', state_shortcode: 'BH' },\n { state_name: 'Chandigarh', state_code: '04', state_shortcode: 'CH' },\n { state_name: 'Chattisgarh', state_code: '22', state_shortcode: 'CT' },\n {\n state_name: 'Dadra and Nagar Haveli',\n state_code: '26',\n state_shortcode: 'DN',\n },\n { state_name: 'Daman and Diu', state_code: '25', state_shortcode: 'DD' },\n { state_name: 'Delhi', state_code: '07', state_shortcode: 'DL' },\n { state_name: 'Goa', state_code: '30', state_shortcode: 'GA' },\n { state_name: 'Gujarat', state_code: '24', state_shortcode: 'GJ' },\n { state_name: 'Haryana', state_code: '06', state_shortcode: 'HR' },\n { state_name: 'Himachal Pradesh', state_code: '02', state_shortcode: 'HP' },\n {\n state_name: 'Jammu and Kashmir',\n state_code: '01',\n state_shortcode: 'JK',\n },\n { state_name: 'Jharkhand', state_code: '20', state_shortcode: 'JH' },\n { state_name: 'Karnataka', state_code: '29', state_shortcode: 'KA' },\n { state_name: 'Kerala', state_code: '32', state_shortcode: 'KL' },\n { state_name: 'Ladakh', state_code: '38', state_shortcode: 'LA' },\n {\n state_name: 'Lakshadweep Islands',\n state_code: '31',\n state_shortcode: 'LD',\n },\n { state_name: 'Madhya Pradesh', state_code: '23', state_shortcode: 'MP' },\n { state_name: 'Maharashtra', state_code: '27', state_shortcode: 'MH' },\n { state_name: 'Manipur', state_code: '14', state_shortcode: 'MN' },\n { state_name: 'Meghalaya', state_code: '17', state_shortcode: 'ME' },\n { state_name: 'Mizoram', state_code: '15', state_shortcode: 'MI' },\n { state_name: 'Nagaland', state_code: '13', state_shortcode: 'NL' },\n { state_name: 'Odisha', state_code: '21', state_shortcode: 'OR' },\n { state_name: 'Pondicherry', state_code: '34', state_shortcode: 'PY' },\n { state_name: 'Punjab', state_code: '03', state_shortcode: 'PB' },\n { state_name: 'Rajasthan', state_code: '08', state_shortcode: 'RJ' },\n { state_name: 'Sikkim', state_code: '11', state_shortcode: 'SK' },\n { state_name: 'Tamil Nadu', state_code: '33', state_shortcode: 'TN' },\n { state_name: 'Telangana', state_code: '36', state_shortcode: 'TS' },\n { state_name: 'Tripura', state_code: '16', state_shortcode: 'TR' },\n { state_name: 'Uttar Pradesh', state_code: '09', state_shortcode: 'UP' },\n { state_name: 'Uttarakhand', state_code: '05', state_shortcode: 'UT' },\n { state_name: 'West Bengal', state_code: '19', state_shortcode: 'WB' },\n ];\n var panTypes = [\n { code: 'C', pan_type: 'Company' },\n { code: 'P', pan_type: 'Person' },\n { code: 'H', pan_type: 'HUF (Hindu Undivided Family)' },\n { code: 'F', pan_type: 'Firm' },\n { code: 'A', pan_type: 'Association of Persons (AOP)' },\n { code: 'T', pan_type: 'AOP (Trust)' },\n { code: 'B', pan_type: 'Body of Individuals (BOI)' },\n { code: 'L', pan_type: 'Local Authority' },\n { code: 'J', pan_type: 'Artificial Juridical Person ' },\n { code: 'G', pan_type: 'Government' },\n ];\n gstin = gstin.toUpperCase();\n if (!isValidGSTNumber(gstin))\n return 'Invalid GSTIN';\n var state = states.find(function (o) {\n return o.state_code === gstin.slice(0, 2);\n });\n var info_msg = 'The GSTIN ' +\n gstin +\n ' is entity #' +\n parseInt(gstin.slice(12, 13), 36) +\n ' belonging to ' +\n ((_a = panTypes === null || panTypes === void 0 ? void 0 : panTypes.find(function (o) {\n return o.code === gstin[5];\n })) === null || _a === void 0 ? void 0 : _a.pan_type) +\n ' whose PAN is ' +\n gstin.slice(2, 12) +\n ' registered in ' +\n (state === null || state === void 0 ? void 0 : state.state_name) +\n ' (' +\n (state === null || state === void 0 ? void 0 : state.state_shortcode) +\n ')';\n return info_msg;\n}\nfunction getCert(certname) {\n if (certname === undefined) {\n certname = 'einv_prod';\n }\n if (certname.endsWith('.pem')) {\n certname = certname.replace('.pem', '');\n }\n // get public key\n var buf = Buffer.from(certs[certname], 'base64');\n return buf.toString();\n}\n// This function is to validate a eInvoice QR\nfunction validateEInvoiceSignedQR(qrText, publickey) {\n var cert = getCert(publickey);\n try {\n var decodedQR = jwt.verify(qrText, cert, { issuer: 'NIC' });\n }\n catch (err) {\n throw new Error('Signature Verification Failed!');\n }\n return decodedQR;\n}\nfunction validateSignedInvoice(signedInvoiceJWT, publickey) {\n var cert = getCert(publickey);\n try {\n var invoice = jwt.verify(signedInvoiceJWT, cert, { issuer: 'NIC' });\n }\n catch (err) {\n throw new Error('Signature Verification Failed!');\n }\n return invoice;\n}\nfunction ValidateGSTIN(gstin) {\n gstin = gstin.toUpperCase();\n if (gstin.length !== 15) {\n return 'Enter a valid 15 character GSTIN';\n }\n if (!validatePattern(gstin)) {\n return 'Invalid GSTIN format';\n }\n else {\n if (gstin.toUpperCase()[14] !== calcCheckSum(gstin.toUpperCase())) {\n return 'Invalid checksum character in GSTIN';\n }\n else\n return 'Valid GSTIN';\n }\n}\nmodule.exports = {\n isValidGSTNumber: isValidGSTNumber,\n ValidateGSTIN: ValidateGSTIN,\n validateEInvoiceSignedQR: validateEInvoiceSignedQR,\n validateSignedInvoice: validateSignedInvoice,\n getGSTINInfo: getGSTINInfo,\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://sgf-gstin-validator/./dist/index.js?"); | ||
eval("\nvar jwt = __webpack_require__(/*! jsonwebtoken */ \"?44a0\");\nvar certs = __webpack_require__(/*! ./certs.js */ \"./dist/certs.js\");\nfunction calcCheckSum(gstin) {\n var GSTN_CODEPOINT_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n var factor = 2;\n var sum = 0;\n var checkCodePoint = 0;\n var mod = GSTN_CODEPOINT_CHARS.length;\n var i;\n for (i = gstin.length - 2; i >= 0; i--) {\n var codePoint = -1;\n for (var j = 0; j < GSTN_CODEPOINT_CHARS.length; j++) {\n if (GSTN_CODEPOINT_CHARS[j] === gstin[i]) {\n codePoint = j;\n }\n }\n var digit = factor * codePoint;\n factor = factor === 2 ? 1 : 2;\n digit = Math.floor(digit / mod) + (digit % mod);\n sum += digit;\n }\n checkCodePoint = (mod - (sum % mod)) % mod;\n return GSTN_CODEPOINT_CHARS[checkCodePoint];\n}\n// GSTIN Regex validation result\nfunction validatePattern(gstin) {\n // eslint-disable-next-line max-len\n var gstinRegexPattern = /^([0-2][0-9]|[3][0-8])[A-Z]{3}[ABCFGHLJPTK][A-Z]\\d{4}[A-Z][A-Z0-9][Z][A-Z0-9]$/;\n return gstinRegexPattern.test(gstin);\n}\nfunction isValidGSTNumber(gstin) {\n gstin = gstin.toUpperCase();\n if (gstin.length !== 15) {\n return false;\n }\n if (validatePattern(gstin)) {\n return gstin[14] === calcCheckSum(gstin.toUpperCase());\n }\n return false;\n}\nfunction getGSTINInfo(gstin) {\n var _a;\n var states = [\n {\n state_name: 'Andaman and Nicobar Islands',\n state_code: '35',\n state_shortcode: 'AN',\n },\n { state_name: 'Andhra Pradesh', state_code: '28', state_shortcode: 'AP' },\n {\n state_name: 'Andhra Pradesh (New)',\n state_code: '37',\n state_shortcode: 'AD',\n },\n {\n state_name: 'Arunachal Pradesh',\n state_code: '12',\n state_shortcode: 'AR',\n },\n { state_name: 'Assam', state_code: '18', state_shortcode: 'AS' },\n { state_name: 'Bihar', state_code: '10', state_shortcode: 'BH' },\n { state_name: 'Chandigarh', state_code: '04', state_shortcode: 'CH' },\n { state_name: 'Chattisgarh', state_code: '22', state_shortcode: 'CT' },\n {\n state_name: 'Dadra and Nagar Haveli',\n state_code: '26',\n state_shortcode: 'DN',\n },\n { state_name: 'Daman and Diu', state_code: '25', state_shortcode: 'DD' },\n { state_name: 'Delhi', state_code: '07', state_shortcode: 'DL' },\n { state_name: 'Goa', state_code: '30', state_shortcode: 'GA' },\n { state_name: 'Gujarat', state_code: '24', state_shortcode: 'GJ' },\n { state_name: 'Haryana', state_code: '06', state_shortcode: 'HR' },\n { state_name: 'Himachal Pradesh', state_code: '02', state_shortcode: 'HP' },\n {\n state_name: 'Jammu and Kashmir',\n state_code: '01',\n state_shortcode: 'JK',\n },\n { state_name: 'Jharkhand', state_code: '20', state_shortcode: 'JH' },\n { state_name: 'Karnataka', state_code: '29', state_shortcode: 'KA' },\n { state_name: 'Kerala', state_code: '32', state_shortcode: 'KL' },\n { state_name: 'Ladakh', state_code: '38', state_shortcode: 'LA' },\n {\n state_name: 'Lakshadweep Islands',\n state_code: '31',\n state_shortcode: 'LD',\n },\n { state_name: 'Madhya Pradesh', state_code: '23', state_shortcode: 'MP' },\n { state_name: 'Maharashtra', state_code: '27', state_shortcode: 'MH' },\n { state_name: 'Manipur', state_code: '14', state_shortcode: 'MN' },\n { state_name: 'Meghalaya', state_code: '17', state_shortcode: 'ME' },\n { state_name: 'Mizoram', state_code: '15', state_shortcode: 'MI' },\n { state_name: 'Nagaland', state_code: '13', state_shortcode: 'NL' },\n { state_name: 'Odisha', state_code: '21', state_shortcode: 'OR' },\n { state_name: 'Pondicherry', state_code: '34', state_shortcode: 'PY' },\n { state_name: 'Punjab', state_code: '03', state_shortcode: 'PB' },\n { state_name: 'Rajasthan', state_code: '08', state_shortcode: 'RJ' },\n { state_name: 'Sikkim', state_code: '11', state_shortcode: 'SK' },\n { state_name: 'Tamil Nadu', state_code: '33', state_shortcode: 'TN' },\n { state_name: 'Telangana', state_code: '36', state_shortcode: 'TS' },\n { state_name: 'Tripura', state_code: '16', state_shortcode: 'TR' },\n { state_name: 'Uttar Pradesh', state_code: '09', state_shortcode: 'UP' },\n { state_name: 'Uttarakhand', state_code: '05', state_shortcode: 'UT' },\n { state_name: 'West Bengal', state_code: '19', state_shortcode: 'WB' },\n ];\n var panTypes = [\n { code: 'C', pan_type: 'Company' },\n { code: 'P', pan_type: 'Person' },\n { code: 'H', pan_type: 'HUF (Hindu Undivided Family)' },\n { code: 'F', pan_type: 'Firm' },\n { code: 'A', pan_type: 'Association of Persons (AOP)' },\n { code: 'T', pan_type: 'AOP (Trust)' },\n { code: 'B', pan_type: 'Body of Individuals (BOI)' },\n { code: 'L', pan_type: 'Local Authority' },\n { code: 'J', pan_type: 'Artificial Juridical Person ' },\n { code: 'G', pan_type: 'Government' },\n ];\n gstin = gstin.toUpperCase();\n if (!isValidGSTNumber(gstin))\n return 'Invalid GSTIN';\n var state = states.find(function (o) {\n return o.state_code === gstin.slice(0, 2);\n });\n var info_msg = 'The GSTIN ' +\n gstin +\n ' is entity #' +\n parseInt(gstin.slice(12, 13), 36) +\n ' belonging to ' +\n ((_a = panTypes.find(function (o) {\n return o.code === gstin[5];\n })) === null || _a === void 0 ? void 0 : _a.pan_type) +\n ' whose PAN is ' +\n gstin.slice(2, 12) +\n ' registered in ' +\n (state === null || state === void 0 ? void 0 : state.state_name) +\n ' (' +\n (state === null || state === void 0 ? void 0 : state.state_shortcode) +\n ')';\n return info_msg;\n}\nfunction getCert(certname) {\n if (certname === undefined) {\n certname = 'einv_prod';\n }\n if (certname.endsWith('.pem')) {\n certname = certname.replace('.pem', '');\n }\n // get public key\n var buf = Buffer.from(certs[certname], 'base64');\n return buf.toString();\n}\n// This function is to validate a eInvoice QR\nfunction validateEInvoiceSignedQR(qrText, publickey) {\n var cert = getCert(publickey);\n try {\n var decodedQR = jwt.verify(qrText, cert, { issuer: 'NIC' });\n }\n catch (err) {\n throw new Error('Signature Verification Failed!');\n }\n return decodedQR;\n}\nfunction validateSignedInvoice(signedInvoiceJWT, publickey) {\n var cert = getCert(publickey);\n try {\n var invoice = jwt.verify(signedInvoiceJWT, cert, { issuer: 'NIC' });\n }\n catch (err) {\n throw new Error('Signature Verification Failed!');\n }\n return invoice;\n}\nfunction ValidateGSTIN(gstin) {\n gstin = gstin.toUpperCase();\n if (gstin.length !== 15) {\n return 'Enter a valid 15 character GSTIN';\n }\n if (!validatePattern(gstin)) {\n return 'Invalid GSTIN format';\n }\n else {\n if (gstin.toUpperCase()[14] !== calcCheckSum(gstin.toUpperCase())) {\n return 'Invalid checksum character in GSTIN';\n }\n else\n return 'Valid GSTIN';\n }\n}\nmodule.exports = {\n isValidGSTNumber: isValidGSTNumber,\n ValidateGSTIN: ValidateGSTIN,\n validateEInvoiceSignedQR: validateEInvoiceSignedQR,\n validateSignedInvoice: validateSignedInvoice,\n getGSTINInfo: getGSTINInfo,\n};\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://sgf-gstin-validator/./dist/index.js?"); | ||
@@ -43,0 +43,0 @@ /***/ }) |
@@ -131,3 +131,3 @@ 'use strict'; | ||
' belonging to ' + | ||
((_a = panTypes === null || panTypes === void 0 ? void 0 : panTypes.find(function (o) { | ||
((_a = panTypes.find(function (o) { | ||
return o.code === gstin[5]; | ||
@@ -134,0 +134,0 @@ })) === null || _a === void 0 ? void 0 : _a.pan_type) + |
{ | ||
"name": "sgf-gstin-validator", | ||
"version": "1.0.8", | ||
"version": "2.0.0", | ||
"description": "Module to validate GSTIN and verify Signed QR of GST eInvoice", | ||
@@ -8,5 +8,5 @@ "main": "dist/index.js", | ||
"scripts": { | ||
"test": "mocha src/index.test.js", | ||
"test": "jest", | ||
"test-coverage": "nyc mocha src/index.test.js", | ||
"build": "rm -rf ./dist &&tsc && npx webpack --config webpack.config.cjs", | ||
"build": "rm -rf ./dist && tsc && npx webpack --config webpack.config.cjs", | ||
"build-web": "npx webpack --config webpack.config.cjs", | ||
@@ -36,9 +36,17 @@ "dist": "uglifyjs dist/gstin-validator.js -o dist/gstin-validator.min.js", | ||
"devDependencies": { | ||
"@babel/cli": "^7.14.3", | ||
"@babel/core": "^7.14.3", | ||
"@babel/plugin-proposal-class-properties": "^7.16.7", | ||
"@babel/plugin-transform-modules-commonjs": "^7.17.9", | ||
"@babel/preset-typescript": "^7.18.6", | ||
"@types/jest": "^27.5.1", | ||
"chai": "^4.3.4", | ||
"eslint": "^7.32.0", | ||
"eslint-config-strongloop": "^2.1.0", | ||
"jest": "^29.1.2", | ||
"jest-html-reporters": "^3.0.11", | ||
"mocha": "^9.2.2", | ||
"nyc": "^15.1.0", | ||
"ts-loader": "^9.4.1", | ||
"ts-node": "^10.9.1", | ||
"typescript": "^4.8.4", | ||
@@ -50,4 +58,5 @@ "uglify-js": "^3.14.1", | ||
"dependencies": { | ||
"jsonwebtoken": "^8.5.1" | ||
"jsonwebtoken": "^8.5.1", | ||
"ts-jest": "^29.0.3" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
34306
2
19
+ Addedts-jest@^29.0.3
+ Added@ampproject/remapping@2.3.0(transitive)
+ Added@babel/code-frame@7.26.2(transitive)
+ Added@babel/compat-data@7.26.2(transitive)
+ Added@babel/core@7.26.0(transitive)
+ Added@babel/generator@7.26.2(transitive)
+ Added@babel/helper-compilation-targets@7.25.9(transitive)
+ Added@babel/helper-module-imports@7.25.9(transitive)
+ Added@babel/helper-module-transforms@7.26.0(transitive)
+ Added@babel/helper-plugin-utils@7.25.9(transitive)
+ Added@babel/helper-string-parser@7.25.9(transitive)
+ Added@babel/helper-validator-identifier@7.25.9(transitive)
+ Added@babel/helper-validator-option@7.25.9(transitive)
+ Added@babel/helpers@7.26.0(transitive)
+ Added@babel/parser@7.26.2(transitive)
+ Added@babel/plugin-syntax-async-generators@7.8.4(transitive)
+ Added@babel/plugin-syntax-bigint@7.8.3(transitive)
+ Added@babel/plugin-syntax-class-properties@7.12.13(transitive)
+ Added@babel/plugin-syntax-class-static-block@7.14.5(transitive)
+ Added@babel/plugin-syntax-import-attributes@7.26.0(transitive)
+ Added@babel/plugin-syntax-import-meta@7.10.4(transitive)
+ Added@babel/plugin-syntax-json-strings@7.8.3(transitive)
+ Added@babel/plugin-syntax-jsx@7.25.9(transitive)
+ Added@babel/plugin-syntax-logical-assignment-operators@7.10.4(transitive)
+ Added@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(transitive)
+ Added@babel/plugin-syntax-numeric-separator@7.10.4(transitive)
+ Added@babel/plugin-syntax-object-rest-spread@7.8.3(transitive)
+ Added@babel/plugin-syntax-optional-catch-binding@7.8.3(transitive)
+ Added@babel/plugin-syntax-optional-chaining@7.8.3(transitive)
+ Added@babel/plugin-syntax-private-property-in-object@7.14.5(transitive)
+ Added@babel/plugin-syntax-top-level-await@7.14.5(transitive)
+ Added@babel/plugin-syntax-typescript@7.25.9(transitive)
+ Added@babel/template@7.25.9(transitive)
+ Added@babel/traverse@7.25.9(transitive)
+ Added@babel/types@7.26.0(transitive)
+ Added@bcoe/v8-coverage@0.2.3(transitive)
+ Added@istanbuljs/load-nyc-config@1.1.0(transitive)
+ Added@istanbuljs/schema@0.1.3(transitive)
+ Added@jest/console@29.7.0(transitive)
+ Added@jest/core@29.7.0(transitive)
+ Added@jest/environment@29.7.0(transitive)
+ Added@jest/expect@29.7.0(transitive)
+ Added@jest/expect-utils@29.7.0(transitive)
+ Added@jest/fake-timers@29.7.0(transitive)
+ Added@jest/globals@29.7.0(transitive)
+ Added@jest/reporters@29.7.0(transitive)
+ Added@jest/schemas@29.6.3(transitive)
+ Added@jest/source-map@29.6.3(transitive)
+ Added@jest/test-result@29.7.0(transitive)
+ Added@jest/test-sequencer@29.7.0(transitive)
+ Added@jest/transform@29.7.0(transitive)
+ Added@jest/types@29.6.3(transitive)
+ Added@jridgewell/gen-mapping@0.3.5(transitive)
+ Added@jridgewell/resolve-uri@3.1.2(transitive)
+ Added@jridgewell/set-array@1.2.1(transitive)
+ Added@jridgewell/sourcemap-codec@1.5.0(transitive)
+ Added@jridgewell/trace-mapping@0.3.25(transitive)
+ Added@sinclair/typebox@0.27.8(transitive)
+ Added@sinonjs/commons@3.0.1(transitive)
+ Added@sinonjs/fake-timers@10.3.0(transitive)
+ Added@types/babel__core@7.20.5(transitive)
+ Added@types/babel__generator@7.6.8(transitive)
+ Added@types/babel__template@7.4.4(transitive)
+ Added@types/babel__traverse@7.20.6(transitive)
+ Added@types/graceful-fs@4.1.9(transitive)
+ Added@types/istanbul-lib-coverage@2.0.6(transitive)
+ Added@types/istanbul-lib-report@3.0.3(transitive)
+ Added@types/istanbul-reports@3.0.4(transitive)
+ Added@types/node@22.9.3(transitive)
+ Added@types/stack-utils@2.0.3(transitive)
+ Added@types/yargs@17.0.33(transitive)
+ Added@types/yargs-parser@21.0.3(transitive)
+ Addedansi-escapes@4.3.2(transitive)
+ Addedansi-regex@5.0.1(transitive)
+ Addedansi-styles@4.3.05.2.0(transitive)
+ Addedanymatch@3.1.3(transitive)
+ Addedargparse@1.0.10(transitive)
+ Addedasync@3.2.6(transitive)
+ Addedbabel-jest@29.7.0(transitive)
+ Addedbabel-plugin-istanbul@6.1.1(transitive)
+ Addedbabel-plugin-jest-hoist@29.6.3(transitive)
+ Addedbabel-preset-current-node-syntax@1.1.0(transitive)
+ Addedbabel-preset-jest@29.6.3(transitive)
+ Addedbalanced-match@1.0.2(transitive)
+ Addedbrace-expansion@1.1.112.0.1(transitive)
+ Addedbraces@3.0.3(transitive)
+ Addedbrowserslist@4.24.2(transitive)
+ Addedbs-logger@0.2.6(transitive)
+ Addedbser@2.1.1(transitive)
+ Addedbuffer-from@1.1.2(transitive)
+ Addedcallsites@3.1.0(transitive)
+ Addedcamelcase@5.3.16.3.0(transitive)
+ Addedcaniuse-lite@1.0.30001683(transitive)
+ Addedchalk@4.1.2(transitive)
+ Addedchar-regex@1.0.2(transitive)
+ Addedci-info@3.9.0(transitive)
+ Addedcjs-module-lexer@1.4.1(transitive)
+ Addedcliui@8.0.1(transitive)
+ Addedco@4.6.0(transitive)
+ Addedcollect-v8-coverage@1.0.2(transitive)
+ Addedcolor-convert@2.0.1(transitive)
+ Addedcolor-name@1.1.4(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addedconvert-source-map@2.0.0(transitive)
+ Addedcreate-jest@29.7.0(transitive)
+ Addedcross-spawn@7.0.6(transitive)
+ Addeddebug@4.3.7(transitive)
+ Addeddedent@1.5.3(transitive)
+ Addeddeepmerge@4.3.1(transitive)
+ Addeddetect-newline@3.1.0(transitive)
+ Addeddiff-sequences@29.6.3(transitive)
+ Addedejs@3.1.10(transitive)
+ Addedelectron-to-chromium@1.5.64(transitive)
+ Addedemittery@0.13.1(transitive)
+ Addedemoji-regex@8.0.0(transitive)
+ Addederror-ex@1.3.2(transitive)
+ Addedescalade@3.2.0(transitive)
+ Addedescape-string-regexp@2.0.0(transitive)
+ Addedesprima@4.0.1(transitive)
+ Addedexeca@5.1.1(transitive)
+ Addedexit@0.1.2(transitive)
+ Addedexpect@29.7.0(transitive)
+ Addedfast-json-stable-stringify@2.1.0(transitive)
+ Addedfb-watchman@2.0.2(transitive)
+ Addedfilelist@1.0.4(transitive)
+ Addedfill-range@7.1.1(transitive)
+ Addedfind-up@4.1.0(transitive)
+ Addedfs.realpath@1.0.0(transitive)
+ Addedfsevents@2.3.3(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedgensync@1.0.0-beta.2(transitive)
+ Addedget-caller-file@2.0.5(transitive)
+ Addedget-package-type@0.1.0(transitive)
+ Addedget-stream@6.0.1(transitive)
+ Addedglob@7.2.3(transitive)
+ Addedglobals@11.12.0(transitive)
+ Addedgraceful-fs@4.2.11(transitive)
+ Addedhas-flag@4.0.0(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedhtml-escaper@2.0.2(transitive)
+ Addedhuman-signals@2.1.0(transitive)
+ Addedimport-local@3.2.0(transitive)
+ Addedimurmurhash@0.1.4(transitive)
+ Addedinflight@1.0.6(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedis-arrayish@0.2.1(transitive)
+ Addedis-core-module@2.15.1(transitive)
+ Addedis-fullwidth-code-point@3.0.0(transitive)
+ Addedis-generator-fn@2.1.0(transitive)
+ Addedis-number@7.0.0(transitive)
+ Addedis-stream@2.0.1(transitive)
+ Addedisexe@2.0.0(transitive)
+ Addedistanbul-lib-coverage@3.2.2(transitive)
+ Addedistanbul-lib-instrument@5.2.16.0.3(transitive)
+ Addedistanbul-lib-report@3.0.1(transitive)
+ Addedistanbul-lib-source-maps@4.0.1(transitive)
+ Addedistanbul-reports@3.1.7(transitive)
+ Addedjake@10.9.2(transitive)
+ Addedjest@29.7.0(transitive)
+ Addedjest-changed-files@29.7.0(transitive)
+ Addedjest-circus@29.7.0(transitive)
+ Addedjest-cli@29.7.0(transitive)
+ Addedjest-config@29.7.0(transitive)
+ Addedjest-diff@29.7.0(transitive)
+ Addedjest-docblock@29.7.0(transitive)
+ Addedjest-each@29.7.0(transitive)
+ Addedjest-environment-node@29.7.0(transitive)
+ Addedjest-get-type@29.6.3(transitive)
+ Addedjest-haste-map@29.7.0(transitive)
+ Addedjest-leak-detector@29.7.0(transitive)
+ Addedjest-matcher-utils@29.7.0(transitive)
+ Addedjest-message-util@29.7.0(transitive)
+ Addedjest-mock@29.7.0(transitive)
+ Addedjest-pnp-resolver@1.2.3(transitive)
+ Addedjest-regex-util@29.6.3(transitive)
+ Addedjest-resolve@29.7.0(transitive)
+ Addedjest-resolve-dependencies@29.7.0(transitive)
+ Addedjest-runner@29.7.0(transitive)
+ Addedjest-runtime@29.7.0(transitive)
+ Addedjest-snapshot@29.7.0(transitive)
+ Addedjest-util@29.7.0(transitive)
+ Addedjest-validate@29.7.0(transitive)
+ Addedjest-watcher@29.7.0(transitive)
+ Addedjest-worker@29.7.0(transitive)
+ Addedjs-tokens@4.0.0(transitive)
+ Addedjs-yaml@3.14.1(transitive)
+ Addedjsesc@3.0.2(transitive)
+ Addedjson-parse-even-better-errors@2.3.1(transitive)
+ Addedjson5@2.2.3(transitive)
+ Addedkleur@3.0.3(transitive)
+ Addedleven@3.1.0(transitive)
+ Addedlines-and-columns@1.2.4(transitive)
+ Addedlocate-path@5.0.0(transitive)
+ Addedlodash.memoize@4.1.2(transitive)
+ Addedlru-cache@5.1.1(transitive)
+ Addedmake-dir@4.0.0(transitive)
+ Addedmake-error@1.3.6(transitive)
+ Addedmakeerror@1.0.12(transitive)
+ Addedmerge-stream@2.0.0(transitive)
+ Addedmicromatch@4.0.8(transitive)
+ Addedmimic-fn@2.1.0(transitive)
+ Addedminimatch@3.1.25.1.6(transitive)
+ Addednatural-compare@1.4.0(transitive)
+ Addednode-int64@0.4.0(transitive)
+ Addednode-releases@2.0.18(transitive)
+ Addednormalize-path@3.0.0(transitive)
+ Addednpm-run-path@4.0.1(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedonetime@5.1.2(transitive)
+ Addedp-limit@2.3.03.1.0(transitive)
+ Addedp-locate@4.1.0(transitive)
+ Addedp-try@2.2.0(transitive)
+ Addedparse-json@5.2.0(transitive)
+ Addedpath-exists@4.0.0(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedpath-key@3.1.1(transitive)
+ Addedpath-parse@1.0.7(transitive)
+ Addedpicocolors@1.1.1(transitive)
+ Addedpicomatch@2.3.1(transitive)
+ Addedpirates@4.0.6(transitive)
+ Addedpkg-dir@4.2.0(transitive)
+ Addedpretty-format@29.7.0(transitive)
+ Addedprompts@2.4.2(transitive)
+ Addedpure-rand@6.1.0(transitive)
+ Addedreact-is@18.3.1(transitive)
+ Addedrequire-directory@2.1.1(transitive)
+ Addedresolve@1.22.8(transitive)
+ Addedresolve-cwd@3.0.0(transitive)
+ Addedresolve-from@5.0.0(transitive)
+ Addedresolve.exports@2.0.2(transitive)
+ Addedsemver@6.3.17.6.3(transitive)
+ Addedshebang-command@2.0.0(transitive)
+ Addedshebang-regex@3.0.0(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedsisteransi@1.0.5(transitive)
+ Addedslash@3.0.0(transitive)
+ Addedsource-map@0.6.1(transitive)
+ Addedsource-map-support@0.5.13(transitive)
+ Addedsprintf-js@1.0.3(transitive)
+ Addedstack-utils@2.0.6(transitive)
+ Addedstring-length@4.0.2(transitive)
+ Addedstring-width@4.2.3(transitive)
+ Addedstrip-ansi@6.0.1(transitive)
+ Addedstrip-bom@4.0.0(transitive)
+ Addedstrip-final-newline@2.0.0(transitive)
+ Addedstrip-json-comments@3.1.1(transitive)
+ Addedsupports-color@7.2.08.1.1(transitive)
+ Addedsupports-preserve-symlinks-flag@1.0.0(transitive)
+ Addedtest-exclude@6.0.0(transitive)
+ Addedtmpl@1.0.5(transitive)
+ Addedto-regex-range@5.0.1(transitive)
+ Addedts-jest@29.2.5(transitive)
+ Addedtype-detect@4.0.8(transitive)
+ Addedtype-fest@0.21.3(transitive)
+ Addedtypescript@5.7.2(transitive)
+ Addedundici-types@6.19.8(transitive)
+ Addedupdate-browserslist-db@1.1.1(transitive)
+ Addedv8-to-istanbul@9.3.0(transitive)
+ Addedwalker@1.0.8(transitive)
+ Addedwhich@2.0.2(transitive)
+ Addedwrap-ansi@7.0.0(transitive)
+ Addedwrappy@1.0.2(transitive)
+ Addedwrite-file-atomic@4.0.2(transitive)
+ Addedy18n@5.0.8(transitive)
+ Addedyallist@3.1.1(transitive)
+ Addedyargs@17.7.2(transitive)
+ Addedyargs-parser@21.1.1(transitive)
+ Addedyocto-queue@0.1.0(transitive)