From 4cba608e8b5890dd0413c8ca1fec1b7eef7231f8 Mon Sep 17 00:00:00 2001 From: Jordan Zaerr Date: Tue, 16 Jun 2026 19:33:49 -0600 Subject: [PATCH 1/2] Update to node 24 +semver:major --- .github/workflows/build.yml | 14 +- .../workflows/increment-version-on-merge.yml | 4 +- README.md | 2 +- action.yml | 2 +- lib/Tests/jsonVariableSubstitution.test.js | 268 +- lib/Tests/variableSubstitution.test.js | 134 +- lib/Tests/xmlVariableSubstituttion.test.js | 171 +- lib/operations/envVariableUtility.js | 146 +- lib/operations/fileEncodingUtility.js | 124 +- .../jsonVariableSubstitutionUtility.js | 112 +- lib/operations/utility.js | 614 +- lib/operations/xmlDomUtility.js | 154 +- lib/operations/xmlVariableSubstitution.js | 295 +- lib/variableSubstitution.js | 5695 ++++++++++------- package-lock.json | 4820 +++++++------- package.json | 13 +- src/variableSubstitution.ts | 2 +- 17 files changed, 7126 insertions(+), 5444 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9e75402..abf1e2e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,15 +21,15 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: ref: ${{ github.head_ref }} fetch-depth: 0 - - name: Setup Node.js 16 - uses: actions/setup-node@v3 + - name: Setup Node.js 24 + uses: actions/setup-node@v6 with: - node-version: 16.x + node-version: 24.x # If this step results in changes, they will be committed in the last step - name: Recompile and Build action @@ -85,7 +85,7 @@ jobs: - name: Check for code changes to the action if: runner.os == 'Linux' id: action-code - uses: im-open/did-custom-action-code-change@v1.0.1 + uses: im-open/.github/.github/actions/did-custom-action-code-change@41de4b57fe9b05adea689e184c22ae4a1e79f761 with: files-with-code: "action.yml,package.json,package-lock.json" folders-with-code: "src,lib" @@ -94,11 +94,11 @@ jobs: - name: Get the next version for the readme if there are code changes to the action if: runner.os == 'Linux' && steps.action-code.outputs.HAS_CHANGES == 'true' id: version - uses: im-open/git-version-lite@v2.3 + uses: im-open/git-version-lite@53c32b30ae5eb114b11e038f6f0e79dfb01d7c57 - name: Update readme with next version if there are code changes to the action if: runner.os == 'Linux' && steps.action-code.outputs.HAS_CHANGES == 'true' - uses: im-open/update-action-version-in-file@v1.0.0 + uses: im-open/.github/.github/actions/update-action-version-in-file@41de4b57fe9b05adea689e184c22ae4a1e79f761 with: file-to-update: "./README.md" action-name: ${{ github.repository }} diff --git a/.github/workflows/increment-version-on-merge.yml b/.github/workflows/increment-version-on-merge.yml index e660d0c..c04df14 100644 --- a/.github/workflows/increment-version-on-merge.yml +++ b/.github/workflows/increment-version-on-merge.yml @@ -34,7 +34,7 @@ jobs: # on a pull_request_target. But we need to be extra careful not to trigger any script # that may operate on PR controlled contents like in the case of npm install. - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: ref: main fetch-depth: 0 @@ -43,7 +43,7 @@ jobs: # major/minor/patch through commit messages - name: Increment the version id: version - uses: im-open/git-version-lite@v2.3 + uses: im-open/git-version-lite@a0ce51e3a994785c2897d9e46e7d8b5b3fe98b39 with: github-token: ${{ secrets.GITHUB_TOKEN }} default-release-type: major diff --git a/README.md b/README.md index c329f26..488129f 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ jobs: - uses: actions/checkout@v4 - name: Update sql connection string in test project - uses: im-open/variable-substitution@v2.1.1 #v2 or v2.1 can also be used + uses: im-open/variable-substitution@v3.0.0 #v3 or v3.0 can also be used with: files: './src/MyApp.Tests/appsettings.json' env: diff --git a/action.yml b/action.yml index 1264b7e..9488741 100644 --- a/action.yml +++ b/action.yml @@ -6,5 +6,5 @@ inputs: description: 'Comma separated list of XML/JSON/YAML files in which tokens are to be substituted. Files names must be specified relative to the folder-path.' required: true runs: - using: 'node20' + using: 'node24' main: 'lib/variableSubstitution.js' diff --git a/lib/Tests/jsonVariableSubstitution.test.js b/lib/Tests/jsonVariableSubstitution.test.js index 4662383..2d33cc7 100644 --- a/lib/Tests/jsonVariableSubstitution.test.js +++ b/lib/Tests/jsonVariableSubstitution.test.js @@ -5,130 +5,150 @@ const chai = require("chai"); const envVariableUtility_1 = require("../operations/envVariableUtility"); const jsonVariableSubstitutionUtility_1 = require("../operations/jsonVariableSubstitutionUtility"); var expect = chai.expect; -describe('Test JSON Variable Substitution', () => { - var jsonObject, isApplied; - before(() => { - let stub = sinon.stub(envVariableUtility_1.EnvTreeUtility, "getEnvVarTree").callsFake(() => { - let envVariables = new Map([ - ['system.debug', 'true'], - ['data.ConnectionString', 'database_connection'], - ['data.userName', 'db_admin'], - ['data.password', 'db_pass'], - ['&pl.ch@r@cter.k^y', '*.config'], - ['build.sourceDirectory', 'DefaultWorkingDirectory'], - ['user.profile.name.first', 'firstName'], - ['user.profile', 'replace_all'], - ['constructor.name', 'newConstructorName'], - ['constructor.valueOf', 'constructorNewValue'], - ['profile.users', '["suaggar","rok","asranja", "chaitanya"]'], - ['profile.enabled', 'false'], - ['profile.version', '1173'], - ['profile.somefloat', '97.75'], - ['profile.preimum_level', '{"suaggar": "V4", "rok": "V5", "asranja": { "type" : "V6"}}'] - ]); - let envVarTree = { - value: null, - isEnd: false, - child: { - '__proto__': null - } - }; - for (let [key, value] of envVariables.entries()) { - if (!envVariableUtility_1.isPredefinedVariable(key)) { - let envVarTreeIterator = envVarTree; - let envVariableNameArray = key.split('.'); - for (let variableName of envVariableNameArray) { - if (envVarTreeIterator.child[variableName] === undefined || typeof envVarTreeIterator.child[variableName] === 'function') { - envVarTreeIterator.child[variableName] = { - value: null, - isEnd: false, - child: {} - }; - } - envVarTreeIterator = envVarTreeIterator.child[variableName]; - } - envVarTreeIterator.isEnd = true; - envVarTreeIterator.value = value; - } - } - return envVarTree; - }); - jsonObject = { - 'User.Profile': 'do_not_replace', - 'data': { - 'ConnectionString': 'connect_string', - 'userName': 'name', - 'password': 'pass' - }, - '&pl': { - 'ch@r@cter.k^y': 'v@lue' - }, - 'system': { - 'debug': 'no_change' - }, - 'user.profile': { - 'name.first': 'fname' - }, - 'constructor.name': 'myconstructorname', - 'constructor': { - 'name': 'myconstructorname', - 'valueOf': 'myconstructorvalue' - }, - 'profile': { - 'users': ['arjgupta', 'raagra', 'muthuk'], - 'preimum_level': { - 'arjgupta': 'V1', - 'raagra': 'V2', - 'muthuk': { - 'type': 'V3' - } - }, - "enabled": true, - "version": 2, - "somefloat": 2.3456 - } +describe("Test JSON Variable Substitution", () => { + var jsonObject, isApplied; + before(() => { + let stub = sinon + .stub(envVariableUtility_1.EnvTreeUtility, "getEnvVarTree") + .callsFake(() => { + let envVariables = new Map([ + ["system.debug", "true"], + ["data.ConnectionString", "database_connection"], + ["data.userName", "db_admin"], + ["data.password", "db_pass"], + ["&pl.ch@r@cter.k^y", "*.config"], + ["build.sourceDirectory", "DefaultWorkingDirectory"], + ["user.profile.name.first", "firstName"], + ["user.profile", "replace_all"], + ["constructor.name", "newConstructorName"], + ["constructor.valueOf", "constructorNewValue"], + ["profile.users", '["suaggar","rok","asranja", "chaitanya"]'], + ["profile.enabled", "false"], + ["profile.version", "1173"], + ["profile.somefloat", "97.75"], + [ + "profile.preimum_level", + '{"suaggar": "V4", "rok": "V5", "asranja": { "type" : "V6"}}', + ], + ]); + let envVarTree = { + value: null, + isEnd: false, + child: { + __proto__: null, + }, }; - let jsonSubsitution = new jsonVariableSubstitutionUtility_1.JsonSubstitution(); - isApplied = jsonSubsitution.substituteJsonVariable(jsonObject, envVariableUtility_1.EnvTreeUtility.getEnvVarTree()); - stub.restore(); - }); - it("Should substitute", () => { - console.log(JSON.stringify(jsonObject)); - expect(isApplied).to.equal(true); - }); - it("Validate simple string change", () => { - expect(jsonObject['data']['ConnectionString']).to.equal('database_connection'); - expect(jsonObject['data']['userName']).to.equal('db_admin'); - }); - it("Validate system variable elimination", () => { - expect(jsonObject['system']['debug']).to.equal('no_change'); - }); - it("Validate special variables", () => { - expect(jsonObject['&pl']['ch@r@cter.k^y']).to.equal('*.config'); - }); - it("Validate case sensitive variables", () => { - expect(jsonObject['User.Profile']).to.equal('do_not_replace'); - }); - it("Validate inbuilt JSON attributes substitution", () => { - expect(jsonObject['constructor.name']).to.equal('newConstructorName'); - expect(jsonObject['constructor']['name']).to.equal('newConstructorName'); - expect(jsonObject['constructor']['valueOf']).to.equal('constructorNewValue'); - }); - it("Validate Array Object", () => { - expect(jsonObject['profile']['users'].length).to.equal(4); - let newArray = ["suaggar", "rok", "asranja", "chaitanya"]; - expect(jsonObject['profile']['users']).to.deep.equal(newArray); - }); - it("Validate Boolean", () => { - expect(jsonObject['profile']['enabled']).to.equal(false); - }); - it("Validate Number(float)", () => { - expect(jsonObject['profile']['somefloat']).to.equal(97.75); - }); - it("Validate Number(int)", () => { - expect(jsonObject['profile']['version']).to.equal(1173); - }); - it("Validate Object", () => { - expect(jsonObject['profile']['preimum_level']).to.deep.equal({ "suaggar": "V4", "rok": "V5", "asranja": { "type": "V6" } }); + for (let [key, value] of envVariables.entries()) { + if (!envVariableUtility_1.isPredefinedVariable(key)) { + let envVarTreeIterator = envVarTree; + let envVariableNameArray = key.split("."); + for (let variableName of envVariableNameArray) { + if ( + envVarTreeIterator.child[variableName] === undefined || + typeof envVarTreeIterator.child[variableName] === "function" + ) { + envVarTreeIterator.child[variableName] = { + value: null, + isEnd: false, + child: {}, + }; + } + envVarTreeIterator = envVarTreeIterator.child[variableName]; + } + envVarTreeIterator.isEnd = true; + envVarTreeIterator.value = value; + } + } + return envVarTree; + }); + jsonObject = { + "User.Profile": "do_not_replace", + data: { + ConnectionString: "connect_string", + userName: "name", + password: "pass", + }, + "&pl": { + "ch@r@cter.k^y": "v@lue", + }, + system: { + debug: "no_change", + }, + "user.profile": { + "name.first": "fname", + }, + "constructor.name": "myconstructorname", + constructor: { + name: "myconstructorname", + valueOf: "myconstructorvalue", + }, + profile: { + users: ["arjgupta", "raagra", "muthuk"], + preimum_level: { + arjgupta: "V1", + raagra: "V2", + muthuk: { + type: "V3", + }, + }, + enabled: true, + version: 2, + somefloat: 2.3456, + }, + }; + let jsonSubsitution = + new jsonVariableSubstitutionUtility_1.JsonSubstitution(); + isApplied = jsonSubsitution.substituteJsonVariable( + jsonObject, + envVariableUtility_1.EnvTreeUtility.getEnvVarTree() + ); + stub.restore(); + }); + it("Should substitute", () => { + console.log(JSON.stringify(jsonObject)); + expect(isApplied).to.equal(true); + }); + it("Validate simple string change", () => { + expect(jsonObject["data"]["ConnectionString"]).to.equal( + "database_connection" + ); + expect(jsonObject["data"]["userName"]).to.equal("db_admin"); + }); + it("Validate system variable elimination", () => { + expect(jsonObject["system"]["debug"]).to.equal("no_change"); + }); + it("Validate special variables", () => { + expect(jsonObject["&pl"]["ch@r@cter.k^y"]).to.equal("*.config"); + }); + it("Validate case sensitive variables", () => { + expect(jsonObject["User.Profile"]).to.equal("do_not_replace"); + }); + it("Validate inbuilt JSON attributes substitution", () => { + expect(jsonObject["constructor.name"]).to.equal("newConstructorName"); + expect(jsonObject["constructor"]["name"]).to.equal("newConstructorName"); + expect(jsonObject["constructor"]["valueOf"]).to.equal( + "constructorNewValue" + ); + }); + it("Validate Array Object", () => { + expect(jsonObject["profile"]["users"].length).to.equal(4); + let newArray = ["suaggar", "rok", "asranja", "chaitanya"]; + expect(jsonObject["profile"]["users"]).to.deep.equal(newArray); + }); + it("Validate Boolean", () => { + expect(jsonObject["profile"]["enabled"]).to.equal(false); + }); + it("Validate Number(float)", () => { + expect(jsonObject["profile"]["somefloat"]).to.equal(97.75); + }); + it("Validate Number(int)", () => { + expect(jsonObject["profile"]["version"]).to.equal(1173); + }); + it("Validate Object", () => { + expect(jsonObject["profile"]["preimum_level"]).to.deep.equal({ + suaggar: "V4", + rok: "V5", + asranja: { type: "V6" }, }); + }); }); diff --git a/lib/Tests/variableSubstitution.test.js b/lib/Tests/variableSubstitution.test.js index 1130460..3885c05 100644 --- a/lib/Tests/variableSubstitution.test.js +++ b/lib/Tests/variableSubstitution.test.js @@ -7,70 +7,72 @@ const chai_1 = require("chai"); const path = require("path"); const sinon = require("sinon"); describe("Test variable substitution main", () => { - var spy, JsonSubstitutionMock, XmlSubstitutionMock; - before(() => { - spy = sinon.spy(console, "log"); - JsonSubstitutionMock = sinon.mock(jsonVariableSubstitutionUtility_1.JsonSubstitution); - XmlSubstitutionMock = sinon.mock(xmlVariableSubstitution_1.XmlSubstitution); - }); - after(() => { - JsonSubstitutionMock.restore(); - XmlSubstitutionMock.restore(); - spy.restore(); - }); - it("Valid XML", () => { - let file = path.join(__dirname, "/Resources/Web.config"); - let filesArr = file.split(","); - let varSub = new variableSubstitution_1.VariableSubstitution(); - try { - varSub.segregateFilesAndSubstitute(filesArr); - } - catch (e) { - } - chai_1.expect(spy.calledWith("Applying variable substitution on XML file: " + file)).to.be.true; - }); - it("Valid JSON", () => { - let file = path.join(__dirname, "/Resources/test.json"); - let filesArr = file.split(","); - let varSub = new variableSubstitution_1.VariableSubstitution(); - try { - varSub.segregateFilesAndSubstitute(filesArr); - } - catch (e) { - } - chai_1.expect(spy.calledWith("Applying variable substitution on JSON file: " + file)).to.be.true; - }); - it("Invalid JSON", () => { - let file = path.join(__dirname, "/Resources/Wrong_test.json"); - let filesArr = file.split(","); - let varSub = new variableSubstitution_1.VariableSubstitution(); - try { - varSub.segregateFilesAndSubstitute(filesArr); - } - catch (e) { - } - chai_1.expect(spy.calledWith("Applying variable substitution on JSON file: " + file)).to.be.false; - }); - it("Valid YAML", () => { - let file = path.join(__dirname, "/Resources/test.yaml"); - let filesArr = file.split(","); - let varSub = new variableSubstitution_1.VariableSubstitution(); - try { - varSub.segregateFilesAndSubstitute(filesArr); - } - catch (e) { - } - chai_1.expect(spy.calledWith("Applying variable substitution on YAML file: " + file)).to.be.true; - }); - it("Invalid YAML", () => { - let file = path.join(__dirname, "/Resources/Wrong_test.yml"); - let filesArr = file.split(","); - let varSub = new variableSubstitution_1.VariableSubstitution(); - try { - varSub.segregateFilesAndSubstitute(filesArr); - } - catch (e) { - } - chai_1.expect(spy.calledWith("Applying variable substitution on YAML file: " + file)).to.be.false; - }); + var spy, JsonSubstitutionMock, XmlSubstitutionMock; + before(() => { + spy = sinon.spy(console, "log"); + JsonSubstitutionMock = sinon.mock( + jsonVariableSubstitutionUtility_1.JsonSubstitution + ); + XmlSubstitutionMock = sinon.mock(xmlVariableSubstitution_1.XmlSubstitution); + }); + after(() => { + JsonSubstitutionMock.restore(); + XmlSubstitutionMock.restore(); + spy.restore(); + }); + it("Valid XML", () => { + let file = path.join(__dirname, "/Resources/Web.config"); + let filesArr = file.split(","); + let varSub = new variableSubstitution_1.VariableSubstitution(); + try { + varSub.segregateFilesAndSubstitute(filesArr); + } catch (e) {} + chai_1.expect( + spy.calledWith("Applying variable substitution on XML file: " + file) + ).to.be.true; + }); + it("Valid JSON", () => { + let file = path.join(__dirname, "/Resources/test.json"); + let filesArr = file.split(","); + let varSub = new variableSubstitution_1.VariableSubstitution(); + try { + varSub.segregateFilesAndSubstitute(filesArr); + } catch (e) {} + chai_1.expect( + spy.calledWith("Applying variable substitution on JSON file: " + file) + ).to.be.true; + }); + it("Invalid JSON", () => { + let file = path.join(__dirname, "/Resources/Wrong_test.json"); + let filesArr = file.split(","); + let varSub = new variableSubstitution_1.VariableSubstitution(); + try { + varSub.segregateFilesAndSubstitute(filesArr); + } catch (e) {} + chai_1.expect( + spy.calledWith("Applying variable substitution on JSON file: " + file) + ).to.be.false; + }); + it("Valid YAML", () => { + let file = path.join(__dirname, "/Resources/test.yaml"); + let filesArr = file.split(","); + let varSub = new variableSubstitution_1.VariableSubstitution(); + try { + varSub.segregateFilesAndSubstitute(filesArr); + } catch (e) {} + chai_1.expect( + spy.calledWith("Applying variable substitution on YAML file: " + file) + ).to.be.true; + }); + it("Invalid YAML", () => { + let file = path.join(__dirname, "/Resources/Wrong_test.yml"); + let filesArr = file.split(","); + let varSub = new variableSubstitution_1.VariableSubstitution(); + try { + varSub.segregateFilesAndSubstitute(filesArr); + } catch (e) {} + chai_1.expect( + spy.calledWith("Applying variable substitution on YAML file: " + file) + ).to.be.false; + }); }); diff --git a/lib/Tests/xmlVariableSubstituttion.test.js b/lib/Tests/xmlVariableSubstituttion.test.js index 4ccb91a..2d3638c 100644 --- a/lib/Tests/xmlVariableSubstituttion.test.js +++ b/lib/Tests/xmlVariableSubstituttion.test.js @@ -1,23 +1,41 @@ "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { +var __createBinding = + (this && this.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function () { + return m[k]; + }, + }); + } + : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + }); +var __setModuleDefault = + (this && this.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } + : function (o, v) { + o["default"] = v; + }); +var __importStar = + (this && this.__importStar) || + function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) + for (var k in mod) + if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; -}; + }; Object.defineProperty(exports, "__esModule", { value: true }); const envVarUtility = __importStar(require("../operations/envVariableUtility")); const xmlDomUtility_1 = require("../operations/xmlDomUtility"); @@ -27,56 +45,75 @@ const fs = require("fs"); const path = require("path"); const sinon = require("sinon"); var expect = chai.expect; -describe('Test Xml Variable Substitution', () => { - it("Should substitute", () => { - let envVarUtilityMock = sinon.mock(envVarUtility); - envVarUtilityMock.expects('getVariableMap').returns(new Map([ - ['conntype', 'new_connType'], - ['MyDB', 'TestDB'], - ['webpages:Version', '1.1.7.3'], - ['xdt:Transform', 'DelAttributes'], - ['xdt:Locator', 'Match(tag)'], - ['DefaultConnection', "Url=https://primary;Database=db1;ApiKey=11111111-1111-1111-1111-111111111111;Failover = {Url:'https://secondary', ApiKey:'11111111-1111-1111-1111-111111111111'}"], - ['OtherDefaultConnection', 'connectionStringValue2'], - ['ParameterConnection', 'New_Connection_String From xml var subs'], - ['connectionString', 'replaced_value'], - ['invariantName', 'System.Data.SqlServer'], - ['blatvar', 'ApplicationSettingReplacedValue'], - ['log_level', 'error,warning'], - ['Email:ToOverride', ''] - ])); - function replaceEscapeXMLCharacters(xmlDOMNode) { - if (!xmlDOMNode || typeof xmlDOMNode == 'string') { - return; - } - for (var xmlAttribute in xmlDOMNode.attrs) { - xmlDOMNode.attrs[xmlAttribute] = xmlDOMNode.attrs[xmlAttribute].replace(/'/g, "APOS_CHARACTER_TOKEN"); - } - for (var xmlChild of xmlDOMNode.children) { - replaceEscapeXMLCharacters(xmlChild); - } - } - let source = path.join(__dirname, "/Resources/Web.config"); - let fileBuffer = fs.readFileSync(source); - let fileContent = fileBuffer.toString('utf-8'); - let xmlDomUtilityInstance = new xmlDomUtility_1.XmlDomUtility(fileContent); - let xmlSubstitution = new xmlVariableSubstitution_1.XmlSubstitution(xmlDomUtilityInstance); - let isApplied = xmlSubstitution.substituteXmlVariables(); - expect(isApplied).to.equal(true); - let xmlDocument = xmlDomUtilityInstance.getXmlDom(); - replaceEscapeXMLCharacters(xmlDocument); - let domContent = '\uFEFF' + xmlDomUtilityInstance.getContentWithHeader(xmlDocument); - for (let replacableTokenValue in xmlSubstitution.replacableTokenValues) { - domContent = domContent.split(replacableTokenValue).join(xmlSubstitution.replacableTokenValues[replacableTokenValue]); - } - let expectedResult = path.join(__dirname, "/Resources/Web_Expected.config"); - fileBuffer = fs.readFileSync(expectedResult); - let expectedContent = fileBuffer.toString('utf-8'); - let targetXmlDomUtilityInstance = new xmlDomUtility_1.XmlDomUtility(expectedContent); - let expectedXmlDocument = targetXmlDomUtilityInstance.getXmlDom(); - replaceEscapeXMLCharacters(expectedXmlDocument); - let expectedDomContent = '\uFEFF' + xmlDomUtilityInstance.getContentWithHeader(expectedXmlDocument); - expectedDomContent = expectedDomContent.split("APOS_CHARACTER_TOKEN").join("'"); - expect(domContent).to.equal(expectedDomContent); - }); +describe("Test Xml Variable Substitution", () => { + it("Should substitute", () => { + let envVarUtilityMock = sinon.mock(envVarUtility); + envVarUtilityMock.expects("getVariableMap").returns( + new Map([ + ["conntype", "new_connType"], + ["MyDB", "TestDB"], + ["webpages:Version", "1.1.7.3"], + ["xdt:Transform", "DelAttributes"], + ["xdt:Locator", "Match(tag)"], + [ + "DefaultConnection", + "Url=https://primary;Database=db1;ApiKey=11111111-1111-1111-1111-111111111111;Failover = {Url:'https://secondary', ApiKey:'11111111-1111-1111-1111-111111111111'}", + ], + ["OtherDefaultConnection", "connectionStringValue2"], + ["ParameterConnection", "New_Connection_String From xml var subs"], + ["connectionString", "replaced_value"], + ["invariantName", "System.Data.SqlServer"], + ["blatvar", "ApplicationSettingReplacedValue"], + ["log_level", "error,warning"], + ["Email:ToOverride", ""], + ]) + ); + function replaceEscapeXMLCharacters(xmlDOMNode) { + if (!xmlDOMNode || typeof xmlDOMNode == "string") { + return; + } + for (var xmlAttribute in xmlDOMNode.attrs) { + xmlDOMNode.attrs[xmlAttribute] = xmlDOMNode.attrs[xmlAttribute].replace( + /'/g, + "APOS_CHARACTER_TOKEN" + ); + } + for (var xmlChild of xmlDOMNode.children) { + replaceEscapeXMLCharacters(xmlChild); + } + } + let source = path.join(__dirname, "/Resources/Web.config"); + let fileBuffer = fs.readFileSync(source); + let fileContent = fileBuffer.toString("utf-8"); + let xmlDomUtilityInstance = new xmlDomUtility_1.XmlDomUtility(fileContent); + let xmlSubstitution = new xmlVariableSubstitution_1.XmlSubstitution( + xmlDomUtilityInstance + ); + let isApplied = xmlSubstitution.substituteXmlVariables(); + expect(isApplied).to.equal(true); + let xmlDocument = xmlDomUtilityInstance.getXmlDom(); + replaceEscapeXMLCharacters(xmlDocument); + let domContent = + "\uFEFF" + xmlDomUtilityInstance.getContentWithHeader(xmlDocument); + for (let replacableTokenValue in xmlSubstitution.replacableTokenValues) { + domContent = domContent + .split(replacableTokenValue) + .join(xmlSubstitution.replacableTokenValues[replacableTokenValue]); + } + let expectedResult = path.join(__dirname, "/Resources/Web_Expected.config"); + fileBuffer = fs.readFileSync(expectedResult); + let expectedContent = fileBuffer.toString("utf-8"); + let targetXmlDomUtilityInstance = new xmlDomUtility_1.XmlDomUtility( + expectedContent + ); + let expectedXmlDocument = targetXmlDomUtilityInstance.getXmlDom(); + replaceEscapeXMLCharacters(expectedXmlDocument); + let expectedDomContent = + "\uFEFF" + + xmlDomUtilityInstance.getContentWithHeader(expectedXmlDocument); + expectedDomContent = expectedDomContent + .split("APOS_CHARACTER_TOKEN") + .join("'"); + expect(domContent).to.equal(expectedDomContent); + }); }); diff --git a/lib/operations/envVariableUtility.js b/lib/operations/envVariableUtility.js index eafac57..fcad7a3 100644 --- a/lib/operations/envVariableUtility.js +++ b/lib/operations/envVariableUtility.js @@ -1,87 +1,107 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.EnvTreeUtility = exports.isObject = exports.isEmpty = exports.getVariableMap = exports.isPredefinedVariable = void 0; +exports.EnvTreeUtility = + exports.isObject = + exports.isEmpty = + exports.getVariableMap = + exports.isPredefinedVariable = + void 0; function isPredefinedVariable(variable) { - let predefinedVarPrefix = ['runner.', 'azure_http_user_agent', 'common.', 'system.']; - for (let varPrefix of predefinedVarPrefix) { - if (variable.toLowerCase().startsWith(varPrefix)) { - return true; - } + let predefinedVarPrefix = [ + "runner.", + "azure_http_user_agent", + "common.", + "system.", + ]; + for (let varPrefix of predefinedVarPrefix) { + if (variable.toLowerCase().startsWith(varPrefix)) { + return true; } - return false; + } + return false; } exports.isPredefinedVariable = isPredefinedVariable; function getVariableMap() { - let variableMap = new Map(); - let variables = process.env; - Object.keys(variables).forEach(key => { - if (!isPredefinedVariable(key)) { - variableMap.set(key, variables[key]); - } - }); - return variableMap; + let variableMap = new Map(); + let variables = process.env; + Object.keys(variables).forEach((key) => { + if (!isPredefinedVariable(key)) { + variableMap.set(key, variables[key]); + } + }); + return variableMap; } exports.getVariableMap = getVariableMap; function isEmpty(object) { - if (object == null || object == "") - return true; - return false; + if (object == null || object == "") return true; + return false; } exports.isEmpty = isEmpty; function isObject(object) { - if (object == null || object == "" || typeof (object) != 'object') { - return false; - } - return true; + if (object == null || object == "" || typeof object != "object") { + return false; + } + return true; } exports.isObject = isObject; class EnvTreeUtility { - constructor() { - this.envVarTree = null; - } - static getEnvVarTree() { - let util = new EnvTreeUtility(); - if (!util.envVarTree) { - util.envVarTree = util.createEnvTree(getVariableMap()); - } - return util.envVarTree; + constructor() { + this.envVarTree = null; + } + static getEnvVarTree() { + let util = new EnvTreeUtility(); + if (!util.envVarTree) { + util.envVarTree = util.createEnvTree(getVariableMap()); } - createEnvTree(envVariables) { - // __proto__ is marked as null, so that custom object can be assgined. - // This replacement do not affect the JSON object, as no inbuilt JSON function is referenced. - let envVarTree = { + return util.envVarTree; + } + createEnvTree(envVariables) { + // __proto__ is marked as null, so that custom object can be assgined. + // This replacement do not affect the JSON object, as no inbuilt JSON function is referenced. + let envVarTree = { + value: null, + isEnd: false, + child: { + __proto__: null, + }, + }; + for (let [key, value] of envVariables.entries()) { + let envVarTreeIterator = envVarTree; + let envVariableNameArray = key.split("."); + for (let variableName of envVariableNameArray) { + if ( + envVarTreeIterator.child[variableName] === undefined || + typeof envVarTreeIterator.child[variableName] === "function" + ) { + envVarTreeIterator.child[variableName] = { value: null, isEnd: false, - child: { - '__proto__': null - } - }; - for (let [key, value] of envVariables.entries()) { - let envVarTreeIterator = envVarTree; - let envVariableNameArray = key.split('.'); - for (let variableName of envVariableNameArray) { - if (envVarTreeIterator.child[variableName] === undefined || typeof envVarTreeIterator.child[variableName] === 'function') { - envVarTreeIterator.child[variableName] = { - value: null, - isEnd: false, - child: {} - }; - } - envVarTreeIterator = envVarTreeIterator.child[variableName]; - } - envVarTreeIterator.isEnd = true; - envVarTreeIterator.value = value; + child: {}, + }; } - return envVarTree; + envVarTreeIterator = envVarTreeIterator.child[variableName]; + } + envVarTreeIterator.isEnd = true; + envVarTreeIterator.value = value; } - checkEnvTreePath(jsonObjectKey, index, jsonObjectKeyLength, envVarTree) { - if (index == jsonObjectKeyLength) { - return envVarTree; - } - if (envVarTree.child[jsonObjectKey[index]] === undefined || typeof envVarTree.child[jsonObjectKey[index]] === 'function') { - return undefined; - } - return this.checkEnvTreePath(jsonObjectKey, index + 1, jsonObjectKeyLength, envVarTree.child[jsonObjectKey[index]]); + return envVarTree; + } + checkEnvTreePath(jsonObjectKey, index, jsonObjectKeyLength, envVarTree) { + if (index == jsonObjectKeyLength) { + return envVarTree; + } + if ( + envVarTree.child[jsonObjectKey[index]] === undefined || + typeof envVarTree.child[jsonObjectKey[index]] === "function" + ) { + return undefined; } + return this.checkEnvTreePath( + jsonObjectKey, + index + 1, + jsonObjectKeyLength, + envVarTree.child[jsonObjectKey[index]] + ); + } } exports.EnvTreeUtility = EnvTreeUtility; diff --git a/lib/operations/fileEncodingUtility.js b/lib/operations/fileEncodingUtility.js index 285c9f3..c79403a 100644 --- a/lib/operations/fileEncodingUtility.js +++ b/lib/operations/fileEncodingUtility.js @@ -3,64 +3,78 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.detectFileEncoding = void 0; const core = require("@actions/core"); function detectFileEncodingWithBOM(fileName, buffer) { - core.debug('Detecting file encoding using BOM'); - if (buffer.slice(0, 3).equals(Buffer.from([239, 187, 191]))) { - return { - encoding: 'utf-8', - withBOM: true - }; - } - else if (buffer.slice(0, 4).equals(Buffer.from([255, 254, 0, 0]))) { - throw Error(`Detected file encoding of the file ${fileName} as UTF-32LE. Variable substitution is not supported with file encoding UTF-32LE. Supported encodings are UTF-8 and UTF-16LE.`); - } - else if (buffer.slice(0, 2).equals(Buffer.from([254, 255]))) { - throw Error(`Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16LE.`); - } - else if (buffer.slice(0, 2).equals(Buffer.from([255, 254]))) { - return { - encoding: 'utf-16le', - withBOM: true - }; - } - else if (buffer.slice(0, 4).equals(Buffer.from([0, 0, 254, 255]))) { - throw Error(`Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16LE.`); - } - core.debug('Unable to detect File encoding using BOM'); - return null; + core.debug("Detecting file encoding using BOM"); + if (buffer.slice(0, 3).equals(Buffer.from([239, 187, 191]))) { + return { + encoding: "utf-8", + withBOM: true, + }; + } else if (buffer.slice(0, 4).equals(Buffer.from([255, 254, 0, 0]))) { + throw Error( + `Detected file encoding of the file ${fileName} as UTF-32LE. Variable substitution is not supported with file encoding UTF-32LE. Supported encodings are UTF-8 and UTF-16LE.` + ); + } else if (buffer.slice(0, 2).equals(Buffer.from([254, 255]))) { + throw Error( + `Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16LE.` + ); + } else if (buffer.slice(0, 2).equals(Buffer.from([255, 254]))) { + return { + encoding: "utf-16le", + withBOM: true, + }; + } else if (buffer.slice(0, 4).equals(Buffer.from([0, 0, 254, 255]))) { + throw Error( + `Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16LE.` + ); + } + core.debug("Unable to detect File encoding using BOM"); + return null; } function detectFileEncodingWithoutBOM(fileName, buffer) { - core.debug('Detecting file encoding without BOM'); - let typeCode = 0; - for (let index = 0; index < 4; index++) { - typeCode = typeCode << 1; - typeCode = typeCode | (buffer[index] > 0 ? 1 : 0); - } - switch (typeCode) { - case 1: - throw Error(`Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16 LE.`); - case 5: - throw Error(`Detected file encoding of the file ${fileName} as UTF-16BE. Variable substitution is not supported with file encoding UTF-16BE. Supported encodings are UTF-8 and UTF-16 LE.`); - case 8: - throw Error(`Detected file encoding of the file ${fileName} as UTF-32LE. Variable substitution is not supported with file encoding UTF-32LE. Supported encodings are UTF-8 and UTF-16 LE.`); - case 10: - return { - encoding: 'utf-16le', - withBOM: false - }; - case 15: - return { - encoding: 'utf-8', - withBOM: false - }; - default: - throw Error(`Unable to detect encoding of the file ${fileName} (typeCode: ${typeCode}). Supported encodings are UTF-8 and UTF-16 LE.`); - } + core.debug("Detecting file encoding without BOM"); + let typeCode = 0; + for (let index = 0; index < 4; index++) { + typeCode = typeCode << 1; + typeCode = typeCode | (buffer[index] > 0 ? 1 : 0); + } + switch (typeCode) { + case 1: + throw Error( + `Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16 LE.` + ); + case 5: + throw Error( + `Detected file encoding of the file ${fileName} as UTF-16BE. Variable substitution is not supported with file encoding UTF-16BE. Supported encodings are UTF-8 and UTF-16 LE.` + ); + case 8: + throw Error( + `Detected file encoding of the file ${fileName} as UTF-32LE. Variable substitution is not supported with file encoding UTF-32LE. Supported encodings are UTF-8 and UTF-16 LE.` + ); + case 10: + return { + encoding: "utf-16le", + withBOM: false, + }; + case 15: + return { + encoding: "utf-8", + withBOM: false, + }; + default: + throw Error( + `Unable to detect encoding of the file ${fileName} (typeCode: ${typeCode}). Supported encodings are UTF-8 and UTF-16 LE.` + ); + } } function detectFileEncoding(fileName, buffer) { - if (buffer.length < 4) { - throw Error(`File buffer is too short to detect encoding type : ${fileName}`); - } - let fileEncoding = detectFileEncodingWithBOM(fileName, buffer) || detectFileEncodingWithoutBOM(fileName, buffer); - return fileEncoding; + if (buffer.length < 4) { + throw Error( + `File buffer is too short to detect encoding type : ${fileName}` + ); + } + let fileEncoding = + detectFileEncodingWithBOM(fileName, buffer) || + detectFileEncodingWithoutBOM(fileName, buffer); + return fileEncoding; } exports.detectFileEncoding = detectFileEncoding; diff --git a/lib/operations/jsonVariableSubstitutionUtility.js b/lib/operations/jsonVariableSubstitutionUtility.js index 2a9e154..da48ee7 100644 --- a/lib/operations/jsonVariableSubstitutionUtility.js +++ b/lib/operations/jsonVariableSubstitutionUtility.js @@ -4,48 +4,78 @@ exports.JsonSubstitution = void 0; const core = require("@actions/core"); const envVariableUtility_1 = require("./envVariableUtility"); class JsonSubstitution { - constructor() { - this.envTreeUtil = new envVariableUtility_1.EnvTreeUtility(); - } - substituteJsonVariable(jsonObject, envObject) { - let isValueChanged = false; - for (let jsonChild in jsonObject) { - let jsonChildArray = jsonChild.split('.'); - let resultNode = this.envTreeUtil.checkEnvTreePath(jsonChildArray, 0, jsonChildArray.length, envObject); - if (resultNode != undefined) { - if (resultNode.isEnd) { - switch (typeof (jsonObject[jsonChild])) { - case 'number': - console.log('SubstitutingValueonKeyWithNumber', jsonChild, resultNode.value); - jsonObject[jsonChild] = !isNaN(resultNode.value) ? Number(resultNode.value) : resultNode.value; - break; - case 'boolean': - console.log('SubstitutingValueonKeyWithBoolean', jsonChild, resultNode.value); - jsonObject[jsonChild] = (resultNode.value == 'true' ? true : (resultNode.value == 'false' ? false : resultNode.value)); - break; - case 'object': - case null: - try { - console.log('SubstitutingValueonKeyWithObject', jsonChild, resultNode.value); - jsonObject[jsonChild] = JSON.parse(resultNode.value); - } - catch (exception) { - core.debug('unable to substitute the value. falling back to string value'); - jsonObject[jsonChild] = resultNode.value; - } - break; - case 'string': - console.log('SubstitutingValueonKeyWithString', jsonChild, resultNode.value); - jsonObject[jsonChild] = resultNode.value; - } - isValueChanged = true; - } - else { - isValueChanged = this.substituteJsonVariable(jsonObject[jsonChild], resultNode) || isValueChanged; - } - } + constructor() { + this.envTreeUtil = new envVariableUtility_1.EnvTreeUtility(); + } + substituteJsonVariable(jsonObject, envObject) { + let isValueChanged = false; + for (let jsonChild in jsonObject) { + let jsonChildArray = jsonChild.split("."); + let resultNode = this.envTreeUtil.checkEnvTreePath( + jsonChildArray, + 0, + jsonChildArray.length, + envObject + ); + if (resultNode != undefined) { + if (resultNode.isEnd) { + switch (typeof jsonObject[jsonChild]) { + case "number": + console.log( + "SubstitutingValueonKeyWithNumber", + jsonChild, + resultNode.value + ); + jsonObject[jsonChild] = !isNaN(resultNode.value) + ? Number(resultNode.value) + : resultNode.value; + break; + case "boolean": + console.log( + "SubstitutingValueonKeyWithBoolean", + jsonChild, + resultNode.value + ); + jsonObject[jsonChild] = + resultNode.value == "true" + ? true + : resultNode.value == "false" + ? false + : resultNode.value; + break; + case "object": + case null: + try { + console.log( + "SubstitutingValueonKeyWithObject", + jsonChild, + resultNode.value + ); + jsonObject[jsonChild] = JSON.parse(resultNode.value); + } catch (exception) { + core.debug( + "unable to substitute the value. falling back to string value" + ); + jsonObject[jsonChild] = resultNode.value; + } + break; + case "string": + console.log( + "SubstitutingValueonKeyWithString", + jsonChild, + resultNode.value + ); + jsonObject[jsonChild] = resultNode.value; + } + isValueChanged = true; + } else { + isValueChanged = + this.substituteJsonVariable(jsonObject[jsonChild], resultNode) || + isValueChanged; } - return isValueChanged; + } } + return isValueChanged; + } } exports.JsonSubstitution = JsonSubstitution; diff --git a/lib/operations/utility.js b/lib/operations/utility.js index 4e7336b..dcb5204 100644 --- a/lib/operations/utility.js +++ b/lib/operations/utility.js @@ -1,23 +1,41 @@ "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { +var __createBinding = + (this && this.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function () { + return m[k]; + }, + }); + } + : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + }); +var __setModuleDefault = + (this && this.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } + : function (o, v) { + o["default"] = v; + }); +var __importStar = + (this && this.__importStar) || + function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) + for (var k in mod) + if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; -}; + }; Object.defineProperty(exports, "__esModule", { value: true }); exports.findfiles = void 0; const core = require("@actions/core"); @@ -26,316 +44,330 @@ const minimatch = __importStar(require("minimatch")); const fs = require("fs"); const path = require("path"); function findfiles(filepath) { - core.debug("Finding files matching input: " + filepath); - let filesList; - if (filepath.indexOf('*') == -1 && filepath.indexOf('?') == -1) { - // No pattern found, check literal path to a single file - if (exist(filepath)) { - filesList = [filepath]; - } - else { - core.debug('No matching files were found with search pattern: ' + filepath); - return []; - } + core.debug("Finding files matching input: " + filepath); + let filesList; + if (filepath.indexOf("*") == -1 && filepath.indexOf("?") == -1) { + // No pattern found, check literal path to a single file + if (exist(filepath)) { + filesList = [filepath]; + } else { + core.debug( + "No matching files were found with search pattern: " + filepath + ); + return []; } - else { - filepath = path.join(process.env.GITHUB_WORKSPACE, filepath); - let firstWildcardIndex = function (str) { - let idx = str.indexOf('*'); - let idxOfWildcard = str.indexOf('?'); - if (idxOfWildcard > -1) { - return (idx > -1) ? - Math.min(idx, idxOfWildcard) : idxOfWildcard; - } - return idx; - }; - // Find app files matching the specified pattern - core.debug('Matching glob pattern: ' + filepath); - // First find the most complete path without any matching patterns - let idx = firstWildcardIndex(filepath); - core.debug('Index of first wildcard: ' + idx); - let slicedPath = filepath.slice(0, idx); - let findPathRoot = path.dirname(slicedPath); - if (slicedPath.endsWith("\\") || slicedPath.endsWith("/")) { - findPathRoot = slicedPath; - } - core.debug('find root dir: ' + findPathRoot); - // Now we get a list of all files under this root - let allFiles = find(findPathRoot); - // Now matching the pattern against all files - filesList = match(allFiles, filepath, '', { matchBase: true, nocase: !!os.type().match(/^Win/) }); - // Fail if no matching files were found - if (!filesList || filesList.length == 0) { - core.debug('No matching files were found with search pattern: ' + filepath); - return []; - } + } else { + filepath = path.join(process.env.GITHUB_WORKSPACE, filepath); + let firstWildcardIndex = function (str) { + let idx = str.indexOf("*"); + let idxOfWildcard = str.indexOf("?"); + if (idxOfWildcard > -1) { + return idx > -1 ? Math.min(idx, idxOfWildcard) : idxOfWildcard; + } + return idx; + }; + // Find app files matching the specified pattern + core.debug("Matching glob pattern: " + filepath); + // First find the most complete path without any matching patterns + let idx = firstWildcardIndex(filepath); + core.debug("Index of first wildcard: " + idx); + let slicedPath = filepath.slice(0, idx); + let findPathRoot = path.dirname(slicedPath); + if (slicedPath.endsWith("\\") || slicedPath.endsWith("/")) { + findPathRoot = slicedPath; } - return filesList; + core.debug("find root dir: " + findPathRoot); + // Now we get a list of all files under this root + let allFiles = find(findPathRoot); + // Now matching the pattern against all files + filesList = match(allFiles, filepath, "", { + matchBase: true, + nocase: !!os.type().match(/^Win/), + }); + // Fail if no matching files were found + if (!filesList || filesList.length == 0) { + core.debug( + "No matching files were found with search pattern: " + filepath + ); + return []; + } + } + return filesList; } exports.findfiles = findfiles; class _FindItem { - constructor(path, level) { - this.path = path; - this.level = level; - } + constructor(path, level) { + this.path = path; + this.level = level; + } } function find(findPath) { - if (!findPath) { - core.debug('no path specified'); - return []; + if (!findPath) { + core.debug("no path specified"); + return []; + } + // normalize the path, otherwise the first result is inconsistently formatted from the rest of the results + // because path.join() performs normalization. + findPath = path.normalize(findPath); + // debug trace the parameters + core.debug(`findPath: '${findPath}'`); + // return empty if not exists + try { + fs.lstatSync(findPath); + } catch (err) { + if (err.code == "ENOENT") { + core.debug("0 results"); + return []; } - // normalize the path, otherwise the first result is inconsistently formatted from the rest of the results - // because path.join() performs normalization. - findPath = path.normalize(findPath); - // debug trace the parameters - core.debug(`findPath: '${findPath}'`); - // return empty if not exists - try { - fs.lstatSync(findPath); - } - catch (err) { - if (err.code == 'ENOENT') { - core.debug('0 results'); - return []; + throw err; + } + try { + let result = []; + // push the first item + let stack = [new _FindItem(findPath, 1)]; + let traversalChain = []; // used to detect cycles + while (stack.length) { + // pop the next item and push to the result array + let item = stack.pop(); // non-null because `stack.length` was truthy + result.push(item.path); + // stat the item. the stat info is used further below to determine whether to traverse deeper + // + // stat returns info about the target of a symlink (or symlink chain), + // lstat returns info about a symlink itself + let stats; + // use lstat (not following symlinks) + stats = fs.lstatSync(item.path); + // note, isDirectory() returns false for the lstat of a symlink + if (stats.isDirectory()) { + core.debug(` ${item.path} (directory)`); + // push the child items in reverse onto the stack + let childLevel = item.level + 1; + let childItems = fs + .readdirSync(item.path) + .map( + (childName) => + new _FindItem(path.join(item.path, childName), childLevel) + ); + for (let i = childItems.length - 1; i >= 0; i--) { + stack.push(childItems[i]); } - throw err; - } - try { - let result = []; - // push the first item - let stack = [new _FindItem(findPath, 1)]; - let traversalChain = []; // used to detect cycles - while (stack.length) { - // pop the next item and push to the result array - let item = stack.pop(); // non-null because `stack.length` was truthy - result.push(item.path); - // stat the item. the stat info is used further below to determine whether to traverse deeper - // - // stat returns info about the target of a symlink (or symlink chain), - // lstat returns info about a symlink itself - let stats; - // use lstat (not following symlinks) - stats = fs.lstatSync(item.path); - // note, isDirectory() returns false for the lstat of a symlink - if (stats.isDirectory()) { - core.debug(` ${item.path} (directory)`); - // push the child items in reverse onto the stack - let childLevel = item.level + 1; - let childItems = fs.readdirSync(item.path) - .map((childName) => new _FindItem(path.join(item.path, childName), childLevel)); - for (let i = childItems.length - 1; i >= 0; i--) { - stack.push(childItems[i]); - } - } - else { - core.debug(` ${item.path} (file)`); - } - } - core.debug(`${result.length} results`); - return result; - } - catch (err) { - throw new Error('LIB_OperationFailed' + 'find' + err.message); + } else { + core.debug(` ${item.path} (file)`); + } } + core.debug(`${result.length} results`); + return result; + } catch (err) { + throw new Error("LIB_OperationFailed" + "find" + err.message); + } } function _getDefaultMatchOptions() { - return { - debug: false, - nobrace: true, - noglobstar: false, - dot: true, - noext: false, - nocase: process.platform == 'win32', - nonull: false, - matchBase: false, - nocomment: false, - nonegate: false, - flipNegate: false - }; + return { + debug: false, + nobrace: true, + noglobstar: false, + dot: true, + noext: false, + nocase: process.platform == "win32", + nonull: false, + matchBase: false, + nocomment: false, + nonegate: false, + flipNegate: false, + }; } function cloneMatchOptions(matchOptions) { - return { - debug: matchOptions.debug, - nobrace: matchOptions.nobrace, - noglobstar: matchOptions.noglobstar, - dot: matchOptions.dot, - noext: matchOptions.noext, - nocase: matchOptions.nocase, - nonull: matchOptions.nonull, - matchBase: matchOptions.matchBase, - nocomment: matchOptions.nocomment, - nonegate: matchOptions.nonegate, - flipNegate: matchOptions.flipNegate - }; + return { + debug: matchOptions.debug, + nobrace: matchOptions.nobrace, + noglobstar: matchOptions.noglobstar, + dot: matchOptions.dot, + noext: matchOptions.noext, + nocase: matchOptions.nocase, + nonull: matchOptions.nonull, + matchBase: matchOptions.matchBase, + nocomment: matchOptions.nocomment, + nonegate: matchOptions.nonegate, + flipNegate: matchOptions.flipNegate, + }; } function match(list, patterns, patternRoot, options) { - // trace parameters - core.debug(`patternRoot: '${patternRoot}'`); - options = options || _getDefaultMatchOptions(); // default match options - // convert pattern to an array - if (typeof patterns == 'string') { - patterns = [patterns]; + // trace parameters + core.debug(`patternRoot: '${patternRoot}'`); + options = options || _getDefaultMatchOptions(); // default match options + // convert pattern to an array + if (typeof patterns == "string") { + patterns = [patterns]; + } + // hashtable to keep track of matches + let map = {}; + let originalOptions = options; + for (let pattern of patterns) { + core.debug(`pattern: '${pattern}'`); + // trim and skip empty + pattern = (pattern || "").trim(); + if (!pattern) { + core.debug("skipping empty pattern"); + continue; + } + // clone match options + let options = cloneMatchOptions(originalOptions); + // skip comments + if (!options.nocomment && startsWith(pattern, "#")) { + core.debug("skipping comment"); + continue; + } + // set nocomment - brace expansion could result in a leading '#' + options.nocomment = true; + // determine whether pattern is include or exclude + let negateCount = 0; + if (!options.nonegate) { + while (pattern.charAt(negateCount) == "!") { + negateCount++; + } + pattern = pattern.substring(negateCount); // trim leading '!' + if (negateCount) { + core.debug(`trimmed leading '!'. pattern: '${pattern}'`); + } + } + let isIncludePattern = + negateCount == 0 || + (negateCount % 2 == 0 && !options.flipNegate) || + (negateCount % 2 == 1 && options.flipNegate); + // set nonegate - brace expansion could result in a leading '!' + options.nonegate = true; + options.flipNegate = false; + // expand braces - required to accurately root patterns + let expanded; + let preExpanded = pattern; + if (options.nobrace) { + expanded = [pattern]; + } else { + // convert slashes on Windows before calling braceExpand(). unfortunately this means braces cannot + // be escaped on Windows, this limitation is consistent with current limitations of minimatch (3.0.3). + core.debug("expanding braces"); + let convertedPattern = + process.platform == "win32" ? pattern.replace(/\\/g, "/") : pattern; + expanded = minimatch.braceExpand(convertedPattern); } - // hashtable to keep track of matches - let map = {}; - let originalOptions = options; - for (let pattern of patterns) { + // set nobrace + options.nobrace = true; + for (let pattern of expanded) { + if (expanded.length != 1 || pattern != preExpanded) { core.debug(`pattern: '${pattern}'`); - // trim and skip empty - pattern = (pattern || '').trim(); - if (!pattern) { - core.debug('skipping empty pattern'); - continue; + } + // trim and skip empty + pattern = (pattern || "").trim(); + if (!pattern) { + core.debug("skipping empty pattern"); + continue; + } + // root the pattern when all of the following conditions are true: + if ( + patternRoot && // patternRoot supplied + !isRooted(pattern) && // AND pattern not rooted + // AND matchBase:false or not basename only + (!options.matchBase || + (process.platform == "win32" + ? pattern.replace(/\\/g, "/") + : pattern + ).indexOf("/") >= 0) + ) { + pattern = ensureRooted(patternRoot, pattern); + core.debug(`rooted pattern: '${pattern}'`); + } + if (isIncludePattern) { + // apply the pattern + core.debug("applying include pattern against original list"); + let matchResults = minimatch.match(list, pattern, options); + core.debug(matchResults.length + " matches"); + // union the results + for (let matchResult of matchResults) { + map[matchResult] = true; } - // clone match options - let options = cloneMatchOptions(originalOptions); - // skip comments - if (!options.nocomment && startsWith(pattern, '#')) { - core.debug('skipping comment'); - continue; - } - // set nocomment - brace expansion could result in a leading '#' - options.nocomment = true; - // determine whether pattern is include or exclude - let negateCount = 0; - if (!options.nonegate) { - while (pattern.charAt(negateCount) == '!') { - negateCount++; - } - pattern = pattern.substring(negateCount); // trim leading '!' - if (negateCount) { - core.debug(`trimmed leading '!'. pattern: '${pattern}'`); - } - } - let isIncludePattern = negateCount == 0 || - (negateCount % 2 == 0 && !options.flipNegate) || - (negateCount % 2 == 1 && options.flipNegate); - // set nonegate - brace expansion could result in a leading '!' - options.nonegate = true; - options.flipNegate = false; - // expand braces - required to accurately root patterns - let expanded; - let preExpanded = pattern; - if (options.nobrace) { - expanded = [pattern]; - } - else { - // convert slashes on Windows before calling braceExpand(). unfortunately this means braces cannot - // be escaped on Windows, this limitation is consistent with current limitations of minimatch (3.0.3). - core.debug('expanding braces'); - let convertedPattern = process.platform == 'win32' ? pattern.replace(/\\/g, '/') : pattern; - expanded = minimatch.braceExpand(convertedPattern); - } - // set nobrace - options.nobrace = true; - for (let pattern of expanded) { - if (expanded.length != 1 || pattern != preExpanded) { - core.debug(`pattern: '${pattern}'`); - } - // trim and skip empty - pattern = (pattern || '').trim(); - if (!pattern) { - core.debug('skipping empty pattern'); - continue; - } - // root the pattern when all of the following conditions are true: - if (patternRoot && // patternRoot supplied - !isRooted(pattern) && // AND pattern not rooted - // AND matchBase:false or not basename only - (!options.matchBase || (process.platform == 'win32' ? pattern.replace(/\\/g, '/') : pattern).indexOf('/') >= 0)) { - pattern = ensureRooted(patternRoot, pattern); - core.debug(`rooted pattern: '${pattern}'`); - } - if (isIncludePattern) { - // apply the pattern - core.debug('applying include pattern against original list'); - let matchResults = minimatch.match(list, pattern, options); - core.debug(matchResults.length + ' matches'); - // union the results - for (let matchResult of matchResults) { - map[matchResult] = true; - } - } - else { - // apply the pattern - core.debug('applying exclude pattern against original list'); - let matchResults = minimatch.match(list, pattern, options); - core.debug(matchResults.length + ' matches'); - // substract the results - for (let matchResult of matchResults) { - delete map[matchResult]; - } - } + } else { + // apply the pattern + core.debug("applying exclude pattern against original list"); + let matchResults = minimatch.match(list, pattern, options); + core.debug(matchResults.length + " matches"); + // substract the results + for (let matchResult of matchResults) { + delete map[matchResult]; } + } } - // return a filtered version of the original list (preserves order and prevents duplication) - let result = list.filter((item) => map.hasOwnProperty(item)); - core.debug(result.length + ' final results'); - return result; + } + // return a filtered version of the original list (preserves order and prevents duplication) + let result = list.filter((item) => map.hasOwnProperty(item)); + core.debug(result.length + " final results"); + return result; } function ensureRooted(root, p) { - if (!root) { - throw new Error('ensureRooted() parameter "root" cannot be empty'); - } - if (!p) { - throw new Error('ensureRooted() parameter "p" cannot be empty'); - } - if (isRooted(p)) { - return p; - } - if (process.platform == 'win32' && root.match(/^[A-Z]:$/i)) { // e.g. C: - return root + p; - } - // ensure root ends with a separator - if (endsWith(root, '/') || (process.platform == 'win32' && endsWith(root, '\\'))) { - // root already ends with a separator - } - else { - root += path.sep; // append separator - } + if (!root) { + throw new Error('ensureRooted() parameter "root" cannot be empty'); + } + if (!p) { + throw new Error('ensureRooted() parameter "p" cannot be empty'); + } + if (isRooted(p)) { + return p; + } + if (process.platform == "win32" && root.match(/^[A-Z]:$/i)) { + // e.g. C: return root + p; + } + // ensure root ends with a separator + if ( + endsWith(root, "/") || + (process.platform == "win32" && endsWith(root, "\\")) + ) { + // root already ends with a separator + } else { + root += path.sep; // append separator + } + return root + p; } function isRooted(p) { - p = normalizeSeparators(p); - if (!p) { - throw new Error('isRooted() parameter "p" cannot be empty'); - } - if (process.platform == 'win32') { - return startsWith(p, '\\') || // e.g. \ or \hello or \\hello - /^[A-Z]:/i.test(p); // e.g. C: or C:\hello - } - return startsWith(p, '/'); // e.g. /hello + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); + } + if (process.platform == "win32") { + return ( + startsWith(p, "\\") || // e.g. \ or \hello or \\hello + /^[A-Z]:/i.test(p) + ); // e.g. C: or C:\hello + } + return startsWith(p, "/"); // e.g. /hello } function startsWith(str, start) { - return str.slice(0, start.length) == start; + return str.slice(0, start.length) == start; } function endsWith(str, end) { - return str.slice(-end.length) == end; + return str.slice(-end.length) == end; } function normalizeSeparators(p) { - p = p || ''; - if (process.platform == 'win32') { - // convert slashes on Windows - p = p.replace(/\//g, '\\'); - // remove redundant slashes - let isUnc = /^\\\\+[^\\]/.test(p); // e.g. \\hello - return (isUnc ? '\\' : '') + p.replace(/\\\\+/g, '\\'); // preserve leading // for UNC - } + p = p || ""; + if (process.platform == "win32") { + // convert slashes on Windows + p = p.replace(/\//g, "\\"); // remove redundant slashes - return p.replace(/\/\/+/g, '/'); + let isUnc = /^\\\\+[^\\]/.test(p); // e.g. \\hello + return (isUnc ? "\\" : "") + p.replace(/\\\\+/g, "\\"); // preserve leading // for UNC + } + // remove redundant slashes + return p.replace(/\/\/+/g, "/"); } function exist(path) { - let exist = false; - try { - exist = !!(path && fs.statSync(path) != null); - } - catch (err) { - if (err && err.code === 'ENOENT') { - exist = false; - } - else { - throw err; - } + let exist = false; + try { + exist = !!(path && fs.statSync(path) != null); + } catch (err) { + if (err && err.code === "ENOENT") { + exist = false; + } else { + throw err; } - return exist; + } + return exist; } diff --git a/lib/operations/xmlDomUtility.js b/lib/operations/xmlDomUtility.js index 56fca93..cd69e4c 100644 --- a/lib/operations/xmlDomUtility.js +++ b/lib/operations/xmlDomUtility.js @@ -2,88 +2,92 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.XmlDomUtility = void 0; var envVarUtility = require("./envVariableUtility"); -var ltx = require('ltx'); +var ltx = require("ltx"); class XmlDomUtility { - constructor(xmlContent) { - this.xmlDomLookUpTable = {}; - this.xmlDomLookUpTable = {}; - this.headerContent = null; - this.xmlDom = ltx.parse(xmlContent); - this.readHeader(xmlContent); - this.buildLookUpTable(this.xmlDom); + constructor(xmlContent) { + this.xmlDomLookUpTable = {}; + this.xmlDomLookUpTable = {}; + this.headerContent = null; + this.xmlDom = ltx.parse(xmlContent); + this.readHeader(xmlContent); + this.buildLookUpTable(this.xmlDom); + } + getXmlDom() { + return this.xmlDom; + } + readHeader(xmlContent) { + let index = xmlContent.indexOf("\n"); + if (index > -1) { + let firstLine = xmlContent.substring(0, index).trim(); + if (firstLine.startsWith("")) { + this.headerContent = firstLine; + } } - getXmlDom() { - return this.xmlDom; - } - readHeader(xmlContent) { - let index = xmlContent.indexOf('\n'); - if (index > -1) { - let firstLine = xmlContent.substring(0, index).trim(); - if (firstLine.startsWith("")) { - this.headerContent = firstLine; - } + } + getContentWithHeader(xmlDom) { + return xmlDom + ? (this.headerContent ? this.headerContent + "\n" : "") + + xmlDom.root().toString() + : ""; + } + /** + * Define method to create a lookup for DOM + */ + buildLookUpTable(node) { + if (node) { + let nodeName = node.name; + if (nodeName) { + nodeName = nodeName.toLowerCase(); + let listOfNodes = this.xmlDomLookUpTable[nodeName]; + if (listOfNodes == null || !Array.isArray(listOfNodes)) { + listOfNodes = []; + this.xmlDomLookUpTable[nodeName] = listOfNodes; } - } - getContentWithHeader(xmlDom) { - return xmlDom ? (this.headerContent ? this.headerContent + "\n" : "") + xmlDom.root().toString() : ""; - } - /** - * Define method to create a lookup for DOM - */ - buildLookUpTable(node) { - if (node) { - let nodeName = node.name; - if (nodeName) { - nodeName = nodeName.toLowerCase(); - let listOfNodes = this.xmlDomLookUpTable[nodeName]; - if (listOfNodes == null || !(Array.isArray(listOfNodes))) { - listOfNodes = []; - this.xmlDomLookUpTable[nodeName] = listOfNodes; - } - listOfNodes.push(node); - let childNodes = node.children; - for (let i = 0; i < childNodes.length; i++) { - let childNodeName = childNodes[i].name; - if (childNodeName) { - this.buildLookUpTable(childNodes[i]); - } - } - } + listOfNodes.push(node); + let childNodes = node.children; + for (let i = 0; i < childNodes.length; i++) { + let childNodeName = childNodes[i].name; + if (childNodeName) { + this.buildLookUpTable(childNodes[i]); + } } + } } - /** - * Returns array of nodes which match with the tag name. - */ - getElementsByTagName(nodeName) { - if (envVarUtility.isEmpty(nodeName)) - return []; - let selectedElements = this.xmlDomLookUpTable[nodeName.toLowerCase()]; - if (!selectedElements) { - selectedElements = []; - } - return selectedElements; + } + /** + * Returns array of nodes which match with the tag name. + */ + getElementsByTagName(nodeName) { + if (envVarUtility.isEmpty(nodeName)) return []; + let selectedElements = this.xmlDomLookUpTable[nodeName.toLowerCase()]; + if (!selectedElements) { + selectedElements = []; } - /** - * Search in subtree with provided node name - */ - getChildElementsByTagName(node, tagName) { - if (!envVarUtility.isObject(node)) - return []; - let children = node.children; - let liveNodes = []; - if (children) { - for (let i = 0; i < children.length; i++) { - let childName = children[i].name; - if (!envVarUtility.isEmpty(childName) && tagName == childName) { - liveNodes.push(children[i]); - } - let liveChildNodes = this.getChildElementsByTagName(children[i], tagName); - if (liveChildNodes && liveChildNodes.length > 0) { - liveNodes = liveNodes.concat(liveChildNodes); - } - } + return selectedElements; + } + /** + * Search in subtree with provided node name + */ + getChildElementsByTagName(node, tagName) { + if (!envVarUtility.isObject(node)) return []; + let children = node.children; + let liveNodes = []; + if (children) { + for (let i = 0; i < children.length; i++) { + let childName = children[i].name; + if (!envVarUtility.isEmpty(childName) && tagName == childName) { + liveNodes.push(children[i]); + } + let liveChildNodes = this.getChildElementsByTagName( + children[i], + tagName + ); + if (liveChildNodes && liveChildNodes.length > 0) { + liveNodes = liveNodes.concat(liveChildNodes); } - return liveNodes; + } } + return liveNodes; + } } exports.XmlDomUtility = XmlDomUtility; diff --git a/lib/operations/xmlVariableSubstitution.js b/lib/operations/xmlVariableSubstitution.js index 2b2cb18..44be035 100644 --- a/lib/operations/xmlVariableSubstitution.js +++ b/lib/operations/xmlVariableSubstitution.js @@ -2,138 +2,189 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.XmlSubstitution = void 0; const core = require("@actions/core"); -let envVarUtility = require('./envVariableUtility'); -const tags = ["applicationSettings", "appSettings", "connectionStrings", "configSections"]; +let envVarUtility = require("./envVariableUtility"); +const tags = [ + "applicationSettings", + "appSettings", + "connectionStrings", + "configSections", +]; class XmlSubstitution { - constructor(xmlDomUtilityInstance) { - this.replacableTokenValues = { "APOS_CHARACTER_TOKEN": "'" }; - this.variableMap = envVarUtility.getVariableMap(); - this.xmlDomUtility = xmlDomUtilityInstance; - } - substituteXmlVariables() { - let isSubstitutionApplied = false; - for (let tag of tags) { - let nodes = this.xmlDomUtility.getElementsByTagName(tag); - if (nodes.length == 0) { - core.debug("Unable to find node with tag '" + tag + "' in provided xml file."); - continue; - } - for (let xmlNode of nodes) { - if (envVarUtility.isObject(xmlNode)) { - console.log('Processing substitution for xml node: ', xmlNode.name); - try { - if (xmlNode.name == "configSections") { - isSubstitutionApplied = this.updateXmlConfigNodeAttribute(xmlNode) || isSubstitutionApplied; - } - else if (xmlNode.name == "connectionStrings") { - isSubstitutionApplied = this.updateXmlConnectionStringsNodeAttribute(xmlNode) || isSubstitutionApplied; - } - else { - isSubstitutionApplied = this.updateXmlNodeAttribute(xmlNode) || isSubstitutionApplied; - } - } - catch (error) { - core.debug("Error occurred while processing xml node : " + xmlNode.name); - core.debug(error); - } - } + constructor(xmlDomUtilityInstance) { + this.replacableTokenValues = { APOS_CHARACTER_TOKEN: "'" }; + this.variableMap = envVarUtility.getVariableMap(); + this.xmlDomUtility = xmlDomUtilityInstance; + } + substituteXmlVariables() { + let isSubstitutionApplied = false; + for (let tag of tags) { + let nodes = this.xmlDomUtility.getElementsByTagName(tag); + if (nodes.length == 0) { + core.debug( + "Unable to find node with tag '" + tag + "' in provided xml file." + ); + continue; + } + for (let xmlNode of nodes) { + if (envVarUtility.isObject(xmlNode)) { + console.log("Processing substitution for xml node: ", xmlNode.name); + try { + if (xmlNode.name == "configSections") { + isSubstitutionApplied = + this.updateXmlConfigNodeAttribute(xmlNode) || + isSubstitutionApplied; + } else if (xmlNode.name == "connectionStrings") { + isSubstitutionApplied = + this.updateXmlConnectionStringsNodeAttribute(xmlNode) || + isSubstitutionApplied; + } else { + isSubstitutionApplied = + this.updateXmlNodeAttribute(xmlNode) || isSubstitutionApplied; } + } catch (error) { + core.debug( + "Error occurred while processing xml node : " + xmlNode.name + ); + core.debug(error); + } } - return isSubstitutionApplied; + } } - updateXmlConfigNodeAttribute(xmlNode) { - let isSubstitutionApplied = false; - let sections = this.xmlDomUtility.getChildElementsByTagName(xmlNode, "section"); - for (let section of sections) { - if (envVarUtility.isObject(section)) { - let sectionName = section.attr('name'); - if (!envVarUtility.isEmpty(sectionName)) { - let customSectionNodes = this.xmlDomUtility.getElementsByTagName(sectionName); - if (customSectionNodes.length != 0) { - let customNode = customSectionNodes[0]; - isSubstitutionApplied = this.updateXmlNodeAttribute(customNode) || isSubstitutionApplied; - } - } - } + return isSubstitutionApplied; + } + updateXmlConfigNodeAttribute(xmlNode) { + let isSubstitutionApplied = false; + let sections = this.xmlDomUtility.getChildElementsByTagName( + xmlNode, + "section" + ); + for (let section of sections) { + if (envVarUtility.isObject(section)) { + let sectionName = section.attr("name"); + if (!envVarUtility.isEmpty(sectionName)) { + let customSectionNodes = + this.xmlDomUtility.getElementsByTagName(sectionName); + if (customSectionNodes.length != 0) { + let customNode = customSectionNodes[0]; + isSubstitutionApplied = + this.updateXmlNodeAttribute(customNode) || isSubstitutionApplied; + } } - return isSubstitutionApplied; + } } - updateXmlNodeAttribute(xmlDomNode) { - let isSubstitutionApplied = false; - if (envVarUtility.isEmpty(xmlDomNode) || !envVarUtility.isObject(xmlDomNode) || xmlDomNode.name == "#comment") { - core.debug("Provided node is empty or a comment."); - return isSubstitutionApplied; - } - const ConfigFileAppSettingsToken = 'CONFIG_FILE_SETTINGS_TOKEN'; - let xmlDomNodeAttributes = xmlDomNode.attrs; - for (var attributeName in xmlDomNodeAttributes) { - var attributeNameValue = (attributeName === "key" || attributeName == "name") ? xmlDomNodeAttributes[attributeName] : attributeName; - var attributeName = (attributeName === "key" || attributeName == "name") ? "value" : attributeName; - if (this.variableMap.get(attributeNameValue) != undefined) { - let ConfigFileAppSettingsTokenName = ConfigFileAppSettingsToken + '(' + attributeNameValue + ')'; - let isValueReplaced = false; - if (xmlDomNode.getAttr(attributeName) != undefined) { - console.log(`Updating value for key: ${attributeNameValue} with token value: ${ConfigFileAppSettingsTokenName}`); - xmlDomNode.attr(attributeName, ConfigFileAppSettingsTokenName); - isValueReplaced = true; - } - else { - let children = xmlDomNode.children; - for (var childNode of children) { - if (envVarUtility.isObject(childNode) && childNode.name == attributeName) { - if (childNode.children.length === 1) { - console.log(`Updating value for key: ${attributeNameValue} with token value: ${ConfigFileAppSettingsTokenName}`); - childNode.children[0] = ConfigFileAppSettingsTokenName; - isValueReplaced = true; - } - } - } - } - if (isValueReplaced) { - this.replacableTokenValues[ConfigFileAppSettingsTokenName] = this.variableMap.get(attributeNameValue).replace(/"/g, "'"); - isSubstitutionApplied = true; - } - } - } - let children = xmlDomNode.children; - for (var childNode of children) { - if (envVarUtility.isObject(childNode)) { - isSubstitutionApplied = this.updateXmlNodeAttribute(childNode) || isSubstitutionApplied; - } - } - return isSubstitutionApplied; + return isSubstitutionApplied; + } + updateXmlNodeAttribute(xmlDomNode) { + let isSubstitutionApplied = false; + if ( + envVarUtility.isEmpty(xmlDomNode) || + !envVarUtility.isObject(xmlDomNode) || + xmlDomNode.name == "#comment" + ) { + core.debug("Provided node is empty or a comment."); + return isSubstitutionApplied; } - updateXmlConnectionStringsNodeAttribute(xmlDomNode) { - let isSubstitutionApplied = false; - const ConfigFileConnStringToken = 'CONFIG_FILE_CONN_STRING_TOKEN'; - if (envVarUtility.isEmpty(xmlDomNode) || !envVarUtility.isObject(xmlDomNode) || xmlDomNode.name == "#comment") { - core.debug("Provided node is empty or a comment."); - return isSubstitutionApplied; - } - let xmlDomNodeAttributes = xmlDomNode.attrs; - if (xmlDomNodeAttributes.hasOwnProperty("connectionString")) { - if (xmlDomNodeAttributes.hasOwnProperty("name") && this.variableMap.get(xmlDomNodeAttributes.name)) { - let ConfigFileConnStringTokenName = ConfigFileConnStringToken + '(' + xmlDomNodeAttributes.name + ')'; - core.debug(`Substituting connectionString value for connectionString= ${xmlDomNodeAttributes.name} with token value: ${ConfigFileConnStringTokenName}`); - xmlDomNode.attr("connectionString", ConfigFileConnStringTokenName); - this.replacableTokenValues[ConfigFileConnStringTokenName] = this.variableMap.get(xmlDomNodeAttributes.name).replace(/"/g, "'"); - isSubstitutionApplied = true; - } - else if (this.variableMap.get("connectionString") != undefined) { - let ConfigFileConnStringTokenName = ConfigFileConnStringToken + '(connectionString)'; - core.debug(`Substituting connectionString value for connectionString= ${xmlDomNodeAttributes.name} with token value: ${ConfigFileConnStringTokenName}`); - xmlDomNode.attr("connectionString", ConfigFileConnStringTokenName); - this.replacableTokenValues[ConfigFileConnStringTokenName] = this.variableMap.get("connectionString").replace(/"/g, "'"); - isSubstitutionApplied = true; + const ConfigFileAppSettingsToken = "CONFIG_FILE_SETTINGS_TOKEN"; + let xmlDomNodeAttributes = xmlDomNode.attrs; + for (var attributeName in xmlDomNodeAttributes) { + var attributeNameValue = + attributeName === "key" || attributeName == "name" + ? xmlDomNodeAttributes[attributeName] + : attributeName; + var attributeName = + attributeName === "key" || attributeName == "name" + ? "value" + : attributeName; + if (this.variableMap.get(attributeNameValue) != undefined) { + let ConfigFileAppSettingsTokenName = + ConfigFileAppSettingsToken + "(" + attributeNameValue + ")"; + let isValueReplaced = false; + if (xmlDomNode.getAttr(attributeName) != undefined) { + console.log( + `Updating value for key: ${attributeNameValue} with token value: ${ConfigFileAppSettingsTokenName}` + ); + xmlDomNode.attr(attributeName, ConfigFileAppSettingsTokenName); + isValueReplaced = true; + } else { + let children = xmlDomNode.children; + for (var childNode of children) { + if ( + envVarUtility.isObject(childNode) && + childNode.name == attributeName + ) { + if (childNode.children.length === 1) { + console.log( + `Updating value for key: ${attributeNameValue} with token value: ${ConfigFileAppSettingsTokenName}` + ); + childNode.children[0] = ConfigFileAppSettingsTokenName; + isValueReplaced = true; + } } + } } - let children = xmlDomNode.children; - for (var childNode of children) { - if (envVarUtility.isObject(childNode)) { - isSubstitutionApplied = this.updateXmlConnectionStringsNodeAttribute(childNode) || isSubstitutionApplied; - } + if (isValueReplaced) { + this.replacableTokenValues[ConfigFileAppSettingsTokenName] = + this.variableMap.get(attributeNameValue).replace(/"/g, "'"); + isSubstitutionApplied = true; } - return isSubstitutionApplied; + } + } + let children = xmlDomNode.children; + for (var childNode of children) { + if (envVarUtility.isObject(childNode)) { + isSubstitutionApplied = + this.updateXmlNodeAttribute(childNode) || isSubstitutionApplied; + } + } + return isSubstitutionApplied; + } + updateXmlConnectionStringsNodeAttribute(xmlDomNode) { + let isSubstitutionApplied = false; + const ConfigFileConnStringToken = "CONFIG_FILE_CONN_STRING_TOKEN"; + if ( + envVarUtility.isEmpty(xmlDomNode) || + !envVarUtility.isObject(xmlDomNode) || + xmlDomNode.name == "#comment" + ) { + core.debug("Provided node is empty or a comment."); + return isSubstitutionApplied; + } + let xmlDomNodeAttributes = xmlDomNode.attrs; + if (xmlDomNodeAttributes.hasOwnProperty("connectionString")) { + if ( + xmlDomNodeAttributes.hasOwnProperty("name") && + this.variableMap.get(xmlDomNodeAttributes.name) + ) { + let ConfigFileConnStringTokenName = + ConfigFileConnStringToken + "(" + xmlDomNodeAttributes.name + ")"; + core.debug( + `Substituting connectionString value for connectionString= ${xmlDomNodeAttributes.name} with token value: ${ConfigFileConnStringTokenName}` + ); + xmlDomNode.attr("connectionString", ConfigFileConnStringTokenName); + this.replacableTokenValues[ConfigFileConnStringTokenName] = + this.variableMap.get(xmlDomNodeAttributes.name).replace(/"/g, "'"); + isSubstitutionApplied = true; + } else if (this.variableMap.get("connectionString") != undefined) { + let ConfigFileConnStringTokenName = + ConfigFileConnStringToken + "(connectionString)"; + core.debug( + `Substituting connectionString value for connectionString= ${xmlDomNodeAttributes.name} with token value: ${ConfigFileConnStringTokenName}` + ); + xmlDomNode.attr("connectionString", ConfigFileConnStringTokenName); + this.replacableTokenValues[ConfigFileConnStringTokenName] = + this.variableMap.get("connectionString").replace(/"/g, "'"); + isSubstitutionApplied = true; + } + } + let children = xmlDomNode.children; + for (var childNode of children) { + if (envVarUtility.isObject(childNode)) { + isSubstitutionApplied = + this.updateXmlConnectionStringsNodeAttribute(childNode) || + isSubstitutionApplied; + } } + return isSubstitutionApplied; + } } exports.XmlSubstitution = XmlSubstitution; diff --git a/lib/variableSubstitution.js b/lib/variableSubstitution.js index 31de7e0..960c032 100644 --- a/lib/variableSubstitution.js +++ b/lib/variableSubstitution.js @@ -4,17 +4,29 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => +var __esm = (fn, res, err) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])((fn = 0))), res; + if (err) throw err[0]; + try { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])((fn = 0))), res; + } catch (e) { + throw ((err = [e]), e); + } }; var __commonJS = (cb, mod) => function __require() { - return ( - mod || - (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), - mod.exports - ); + try { + return ( + mod || + (0, cb[__getOwnPropNames(cb)[0]])( + (mod = { exports: {} }).exports, + mod + ), + mod.exports + ); + } catch (e) { + throw ((mod = 0), e); + } }; var __export = (target, all) => { for (var name in all) @@ -34,6 +46,10 @@ var __copyProps = (to, from, except, desc) => { var __toESM = (mod, isNodeMode, target) => ( (target = mod != null ? __create(__getProtoOf(mod)) : {}), __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, @@ -42,29 +58,6 @@ var __toESM = (mod, isNodeMode, target) => ( ); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var __async = (__this, __arguments, generator) => { - return new Promise((resolve, reject) => { - var fulfilled = (value) => { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - }; - var rejected = (value) => { - try { - step(generator.throw(value)); - } catch (e) { - reject(e); - } - }; - var step = (x) => - x.done - ? resolve(x.value) - : Promise.resolve(x.value).then(fulfilled, rejected); - step((generator = generator.apply(__this, __arguments)).next()); - }); -}; // src/operations/envVariableUtility.ts var envVariableUtility_exports = {}; @@ -112,12 +105,12 @@ function isObject(object) { var EnvTreeUtility; var init_envVariableUtility = __esm({ "src/operations/envVariableUtility.ts"() { - EnvTreeUtility = class { + EnvTreeUtility = class _EnvTreeUtility { constructor() { this.envVarTree = null; } static getEnvVarTree() { - let util = new EnvTreeUtility(); + let util = new _EnvTreeUtility(); if (!util.envVarTree) { util.envVarTree = util.createEnvTree(getVariableMap()); } @@ -175,10 +168,10 @@ var init_envVariableUtility = __esm({ // node_modules/@actions/core/lib/utils.js var require_utils = __commonJS({ - "node_modules/@actions/core/lib/utils.js"(exports) { + "node_modules/@actions/core/lib/utils.js"(exports2) { "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.toCommandProperties = exports.toCommandValue = void 0; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.toCommandProperties = exports2.toCommandValue = void 0; function toCommandValue(input) { if (input === null || input === void 0) { return ""; @@ -187,7 +180,7 @@ var require_utils = __commonJS({ } return JSON.stringify(input); } - exports.toCommandValue = toCommandValue; + exports2.toCommandValue = toCommandValue; function toCommandProperties(annotationProperties) { if (!Object.keys(annotationProperties).length) { return {}; @@ -201,32 +194,41 @@ var require_utils = __commonJS({ endColumn: annotationProperties.endColumn, }; } - exports.toCommandProperties = toCommandProperties; + exports2.toCommandProperties = toCommandProperties; }, }); // node_modules/@actions/core/lib/command.js var require_command = __commonJS({ - "node_modules/@actions/core/lib/command.js"(exports) { + "node_modules/@actions/core/lib/command.js"(exports2) { "use strict"; var __createBinding = - (exports && exports.__createBinding) || + (exports2 && exports2.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if ( + !desc || + ("get" in desc + ? !m.__esModule + : desc.writable || desc.configurable) + ) { + desc = { + enumerable: true, + get: function () { + return m[k]; + }, + }; + } + Object.defineProperty(o, k2, desc); } : function (o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = - (exports && exports.__setModuleDefault) || + (exports2 && exports2.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); @@ -235,31 +237,31 @@ var require_command = __commonJS({ o["default"] = v; }); var __importStar = - (exports && exports.__importStar) || + (exports2 && exports2.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); } __setModuleDefault(result, mod); return result; }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.issue = exports.issueCommand = void 0; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.issue = exports2.issueCommand = void 0; var os2 = __importStar(require("os")); var utils_1 = require_utils(); function issueCommand(command, properties, message) { const cmd = new Command(command, properties, message); process.stdout.write(cmd.toString() + os2.EOL); } - exports.issueCommand = issueCommand; + exports2.issueCommand = issueCommand; function issue(name, message = "") { issueCommand(name, {}, message); } - exports.issue = issue; + exports2.issue = issue; var CMD_STRING = "::"; var Command = class { constructor(command, properties, message) { @@ -294,15 +296,13 @@ var require_command = __commonJS({ } }; function escapeData(s) { - return utils_1 - .toCommandValue(s) + return (0, utils_1.toCommandValue)(s) .replace(/%/g, "%25") .replace(/\r/g, "%0D") .replace(/\n/g, "%0A"); } function escapeProperty(s) { - return utils_1 - .toCommandValue(s) + return (0, utils_1.toCommandValue)(s) .replace(/%/g, "%25") .replace(/\r/g, "%0D") .replace(/\n/g, "%0A") @@ -312,549 +312,37 @@ var require_command = __commonJS({ }, }); -// node_modules/@actions/core/node_modules/uuid/dist/rng.js -var require_rng = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/rng.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = rng; - var _crypto = _interopRequireDefault(require("crypto")); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var rnds8Pool = new Uint8Array(256); - var poolPtr = rnds8Pool.length; - function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); - poolPtr = 0; - } - return rnds8Pool.slice(poolPtr, (poolPtr += 16)); - } - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/regex.js -var require_regex = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/regex.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _default = - /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/validate.js -var require_validate = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/validate.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _regex = _interopRequireDefault(require_regex()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function validate(uuid) { - return typeof uuid === "string" && _regex.default.test(uuid); - } - var _default = validate; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/stringify.js -var require_stringify = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/stringify.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _validate = _interopRequireDefault(require_validate()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var byteToHex = []; - for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 256).toString(16).substr(1)); - } - function stringify(arr, offset = 0) { - const uuid = ( - byteToHex[arr[offset + 0]] + - byteToHex[arr[offset + 1]] + - byteToHex[arr[offset + 2]] + - byteToHex[arr[offset + 3]] + - "-" + - byteToHex[arr[offset + 4]] + - byteToHex[arr[offset + 5]] + - "-" + - byteToHex[arr[offset + 6]] + - byteToHex[arr[offset + 7]] + - "-" + - byteToHex[arr[offset + 8]] + - byteToHex[arr[offset + 9]] + - "-" + - byteToHex[arr[offset + 10]] + - byteToHex[arr[offset + 11]] + - byteToHex[arr[offset + 12]] + - byteToHex[arr[offset + 13]] + - byteToHex[arr[offset + 14]] + - byteToHex[arr[offset + 15]] - ).toLowerCase(); - if (!(0, _validate.default)(uuid)) { - throw TypeError("Stringified UUID is invalid"); - } - return uuid; - } - var _default = stringify; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/v1.js -var require_v1 = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/v1.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _rng = _interopRequireDefault(require_rng()); - var _stringify = _interopRequireDefault(require_stringify()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var _nodeId; - var _clockseq; - var _lastMSecs = 0; - var _lastNSecs = 0; - function v1(options, buf, offset) { - let i = (buf && offset) || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== void 0 ? options.clockseq : _clockseq; - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); - if (node == null) { - node = _nodeId = [ - seedBytes[0] | 1, - seedBytes[1], - seedBytes[2], - seedBytes[3], - seedBytes[4], - seedBytes[5], - ]; - } - if (clockseq == null) { - clockseq = _clockseq = ((seedBytes[6] << 8) | seedBytes[7]) & 16383; - } - } - let msecs = options.msecs !== void 0 ? options.msecs : Date.now(); - let nsecs = options.nsecs !== void 0 ? options.nsecs : _lastNSecs + 1; - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4; - if (dt < 0 && options.clockseq === void 0) { - clockseq = (clockseq + 1) & 16383; - } - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === void 0) { - nsecs = 0; - } - if (nsecs >= 1e4) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - msecs += 122192928e5; - const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296; - b[i++] = (tl >>> 24) & 255; - b[i++] = (tl >>> 16) & 255; - b[i++] = (tl >>> 8) & 255; - b[i++] = tl & 255; - const tmh = ((msecs / 4294967296) * 1e4) & 268435455; - b[i++] = (tmh >>> 8) & 255; - b[i++] = tmh & 255; - b[i++] = ((tmh >>> 24) & 15) | 16; - b[i++] = (tmh >>> 16) & 255; - b[i++] = (clockseq >>> 8) | 128; - b[i++] = clockseq & 255; - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - return buf || (0, _stringify.default)(b); - } - var _default = v1; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/parse.js -var require_parse = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/parse.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _validate = _interopRequireDefault(require_validate()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError("Invalid UUID"); - } - let v; - const arr = new Uint8Array(16); - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = (v >>> 16) & 255; - arr[2] = (v >>> 8) & 255; - arr[3] = v & 255; - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 255; - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 255; - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 255; - arr[10] = ((v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776) & 255; - arr[11] = (v / 4294967296) & 255; - arr[12] = (v >>> 24) & 255; - arr[13] = (v >>> 16) & 255; - arr[14] = (v >>> 8) & 255; - arr[15] = v & 255; - return arr; - } - var _default = parse; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/v35.js -var require_v35 = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/v35.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = _default; - exports.URL = exports.DNS = void 0; - var _stringify = _interopRequireDefault(require_stringify()); - var _parse = _interopRequireDefault(require_parse()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); - const bytes = []; - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - return bytes; - } - var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; - exports.DNS = DNS; - var URL2 = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; - exports.URL = URL2; - function _default(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === "string") { - value = stringToBytes(value); - } - if (typeof namespace === "string") { - namespace = (0, _parse.default)(namespace); - } - if (namespace.length !== 16) { - throw TypeError( - "Namespace must be array-like (16 iterable integer values, 0-255)" - ); - } - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = (bytes[6] & 15) | version; - bytes[8] = (bytes[8] & 63) | 128; - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - return buf; - } - return (0, _stringify.default)(bytes); - } - try { - generateUUID.name = name; - } catch (err) {} - generateUUID.DNS = DNS; - generateUUID.URL = URL2; - return generateUUID; - } - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/md5.js -var require_md5 = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/md5.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _crypto = _interopRequireDefault(require("crypto")); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === "string") { - bytes = Buffer.from(bytes, "utf8"); - } - return _crypto.default.createHash("md5").update(bytes).digest(); - } - var _default = md5; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/v3.js -var require_v3 = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/v3.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _v = _interopRequireDefault(require_v35()); - var _md = _interopRequireDefault(require_md5()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var v3 = (0, _v.default)("v3", 48, _md.default); - var _default = v3; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/v4.js -var require_v4 = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/v4.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _rng = _interopRequireDefault(require_rng()); - var _stringify = _interopRequireDefault(require_stringify()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || _rng.default)(); - rnds[6] = (rnds[6] & 15) | 64; - rnds[8] = (rnds[8] & 63) | 128; - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return (0, _stringify.default)(rnds); - } - var _default = v4; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/sha1.js -var require_sha1 = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/sha1.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _crypto = _interopRequireDefault(require("crypto")); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === "string") { - bytes = Buffer.from(bytes, "utf8"); - } - return _crypto.default.createHash("sha1").update(bytes).digest(); - } - var _default = sha1; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/v5.js -var require_v5 = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/v5.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _v = _interopRequireDefault(require_v35()); - var _sha = _interopRequireDefault(require_sha1()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var v5 = (0, _v.default)("v5", 80, _sha.default); - var _default = v5; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/nil.js -var require_nil = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/nil.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _default = "00000000-0000-0000-0000-000000000000"; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/version.js -var require_version = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/version.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports.default = void 0; - var _validate = _interopRequireDefault(require_validate()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError("Invalid UUID"); - } - return parseInt(uuid.substr(14, 1), 16); - } - var _default = version; - exports.default = _default; - }, -}); - -// node_modules/@actions/core/node_modules/uuid/dist/index.js -var require_dist = __commonJS({ - "node_modules/@actions/core/node_modules/uuid/dist/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true, - }); - Object.defineProperty(exports, "v1", { - enumerable: true, - get: function () { - return _v.default; - }, - }); - Object.defineProperty(exports, "v3", { - enumerable: true, - get: function () { - return _v2.default; - }, - }); - Object.defineProperty(exports, "v4", { - enumerable: true, - get: function () { - return _v3.default; - }, - }); - Object.defineProperty(exports, "v5", { - enumerable: true, - get: function () { - return _v4.default; - }, - }); - Object.defineProperty(exports, "NIL", { - enumerable: true, - get: function () { - return _nil.default; - }, - }); - Object.defineProperty(exports, "version", { - enumerable: true, - get: function () { - return _version.default; - }, - }); - Object.defineProperty(exports, "validate", { - enumerable: true, - get: function () { - return _validate.default; - }, - }); - Object.defineProperty(exports, "stringify", { - enumerable: true, - get: function () { - return _stringify.default; - }, - }); - Object.defineProperty(exports, "parse", { - enumerable: true, - get: function () { - return _parse.default; - }, - }); - var _v = _interopRequireDefault(require_v1()); - var _v2 = _interopRequireDefault(require_v3()); - var _v3 = _interopRequireDefault(require_v4()); - var _v4 = _interopRequireDefault(require_v5()); - var _nil = _interopRequireDefault(require_nil()); - var _version = _interopRequireDefault(require_version()); - var _validate = _interopRequireDefault(require_validate()); - var _stringify = _interopRequireDefault(require_stringify()); - var _parse = _interopRequireDefault(require_parse()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - }, -}); - // node_modules/@actions/core/lib/file-command.js var require_file_command = __commonJS({ - "node_modules/@actions/core/lib/file-command.js"(exports) { + "node_modules/@actions/core/lib/file-command.js"(exports2) { "use strict"; var __createBinding = - (exports && exports.__createBinding) || + (exports2 && exports2.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if ( + !desc || + ("get" in desc + ? !m.__esModule + : desc.writable || desc.configurable) + ) { + desc = { + enumerable: true, + get: function () { + return m[k]; + }, + }; + } + Object.defineProperty(o, k2, desc); } : function (o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = - (exports && exports.__setModuleDefault) || + (exports2 && exports2.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); @@ -863,23 +351,23 @@ var require_file_command = __commonJS({ o["default"] = v; }); var __importStar = - (exports && exports.__importStar) || + (exports2 && exports2.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); } __setModuleDefault(result, mod); return result; }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.prepareKeyValueMessage = exports2.issueFileCommand = void 0; + var crypto = __importStar(require("crypto")); var fs3 = __importStar(require("fs")); var os2 = __importStar(require("os")); - var uuid_1 = require_dist(); var utils_1 = require_utils(); function issueFileCommand(command, message) { const filePath = process.env[`GITHUB_${command}`]; @@ -893,16 +381,16 @@ var require_file_command = __commonJS({ } fs3.appendFileSync( filePath, - `${utils_1.toCommandValue(message)}${os2.EOL}`, + `${(0, utils_1.toCommandValue)(message)}${os2.EOL}`, { encoding: "utf8", } ); } - exports.issueFileCommand = issueFileCommand; + exports2.issueFileCommand = issueFileCommand; function prepareKeyValueMessage(key, value) { - const delimiter = `ghadelimiter_${uuid_1.v4()}`; - const convertedValue = utils_1.toCommandValue(value); + const delimiter = `ghadelimiter_${crypto.randomUUID()}`; + const convertedValue = (0, utils_1.toCommandValue)(value); if (key.includes(delimiter)) { throw new Error( `Unexpected input: name should not contain the delimiter "${delimiter}"` @@ -915,16 +403,16 @@ var require_file_command = __commonJS({ } return `${key}<<${delimiter}${os2.EOL}${convertedValue}${os2.EOL}${delimiter}`; } - exports.prepareKeyValueMessage = prepareKeyValueMessage; + exports2.prepareKeyValueMessage = prepareKeyValueMessage; }, }); // node_modules/@actions/http-client/lib/proxy.js var require_proxy = __commonJS({ - "node_modules/@actions/http-client/lib/proxy.js"(exports) { + "node_modules/@actions/http-client/lib/proxy.js"(exports2) { "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.checkBypass = exports.getProxyUrl = void 0; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.checkBypass = exports2.getProxyUrl = void 0; function getProxyUrl(reqUrl) { const usingSsl = reqUrl.protocol === "https:"; if (checkBypass(reqUrl)) { @@ -943,7 +431,7 @@ var require_proxy = __commonJS({ return void 0; } } - exports.getProxyUrl = getProxyUrl; + exports2.getProxyUrl = getProxyUrl; function checkBypass(reqUrl) { if (!reqUrl.hostname) { return false; @@ -974,13 +462,13 @@ var require_proxy = __commonJS({ } return false; } - exports.checkBypass = checkBypass; + exports2.checkBypass = checkBypass; }, }); // node_modules/tunnel/lib/tunnel.js var require_tunnel = __commonJS({ - "node_modules/tunnel/lib/tunnel.js"(exports) { + "node_modules/tunnel/lib/tunnel.js"(exports2) { "use strict"; var net = require("net"); var tls = require("tls"); @@ -989,10 +477,10 @@ var require_tunnel = __commonJS({ var events = require("events"); var assert = require("assert"); var util = require("util"); - exports.httpOverHttp = httpOverHttp; - exports.httpsOverHttp = httpsOverHttp; - exports.httpOverHttps = httpOverHttps; - exports.httpsOverHttps = httpsOverHttps; + exports2.httpOverHttp = httpOverHttp; + exports2.httpsOverHttp = httpsOverHttp; + exports2.httpOverHttps = httpOverHttps; + exports2.httpsOverHttps = httpsOverHttps; function httpOverHttp(options) { var agent = new TunnelingAgent(options); agent.request = http.request; @@ -1227,23 +715,23 @@ var require_tunnel = __commonJS({ } else { debug = function () {}; } - exports.debug = debug; + exports2.debug = debug; }, }); // node_modules/tunnel/index.js var require_tunnel2 = __commonJS({ - "node_modules/tunnel/index.js"(exports, module2) { + "node_modules/tunnel/index.js"(exports2, module2) { module2.exports = require_tunnel(); }, }); // node_modules/@actions/http-client/lib/index.js var require_lib = __commonJS({ - "node_modules/@actions/http-client/lib/index.js"(exports) { + "node_modules/@actions/http-client/lib/index.js"(exports2) { "use strict"; var __createBinding = - (exports && exports.__createBinding) || + (exports2 && exports2.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -1259,7 +747,7 @@ var require_lib = __commonJS({ o[k2] = m[k]; }); var __setModuleDefault = - (exports && exports.__setModuleDefault) || + (exports2 && exports2.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); @@ -1268,7 +756,7 @@ var require_lib = __commonJS({ o["default"] = v; }); var __importStar = - (exports && exports.__importStar) || + (exports2 && exports2.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; @@ -1281,7 +769,7 @@ var require_lib = __commonJS({ return result; }; var __awaiter = - (exports && exports.__awaiter) || + (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P @@ -1313,15 +801,15 @@ var require_lib = __commonJS({ step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.HttpClient = - exports.isHttps = - exports.HttpClientResponse = - exports.HttpClientError = - exports.getProxyUrl = - exports.MediaTypes = - exports.Headers = - exports.HttpCodes = + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.HttpClient = + exports2.isHttps = + exports2.HttpClientResponse = + exports2.HttpClientError = + exports2.getProxyUrl = + exports2.MediaTypes = + exports2.Headers = + exports2.HttpCodes = void 0; var http = __importStar(require("http")); var https = __importStar(require("https")); @@ -1359,21 +847,21 @@ var require_lib = __commonJS({ HttpCodes2[(HttpCodes2["ServiceUnavailable"] = 503)] = "ServiceUnavailable"; HttpCodes2[(HttpCodes2["GatewayTimeout"] = 504)] = "GatewayTimeout"; - })((HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}))); + })((HttpCodes = exports2.HttpCodes || (exports2.HttpCodes = {}))); var Headers; (function (Headers2) { Headers2["Accept"] = "accept"; Headers2["ContentType"] = "content-type"; - })((Headers = exports.Headers || (exports.Headers = {}))); + })((Headers = exports2.Headers || (exports2.Headers = {}))); var MediaTypes; (function (MediaTypes2) { MediaTypes2["ApplicationJson"] = "application/json"; - })((MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}))); + })((MediaTypes = exports2.MediaTypes || (exports2.MediaTypes = {}))); function getProxyUrl(serverUrl) { const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); return proxyUrl ? proxyUrl.href : ""; } - exports.getProxyUrl = getProxyUrl; + exports2.getProxyUrl = getProxyUrl; var HttpRedirectCodes = [ HttpCodes.MovedPermanently, HttpCodes.ResourceMoved, @@ -1389,15 +877,15 @@ var require_lib = __commonJS({ var RetryableHttpVerbs = ["OPTIONS", "GET", "DELETE", "HEAD"]; var ExponentialBackoffCeiling = 10; var ExponentialBackoffTimeSlice = 5; - var HttpClientError = class extends Error { + var HttpClientError = class _HttpClientError extends Error { constructor(message, statusCode) { super(message); this.name = "HttpClientError"; this.statusCode = statusCode; - Object.setPrototypeOf(this, HttpClientError.prototype); + Object.setPrototypeOf(this, _HttpClientError.prototype); } }; - exports.HttpClientError = HttpClientError; + exports2.HttpClientError = HttpClientError; var HttpClientResponse = class { constructor(message) { this.message = message; @@ -1418,12 +906,12 @@ var require_lib = __commonJS({ }); } }; - exports.HttpClientResponse = HttpClientResponse; + exports2.HttpClientResponse = HttpClientResponse; function isHttps(requestUrl) { const parsedUrl = new URL(requestUrl); return parsedUrl.protocol === "https:"; } - exports.isHttps = isHttps; + exports2.isHttps = isHttps; var HttpClient = class { constructor(userAgent, handlers, requestOptions) { this._ignoreSslError = false; @@ -1528,6 +1016,10 @@ var require_lib = __commonJS({ return this.request(verb, requestUrl, stream, additionalHeaders); }); } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ getJson(requestUrl, additionalHeaders = {}) { return __awaiter(this, void 0, void 0, function* () { additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( @@ -1593,6 +1085,11 @@ var require_lib = __commonJS({ return this._processResponse(res, this.requestOptions); }); } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ request(verb, requestUrl, data, headers) { return __awaiter(this, void 0, void 0, function* () { if (this._disposed) { @@ -1678,12 +1175,20 @@ var require_lib = __commonJS({ return response; }); } + /** + * Needs to be called if keepAlive is set to true in request options. + */ dispose() { if (this._agent) { this._agent.destroy(); } this._disposed = true; } + /** + * Raw request. + * @param info + * @param data + */ requestRaw(info, data) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { @@ -1700,6 +1205,12 @@ var require_lib = __commonJS({ }); }); } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ requestRawWithCallback(info, data, onResult) { if (typeof data === "string") { if (!info.options.headers) { @@ -1746,6 +1257,11 @@ var require_lib = __commonJS({ req.end(); } } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ getAgent(serverUrl) { const parsedUrl = new URL(serverUrl); return this._getAgent(parsedUrl); @@ -1918,7 +1434,7 @@ var require_lib = __commonJS({ }); } }; - exports.HttpClient = HttpClient; + exports2.HttpClient = HttpClient; var lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); }, @@ -1926,10 +1442,10 @@ var require_lib = __commonJS({ // node_modules/@actions/http-client/lib/auth.js var require_auth = __commonJS({ - "node_modules/@actions/http-client/lib/auth.js"(exports) { + "node_modules/@actions/http-client/lib/auth.js"(exports2) { "use strict"; var __awaiter = - (exports && exports.__awaiter) || + (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P @@ -1961,10 +1477,10 @@ var require_auth = __commonJS({ step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.PersonalAccessTokenCredentialHandler = - exports.BearerCredentialHandler = - exports.BasicCredentialHandler = + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PersonalAccessTokenCredentialHandler = + exports2.BearerCredentialHandler = + exports2.BasicCredentialHandler = void 0; var BasicCredentialHandler = class { constructor(username, password) { @@ -1979,6 +1495,7 @@ var require_auth = __commonJS({ `${this.username}:${this.password}` ).toString("base64")}`; } + // This handler cannot handle 401 canHandleAuthentication() { return false; } @@ -1988,17 +1505,20 @@ var require_auth = __commonJS({ }); } }; - exports.BasicCredentialHandler = BasicCredentialHandler; + exports2.BasicCredentialHandler = BasicCredentialHandler; var BearerCredentialHandler = class { constructor(token) { this.token = token; } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 prepareRequest(options) { if (!options.headers) { throw Error("The request has no headers"); } options.headers["Authorization"] = `Bearer ${this.token}`; } + // This handler cannot handle 401 canHandleAuthentication() { return false; } @@ -2008,11 +1528,13 @@ var require_auth = __commonJS({ }); } }; - exports.BearerCredentialHandler = BearerCredentialHandler; + exports2.BearerCredentialHandler = BearerCredentialHandler; var PersonalAccessTokenCredentialHandler = class { constructor(token) { this.token = token; } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 prepareRequest(options) { if (!options.headers) { throw Error("The request has no headers"); @@ -2021,6 +1543,7 @@ var require_auth = __commonJS({ `PAT:${this.token}` ).toString("base64")}`; } + // This handler cannot handle 401 canHandleAuthentication() { return false; } @@ -2030,17 +1553,17 @@ var require_auth = __commonJS({ }); } }; - exports.PersonalAccessTokenCredentialHandler = + exports2.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; }, }); // node_modules/@actions/core/lib/oidc-utils.js var require_oidc_utils = __commonJS({ - "node_modules/@actions/core/lib/oidc-utils.js"(exports) { + "node_modules/@actions/core/lib/oidc-utils.js"(exports2) { "use strict"; var __awaiter = - (exports && exports.__awaiter) || + (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P @@ -2072,12 +1595,12 @@ var require_oidc_utils = __commonJS({ step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.OidcClient = void 0; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.OidcClient = void 0; var http_client_1 = require_lib(); var auth_1 = require_auth(); var core_1 = require_core(); - var OidcClient = class { + var OidcClient = class _OidcClient { static createHttpClient(allowRetry = true, maxRetry = 10) { const requestOptions = { allowRetries: allowRetry, @@ -2085,7 +1608,7 @@ var require_oidc_utils = __commonJS({ }; return new http_client_1.HttpClient( "actions/oidc-client", - [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], + [new auth_1.BearerCredentialHandler(_OidcClient.getRequestToken())], requestOptions ); } @@ -2110,13 +1633,13 @@ var require_oidc_utils = __commonJS({ static getCall(id_token_url) { var _a; return __awaiter(this, void 0, void 0, function* () { - const httpclient = OidcClient.createHttpClient(); + const httpclient = _OidcClient.createHttpClient(); const res = yield httpclient.getJson(id_token_url).catch((error) => { throw new Error(`Failed to get ID Token. Error Code : ${error.statusCode} - Error Message: ${error.result.message}`); + Error Message: ${error.message}`); }); const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; @@ -2129,14 +1652,14 @@ var require_oidc_utils = __commonJS({ static getIDToken(audience) { return __awaiter(this, void 0, void 0, function* () { try { - let id_token_url = OidcClient.getIDTokenUrl(); + let id_token_url = _OidcClient.getIDTokenUrl(); if (audience) { const encodedAudience = encodeURIComponent(audience); id_token_url = `${id_token_url}&audience=${encodedAudience}`; } - core_1.debug(`ID token url is ${id_token_url}`); - const id_token = yield OidcClient.getCall(id_token_url); - core_1.setSecret(id_token); + (0, core_1.debug)(`ID token url is ${id_token_url}`); + const id_token = yield _OidcClient.getCall(id_token_url); + (0, core_1.setSecret)(id_token); return id_token; } catch (error) { throw new Error(`Error message: ${error.message}`); @@ -2144,16 +1667,16 @@ var require_oidc_utils = __commonJS({ }); } }; - exports.OidcClient = OidcClient; + exports2.OidcClient = OidcClient; }, }); // node_modules/@actions/core/lib/summary.js var require_summary = __commonJS({ - "node_modules/@actions/core/lib/summary.js"(exports) { + "node_modules/@actions/core/lib/summary.js"(exports2) { "use strict"; var __awaiter = - (exports && exports.__awaiter) || + (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P @@ -2185,31 +1708,37 @@ var require_summary = __commonJS({ step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.summary = - exports.markdownSummary = - exports.SUMMARY_DOCS_URL = - exports.SUMMARY_ENV_VAR = + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.summary = + exports2.markdownSummary = + exports2.SUMMARY_DOCS_URL = + exports2.SUMMARY_ENV_VAR = void 0; var os_1 = require("os"); var fs_1 = require("fs"); var { access, appendFile, writeFile } = fs_1.promises; - exports.SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY"; - exports.SUMMARY_DOCS_URL = + exports2.SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY"; + exports2.SUMMARY_DOCS_URL = "https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary"; var Summary = class { constructor() { this._buffer = ""; } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ filePath() { return __awaiter(this, void 0, void 0, function* () { if (this._filePath) { return this._filePath; } - const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + const pathFromEnv = process.env[exports2.SUMMARY_ENV_VAR]; if (!pathFromEnv) { throw new Error( - `Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.` + `Unable to find environment variable for $${exports2.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.` ); } try { @@ -2226,6 +1755,15 @@ var require_summary = __commonJS({ return this._filePath; }); } + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ wrap(tag, content, attrs = {}) { const htmlAttrs = Object.entries(attrs) .map(([key, value]) => ` ${key}="${value}"`) @@ -2235,6 +1773,13 @@ var require_summary = __commonJS({ } return `<${tag}${htmlAttrs}>${content}`; } + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise} summary instance + */ write(options) { return __awaiter(this, void 0, void 0, function* () { const overwrite = !!(options === null || options === void 0 @@ -2246,39 +1791,95 @@ var require_summary = __commonJS({ return this.emptyBuffer(); }); } + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ clear() { return __awaiter(this, void 0, void 0, function* () { return this.emptyBuffer().write({ overwrite: true }); }); } + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ stringify() { return this._buffer; } + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ isEmptyBuffer() { return this._buffer.length === 0; } + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ emptyBuffer() { this._buffer = ""; return this; } + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ addRaw(text, addEOL = false) { this._buffer += text; return addEOL ? this.addEOL() : this; } + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ addEOL() { return this.addRaw(os_1.EOL); } + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ addCodeBlock(code, lang) { const attrs = Object.assign({}, lang && { lang }); const element = this.wrap("pre", this.wrap("code", code), attrs); return this.addRaw(element).addEOL(); } + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ addList(items, ordered = false) { const tag = ordered ? "ol" : "ul"; const listItems = items.map((item) => this.wrap("li", item)).join(""); const element = this.wrap(tag, listItems); return this.addRaw(element).addEOL(); } + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ addTable(rows) { const tableBody = rows .map((row) => { @@ -2302,6 +1903,14 @@ var require_summary = __commonJS({ const element = this.wrap("table", tableBody); return this.addRaw(element).addEOL(); } + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ addDetails(label, content) { const element = this.wrap( "details", @@ -2309,6 +1918,15 @@ var require_summary = __commonJS({ ); return this.addRaw(element).addEOL(); } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ addImage(src, alt, options) { const { width, height } = options || {}; const attrs = Object.assign( @@ -2322,6 +1940,14 @@ var require_summary = __commonJS({ ); return this.addRaw(element).addEOL(); } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ addHeading(text, level) { const tag = `h${level}`; const allowedTag = ["h1", "h2", "h3", "h4", "h5", "h6"].includes(tag) @@ -2330,52 +1956,87 @@ var require_summary = __commonJS({ const element = this.wrap(allowedTag, text); return this.addRaw(element).addEOL(); } + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ addSeparator() { const element = this.wrap("hr", null); return this.addRaw(element).addEOL(); } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ addBreak() { const element = this.wrap("br", null); return this.addRaw(element).addEOL(); } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ addQuote(text, cite) { const attrs = Object.assign({}, cite && { cite }); const element = this.wrap("blockquote", text, attrs); return this.addRaw(element).addEOL(); } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ addLink(text, href) { const element = this.wrap("a", text, { href }); return this.addRaw(element).addEOL(); } }; var _summary = new Summary(); - exports.markdownSummary = _summary; - exports.summary = _summary; + exports2.markdownSummary = _summary; + exports2.summary = _summary; }, }); // node_modules/@actions/core/lib/path-utils.js var require_path_utils = __commonJS({ - "node_modules/@actions/core/lib/path-utils.js"(exports) { + "node_modules/@actions/core/lib/path-utils.js"(exports2) { "use strict"; var __createBinding = - (exports && exports.__createBinding) || + (exports2 && exports2.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if ( + !desc || + ("get" in desc + ? !m.__esModule + : desc.writable || desc.configurable) + ) { + desc = { + enumerable: true, + get: function () { + return m[k]; + }, + }; + } + Object.defineProperty(o, k2, desc); } : function (o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = - (exports && exports.__setModuleDefault) || + (exports2 && exports2.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); @@ -2384,42 +2045,45 @@ var require_path_utils = __commonJS({ o["default"] = v; }); var __importStar = - (exports && exports.__importStar) || + (exports2 && exports2.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); } __setModuleDefault(result, mod); return result; }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.toPlatformPath = + exports2.toWin32Path = + exports2.toPosixPath = + void 0; var path2 = __importStar(require("path")); function toPosixPath(pth) { return pth.replace(/[\\]/g, "/"); } - exports.toPosixPath = toPosixPath; + exports2.toPosixPath = toPosixPath; function toWin32Path(pth) { return pth.replace(/[/]/g, "\\"); } - exports.toWin32Path = toWin32Path; + exports2.toWin32Path = toWin32Path; function toPlatformPath(pth) { return pth.replace(/[/\\]/g, path2.sep); } - exports.toPlatformPath = toPlatformPath; + exports2.toPlatformPath = toPlatformPath; }, }); -// node_modules/@actions/core/lib/core.js -var require_core = __commonJS({ - "node_modules/@actions/core/lib/core.js"(exports) { +// node_modules/@actions/io/lib/io-util.js +var require_io_util = __commonJS({ + "node_modules/@actions/io/lib/io-util.js"(exports2) { "use strict"; var __createBinding = - (exports && exports.__createBinding) || + (exports2 && exports2.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -2435,7 +2099,7 @@ var require_core = __commonJS({ o[k2] = m[k]; }); var __setModuleDefault = - (exports && exports.__setModuleDefault) || + (exports2 && exports2.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); @@ -2444,7 +2108,7 @@ var require_core = __commonJS({ o["default"] = v; }); var __importStar = - (exports && exports.__importStar) || + (exports2 && exports2.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; @@ -2457,7 +2121,7 @@ var require_core = __commonJS({ return result; }; var __awaiter = - (exports && exports.__awaiter) || + (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P @@ -2489,171 +2153,1646 @@ var require_core = __commonJS({ step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getIDToken = - exports.getState = - exports.saveState = - exports.group = - exports.endGroup = - exports.startGroup = - exports.info = - exports.notice = - exports.warning = - exports.error = - exports.debug = - exports.isDebug = - exports.setFailed = - exports.setCommandEcho = - exports.setOutput = - exports.getBooleanInput = - exports.getMultilineInput = - exports.getInput = - exports.addPath = - exports.setSecret = - exports.exportVariable = - exports.ExitCode = + var _a; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getCmdPath = + exports2.tryGetExecutablePath = + exports2.isRooted = + exports2.isDirectory = + exports2.exists = + exports2.READONLY = + exports2.UV_FS_O_EXLOCK = + exports2.IS_WINDOWS = + exports2.unlink = + exports2.symlink = + exports2.stat = + exports2.rmdir = + exports2.rm = + exports2.rename = + exports2.readlink = + exports2.readdir = + exports2.open = + exports2.mkdir = + exports2.lstat = + exports2.copyFile = + exports2.chmod = void 0; - var command_1 = require_command(); - var file_command_1 = require_file_command(); - var utils_1 = require_utils(); - var os2 = __importStar(require("os")); + var fs3 = __importStar(require("fs")); var path2 = __importStar(require("path")); - var oidc_utils_1 = require_oidc_utils(); - var ExitCode; - (function (ExitCode2) { - ExitCode2[(ExitCode2["Success"] = 0)] = "Success"; - ExitCode2[(ExitCode2["Failure"] = 1)] = "Failure"; - })((ExitCode = exports.ExitCode || (exports.ExitCode = {}))); - function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env["GITHUB_ENV"] || ""; - if (filePath) { - return file_command_1.issueFileCommand( - "ENV", - file_command_1.prepareKeyValueMessage(name, val) - ); - } - command_1.issueCommand("set-env", { name }, convertedVal); - } - exports.exportVariable = exportVariable; - function setSecret(secret) { - command_1.issueCommand("add-mask", {}, secret); + (_a = fs3.promises), + (exports2.chmod = _a.chmod), + (exports2.copyFile = _a.copyFile), + (exports2.lstat = _a.lstat), + (exports2.mkdir = _a.mkdir), + (exports2.open = _a.open), + (exports2.readdir = _a.readdir), + (exports2.readlink = _a.readlink), + (exports2.rename = _a.rename), + (exports2.rm = _a.rm), + (exports2.rmdir = _a.rmdir), + (exports2.stat = _a.stat), + (exports2.symlink = _a.symlink), + (exports2.unlink = _a.unlink); + exports2.IS_WINDOWS = process.platform === "win32"; + exports2.UV_FS_O_EXLOCK = 268435456; + exports2.READONLY = fs3.constants.O_RDONLY; + function exists(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + try { + yield exports2.stat(fsPath); + } catch (err) { + if (err.code === "ENOENT") { + return false; + } + throw err; + } + return true; + }); } - exports.setSecret = setSecret; - function addPath(inputPath) { - const filePath = process.env["GITHUB_PATH"] || ""; - if (filePath) { - file_command_1.issueFileCommand("PATH", inputPath); - } else { - command_1.issueCommand("add-path", {}, inputPath); - } - process.env[ - "PATH" - ] = `${inputPath}${path2.delimiter}${process.env["PATH"]}`; + exports2.exists = exists; + function isDirectory(fsPath, useStat = false) { + return __awaiter(this, void 0, void 0, function* () { + const stats = useStat + ? yield exports2.stat(fsPath) + : yield exports2.lstat(fsPath); + return stats.isDirectory(); + }); } - exports.addPath = addPath; - function getInput(name, options) { - const val = - process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); + exports2.isDirectory = isDirectory; + function isRooted2(p) { + p = normalizeSeparators2(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); } - if (options && options.trimWhitespace === false) { - return val; - } - return val.trim(); - } - exports.getInput = getInput; - function getMultilineInput(name, options) { - const inputs = getInput(name, options) - .split("\n") - .filter((x) => x !== ""); - if (options && options.trimWhitespace === false) { - return inputs; + if (exports2.IS_WINDOWS) { + return p.startsWith("\\") || /^[A-Z]:/i.test(p); } - return inputs.map((input) => input.trim()); + return p.startsWith("/"); } - exports.getMultilineInput = getMultilineInput; - function getBooleanInput(name, options) { - const trueValue = ["true", "True", "TRUE"]; - const falseValue = ["false", "False", "FALSE"]; - const val = getInput(name, options); - if (trueValue.includes(val)) return true; - if (falseValue.includes(val)) return false; - throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name} -Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); + exports2.isRooted = isRooted2; + function tryGetExecutablePath(filePath, extensions) { + return __awaiter(this, void 0, void 0, function* () { + let stats = void 0; + try { + stats = yield exports2.stat(filePath); + } catch (err) { + if (err.code !== "ENOENT") { + console.log( + `Unexpected error attempting to determine if executable file exists '${filePath}': ${err}` + ); + } + } + if (stats && stats.isFile()) { + if (exports2.IS_WINDOWS) { + const upperExt = path2.extname(filePath).toUpperCase(); + if ( + extensions.some((validExt) => validExt.toUpperCase() === upperExt) + ) { + return filePath; + } + } else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = void 0; + try { + stats = yield exports2.stat(filePath); + } catch (err) { + if (err.code !== "ENOENT") { + console.log( + `Unexpected error attempting to determine if executable file exists '${filePath}': ${err}` + ); + } + } + if (stats && stats.isFile()) { + if (exports2.IS_WINDOWS) { + try { + const directory = path2.dirname(filePath); + const upperName = path2.basename(filePath).toUpperCase(); + for (const actualName of yield exports2.readdir(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path2.join(directory, actualName); + break; + } + } + } catch (err) { + console.log( + `Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}` + ); + } + return filePath; + } else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + } + return ""; + }); + } + exports2.tryGetExecutablePath = tryGetExecutablePath; + function normalizeSeparators2(p) { + p = p || ""; + if (exports2.IS_WINDOWS) { + p = p.replace(/\//g, "\\"); + return p.replace(/\\\\+/g, "\\"); + } + return p.replace(/\/\/+/g, "/"); + } + function isUnixExecutable(stats) { + return ( + (stats.mode & 1) > 0 || + ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || + ((stats.mode & 64) > 0 && stats.uid === process.getuid()) + ); + } + function getCmdPath() { + var _a2; + return (_a2 = process.env["COMSPEC"]) !== null && _a2 !== void 0 + ? _a2 + : `cmd.exe`; + } + exports2.getCmdPath = getCmdPath; + }, +}); + +// node_modules/@actions/io/lib/io.js +var require_io = __commonJS({ + "node_modules/@actions/io/lib/io.js"(exports2) { + "use strict"; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function () { + return m[k]; + }, + }); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } + : function (o, v) { + o["default"] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.findInPath = + exports2.which = + exports2.mkdirP = + exports2.rmRF = + exports2.mv = + exports2.cp = + void 0; + var assert_1 = require("assert"); + var path2 = __importStar(require("path")); + var ioUtil = __importStar(require_io_util()); + function cp(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + const { force, recursive, copySourceDirectory } = + readCopyOptions(options); + const destStat = (yield ioUtil.exists(dest)) + ? yield ioUtil.stat(dest) + : null; + if (destStat && destStat.isFile() && !force) { + return; + } + const newDest = + destStat && destStat.isDirectory() && copySourceDirectory + ? path2.join(dest, path2.basename(source)) + : dest; + if (!(yield ioUtil.exists(source))) { + throw new Error(`no such file or directory: ${source}`); + } + const sourceStat = yield ioUtil.stat(source); + if (sourceStat.isDirectory()) { + if (!recursive) { + throw new Error( + `Failed to copy. ${source} is a directory, but tried to copy without recursive flag.` + ); + } else { + yield cpDirRecursive(source, newDest, 0, force); + } + } else { + if (path2.relative(source, newDest) === "") { + throw new Error(`'${newDest}' and '${source}' are the same file`); + } + yield copyFile(source, newDest, force); + } + }); + } + exports2.cp = cp; + function mv(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ioUtil.exists(dest)) { + let destExists = true; + if (yield ioUtil.isDirectory(dest)) { + dest = path2.join(dest, path2.basename(source)); + destExists = yield ioUtil.exists(dest); + } + if (destExists) { + if (options.force == null || options.force) { + yield rmRF(dest); + } else { + throw new Error("Destination already exists"); + } + } + } + yield mkdirP(path2.dirname(dest)); + yield ioUtil.rename(source, dest); + }); + } + exports2.mv = mv; + function rmRF(inputPath) { + return __awaiter(this, void 0, void 0, function* () { + if (ioUtil.IS_WINDOWS) { + if (/[*"<>|]/.test(inputPath)) { + throw new Error( + 'File path must not contain `*`, `"`, `<`, `>` or `|` on Windows' + ); + } + } + try { + yield ioUtil.rm(inputPath, { + force: true, + maxRetries: 3, + recursive: true, + retryDelay: 300, + }); + } catch (err) { + throw new Error(`File was unable to be removed ${err}`); + } + }); + } + exports2.rmRF = rmRF; + function mkdirP(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(fsPath, "a path argument must be provided"); + yield ioUtil.mkdir(fsPath, { recursive: true }); + }); + } + exports2.mkdirP = mkdirP; + function which(tool, check) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + if (check) { + const result = yield which(tool, false); + if (!result) { + if (ioUtil.IS_WINDOWS) { + throw new Error( + `Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.` + ); + } else { + throw new Error( + `Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.` + ); + } + } + return result; + } + const matches = yield findInPath(tool); + if (matches && matches.length > 0) { + return matches[0]; + } + return ""; + }); + } + exports2.which = which; + function findInPath(tool) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env["PATHEXT"]) { + for (const extension of process.env["PATHEXT"].split( + path2.delimiter + )) { + if (extension) { + extensions.push(extension); + } + } + } + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return [filePath]; + } + return []; + } + if (tool.includes(path2.sep)) { + return []; + } + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path2.delimiter)) { + if (p) { + directories.push(p); + } + } + } + const matches = []; + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath( + path2.join(directory, tool), + extensions + ); + if (filePath) { + matches.push(filePath); + } + } + return matches; + }); + } + exports2.findInPath = findInPath; + function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + const copySourceDirectory = + options.copySourceDirectory == null + ? true + : Boolean(options.copySourceDirectory); + return { force, recursive, copySourceDirectory }; + } + function cpDirRecursive(sourceDir, destDir, currentDepth, force) { + return __awaiter(this, void 0, void 0, function* () { + if (currentDepth >= 255) return; + currentDepth++; + yield mkdirP(destDir); + const files = yield ioUtil.readdir(sourceDir); + for (const fileName of files) { + const srcFile = `${sourceDir}/${fileName}`; + const destFile = `${destDir}/${fileName}`; + const srcFileStat = yield ioUtil.lstat(srcFile); + if (srcFileStat.isDirectory()) { + yield cpDirRecursive(srcFile, destFile, currentDepth, force); + } else { + yield copyFile(srcFile, destFile, force); + } + } + yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); + }); + } + function copyFile(srcFile, destFile, force) { + return __awaiter(this, void 0, void 0, function* () { + if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { + try { + yield ioUtil.lstat(destFile); + yield ioUtil.unlink(destFile); + } catch (e) { + if (e.code === "EPERM") { + yield ioUtil.chmod(destFile, "0666"); + yield ioUtil.unlink(destFile); + } + } + const symlinkFull = yield ioUtil.readlink(srcFile); + yield ioUtil.symlink( + symlinkFull, + destFile, + ioUtil.IS_WINDOWS ? "junction" : null + ); + } else if (!(yield ioUtil.exists(destFile)) || force) { + yield ioUtil.copyFile(srcFile, destFile); + } + }); + } + }, +}); + +// node_modules/@actions/exec/lib/toolrunner.js +var require_toolrunner = __commonJS({ + "node_modules/@actions/exec/lib/toolrunner.js"(exports2) { + "use strict"; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function () { + return m[k]; + }, + }); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } + : function (o, v) { + o["default"] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.argStringToArray = exports2.ToolRunner = void 0; + var os2 = __importStar(require("os")); + var events = __importStar(require("events")); + var child = __importStar(require("child_process")); + var path2 = __importStar(require("path")); + var io = __importStar(require_io()); + var ioUtil = __importStar(require_io_util()); + var timers_1 = require("timers"); + var IS_WINDOWS = process.platform === "win32"; + var ToolRunner = class extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? "" : "[command]"; + if (IS_WINDOWS) { + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + } + } else { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + return cmd; + } + _processLineBuffer(data, strBuffer, onLine) { + try { + let s = strBuffer + data.toString(); + let n = s.indexOf(os2.EOL); + while (n > -1) { + const line = s.substring(0, n); + onLine(line); + s = s.substring(n + os2.EOL.length); + n = s.indexOf(os2.EOL); + } + return s; + } catch (err) { + this._debug(`error processing line. Failed with error ${err}`); + return ""; + } + } + _getSpawnFileName() { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + return process.env["COMSPEC"] || "cmd.exe"; + } + } + return this.toolPath; + } + _getSpawnArgs(options) { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg( + this.toolPath + )}`; + for (const a of this.args) { + argline += " "; + argline += options.windowsVerbatimArguments + ? a + : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); + } + _isCmdFile() { + const upperToolPath = this.toolPath.toUpperCase(); + return ( + this._endsWith(upperToolPath, ".CMD") || + this._endsWith(upperToolPath, ".BAT") + ); + } + _windowsQuoteCmdArg(arg) { + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + if (!arg) { + return '""'; + } + const cmdSpecialChars = [ + " ", + " ", + "&", + "(", + ")", + "[", + "]", + "{", + "}", + "^", + "=", + ";", + "!", + "'", + "+", + ",", + "`", + "~", + "|", + "<", + ">", + '"', + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some((x) => x === char)) { + needsQuotes = true; + break; + } + } + if (!needsQuotes) { + return arg; + } + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === "\\") { + reverse += "\\"; + } else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '"'; + } else { + quoteHit = false; + } + } + reverse += '"'; + return reverse.split("").reverse().join(""); + } + _uvQuoteCmdArg(arg) { + if (!arg) { + return '""'; + } + if (!arg.includes(" ") && !arg.includes(" ") && !arg.includes('"')) { + return arg; + } + if (!arg.includes('"') && !arg.includes("\\")) { + return `"${arg}"`; + } + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === "\\") { + reverse += "\\"; + } else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += "\\"; + } else { + quoteHit = false; + } + } + reverse += '"'; + return reverse.split("").reverse().join(""); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 1e4, + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; + } + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result["windowsVerbatimArguments"] = + options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; + } + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec() { + return __awaiter(this, void 0, void 0, function* () { + if ( + !ioUtil.isRooted(this.toolPath) && + (this.toolPath.includes("/") || + (IS_WINDOWS && this.toolPath.includes("\\"))) + ) { + this.toolPath = path2.resolve( + process.cwd(), + this.options.cwd || process.cwd(), + this.toolPath + ); + } + this.toolPath = yield io.which(this.toolPath, true); + return new Promise((resolve, reject) => + __awaiter(this, void 0, void 0, function* () { + this._debug(`exec tool: ${this.toolPath}`); + this._debug("arguments:"); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write( + this._getCommandString(optionsNonNull) + os2.EOL + ); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on("debug", (message) => { + this._debug(message); + }); + if ( + this.options.cwd && + !(yield ioUtil.exists(this.options.cwd)) + ) { + return reject( + new Error(`The cwd: ${this.options.cwd} does not exist!`) + ); + } + const fileName = this._getSpawnFileName(); + const cp = child.spawn( + fileName, + this._getSpawnArgs(optionsNonNull), + this._getSpawnOptions(this.options, fileName) + ); + let stdbuffer = ""; + if (cp.stdout) { + cp.stdout.on("data", (data) => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + stdbuffer = this._processLineBuffer( + data, + stdbuffer, + (line) => { + if ( + this.options.listeners && + this.options.listeners.stdline + ) { + this.options.listeners.stdline(line); + } + } + ); + }); + } + let errbuffer = ""; + if (cp.stderr) { + cp.stderr.on("data", (data) => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if ( + !optionsNonNull.silent && + optionsNonNull.errStream && + optionsNonNull.outStream + ) { + const s = optionsNonNull.failOnStdErr + ? optionsNonNull.errStream + : optionsNonNull.outStream; + s.write(data); + } + errbuffer = this._processLineBuffer( + data, + errbuffer, + (line) => { + if ( + this.options.listeners && + this.options.listeners.errline + ) { + this.options.listeners.errline(line); + } + } + ); + }); + } + cp.on("error", (err) => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on("exit", (code) => { + state.processExitCode = code; + state.processExited = true; + this._debug( + `Exit code ${code} received from tool '${this.toolPath}'` + ); + state.CheckComplete(); + }); + cp.on("close", (code) => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug( + `STDIO streams have closed for tool '${this.toolPath}'` + ); + state.CheckComplete(); + }); + state.on("done", (error, exitCode) => { + if (stdbuffer.length > 0) { + this.emit("stdline", stdbuffer); + } + if (errbuffer.length > 0) { + this.emit("errline", errbuffer); + } + cp.removeAllListeners(); + if (error) { + reject(error); + } else { + resolve(exitCode); + } + }); + if (this.options.input) { + if (!cp.stdin) { + throw new Error("child process missing stdin"); + } + cp.stdin.end(this.options.input); + } + }) + ); + }); + } + }; + exports2.ToolRunner = ToolRunner; + function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ""; + function append(c) { + if (escaped && c !== '"') { + arg += "\\"; + } + arg += c; + escaped = false; + } + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } else { + append(c); + } + continue; + } + if (c === "\\" && escaped) { + append(c); + continue; + } + if (c === "\\" && inQuotes) { + escaped = true; + continue; + } + if (c === " " && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ""; + } + continue; + } + append(c); + } + if (arg.length > 0) { + args.push(arg.trim()); + } + return args; + } + exports2.argStringToArray = argStringToArray; + var ExecState = class _ExecState extends events.EventEmitter { + constructor(options, toolPath) { + super(); + this.processClosed = false; + this.processError = ""; + this.processExitCode = 0; + this.processExited = false; + this.processStderr = false; + this.delay = 1e4; + this.done = false; + this.timeout = null; + if (!toolPath) { + throw new Error("toolPath must not be empty"); + } + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; + } + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } else if (this.processExited) { + this.timeout = timers_1.setTimeout( + _ExecState.HandleTimeout, + this.delay, + this + ); + } + } + _debug(message) { + this.emit("debug", message); + } + _setResult() { + let error; + if (this.processExited) { + if (this.processError) { + error = new Error( + `There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}` + ); + } else if ( + this.processExitCode !== 0 && + !this.options.ignoreReturnCode + ) { + error = new Error( + `The process '${this.toolPath}' failed with exit code ${this.processExitCode}` + ); + } else if (this.processStderr && this.options.failOnStdErr) { + error = new Error( + `The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream` + ); + } + } + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.done = true; + this.emit("done", error, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${ + state.delay / 1e3 + } seconds of the exit event from process '${ + state.toolPath + }'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); + } + }; + }, +}); + +// node_modules/@actions/exec/lib/exec.js +var require_exec = __commonJS({ + "node_modules/@actions/exec/lib/exec.js"(exports2) { + "use strict"; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function () { + return m[k]; + }, + }); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } + : function (o, v) { + o["default"] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getExecOutput = exports2.exec = void 0; + var string_decoder_1 = require("string_decoder"); + var tr = __importStar(require_toolrunner()); + function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); + } + exports2.exec = exec; + function getExecOutput(commandLine, args, options) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + let stdout = ""; + let stderr = ""; + const stdoutDecoder = new string_decoder_1.StringDecoder("utf8"); + const stderrDecoder = new string_decoder_1.StringDecoder("utf8"); + const originalStdoutListener = + (_a = + options === null || options === void 0 + ? void 0 + : options.listeners) === null || _a === void 0 + ? void 0 + : _a.stdout; + const originalStdErrListener = + (_b = + options === null || options === void 0 + ? void 0 + : options.listeners) === null || _b === void 0 + ? void 0 + : _b.stderr; + const stdErrListener = (data) => { + stderr += stderrDecoder.write(data); + if (originalStdErrListener) { + originalStdErrListener(data); + } + }; + const stdOutListener = (data) => { + stdout += stdoutDecoder.write(data); + if (originalStdoutListener) { + originalStdoutListener(data); + } + }; + const listeners = Object.assign( + Object.assign( + {}, + options === null || options === void 0 ? void 0 : options.listeners + ), + { stdout: stdOutListener, stderr: stdErrListener } + ); + const exitCode = yield exec( + commandLine, + args, + Object.assign(Object.assign({}, options), { listeners }) + ); + stdout += stdoutDecoder.end(); + stderr += stderrDecoder.end(); + return { + exitCode, + stdout, + stderr, + }; + }); + } + exports2.getExecOutput = getExecOutput; + }, +}); + +// node_modules/@actions/core/lib/platform.js +var require_platform = __commonJS({ + "node_modules/@actions/core/lib/platform.js"(exports2) { + "use strict"; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if ( + !desc || + ("get" in desc + ? !m.__esModule + : desc.writable || desc.configurable) + ) { + desc = { + enumerable: true, + get: function () { + return m[k]; + }, + }; + } + Object.defineProperty(o, k2, desc); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } + : function (o, v) { + o["default"] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __importDefault = + (exports2 && exports2.__importDefault) || + function (mod) { + return mod && mod.__esModule ? mod : { default: mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getDetails = + exports2.isLinux = + exports2.isMacOS = + exports2.isWindows = + exports2.arch = + exports2.platform = + void 0; + var os_1 = __importDefault(require("os")); + var exec = __importStar(require_exec()); + var getWindowsInfo = () => + __awaiter(void 0, void 0, void 0, function* () { + const { stdout: version } = yield exec.getExecOutput( + 'powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', + void 0, + { + silent: true, + } + ); + const { stdout: name } = yield exec.getExecOutput( + 'powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"', + void 0, + { + silent: true, + } + ); + return { + name: name.trim(), + version: version.trim(), + }; + }); + var getMacOsInfo = () => + __awaiter(void 0, void 0, void 0, function* () { + var _a, _b, _c, _d; + const { stdout } = yield exec.getExecOutput("sw_vers", void 0, { + silent: true, + }); + const version = + (_b = + (_a = stdout.match(/ProductVersion:\s*(.+)/)) === null || + _a === void 0 + ? void 0 + : _a[1]) !== null && _b !== void 0 + ? _b + : ""; + const name = + (_d = + (_c = stdout.match(/ProductName:\s*(.+)/)) === null || _c === void 0 + ? void 0 + : _c[1]) !== null && _d !== void 0 + ? _d + : ""; + return { + name, + version, + }; + }); + var getLinuxInfo = () => + __awaiter(void 0, void 0, void 0, function* () { + const { stdout } = yield exec.getExecOutput( + "lsb_release", + ["-i", "-r", "-s"], + { + silent: true, + } + ); + const [name, version] = stdout.trim().split("\n"); + return { + name, + version, + }; + }); + exports2.platform = os_1.default.platform(); + exports2.arch = os_1.default.arch(); + exports2.isWindows = exports2.platform === "win32"; + exports2.isMacOS = exports2.platform === "darwin"; + exports2.isLinux = exports2.platform === "linux"; + function getDetails() { + return __awaiter(this, void 0, void 0, function* () { + return Object.assign( + Object.assign( + {}, + yield exports2.isWindows + ? getWindowsInfo() + : exports2.isMacOS + ? getMacOsInfo() + : getLinuxInfo() + ), + { + platform: exports2.platform, + arch: exports2.arch, + isWindows: exports2.isWindows, + isMacOS: exports2.isMacOS, + isLinux: exports2.isLinux, + } + ); + }); + } + exports2.getDetails = getDetails; + }, +}); + +// node_modules/@actions/core/lib/core.js +var require_core = __commonJS({ + "node_modules/@actions/core/lib/core.js"(exports2) { + "use strict"; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if ( + !desc || + ("get" in desc + ? !m.__esModule + : desc.writable || desc.configurable) + ) { + desc = { + enumerable: true, + get: function () { + return m[k]; + }, + }; + } + Object.defineProperty(o, k2, desc); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } + : function (o, v) { + o["default"] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.platform = + exports2.toPlatformPath = + exports2.toWin32Path = + exports2.toPosixPath = + exports2.markdownSummary = + exports2.summary = + exports2.getIDToken = + exports2.getState = + exports2.saveState = + exports2.group = + exports2.endGroup = + exports2.startGroup = + exports2.info = + exports2.notice = + exports2.warning = + exports2.error = + exports2.debug = + exports2.isDebug = + exports2.setFailed = + exports2.setCommandEcho = + exports2.setOutput = + exports2.getBooleanInput = + exports2.getMultilineInput = + exports2.getInput = + exports2.addPath = + exports2.setSecret = + exports2.exportVariable = + exports2.ExitCode = + void 0; + var command_1 = require_command(); + var file_command_1 = require_file_command(); + var utils_1 = require_utils(); + var os2 = __importStar(require("os")); + var path2 = __importStar(require("path")); + var oidc_utils_1 = require_oidc_utils(); + var ExitCode; + (function (ExitCode2) { + ExitCode2[(ExitCode2["Success"] = 0)] = "Success"; + ExitCode2[(ExitCode2["Failure"] = 1)] = "Failure"; + })(ExitCode || (exports2.ExitCode = ExitCode = {})); + function exportVariable(name, val) { + const convertedVal = (0, utils_1.toCommandValue)(val); + process.env[name] = convertedVal; + const filePath = process.env["GITHUB_ENV"] || ""; + if (filePath) { + return (0, file_command_1.issueFileCommand)( + "ENV", + (0, file_command_1.prepareKeyValueMessage)(name, val) + ); + } + (0, command_1.issueCommand)("set-env", { name }, convertedVal); + } + exports2.exportVariable = exportVariable; + function setSecret(secret) { + (0, command_1.issueCommand)("add-mask", {}, secret); + } + exports2.setSecret = setSecret; + function addPath(inputPath) { + const filePath = process.env["GITHUB_PATH"] || ""; + if (filePath) { + (0, file_command_1.issueFileCommand)("PATH", inputPath); + } else { + (0, command_1.issueCommand)("add-path", {}, inputPath); + } + process.env[ + "PATH" + ] = `${inputPath}${path2.delimiter}${process.env["PATH"]}`; + } + exports2.addPath = addPath; + function getInput(name, options) { + const val = + process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); + } + exports2.getInput = getInput; + function getMultilineInput(name, options) { + const inputs = getInput(name, options) + .split("\n") + .filter((x) => x !== ""); + if (options && options.trimWhitespace === false) { + return inputs; + } + return inputs.map((input) => input.trim()); + } + exports2.getMultilineInput = getMultilineInput; + function getBooleanInput(name, options) { + const trueValue = ["true", "True", "TRUE"]; + const falseValue = ["false", "False", "FALSE"]; + const val = getInput(name, options); + if (trueValue.includes(val)) return true; + if (falseValue.includes(val)) return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name} +Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); } - exports.getBooleanInput = getBooleanInput; + exports2.getBooleanInput = getBooleanInput; function setOutput(name, value) { const filePath = process.env["GITHUB_OUTPUT"] || ""; if (filePath) { - return file_command_1.issueFileCommand( + return (0, file_command_1.issueFileCommand)( "OUTPUT", - file_command_1.prepareKeyValueMessage(name, value) + (0, file_command_1.prepareKeyValueMessage)(name, value) ); } process.stdout.write(os2.EOL); - command_1.issueCommand( + (0, command_1.issueCommand)( "set-output", { name }, - utils_1.toCommandValue(value) + (0, utils_1.toCommandValue)(value) ); } - exports.setOutput = setOutput; + exports2.setOutput = setOutput; function setCommandEcho(enabled) { - command_1.issue("echo", enabled ? "on" : "off"); + (0, command_1.issue)("echo", enabled ? "on" : "off"); } - exports.setCommandEcho = setCommandEcho; + exports2.setCommandEcho = setCommandEcho; function setFailed(message) { process.exitCode = ExitCode.Failure; error(message); } - exports.setFailed = setFailed; + exports2.setFailed = setFailed; function isDebug() { return process.env["RUNNER_DEBUG"] === "1"; } - exports.isDebug = isDebug; + exports2.isDebug = isDebug; function debug(message) { - command_1.issueCommand("debug", {}, message); + (0, command_1.issueCommand)("debug", {}, message); } - exports.debug = debug; + exports2.debug = debug; function error(message, properties = {}) { - command_1.issueCommand( + (0, command_1.issueCommand)( "error", - utils_1.toCommandProperties(properties), + (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message ); } - exports.error = error; + exports2.error = error; function warning(message, properties = {}) { - command_1.issueCommand( + (0, command_1.issueCommand)( "warning", - utils_1.toCommandProperties(properties), + (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message ); } - exports.warning = warning; + exports2.warning = warning; function notice(message, properties = {}) { - command_1.issueCommand( + (0, command_1.issueCommand)( "notice", - utils_1.toCommandProperties(properties), + (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message ); } - exports.notice = notice; + exports2.notice = notice; function info(message) { process.stdout.write(message + os2.EOL); } - exports.info = info; + exports2.info = info; function startGroup(name) { - command_1.issue("group", name); + (0, command_1.issue)("group", name); } - exports.startGroup = startGroup; + exports2.startGroup = startGroup; function endGroup() { - command_1.issue("endgroup"); + (0, command_1.issue)("endgroup"); } - exports.endGroup = endGroup; + exports2.endGroup = endGroup; function group(name, fn) { return __awaiter(this, void 0, void 0, function* () { startGroup(name); @@ -2666,71 +3805,72 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); return result; }); } - exports.group = group; + exports2.group = group; function saveState(name, value) { const filePath = process.env["GITHUB_STATE"] || ""; if (filePath) { - return file_command_1.issueFileCommand( + return (0, file_command_1.issueFileCommand)( "STATE", - file_command_1.prepareKeyValueMessage(name, value) + (0, file_command_1.prepareKeyValueMessage)(name, value) ); } - command_1.issueCommand( + (0, command_1.issueCommand)( "save-state", { name }, - utils_1.toCommandValue(value) + (0, utils_1.toCommandValue)(value) ); } - exports.saveState = saveState; + exports2.saveState = saveState; function getState(name) { return process.env[`STATE_${name}`] || ""; } - exports.getState = getState; + exports2.getState = getState; function getIDToken(aud) { return __awaiter(this, void 0, void 0, function* () { return yield oidc_utils_1.OidcClient.getIDToken(aud); }); } - exports.getIDToken = getIDToken; + exports2.getIDToken = getIDToken; var summary_1 = require_summary(); - Object.defineProperty(exports, "summary", { + Object.defineProperty(exports2, "summary", { enumerable: true, get: function () { return summary_1.summary; }, }); var summary_2 = require_summary(); - Object.defineProperty(exports, "markdownSummary", { + Object.defineProperty(exports2, "markdownSummary", { enumerable: true, get: function () { return summary_2.markdownSummary; }, }); var path_utils_1 = require_path_utils(); - Object.defineProperty(exports, "toPosixPath", { + Object.defineProperty(exports2, "toPosixPath", { enumerable: true, get: function () { return path_utils_1.toPosixPath; }, }); - Object.defineProperty(exports, "toWin32Path", { + Object.defineProperty(exports2, "toWin32Path", { enumerable: true, get: function () { return path_utils_1.toWin32Path; }, }); - Object.defineProperty(exports, "toPlatformPath", { + Object.defineProperty(exports2, "toPlatformPath", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; }, }); + exports2.platform = __importStar(require_platform()); }, }); // node_modules/inherits/inherits_browser.js var require_inherits_browser = __commonJS({ - "node_modules/inherits/inherits_browser.js"(exports, module2) { + "node_modules/inherits/inherits_browser.js"(exports2, module2) { if (typeof Object.create === "function") { module2.exports = function inherits(ctor, superCtor) { if (superCtor) { @@ -2761,7 +3901,7 @@ var require_inherits_browser = __commonJS({ // node_modules/inherits/inherits.js var require_inherits = __commonJS({ - "node_modules/inherits/inherits.js"(exports, module2) { + "node_modules/inherits/inherits.js"(exports2, module2) { try { util = require("util"); if (typeof util.inherits !== "function") throw ""; @@ -2775,7 +3915,7 @@ var require_inherits = __commonJS({ // node_modules/ltx/lib/escape.js var require_escape = __commonJS({ - "node_modules/ltx/lib/escape.js"(exports) { + "node_modules/ltx/lib/escape.js"(exports2) { "use strict"; var escapeXMLTable = { "&": "&", @@ -2819,10 +3959,10 @@ var require_escape = __commonJS({ } throw new Error("Illegal XML entity " + match3); } - exports.escapeXML = function escapeXML(s) { + exports2.escapeXML = function escapeXML(s) { return s.replace(/&|<|>|"|'/g, escapeXMLReplace); }; - exports.unescapeXML = function unescapeXML(s) { + exports2.unescapeXML = function unescapeXML(s) { var result = ""; var start = -1; var end = -1; @@ -2841,10 +3981,10 @@ var require_escape = __commonJS({ result = result + s.substring(previous); return result; }; - exports.escapeXMLText = function escapeXMLText(s) { + exports2.escapeXMLText = function escapeXMLText(s) { return s.replace(/&|<|>/g, escapeXMLReplace); }; - exports.unescapeXMLText = function unescapeXMLText(s) { + exports2.unescapeXMLText = function unescapeXMLText(s) { return s.replace(/&(amp|#38|lt|#60|gt|#62);/g, unescapeXMLReplace); }; }, @@ -2852,7 +3992,7 @@ var require_escape = __commonJS({ // node_modules/ltx/lib/equal.js var require_equal = __commonJS({ - "node_modules/ltx/lib/equal.js"(exports, module2) { + "node_modules/ltx/lib/equal.js"(exports2, module2) { "use strict"; function nameEqual(a, b) { return a.name === b.name; @@ -2902,7 +4042,7 @@ var require_equal = __commonJS({ // node_modules/ltx/lib/clone.js var require_clone = __commonJS({ - "node_modules/ltx/lib/clone.js"(exports, module2) { + "node_modules/ltx/lib/clone.js"(exports2, module2) { "use strict"; module2.exports = function clone(el) { var clone2 = new el.constructor(el.name, el.attrs); @@ -2917,7 +4057,7 @@ var require_clone = __commonJS({ // node_modules/ltx/lib/Element.js var require_Element = __commonJS({ - "node_modules/ltx/lib/Element.js"(exports, module2) { + "node_modules/ltx/lib/Element.js"(exports2, module2) { "use strict"; var escape = require_escape(); var escapeXML = escape.escapeXML; @@ -3215,7 +4355,7 @@ var require_Element = __commonJS({ // node_modules/ltx/lib/parsers/ltx.js var require_ltx = __commonJS({ - "node_modules/ltx/lib/parsers/ltx.js"(exports, module2) { + "node_modules/ltx/lib/parsers/ltx.js"(exports2, module2) { "use strict"; var inherits = require_inherits(); var EventEmitter = require("events").EventEmitter; @@ -3419,7 +4559,7 @@ var require_ltx = __commonJS({ // node_modules/ltx/lib/Parser.js var require_Parser = __commonJS({ - "node_modules/ltx/lib/Parser.js"(exports, module2) { + "node_modules/ltx/lib/Parser.js"(exports2, module2) { "use strict"; var EventEmitter = require("events").EventEmitter; var inherits = require_inherits(); @@ -3484,8 +4624,8 @@ var require_Parser = __commonJS({ }); // node_modules/ltx/lib/parse.js -var require_parse2 = __commonJS({ - "node_modules/ltx/lib/parse.js"(exports, module2) { +var require_parse = __commonJS({ + "node_modules/ltx/lib/parse.js"(exports2, module2) { "use strict"; var Parser = require_Parser(); module2.exports = function parse(data, options) { @@ -3516,7 +4656,7 @@ var require_parse2 = __commonJS({ // node_modules/ltx/lib/createElement.js var require_createElement = __commonJS({ - "node_modules/ltx/lib/createElement.js"(exports, module2) { + "node_modules/ltx/lib/createElement.js"(exports2, module2) { "use strict"; var Element = require_Element(); module2.exports = function createElement(name, attrs) { @@ -3532,7 +4672,7 @@ var require_createElement = __commonJS({ // node_modules/ltx/lib/tagString.js var require_tagString = __commonJS({ - "node_modules/ltx/lib/tagString.js"(exports, module2) { + "node_modules/ltx/lib/tagString.js"(exports2, module2) { "use strict"; var escape = require_escape().escapeXML; module2.exports = function tagString() { @@ -3550,10 +4690,10 @@ var require_tagString = __commonJS({ // node_modules/ltx/lib/tag.js var require_tag = __commonJS({ - "node_modules/ltx/lib/tag.js"(exports, module2) { + "node_modules/ltx/lib/tag.js"(exports2, module2) { "use strict"; var tagString = require_tagString(); - var parse = require_parse2(); + var parse = require_parse(); module2.exports = function tag() { return parse(tagString.apply(null, arguments)); }; @@ -3562,7 +4702,7 @@ var require_tag = __commonJS({ // node_modules/ltx/lib/is.js var require_is = __commonJS({ - "node_modules/ltx/lib/is.js"(exports, module2) { + "node_modules/ltx/lib/is.js"(exports2, module2) { "use strict"; var Element = require_Element(); module2.exports.isNode = function is(el) { @@ -3578,8 +4718,8 @@ var require_is = __commonJS({ }); // node_modules/ltx/lib/stringify.js -var require_stringify2 = __commonJS({ - "node_modules/ltx/lib/stringify.js"(exports, module2) { +var require_stringify = __commonJS({ + "node_modules/ltx/lib/stringify.js"(exports2, module2) { "use strict"; function stringify(el, indent, level) { if (typeof indent === "number") indent = " ".repeat(indent); @@ -3612,9 +4752,9 @@ var require_stringify2 = __commonJS({ // node_modules/ltx/index.js var require_ltx2 = __commonJS({ - "node_modules/ltx/index.js"(exports, module2) { + "node_modules/ltx/index.js"(exports2, module2) { "use strict"; - var parse = require_parse2(); + var parse = require_parse(); var Parser = require_Parser(); var escape = require_escape(); var Element = require_Element(); @@ -3624,35 +4764,35 @@ var require_ltx2 = __commonJS({ var tagString = require_tagString(); var is = require_is(); var clone = require_clone(); - var stringify = require_stringify2(); - exports = module2.exports = function ltx2() { + var stringify = require_stringify(); + exports2 = module2.exports = function ltx2() { return tag.apply(null, arguments); }; - exports.Element = Element; - exports.equal = equal.equal; - exports.nameEqual = equal.name; - exports.attrsEqual = equal.attrs; - exports.childrenEqual = equal.children; - exports.isNode = is.isNode; - exports.isElement = is.isElement; - exports.isText = is.isText; - exports.clone = clone; - exports.createElement = createElement; - exports.escapeXML = escape.escapeXML; - exports.unescapeXML = escape.unescapeXML; - exports.escapeXMLText = escape.escapeXMLText; - exports.unescapeXMLText = escape.unescapeXMLText; - exports.Parser = Parser; - exports.parse = parse; - exports.tag = tag; - exports.tagString = tagString; - exports.stringify = stringify; + exports2.Element = Element; + exports2.equal = equal.equal; + exports2.nameEqual = equal.name; + exports2.attrsEqual = equal.attrs; + exports2.childrenEqual = equal.children; + exports2.isNode = is.isNode; + exports2.isElement = is.isElement; + exports2.isText = is.isText; + exports2.clone = clone; + exports2.createElement = createElement; + exports2.escapeXML = escape.escapeXML; + exports2.unescapeXML = escape.unescapeXML; + exports2.escapeXMLText = escape.escapeXMLText; + exports2.unescapeXMLText = escape.unescapeXMLText; + exports2.Parser = Parser; + exports2.parse = parse; + exports2.tag = tag; + exports2.tagString = tagString; + exports2.stringify = stringify; }, }); // node_modules/concat-map/index.js var require_concat_map = __commonJS({ - "node_modules/concat-map/index.js"(exports, module2) { + "node_modules/concat-map/index.js"(exports2, module2) { module2.exports = function (xs, fn) { var res = []; for (var i = 0; i < xs.length; i++) { @@ -3672,7 +4812,7 @@ var require_concat_map = __commonJS({ // node_modules/balanced-match/index.js var require_balanced_match = __commonJS({ - "node_modules/balanced-match/index.js"(exports, module2) { + "node_modules/balanced-match/index.js"(exports2, module2) { "use strict"; module2.exports = balanced; function balanced(a, b, str) { @@ -3729,7 +4869,7 @@ var require_balanced_match = __commonJS({ // node_modules/brace-expansion/index.js var require_brace_expansion = __commonJS({ - "node_modules/brace-expansion/index.js"(exports, module2) { + "node_modules/brace-expansion/index.js"(exports2, module2) { var concatMap = require_concat_map(); var balanced = require_balanced_match(); module2.exports = expandTop; @@ -3785,12 +4925,14 @@ var require_brace_expansion = __commonJS({ parts.push.apply(parts, p); return parts; } - function expandTop(str) { + function expandTop(str, options) { if (!str) return []; + options = options || {}; + var max = options.max == null ? Infinity : options.max; if (str.substr(0, 2) === "{}") { str = "\\{\\}" + str.substr(2); } - return expand(escapeBraces(str), true).map(unescapeBraces); + return expand(escapeBraces(str), max, true).map(unescapeBraces); } function embrace(str) { return "{" + str + "}"; @@ -3804,7 +4946,7 @@ var require_brace_expansion = __commonJS({ function gte(i, y) { return i >= y; } - function expand(str, isTop) { + function expand(str, max, isTop) { var expansions = []; var m = balanced("{", "}", str); if (!m || /\$$/.test(m.pre)) return [str]; @@ -3813,9 +4955,9 @@ var require_brace_expansion = __commonJS({ var isSequence = isNumericSequence || isAlphaSequence; var isOptions = m.body.indexOf(",") >= 0; if (!isSequence && !isOptions) { - if (m.post.match(/,.*\}/)) { + if (m.post.match(/,(?!,).*\}/)) { str = m.pre + "{" + m.body + escClose + m.post; - return expand(str); + return expand(str, max, true); } return [str]; } @@ -3825,9 +4967,9 @@ var require_brace_expansion = __commonJS({ } else { n = parseCommaParts(m.body); if (n.length === 1) { - n = expand(n[0], false).map(embrace); + n = expand(n[0], max, false).map(embrace); if (n.length === 1) { - var post = m.post.length ? expand(m.post, false) : [""]; + var post = m.post.length ? expand(m.post, max, false) : [""]; return post.map(function (p) { return m.pre + n[0] + p; }); @@ -3835,13 +4977,13 @@ var require_brace_expansion = __commonJS({ } } var pre = m.pre; - var post = m.post.length ? expand(m.post, false) : [""]; + var post = m.post.length ? expand(m.post, max, false) : [""]; var N; if (isSequence) { var x = numeric(n[0]); var y = numeric(n[1]); var width = Math.max(n[0].length, n[1].length); - var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; + var incr = n.length == 3 ? Math.max(Math.abs(numeric(n[2])), 1) : 1; var test = lte; var reverse = y < x; if (reverse) { @@ -3850,7 +4992,7 @@ var require_brace_expansion = __commonJS({ } var pad = n.some(isPadded); N = []; - for (var i = x; test(i, y); i += incr) { + for (var i = x; test(i, y) && N.length < max; i += incr) { var c; if (isAlphaSequence) { c = String.fromCharCode(i); @@ -3870,11 +5012,11 @@ var require_brace_expansion = __commonJS({ } } else { N = concatMap(n, function (el) { - return expand(el, false); + return expand(el, max, false); }); } for (var j = 0; j < N.length; j++) { - for (var k = 0; k < post.length; k++) { + for (var k = 0; k < post.length && expansions.length < max; k++) { var expansion = pre + N[j] + post[k]; if (!isTop || isSequence || expansion) expansions.push(expansion); } @@ -3886,7 +5028,7 @@ var require_brace_expansion = __commonJS({ // node_modules/minimatch/minimatch.js var require_minimatch = __commonJS({ - "node_modules/minimatch/minimatch.js"(exports, module2) { + "node_modules/minimatch/minimatch.js"(exports2, module2) { var minimatch2 = (module2.exports = (p, pattern, options = {}) => { assertValidPattern(pattern); if (!options.nocomment && pattern.charAt(0) === "#") { @@ -3903,7 +5045,8 @@ var require_minimatch = __commonJS({ sep: "/", }; minimatch2.sep = path2.sep; - var GLOBSTAR = Symbol("globstar **"); + var GLOBSTAR = /* @__PURE__ */ Symbol("globstar **"); + minimatch2.GLOBSTAR = GLOBSTAR; var expand = require_brace_expansion(); var plTypes = { "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, @@ -3974,7 +5117,7 @@ var require_minimatch = __commonJS({ throw new TypeError("pattern is too long"); } }; - var SUBPARSE = Symbol("subparse"); + var SUBPARSE = /* @__PURE__ */ Symbol("subparse"); minimatch2.makeRe = (pattern, options) => new Minimatch(pattern, options || {}).makeRe(); minimatch2.match = (list, pattern, options = {}) => { @@ -3991,10 +5134,14 @@ var require_minimatch = __commonJS({ constructor(pattern, options) { assertValidPattern(pattern); if (!options) options = {}; - if (path2.sep !== "/") { + if (!options.allowWindowsEscape && path2.sep !== "/") { pattern = pattern.split(path2.sep).join("/"); } this.options = options; + this.maxGlobstarRecursion = + options.maxGlobstarRecursion !== void 0 + ? options.maxGlobstarRecursion + : 200; this.set = []; this.pattern = pattern; this.regexp = null; @@ -4016,92 +5163,210 @@ var require_minimatch = __commonJS({ this.empty = true; return; } - this.parseNegate(); - let set = (this.globSet = this.braceExpand()); - if (options.debug) this.debug = (...args) => console.error(...args); - this.debug(this.pattern, set); - set = this.globParts = set.map((s) => s.split(slashSplit)); - this.debug(this.pattern, set); - set = set.map((s, si, set2) => s.map(this.parse, this)); - this.debug(this.pattern, set); - set = set.filter((s) => s.indexOf(false) === -1); - this.debug(this.pattern, set); - this.set = set; + this.parseNegate(); + let set = (this.globSet = this.braceExpand()); + if (options.debug) this.debug = (...args) => console.error(...args); + this.debug(this.pattern, set); + set = this.globParts = set.map((s) => s.split(slashSplit)); + this.debug(this.pattern, set); + set = set.map((s, si, set2) => s.map(this.parse, this)); + this.debug(this.pattern, set); + set = set.filter((s) => s.indexOf(false) === -1); + this.debug(this.pattern, set); + this.set = set; + } + parseNegate() { + if (this.options.nonegate) return; + const pattern = this.pattern; + let negate = false; + let negateOffset = 0; + for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) { + negate = !negate; + negateOffset++; + } + if (negateOffset) this.pattern = pattern.substr(negateOffset); + this.negate = negate; + } + // set partial to true to test if, for example, + // "/a/b" matches the start of "/*/b/*/d" + // Partial means, if you run out of file before you run + // out of pattern, then that's fine, as long as all + // the parts match. + matchOne(file, pattern, partial) { + if (pattern.indexOf(GLOBSTAR) !== -1) { + return this._matchGlobstar(file, pattern, partial, 0, 0); + } + return this._matchOne(file, pattern, partial, 0, 0); + } + _matchGlobstar(file, pattern, partial, fileIndex, patternIndex) { + let firstgs = -1; + for (let i = patternIndex; i < pattern.length; i++) { + if (pattern[i] === GLOBSTAR) { + firstgs = i; + break; + } + } + let lastgs = -1; + for (let i = pattern.length - 1; i >= 0; i--) { + if (pattern[i] === GLOBSTAR) { + lastgs = i; + break; + } + } + const head = pattern.slice(patternIndex, firstgs); + const body = partial + ? pattern.slice(firstgs + 1) + : pattern.slice(firstgs + 1, lastgs); + const tail = partial ? [] : pattern.slice(lastgs + 1); + if (head.length) { + const fileHead = file.slice(fileIndex, fileIndex + head.length); + if (!this._matchOne(fileHead, head, partial, 0, 0)) { + return false; + } + fileIndex += head.length; + } + let fileTailMatch = 0; + if (tail.length) { + if (tail.length + fileIndex > file.length) return false; + const tailStart = file.length - tail.length; + if (this._matchOne(file, tail, partial, tailStart, 0)) { + fileTailMatch = tail.length; + } else { + if ( + file[file.length - 1] !== "" || + fileIndex + tail.length === file.length + ) { + return false; + } + if (!this._matchOne(file, tail, partial, tailStart - 1, 0)) { + return false; + } + fileTailMatch = tail.length + 1; + } + } + if (!body.length) { + let sawSome = !!fileTailMatch; + for (let i = fileIndex; i < file.length - fileTailMatch; i++) { + const f = String(file[i]); + sawSome = true; + if ( + f === "." || + f === ".." || + (!this.options.dot && f.charAt(0) === ".") + ) { + return false; + } + } + return partial || sawSome; + } + const bodySegments = [[[], 0]]; + let currentBody = bodySegments[0]; + let nonGsParts = 0; + const nonGsPartsSums = [0]; + for (const b of body) { + if (b === GLOBSTAR) { + nonGsPartsSums.push(nonGsParts); + currentBody = [[], 0]; + bodySegments.push(currentBody); + } else { + currentBody[0].push(b); + nonGsParts++; + } + } + let idx = bodySegments.length - 1; + const fileLength = file.length - fileTailMatch; + for (const b of bodySegments) { + b[1] = fileLength - (nonGsPartsSums[idx--] + b[0].length); + } + return !!this._matchGlobStarBodySections( + file, + bodySegments, + fileIndex, + 0, + partial, + 0, + !!fileTailMatch + ); } - parseNegate() { - if (this.options.nonegate) return; - const pattern = this.pattern; - let negate = false; - let negateOffset = 0; - for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) { - negate = !negate; - negateOffset++; + // return false for "nope, not matching" + // return null for "not matching, cannot keep trying" + _matchGlobStarBodySections( + file, + bodySegments, + fileIndex, + bodyIndex, + partial, + globStarDepth, + sawTail + ) { + const bs = bodySegments[bodyIndex]; + if (!bs) { + for (let i = fileIndex; i < file.length; i++) { + sawTail = true; + const f = file[i]; + if ( + f === "." || + f === ".." || + (!this.options.dot && f.charAt(0) === ".") + ) { + return false; + } + } + return sawTail; + } + const [body, after] = bs; + while (fileIndex <= after) { + const m = this._matchOne( + file.slice(0, fileIndex + body.length), + body, + partial, + fileIndex, + 0 + ); + if (m && globStarDepth < this.maxGlobstarRecursion) { + const sub = this._matchGlobStarBodySections( + file, + bodySegments, + fileIndex + body.length, + bodyIndex + 1, + partial, + globStarDepth + 1, + sawTail + ); + if (sub !== false) { + return sub; + } + } + const f = file[fileIndex]; + if ( + f === "." || + f === ".." || + (!this.options.dot && f.charAt(0) === ".") + ) { + return false; + } + fileIndex++; } - if (negateOffset) this.pattern = pattern.substr(negateOffset); - this.negate = negate; + return partial || null; } - matchOne(file, pattern, partial) { - var options = this.options; - this.debug("matchOne", { this: this, file, pattern }); - this.debug("matchOne", file.length, pattern.length); + _matchOne(file, pattern, partial, fileIndex, patternIndex) { + let fi, pi, fl, pl; for ( - var fi = 0, pi = 0, fl = file.length, pl = pattern.length; + fi = fileIndex, + pi = patternIndex, + fl = file.length, + pl = pattern.length; fi < fl && pi < pl; fi++, pi++ ) { this.debug("matchOne loop"); - var p = pattern[pi]; - var f = file[fi]; + const p = pattern[pi]; + const f = file[fi]; this.debug(pattern, p, f); - if (p === false) return false; - if (p === GLOBSTAR) { - this.debug("GLOBSTAR", [pattern, p, f]); - var fr = fi; - var pr = pi + 1; - if (pr === pl) { - this.debug("** at the end"); - for (; fi < fl; fi++) { - if ( - file[fi] === "." || - file[fi] === ".." || - (!options.dot && file[fi].charAt(0) === ".") - ) - return false; - } - return true; - } - while (fr < fl) { - var swallowee = file[fr]; - this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug("globstar found match!", fr, fl, swallowee); - return true; - } else { - if ( - swallowee === "." || - swallowee === ".." || - (!options.dot && swallowee.charAt(0) === ".") - ) { - this.debug("dot detected!", file, fr, pattern, pr); - break; - } - this.debug("globstar swallow a segment, and continue"); - fr++; - } - } - if (partial) { - this.debug("\n>>> no match, partial?", file, fr, pattern, pr); - if (fr === fl) return true; - } - return false; - } - var hit; + if (p === false || p === GLOBSTAR) return false; + let hit; if (typeof p === "string") { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase(); - } else { - hit = f === p; - } + hit = f === p; this.debug("string match", p, f, hit); } else { hit = f.match(p); @@ -4130,7 +5395,7 @@ var require_minimatch = __commonJS({ } if (pattern === "") return ""; let re = ""; - let hasMagic = false; + let hasMagic = !!options.nocase; let escaping = false; const patternListStack = []; const negativeLists = []; @@ -4141,8 +5406,16 @@ var require_minimatch = __commonJS({ let cs; let pl; let sp; - const patternStart = - pattern.charAt(0) === "." + let dotTravAllowed = pattern.charAt(0) === "."; + let dotFileAllowed = options.dot || dotTravAllowed; + const patternStart = () => + dotTravAllowed + ? "" + : dotFileAllowed + ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" + : "(?!\\.)"; + const subPatternStart = (p) => + p.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" @@ -4168,12 +5441,19 @@ var require_minimatch = __commonJS({ }; for (let i = 0, c; i < pattern.length && (c = pattern.charAt(i)); i++) { this.debug("%s %s %s %j", pattern, i, re, c); - if (escaping && reSpecials[c]) { - re += "\\" + c; + if (escaping) { + if (c === "/") { + return false; + } + if (reSpecials[c]) { + re += "\\"; + } + re += c; escaping = false; continue; } switch (c) { + /* istanbul ignore next */ case "/": { return false; } @@ -4181,6 +5461,8 @@ var require_minimatch = __commonJS({ clearStateChar(); escaping = true; continue; + // the various stateChar values + // for the "extglob" stuff. case "?": case "*": case "+": @@ -4193,12 +5475,13 @@ var require_minimatch = __commonJS({ re += c; continue; } + if (c === "*" && stateChar === "*") continue; this.debug("call clearStateChar %j", stateChar); clearStateChar(); stateChar = c; if (options.noext) clearStateChar(); continue; - case "(": + case "(": { if (inClass) { re += "("; continue; @@ -4207,40 +5490,55 @@ var require_minimatch = __commonJS({ re += "\\("; continue; } - patternListStack.push({ + const plEntry = { type: stateChar, start: i - 1, reStart: re.length, open: plTypes[stateChar].open, close: plTypes[stateChar].close, - }); - re += stateChar === "!" ? "(?:(?!(?:" : "(?:"; + }; + this.debug(this.pattern, " ", plEntry); + patternListStack.push(plEntry); + re += plEntry.open; + if (plEntry.start === 0 && plEntry.type !== "!") { + dotTravAllowed = true; + re += subPatternStart(pattern.slice(i + 1)); + } this.debug("plType %j %j", stateChar, re); stateChar = false; continue; - case ")": - if (inClass || !patternListStack.length) { + } + case ")": { + const plEntry = patternListStack[patternListStack.length - 1]; + if (inClass || !plEntry) { re += "\\)"; continue; } + patternListStack.pop(); clearStateChar(); hasMagic = true; - pl = patternListStack.pop(); + pl = plEntry; re += pl.close; if (pl.type === "!") { - negativeLists.push(pl); + negativeLists.push(Object.assign(pl, { reEnd: re.length })); } - pl.reEnd = re.length; continue; - case "|": - if (inClass || !patternListStack.length || escaping) { + } + case "|": { + const plEntry = patternListStack[patternListStack.length - 1]; + if (inClass || !plEntry) { re += "\\|"; - escaping = false; continue; } clearStateChar(); re += "|"; + if (plEntry.start === 0 && plEntry.type !== "!") { + dotTravAllowed = true; + re += subPatternStart(pattern.slice(i + 1)); + } continue; + } + // these are mostly the same in regexp and glob case "[": clearStateChar(); if (inClass) { @@ -4255,7 +5553,6 @@ var require_minimatch = __commonJS({ case "]": if (i === classStart + 1 || !inClass) { re += "\\" + c; - escaping = false; continue; } cs = pattern.substring(classStart + 1, i); @@ -4274,12 +5571,11 @@ var require_minimatch = __commonJS({ continue; default: clearStateChar(); - if (escaping) { - escaping = false; - } else if (reSpecials[c] && !(c === "^" && inClass)) { + if (reSpecials[c] && !(c === "^" && inClass)) { re += "\\"; } re += c; + break; } } if (inClass) { @@ -4315,7 +5611,9 @@ var require_minimatch = __commonJS({ const nlFirst = re.slice(nl.reStart, nl.reEnd - 8); let nlAfter = re.slice(nl.reEnd); const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter; - const openParensBefore = nlBefore.split("(").length - 1; + const closeParensBefore = nlBefore.split(")").length; + const openParensBefore = + nlBefore.split("(").length - closeParensBefore; let cleanAfter = nlAfter; for (let i = 0; i < openParensBefore; i++) { cleanAfter = cleanAfter.replace(/\)[+*?]?/, ""); @@ -4328,7 +5626,7 @@ var require_minimatch = __commonJS({ re = "(?=.)" + re; } if (addPatternStart) { - re = patternStart + re; + re = patternStart() + re; } if (isSub === SUBPARSE) { return [re, hasMagic]; @@ -4361,17 +5659,42 @@ var require_minimatch = __commonJS({ : twoStarNoDot; const flags = options.nocase ? "i" : ""; let re = set - .map((pattern) => - pattern + .map((pattern) => { + pattern = pattern .map((p) => - p === GLOBSTAR - ? twoStar - : typeof p === "string" + typeof p === "string" ? regExpEscape(p) + : p === GLOBSTAR + ? GLOBSTAR : p._src ) - .join("\\/") - ) + .reduce((set2, p) => { + if (!(set2[set2.length - 1] === GLOBSTAR && p === GLOBSTAR)) { + set2.push(p); + } + return set2; + }, []); + pattern.forEach((p, i) => { + if (p !== GLOBSTAR || pattern[i - 1] === GLOBSTAR) { + return; + } + if (i === 0) { + if (pattern.length > 1) { + pattern[i + 1] = + "(?:\\/|" + twoStar + "\\/)?" + pattern[i + 1]; + } else { + pattern[i] = twoStar; + } + } else if (i === pattern.length - 1) { + pattern[i - 1] += "(?:\\/|" + twoStar + ")?"; + } else { + pattern[i - 1] += + "(?:\\/|\\/" + twoStar + "\\/)" + pattern[i + 1]; + pattern[i + 1] = GLOBSTAR; + } + }); + return pattern.filter((p) => p !== GLOBSTAR).join("/"); + }) .join("|"); re = "^(?:" + re + ")$"; if (this.negate) re = "^(?!" + re + ").*$"; @@ -4423,9 +5746,9 @@ var require_minimatch = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/common.js +// node_modules/js-yaml/lib/common.js var require_common = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/common.js"(exports, module2) { + "node_modules/js-yaml/lib/common.js"(exports2, module2) { "use strict"; function isNothing(subject) { return typeof subject === "undefined" || subject === null; @@ -4439,24 +5762,22 @@ var require_common = __commonJS({ return [sequence]; } function extend(target, source) { - var index, length, key, sourceKeys; if (source) { - sourceKeys = Object.keys(source); + const sourceKeys = Object.keys(source); for ( - index = 0, length = sourceKeys.length; + let index = 0, length = sourceKeys.length; index < length; index += 1 ) { - key = sourceKeys[index]; + const key = sourceKeys[index]; target[key] = source[key]; } } return target; } function repeat(string, count) { - var result = "", - cycle; - for (cycle = 0; cycle < count; cycle += 1) { + let result = ""; + for (let cycle = 0; cycle < count; cycle += 1) { result += string; } return result; @@ -4473,18 +5794,34 @@ var require_common = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/exception.js +// node_modules/js-yaml/lib/exception.js var require_exception = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/exception.js"(exports, module2) { + "node_modules/js-yaml/lib/exception.js"(exports2, module2) { "use strict"; + function formatError(exception, compact) { + let where = ""; + const message = exception.reason || "(unknown reason)"; + if (!exception.mark) return message; + if (exception.mark.name) { + where += 'in "' + exception.mark.name + '" '; + } + where += + "(" + + (exception.mark.line + 1) + + ":" + + (exception.mark.column + 1) + + ")"; + if (!compact && exception.mark.snippet) { + where += "\n\n" + exception.mark.snippet; + } + return message + " " + where; + } function YAMLException(reason, mark) { Error.call(this); this.name = "YAMLException"; this.reason = reason; this.mark = mark; - this.message = - (this.reason || "(unknown reason)") + - (this.mark ? " " + this.mark.toString() : ""); + this.message = formatError(this, false); if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } else { @@ -4494,108 +5831,145 @@ var require_exception = __commonJS({ YAMLException.prototype = Object.create(Error.prototype); YAMLException.prototype.constructor = YAMLException; YAMLException.prototype.toString = function toString(compact) { - var result = this.name + ": "; - result += this.reason || "(unknown reason)"; - if (!compact && this.mark) { - result += " " + this.mark.toString(); - } - return result; + return this.name + ": " + formatError(this, compact); }; module2.exports = YAMLException; }, }); -// node_modules/js-yaml/lib/js-yaml/mark.js -var require_mark = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/mark.js"(exports, module2) { +// node_modules/js-yaml/lib/snippet.js +var require_snippet = __commonJS({ + "node_modules/js-yaml/lib/snippet.js"(exports2, module2) { "use strict"; var common = require_common(); - function Mark(name, buffer, position, line, column) { - this.name = name; - this.buffer = buffer; - this.position = position; - this.line = line; - this.column = column; - } - Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { - var head, start, tail, end, snippet; - if (!this.buffer) return null; - indent = indent || 4; - maxLength = maxLength || 75; - head = ""; - start = this.position; - while ( - start > 0 && - "\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(start - 1)) === -1 - ) { - start -= 1; - if (this.position - start > maxLength / 2 - 1) { - head = " ... "; - start += 5; - break; - } - } - tail = ""; - end = this.position; - while ( - end < this.buffer.length && - "\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(end)) === -1 - ) { - end += 1; - if (end - this.position > maxLength / 2 - 1) { - tail = " ... "; - end -= 5; - break; - } + function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { + let head = ""; + let tail = ""; + const maxHalfLength = Math.floor(maxLineLength / 2) - 1; + if (position - lineStart > maxHalfLength) { + head = " ... "; + lineStart = position - maxHalfLength + head.length; + } + if (lineEnd - position > maxHalfLength) { + tail = " ..."; + lineEnd = position + maxHalfLength - tail.length; } - snippet = this.buffer.slice(start, end); - return ( - common.repeat(" ", indent) + - head + - snippet + - tail + - "\n" + - common.repeat(" ", indent + this.position - start + head.length) + - "^" + return { + str: + head + + buffer.slice(lineStart, lineEnd).replace(/\t/g, "\u2192") + + tail, + pos: position - lineStart + head.length, + // relative position + }; + } + function padStart(string, max) { + return common.repeat(" ", max - string.length) + string; + } + function makeSnippet(mark, options) { + options = Object.create(options || null); + if (!mark.buffer) return null; + if (!options.maxLength) options.maxLength = 79; + if (typeof options.indent !== "number") options.indent = 1; + if (typeof options.linesBefore !== "number") options.linesBefore = 3; + if (typeof options.linesAfter !== "number") options.linesAfter = 2; + const re = /\r?\n|\r|\0/g; + const lineStarts = [0]; + const lineEnds = []; + let match3; + let foundLineNo = -1; + while ((match3 = re.exec(mark.buffer))) { + lineEnds.push(match3.index); + lineStarts.push(match3.index + match3[0].length); + if (mark.position <= match3.index && foundLineNo < 0) { + foundLineNo = lineStarts.length - 2; + } + } + if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; + let result = ""; + const lineNoLength = Math.min( + mark.line + options.linesAfter, + lineEnds.length + ).toString().length; + const maxLineLength = + options.maxLength - (options.indent + lineNoLength + 3); + for (let i = 1; i <= options.linesBefore; i++) { + if (foundLineNo - i < 0) break; + const line2 = getLine( + mark.buffer, + lineStarts[foundLineNo - i], + lineEnds[foundLineNo - i], + mark.position - + (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), + maxLineLength + ); + result = + common.repeat(" ", options.indent) + + padStart((mark.line - i + 1).toString(), lineNoLength) + + " | " + + line2.str + + "\n" + + result; + } + const line = getLine( + mark.buffer, + lineStarts[foundLineNo], + lineEnds[foundLineNo], + mark.position, + maxLineLength ); - }; - Mark.prototype.toString = function toString(compact) { - var snippet, - where = ""; - if (this.name) { - where += 'in "' + this.name + '" '; - } - where += "at line " + (this.line + 1) + ", column " + (this.column + 1); - if (!compact) { - snippet = this.getSnippet(); - if (snippet) { - where += ":\n" + snippet; - } + result += + common.repeat(" ", options.indent) + + padStart((mark.line + 1).toString(), lineNoLength) + + " | " + + line.str + + "\n"; + result += + common.repeat("-", options.indent + lineNoLength + 3 + line.pos) + + "^\n"; + for (let i = 1; i <= options.linesAfter; i++) { + if (foundLineNo + i >= lineEnds.length) break; + const line2 = getLine( + mark.buffer, + lineStarts[foundLineNo + i], + lineEnds[foundLineNo + i], + mark.position - + (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), + maxLineLength + ); + result += + common.repeat(" ", options.indent) + + padStart((mark.line + i + 1).toString(), lineNoLength) + + " | " + + line2.str + + "\n"; } - return where; - }; - module2.exports = Mark; + return result.replace(/\n$/, ""); + } + module2.exports = makeSnippet; }, }); -// node_modules/js-yaml/lib/js-yaml/type.js +// node_modules/js-yaml/lib/type.js var require_type = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type.js"(exports, module2) { + "node_modules/js-yaml/lib/type.js"(exports2, module2) { "use strict"; var YAMLException = require_exception(); var TYPE_CONSTRUCTOR_OPTIONS = [ "kind", + "multi", "resolve", "construct", "instanceOf", "predicate", "represent", + "representName", "defaultStyle", "styleAliases", ]; var YAML_NODE_KINDS = ["scalar", "sequence", "mapping"]; function compileStyleAliases(map) { - var result = {}; + const result = {}; if (map !== null) { Object.keys(map).forEach(function (style) { map[style].forEach(function (alias) { @@ -4618,6 +5992,7 @@ var require_type = __commonJS({ ); } }); + this.options = options; this.tag = tag; this.kind = options["kind"] || null; this.resolve = @@ -4633,7 +6008,9 @@ var require_type = __commonJS({ this.instanceOf = options["instanceOf"] || null; this.predicate = options["predicate"] || null; this.represent = options["represent"] || null; + this.representName = options["representName"] || null; this.defaultStyle = options["defaultStyle"] || null; + this.multi = options["multi"] || false; this.styleAliases = compileStyleAliases(options["styleAliases"] || null); if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { throw new YAMLException( @@ -4649,117 +6026,125 @@ var require_type = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/schema.js +// node_modules/js-yaml/lib/schema.js var require_schema = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/schema.js"(exports, module2) { + "node_modules/js-yaml/lib/schema.js"(exports2, module2) { "use strict"; - var common = require_common(); var YAMLException = require_exception(); var Type = require_type(); - function compileList(schema, name, result) { - var exclude = []; - schema.include.forEach(function (includedSchema) { - result = compileList(includedSchema, name, result); - }); + function compileList(schema, name) { + const result = []; schema[name].forEach(function (currentType) { + let newIndex = result.length; result.forEach(function (previousType, previousIndex) { if ( previousType.tag === currentType.tag && - previousType.kind === currentType.kind + previousType.kind === currentType.kind && + previousType.multi === currentType.multi ) { - exclude.push(previousIndex); + newIndex = previousIndex; } }); - result.push(currentType); - }); - return result.filter(function (type2, index) { - return exclude.indexOf(index) === -1; + result[newIndex] = currentType; }); + return result; } function compileMap() { - var result = { - scalar: {}, - sequence: {}, - mapping: {}, - fallback: {}, + const result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {}, + multi: { + scalar: [], + sequence: [], + mapping: [], + fallback: [], }, - index, - length; + }; function collectType(type2) { - result[type2.kind][type2.tag] = result["fallback"][type2.tag] = type2; + if (type2.multi) { + result.multi[type2.kind].push(type2); + result.multi["fallback"].push(type2); + } else { + result[type2.kind][type2.tag] = result["fallback"][type2.tag] = type2; + } } - for (index = 0, length = arguments.length; index < length; index += 1) { + for ( + let index = 0, length = arguments.length; + index < length; + index += 1 + ) { arguments[index].forEach(collectType); } return result; } function Schema(definition) { - this.include = definition.include || []; - this.implicit = definition.implicit || []; - this.explicit = definition.explicit || []; - this.implicit.forEach(function (type2) { + return this.extend(definition); + } + Schema.prototype.extend = function extend(definition) { + let implicit = []; + let explicit = []; + if (definition instanceof Type) { + explicit.push(definition); + } else if (Array.isArray(definition)) { + explicit = explicit.concat(definition); + } else if ( + definition && + (Array.isArray(definition.implicit) || + Array.isArray(definition.explicit)) + ) { + if (definition.implicit) + implicit = implicit.concat(definition.implicit); + if (definition.explicit) + explicit = explicit.concat(definition.explicit); + } else { + throw new YAMLException( + "Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })" + ); + } + implicit.forEach(function (type2) { + if (!(type2 instanceof Type)) { + throw new YAMLException( + "Specified list of YAML types (or a single Type object) contains a non-Type object." + ); + } if (type2.loadKind && type2.loadKind !== "scalar") { throw new YAMLException( "There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported." ); } + if (type2.multi) { + throw new YAMLException( + "There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit." + ); + } }); - this.compiledImplicit = compileList(this, "implicit", []); - this.compiledExplicit = compileList(this, "explicit", []); - this.compiledTypeMap = compileMap( - this.compiledImplicit, - this.compiledExplicit - ); - } - Schema.DEFAULT = null; - Schema.create = function createSchema() { - var schemas, types; - switch (arguments.length) { - case 1: - schemas = Schema.DEFAULT; - types = arguments[0]; - break; - case 2: - schemas = arguments[0]; - types = arguments[1]; - break; - default: + explicit.forEach(function (type2) { + if (!(type2 instanceof Type)) { throw new YAMLException( - "Wrong number of arguments for Schema.create function" + "Specified list of YAML types (or a single Type object) contains a non-Type object." ); - } - schemas = common.toArray(schemas); - types = common.toArray(types); - if ( - !schemas.every(function (schema) { - return schema instanceof Schema; - }) - ) { - throw new YAMLException( - "Specified list of super schemas (or a single Schema object) contains a non-Schema object." - ); - } - if ( - !types.every(function (type2) { - return type2 instanceof Type; - }) - ) { - throw new YAMLException( - "Specified list of YAML types (or a single Type object) contains a non-Type object." - ); - } - return new Schema({ - include: schemas, - explicit: types, + } }); + const result = Object.create(Schema.prototype); + result.implicit = (this.implicit || []).concat(implicit); + result.explicit = (this.explicit || []).concat(explicit); + result.compiledImplicit = compileList(result, "implicit"); + result.compiledExplicit = compileList(result, "explicit"); + result.compiledTypeMap = compileMap( + result.compiledImplicit, + result.compiledExplicit + ); + return result; }; module2.exports = Schema; }, }); -// node_modules/js-yaml/lib/js-yaml/type/str.js +// node_modules/js-yaml/lib/type/str.js var require_str = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/str.js"(exports, module2) { + "node_modules/js-yaml/lib/type/str.js"(exports2, module2) { "use strict"; var Type = require_type(); module2.exports = new Type("tag:yaml.org,2002:str", { @@ -4771,9 +6156,9 @@ var require_str = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/type/seq.js +// node_modules/js-yaml/lib/type/seq.js var require_seq = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/seq.js"(exports, module2) { + "node_modules/js-yaml/lib/type/seq.js"(exports2, module2) { "use strict"; var Type = require_type(); module2.exports = new Type("tag:yaml.org,2002:seq", { @@ -4785,9 +6170,9 @@ var require_seq = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/type/map.js +// node_modules/js-yaml/lib/type/map.js var require_map = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/map.js"(exports, module2) { + "node_modules/js-yaml/lib/type/map.js"(exports2, module2) { "use strict"; var Type = require_type(); module2.exports = new Type("tag:yaml.org,2002:map", { @@ -4799,9 +6184,9 @@ var require_map = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +// node_modules/js-yaml/lib/schema/failsafe.js var require_failsafe = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/schema/failsafe.js"(exports, module2) { + "node_modules/js-yaml/lib/schema/failsafe.js"(exports2, module2) { "use strict"; var Schema = require_schema(); module2.exports = new Schema({ @@ -4810,14 +6195,14 @@ var require_failsafe = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/type/null.js +// node_modules/js-yaml/lib/type/null.js var require_null = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/null.js"(exports, module2) { + "node_modules/js-yaml/lib/type/null.js"(exports2, module2) { "use strict"; var Type = require_type(); function resolveYamlNull(data) { if (data === null) return true; - var max = data.length; + const max = data.length; return ( (max === 1 && data === "~") || (max === 4 && (data === "null" || data === "Null" || data === "NULL")) @@ -4847,20 +6232,23 @@ var require_null = __commonJS({ camelcase: function () { return "Null"; }, + empty: function () { + return ""; + }, }, defaultStyle: "lowercase", }); }, }); -// node_modules/js-yaml/lib/js-yaml/type/bool.js +// node_modules/js-yaml/lib/type/bool.js var require_bool = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/bool.js"(exports, module2) { + "node_modules/js-yaml/lib/type/bool.js"(exports2, module2) { "use strict"; var Type = require_type(); function resolveYamlBoolean(data) { if (data === null) return false; - var max = data.length; + const max = data.length; return ( (max === 4 && (data === "true" || data === "True" || data === "TRUE")) || @@ -4895,31 +6283,30 @@ var require_bool = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/type/int.js +// node_modules/js-yaml/lib/type/int.js var require_int = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/int.js"(exports, module2) { + "node_modules/js-yaml/lib/type/int.js"(exports2, module2) { "use strict"; var common = require_common(); var Type = require_type(); function isHexCode(c) { return ( - (48 <= c && c <= 57) || (65 <= c && c <= 70) || (97 <= c && c <= 102) + (c >= 48 && c <= 57) || (c >= 65 && c <= 70) || (c >= 97 && c <= 102) ); } function isOctCode(c) { - return 48 <= c && c <= 55; + return c >= 48 && c <= 55; } function isDecCode(c) { - return 48 <= c && c <= 57; + return c >= 48 && c <= 57; } function resolveYamlInteger(data) { if (data === null) return false; - var max = data.length, - index = 0, - hasDigits = false, - ch; + const max = data.length; + let index = 0; + let hasDigits = false; if (!max) return false; - ch = data[index]; + let ch = data[index]; if (ch === "-" || ch === "+") { ch = data[++index]; } @@ -4930,54 +6317,41 @@ var require_int = __commonJS({ index++; for (; index < max; index++) { ch = data[index]; - if (ch === "_") continue; if (ch !== "0" && ch !== "1") return false; hasDigits = true; } - return hasDigits && ch !== "_"; + return hasDigits && Number.isFinite(parseYamlInteger(data)); } if (ch === "x") { index++; for (; index < max; index++) { - ch = data[index]; - if (ch === "_") continue; if (!isHexCode(data.charCodeAt(index))) return false; hasDigits = true; } - return hasDigits && ch !== "_"; + return hasDigits && Number.isFinite(parseYamlInteger(data)); } - for (; index < max; index++) { - ch = data[index]; - if (ch === "_") continue; - if (!isOctCode(data.charCodeAt(index))) return false; - hasDigits = true; + if (ch === "o") { + index++; + for (; index < max; index++) { + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && Number.isFinite(parseYamlInteger(data)); } - return hasDigits && ch !== "_"; } - if (ch === "_") return false; for (; index < max; index++) { - ch = data[index]; - if (ch === "_") continue; - if (ch === ":") break; if (!isDecCode(data.charCodeAt(index))) { return false; } hasDigits = true; } - if (!hasDigits || ch === "_") return false; - if (ch !== ":") return true; - return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); + if (!hasDigits) return false; + return Number.isFinite(parseYamlInteger(data)); } - function constructYamlInteger(data) { - var value = data, - sign = 1, - ch, - base, - digits = []; - if (value.indexOf("_") !== -1) { - value = value.replace(/_/g, ""); - } - ch = value[0]; + function parseYamlInteger(data) { + let value = data; + let sign = 1; + let ch = value[0]; if (ch === "-" || ch === "+") { if (ch === "-") sign = -1; value = value.slice(1); @@ -4986,23 +6360,14 @@ var require_int = __commonJS({ if (value === "0") return 0; if (ch === "0") { if (value[1] === "b") return sign * parseInt(value.slice(2), 2); - if (value[1] === "x") return sign * parseInt(value, 16); - return sign * parseInt(value, 8); - } - if (value.indexOf(":") !== -1) { - value.split(":").forEach(function (v) { - digits.unshift(parseInt(v, 10)); - }); - value = 0; - base = 1; - digits.forEach(function (d) { - value += d * base; - base *= 60; - }); - return sign * value; + if (value[1] === "x") return sign * parseInt(value.slice(2), 16); + if (value[1] === "o") return sign * parseInt(value.slice(2), 8); } return sign * parseInt(value, 10); } + function constructYamlInteger(data) { + return parseYamlInteger(data); + } function isInteger(object) { return ( Object.prototype.toString.call(object) === "[object Number]" && @@ -5023,8 +6388,8 @@ var require_int = __commonJS({ }, octal: function (obj) { return obj >= 0 - ? "0" + obj.toString(8) - : "-0" + obj.toString(8).slice(1); + ? "0o" + obj.toString(8) + : "-0o" + obj.toString(8).slice(1); }, decimal: function (obj) { return obj.toString(10); @@ -5046,27 +6411,32 @@ var require_int = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/type/float.js +// node_modules/js-yaml/lib/type/float.js var require_float = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/float.js"(exports, module2) { + "node_modules/js-yaml/lib/type/float.js"(exports2, module2) { "use strict"; var common = require_common(); var Type = require_type(); var YAML_FLOAT_PATTERN = new RegExp( - "^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$" + // 2.5e4, 2.5 and integers + "^(?:[-+]?(?:[0-9]+)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$" + ); + var YAML_FLOAT_SPECIAL_PATTERN = new RegExp( + "^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$" ); function resolveYamlFloat(data) { if (data === null) return false; - if (!YAML_FLOAT_PATTERN.test(data) || data[data.length - 1] === "_") { + if (!YAML_FLOAT_PATTERN.test(data)) { return false; } - return true; + if (Number.isFinite(parseFloat(data, 10))) { + return true; + } + return YAML_FLOAT_SPECIAL_PATTERN.test(data); } function constructYamlFloat(data) { - var value, sign, base, digits; - value = data.replace(/_/g, "").toLowerCase(); - sign = value[0] === "-" ? -1 : 1; - digits = []; + let value = data.toLowerCase(); + const sign = value[0] === "-" ? -1 : 1; if ("+-".indexOf(value[0]) >= 0) { value = value.slice(1); } @@ -5074,23 +6444,11 @@ var require_float = __commonJS({ return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; } else if (value === ".nan") { return NaN; - } else if (value.indexOf(":") >= 0) { - value.split(":").forEach(function (v) { - digits.unshift(parseFloat(v, 10)); - }); - value = 0; - base = 1; - digits.forEach(function (d) { - value += d * base; - base *= 60; - }); - return sign * value; } return sign * parseFloat(value, 10); } var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; function representYamlFloat(object, style) { - var res; if (isNaN(object)) { switch (style) { case "lowercase": @@ -5121,7 +6479,7 @@ var require_float = __commonJS({ } else if (common.isNegativeZero(object)) { return "-0.0"; } - res = object.toString(10); + const res = object.toString(10); return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res; } function isFloat(object) { @@ -5141,13 +6499,11 @@ var require_float = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/schema/json.js +// node_modules/js-yaml/lib/schema/json.js var require_json = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/schema/json.js"(exports, module2) { + "node_modules/js-yaml/lib/schema/json.js"(exports2, module2) { "use strict"; - var Schema = require_schema(); - module2.exports = new Schema({ - include: [require_failsafe()], + module2.exports = require_failsafe().extend({ implicit: [ require_null(), require_bool(), @@ -5158,20 +6514,17 @@ var require_json = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/schema/core.js +// node_modules/js-yaml/lib/schema/core.js var require_core2 = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/schema/core.js"(exports, module2) { + "node_modules/js-yaml/lib/schema/core.js"(exports2, module2) { "use strict"; - var Schema = require_schema(); - module2.exports = new Schema({ - include: [require_json()], - }); + module2.exports = require_json(); }, }); -// node_modules/js-yaml/lib/js-yaml/type/timestamp.js +// node_modules/js-yaml/lib/type/timestamp.js var require_timestamp = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/timestamp.js"(exports, module2) { + "node_modules/js-yaml/lib/type/timestamp.js"(exports2, module2) { "use strict"; var Type = require_type(); var YAML_DATE_REGEXP = new RegExp( @@ -5187,30 +6540,20 @@ var require_timestamp = __commonJS({ return false; } function constructYamlTimestamp(data) { - var match3, - year, - month, - day, - hour, - minute, - second, - fraction = 0, - delta = null, - tz_hour, - tz_minute, - date; - match3 = YAML_DATE_REGEXP.exec(data); + let fraction = 0; + let delta = null; + let match3 = YAML_DATE_REGEXP.exec(data); if (match3 === null) match3 = YAML_TIMESTAMP_REGEXP.exec(data); if (match3 === null) throw new Error("Date resolve error"); - year = +match3[1]; - month = +match3[2] - 1; - day = +match3[3]; + const year = +match3[1]; + const month = +match3[2] - 1; + const day = +match3[3]; if (!match3[4]) { return new Date(Date.UTC(year, month, day)); } - hour = +match3[4]; - minute = +match3[5]; - second = +match3[6]; + const hour = +match3[4]; + const minute = +match3[5]; + const second = +match3[6]; if (match3[7]) { fraction = match3[7].slice(0, 3); while (fraction.length < 3) { @@ -5219,12 +6562,12 @@ var require_timestamp = __commonJS({ fraction = +fraction; } if (match3[9]) { - tz_hour = +match3[10]; - tz_minute = +(match3[11] || 0); - delta = (tz_hour * 60 + tz_minute) * 6e4; + const tzHour = +match3[10]; + const tzMinute = +(match3[11] || 0); + delta = (tzHour * 60 + tzMinute) * 6e4; if (match3[9] === "-") delta = -delta; } - date = new Date( + const date = new Date( Date.UTC(year, month, day, hour, minute, second, fraction) ); if (delta) date.setTime(date.getTime() - delta); @@ -5243,9 +6586,9 @@ var require_timestamp = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/type/merge.js +// node_modules/js-yaml/lib/type/merge.js var require_merge = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/merge.js"(exports, module2) { + "node_modules/js-yaml/lib/type/merge.js"(exports2, module2) { "use strict"; var Type = require_type(); function resolveYamlMerge(data) { @@ -5258,28 +6601,20 @@ var require_merge = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/type/binary.js +// node_modules/js-yaml/lib/type/binary.js var require_binary = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/binary.js"(exports, module2) { + "node_modules/js-yaml/lib/type/binary.js"(exports2, module2) { "use strict"; - var NodeBuffer; - try { - _require = require; - NodeBuffer = _require("buffer").Buffer; - } catch (__) {} - var _require; var Type = require_type(); var BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r"; function resolveYamlBinary(data) { if (data === null) return false; - var code, - idx, - bitlen = 0, - max = data.length, - map = BASE64_MAP; - for (idx = 0; idx < max; idx++) { - code = map.indexOf(data.charAt(idx)); + let bitlen = 0; + const max = data.length; + const map = BASE64_MAP; + for (let idx = 0; idx < max; idx++) { + const code = map.indexOf(data.charAt(idx)); if (code > 64) continue; if (code < 0) return false; bitlen += 6; @@ -5287,14 +6622,12 @@ var require_binary = __commonJS({ return bitlen % 8 === 0; } function constructYamlBinary(data) { - var idx, - tailbits, - input = data.replace(/[\r\n=]/g, ""), - max = input.length, - map = BASE64_MAP, - bits = 0, - result = []; - for (idx = 0; idx < max; idx++) { + const input = data.replace(/[\r\n=]/g, ""); + const max = input.length; + const map = BASE64_MAP; + let bits = 0; + const result = []; + for (let idx = 0; idx < max; idx++) { if (idx % 4 === 0 && idx) { result.push((bits >> 16) & 255); result.push((bits >> 8) & 255); @@ -5302,7 +6635,7 @@ var require_binary = __commonJS({ } bits = (bits << 6) | map.indexOf(input.charAt(idx)); } - tailbits = (max % 4) * 6; + const tailbits = (max % 4) * 6; if (tailbits === 0) { result.push((bits >> 16) & 255); result.push((bits >> 8) & 255); @@ -5313,21 +6646,14 @@ var require_binary = __commonJS({ } else if (tailbits === 12) { result.push((bits >> 4) & 255); } - if (NodeBuffer) { - return NodeBuffer.from - ? NodeBuffer.from(result) - : new NodeBuffer(result); - } - return result; + return new Uint8Array(result); } function representYamlBinary(object) { - var result = "", - bits = 0, - idx, - tail, - max = object.length, - map = BASE64_MAP; - for (idx = 0; idx < max; idx++) { + let result = ""; + let bits = 0; + const max = object.length; + const map = BASE64_MAP; + for (let idx = 0; idx < max; idx++) { if (idx % 3 === 0 && idx) { result += map[(bits >> 18) & 63]; result += map[(bits >> 12) & 63]; @@ -5336,7 +6662,7 @@ var require_binary = __commonJS({ } bits = (bits << 8) + object[idx]; } - tail = max % 3; + const tail = max % 3; if (tail === 0) { result += map[(bits >> 18) & 63]; result += map[(bits >> 12) & 63]; @@ -5355,8 +6681,8 @@ var require_binary = __commonJS({ } return result; } - function isBinary(object) { - return NodeBuffer && NodeBuffer.isBuffer(object); + function isBinary(obj) { + return Object.prototype.toString.call(obj) === "[object Uint8Array]"; } module2.exports = new Type("tag:yaml.org,2002:binary", { kind: "scalar", @@ -5368,26 +6694,22 @@ var require_binary = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/type/omap.js +// node_modules/js-yaml/lib/type/omap.js var require_omap = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/omap.js"(exports, module2) { + "node_modules/js-yaml/lib/type/omap.js"(exports2, module2) { "use strict"; var Type = require_type(); var _hasOwnProperty = Object.prototype.hasOwnProperty; var _toString = Object.prototype.toString; function resolveYamlOmap(data) { if (data === null) return true; - var objectKeys = [], - index, - length, - pair, - pairKey, - pairHasKey, - object = data; - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - pairHasKey = false; + const objectKeys = []; + const object = data; + for (let index = 0, length = object.length; index < length; index += 1) { + const pair = object[index]; + let pairHasKey = false; if (_toString.call(pair) !== "[object Object]") return false; + let pairKey; for (pairKey in pair) { if (_hasOwnProperty.call(pair, pairKey)) { if (!pairHasKey) pairHasKey = true; @@ -5411,25 +6733,20 @@ var require_omap = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/type/pairs.js +// node_modules/js-yaml/lib/type/pairs.js var require_pairs = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/pairs.js"(exports, module2) { + "node_modules/js-yaml/lib/type/pairs.js"(exports2, module2) { "use strict"; var Type = require_type(); var _toString = Object.prototype.toString; function resolveYamlPairs(data) { if (data === null) return true; - var index, - length, - pair, - keys, - result, - object = data; - result = new Array(object.length); - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; + const object = data; + const result = new Array(object.length); + for (let index = 0, length = object.length; index < length; index += 1) { + const pair = object[index]; if (_toString.call(pair) !== "[object Object]") return false; - keys = Object.keys(pair); + const keys = Object.keys(pair); if (keys.length !== 1) return false; result[index] = [keys[0], pair[keys[0]]]; } @@ -5437,16 +6754,11 @@ var require_pairs = __commonJS({ } function constructYamlPairs(data) { if (data === null) return []; - var index, - length, - pair, - keys, - result, - object = data; - result = new Array(object.length); - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - keys = Object.keys(pair); + const object = data; + const result = new Array(object.length); + for (let index = 0, length = object.length; index < length; index += 1) { + const pair = object[index]; + const keys = Object.keys(pair); result[index] = [keys[0], pair[keys[0]]]; } return result; @@ -5459,219 +6771,57 @@ var require_pairs = __commonJS({ }, }); -// node_modules/js-yaml/lib/js-yaml/type/set.js +// node_modules/js-yaml/lib/type/set.js var require_set = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/set.js"(exports, module2) { - "use strict"; - var Type = require_type(); - var _hasOwnProperty = Object.prototype.hasOwnProperty; - function resolveYamlSet(data) { - if (data === null) return true; - var key, - object = data; - for (key in object) { - if (_hasOwnProperty.call(object, key)) { - if (object[key] !== null) return false; - } - } - return true; - } - function constructYamlSet(data) { - return data !== null ? data : {}; - } - module2.exports = new Type("tag:yaml.org,2002:set", { - kind: "mapping", - resolve: resolveYamlSet, - construct: constructYamlSet, - }); - }, -}); - -// node_modules/js-yaml/lib/js-yaml/schema/default_safe.js -var require_default_safe = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/schema/default_safe.js"(exports, module2) { - "use strict"; - var Schema = require_schema(); - module2.exports = new Schema({ - include: [require_core2()], - implicit: [require_timestamp(), require_merge()], - explicit: [ - require_binary(), - require_omap(), - require_pairs(), - require_set(), - ], - }); - }, -}); - -// node_modules/js-yaml/lib/js-yaml/type/js/undefined.js -var require_undefined = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/js/undefined.js"(exports, module2) { - "use strict"; - var Type = require_type(); - function resolveJavascriptUndefined() { - return true; - } - function constructJavascriptUndefined() { - return void 0; - } - function representJavascriptUndefined() { - return ""; - } - function isUndefined(object) { - return typeof object === "undefined"; - } - module2.exports = new Type("tag:yaml.org,2002:js/undefined", { - kind: "scalar", - resolve: resolveJavascriptUndefined, - construct: constructJavascriptUndefined, - predicate: isUndefined, - represent: representJavascriptUndefined, - }); - }, -}); - -// node_modules/js-yaml/lib/js-yaml/type/js/regexp.js -var require_regexp = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/js/regexp.js"(exports, module2) { - "use strict"; - var Type = require_type(); - function resolveJavascriptRegExp(data) { - if (data === null) return false; - if (data.length === 0) return false; - var regexp = data, - tail = /\/([gim]*)$/.exec(data), - modifiers = ""; - if (regexp[0] === "/") { - if (tail) modifiers = tail[1]; - if (modifiers.length > 3) return false; - if (regexp[regexp.length - modifiers.length - 1] !== "/") return false; - } - return true; - } - function constructJavascriptRegExp(data) { - var regexp = data, - tail = /\/([gim]*)$/.exec(data), - modifiers = ""; - if (regexp[0] === "/") { - if (tail) modifiers = tail[1]; - regexp = regexp.slice(1, regexp.length - modifiers.length - 1); - } - return new RegExp(regexp, modifiers); - } - function representJavascriptRegExp(object) { - var result = "/" + object.source + "/"; - if (object.global) result += "g"; - if (object.multiline) result += "m"; - if (object.ignoreCase) result += "i"; - return result; - } - function isRegExp(object) { - return Object.prototype.toString.call(object) === "[object RegExp]"; - } - module2.exports = new Type("tag:yaml.org,2002:js/regexp", { - kind: "scalar", - resolve: resolveJavascriptRegExp, - construct: constructJavascriptRegExp, - predicate: isRegExp, - represent: representJavascriptRegExp, - }); - }, -}); - -// node_modules/js-yaml/lib/js-yaml/type/js/function.js -var require_function = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/type/js/function.js"(exports, module2) { + "node_modules/js-yaml/lib/type/set.js"(exports2, module2) { "use strict"; - var esprima; - try { - _require = require; - esprima = _require("esprima"); - } catch (_) { - if (typeof window !== "undefined") esprima = window.esprima; - } - var _require; var Type = require_type(); - function resolveJavascriptFunction(data) { - if (data === null) return false; - try { - var source = "(" + data + ")", - ast = esprima.parse(source, { range: true }); - if ( - ast.type !== "Program" || - ast.body.length !== 1 || - ast.body[0].type !== "ExpressionStatement" || - (ast.body[0].expression.type !== "ArrowFunctionExpression" && - ast.body[0].expression.type !== "FunctionExpression") - ) { - return false; - } - return true; - } catch (err) { - return false; - } - } - function constructJavascriptFunction(data) { - var source = "(" + data + ")", - ast = esprima.parse(source, { range: true }), - params = [], - body; - if ( - ast.type !== "Program" || - ast.body.length !== 1 || - ast.body[0].type !== "ExpressionStatement" || - (ast.body[0].expression.type !== "ArrowFunctionExpression" && - ast.body[0].expression.type !== "FunctionExpression") - ) { - throw new Error("Failed to resolve function"); - } - ast.body[0].expression.params.forEach(function (param) { - params.push(param.name); - }); - body = ast.body[0].expression.body.range; - if (ast.body[0].expression.body.type === "BlockStatement") { - return new Function(params, source.slice(body[0] + 1, body[1] - 1)); + var _hasOwnProperty = Object.prototype.hasOwnProperty; + function resolveYamlSet(data) { + if (data === null) return true; + const object = data; + for (const key in object) { + if (_hasOwnProperty.call(object, key)) { + if (object[key] !== null) return false; + } } - return new Function(params, "return " + source.slice(body[0], body[1])); - } - function representJavascriptFunction(object) { - return object.toString(); + return true; } - function isFunction(object) { - return Object.prototype.toString.call(object) === "[object Function]"; + function constructYamlSet(data) { + return data !== null ? data : {}; } - module2.exports = new Type("tag:yaml.org,2002:js/function", { - kind: "scalar", - resolve: resolveJavascriptFunction, - construct: constructJavascriptFunction, - predicate: isFunction, - represent: representJavascriptFunction, + module2.exports = new Type("tag:yaml.org,2002:set", { + kind: "mapping", + resolve: resolveYamlSet, + construct: constructYamlSet, }); }, }); -// node_modules/js-yaml/lib/js-yaml/schema/default_full.js -var require_default_full = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/schema/default_full.js"(exports, module2) { +// node_modules/js-yaml/lib/schema/default.js +var require_default = __commonJS({ + "node_modules/js-yaml/lib/schema/default.js"(exports2, module2) { "use strict"; - var Schema = require_schema(); - module2.exports = Schema.DEFAULT = new Schema({ - include: [require_default_safe()], - explicit: [require_undefined(), require_regexp(), require_function()], + module2.exports = require_core2().extend({ + implicit: [require_timestamp(), require_merge()], + explicit: [ + require_binary(), + require_omap(), + require_pairs(), + require_set(), + ], }); }, }); -// node_modules/js-yaml/lib/js-yaml/loader.js +// node_modules/js-yaml/lib/loader.js var require_loader = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/loader.js"(exports, module2) { + "node_modules/js-yaml/lib/loader.js"(exports2, module2) { "use strict"; var common = require_common(); var YAMLException = require_exception(); - var Mark = require_mark(); - var DEFAULT_SAFE_SCHEMA = require_default_safe(); - var DEFAULT_FULL_SCHEMA = require_default_full(); + var makeSnippet = require_snippet(); + var DEFAULT_SCHEMA = require_default(); var _hasOwnProperty = Object.prototype.hasOwnProperty; var CONTEXT_FLOW_IN = 1; var CONTEXT_FLOW_OUT = 2; @@ -5683,32 +6833,31 @@ var require_loader = __commonJS({ var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; - var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; - var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; + var PATTERN_FLOW_INDICATORS = /[,\[\]{}]/; + var PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/; var PATTERN_TAG_URI = - /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + /^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i; function _class(obj) { return Object.prototype.toString.call(obj); } - function is_EOL(c) { + function isEol(c) { return c === 10 || c === 13; } - function is_WHITE_SPACE(c) { + function isWhiteSpace(c) { return c === 9 || c === 32; } - function is_WS_OR_EOL(c) { + function isWsOrEol(c) { return c === 9 || c === 32 || c === 10 || c === 13; } - function is_FLOW_INDICATOR(c) { + function isFlowIndicator(c) { return c === 44 || c === 91 || c === 93 || c === 123 || c === 125; } function fromHexCode(c) { - var lc; - if (48 <= c && c <= 57) { + if (c >= 48 && c <= 57) { return c - 48; } - lc = c | 32; - if (97 <= lc && lc <= 102) { + const lc = c | 32; + if (lc >= 97 && lc <= 102) { return lc - 97 + 10; } return -1; @@ -5726,49 +6875,52 @@ var require_loader = __commonJS({ return 0; } function fromDecimalCode(c) { - if (48 <= c && c <= 57) { + if (c >= 48 && c <= 57) { return c - 48; } return -1; } function simpleEscapeSequence(c) { - return c === 48 - ? "\0" - : c === 97 - ? "\x07" - : c === 98 - ? "\b" - : c === 116 - ? " " - : c === 9 - ? " " - : c === 110 - ? "\n" - : c === 118 - ? "\v" - : c === 102 - ? "\f" - : c === 114 - ? "\r" - : c === 101 - ? "\x1B" - : c === 32 - ? " " - : c === 34 - ? '"' - : c === 47 - ? "/" - : c === 92 - ? "\\" - : c === 78 - ? "\x85" - : c === 95 - ? "\xA0" - : c === 76 - ? "\u2028" - : c === 80 - ? "\u2029" - : ""; + switch (c) { + case 48: + return "\0"; + case 97: + return "\x07"; + case 98: + return "\b"; + case 116: + return " "; + case 9: + return " "; + case 110: + return "\n"; + case 118: + return "\v"; + case 102: + return "\f"; + case 114: + return "\r"; + case 101: + return "\x1B"; + case 32: + return " "; + case 34: + return '"'; + case 47: + return "/"; + case 92: + return "\\"; + case 78: + return "\x85"; + case 95: + return "\xA0"; + case 76: + return "\u2028"; + case 80: + return "\u2029"; + default: + return ""; + } } function charFromCodepoint(c) { if (c <= 65535) { @@ -5779,21 +6931,38 @@ var require_loader = __commonJS({ ((c - 65536) & 1023) + 56320 ); } + function setProperty(object, key, value) { + if (key === "__proto__") { + Object.defineProperty(object, key, { + configurable: true, + enumerable: true, + writable: true, + value, + }); + } else { + object[key] = value; + } + } var simpleEscapeCheck = new Array(256); var simpleEscapeMap = new Array(256); - for (i = 0; i < 256; i++) { + for (let i = 0; i < 256; i++) { simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; simpleEscapeMap[i] = simpleEscapeSequence(i); } - var i; function State(input, options) { this.input = input; this.filename = options["filename"] || null; - this.schema = options["schema"] || DEFAULT_FULL_SCHEMA; + this.schema = options["schema"] || DEFAULT_SCHEMA; this.onWarning = options["onWarning"] || null; this.legacy = options["legacy"] || false; this.json = options["json"] || false; this.listener = options["listener"] || null; + this.maxDepth = + typeof options["maxDepth"] === "number" ? options["maxDepth"] : 100; + this.maxMergeSeqLength = + typeof options["maxMergeSeqLength"] === "number" + ? options["maxMergeSeqLength"] + : 20; this.implicitTypes = this.schema.compiledImplicit; this.typeMap = this.schema.compiledTypeMap; this.length = input.length; @@ -5801,19 +6970,22 @@ var require_loader = __commonJS({ this.line = 0; this.lineStart = 0; this.lineIndent = 0; + this.depth = 0; + this.firstTabInLine = -1; this.documents = []; + this.anchorMapTransactions = []; } function generateError(state, message) { - return new YAMLException( - message, - new Mark( - state.filename, - state.input, - state.position, - state.line, - state.position - state.lineStart - ) - ); + const mark = { + name: state.filename, + buffer: state.input.slice(0, -1), + // omit trailing \0 + position: state.position, + line: state.line, + column: state.position - state.lineStart, + }; + mark.snippet = makeSnippet(mark); + return new YAMLException(message, mark); } function throwError(state, message) { throw generateError(state, message); @@ -5823,21 +6995,85 @@ var require_loader = __commonJS({ state.onWarning.call(null, generateError(state, message)); } } + function storeAnchor(state, name, value) { + const transactions = state.anchorMapTransactions; + if (transactions.length !== 0) { + const transaction = transactions[transactions.length - 1]; + if (!_hasOwnProperty.call(transaction, name)) { + transaction[name] = { + existed: _hasOwnProperty.call(state.anchorMap, name), + value: state.anchorMap[name], + }; + } + } + state.anchorMap[name] = value; + } + function beginAnchorTransaction(state) { + state.anchorMapTransactions.push(/* @__PURE__ */ Object.create(null)); + } + function commitAnchorTransaction(state) { + const transaction = state.anchorMapTransactions.pop(); + const transactions = state.anchorMapTransactions; + if (transactions.length === 0) return; + const parent = transactions[transactions.length - 1]; + const names = Object.keys(transaction); + for (let index = 0, length = names.length; index < length; index += 1) { + const name = names[index]; + if (!_hasOwnProperty.call(parent, name)) { + parent[name] = transaction[name]; + } + } + } + function rollbackAnchorTransaction(state) { + const transaction = state.anchorMapTransactions.pop(); + const names = Object.keys(transaction); + for (let index = names.length - 1; index >= 0; index -= 1) { + const entry = transaction[names[index]]; + if (entry.existed) { + state.anchorMap[names[index]] = entry.value; + } else { + delete state.anchorMap[names[index]]; + } + } + } + function snapshotState(state) { + return { + position: state.position, + line: state.line, + lineStart: state.lineStart, + lineIndent: state.lineIndent, + firstTabInLine: state.firstTabInLine, + tag: state.tag, + anchor: state.anchor, + kind: state.kind, + result: state.result, + }; + } + function restoreState(state, snapshot) { + state.position = snapshot.position; + state.line = snapshot.line; + state.lineStart = snapshot.lineStart; + state.lineIndent = snapshot.lineIndent; + state.firstTabInLine = snapshot.firstTabInLine; + state.tag = snapshot.tag; + state.anchor = snapshot.anchor; + state.kind = snapshot.kind; + state.result = snapshot.result; + } var directiveHandlers = { YAML: function handleYamlDirective(state, name, args) { - var match3, major, minor; if (state.version !== null) { throwError(state, "duplication of %YAML directive"); } if (args.length !== 1) { throwError(state, "YAML directive accepts exactly one argument"); } - match3 = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + const match3 = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); if (match3 === null) { throwError(state, "ill-formed argument of the YAML directive"); } - major = parseInt(match3[1], 10); - minor = parseInt(match3[2], 10); + const major = parseInt(match3[1], 10); + const minor = parseInt(match3[2], 10); if (major !== 1) { throwError(state, "unacceptable YAML version of the document"); } @@ -5848,11 +7084,11 @@ var require_loader = __commonJS({ } }, TAG: function handleTagDirective(state, name, args) { - var handle, prefix; + let prefix; if (args.length !== 2) { throwError(state, "TAG directive accepts exactly two arguments"); } - handle = args[0]; + const handle = args[0]; prefix = args[1]; if (!PATTERN_TAG_HANDLE.test(handle)) { throwError( @@ -5874,22 +7110,26 @@ var require_loader = __commonJS({ "ill-formed tag prefix (second argument) of the TAG directive" ); } + try { + prefix = decodeURIComponent(prefix); + } catch (err) { + throwError(state, "tag prefix is malformed: " + prefix); + } state.tagMap[handle] = prefix; }, }; function captureSegment(state, start, end, checkJson) { - var _position, _length, _character, _result; if (start < end) { - _result = state.input.slice(start, end); + const _result = state.input.slice(start, end); if (checkJson) { for ( - _position = 0, _length = _result.length; + let _position = 0, _length = _result.length; _position < _length; _position += 1 ) { - _character = _result.charCodeAt(_position); + const _character = _result.charCodeAt(_position); if ( - !(_character === 9 || (32 <= _character && _character <= 1114111)) + !(_character === 9 || (_character >= 32 && _character <= 1114111)) ) { throwError(state, "expected valid JSON character"); } @@ -5901,22 +7141,21 @@ var require_loader = __commonJS({ } } function mergeMappings(state, destination, source, overridableKeys) { - var sourceKeys, key, index, quantity; if (!common.isObject(source)) { throwError( state, "cannot merge mappings; the provided source object is unacceptable" ); } - sourceKeys = Object.keys(source); + const sourceKeys = Object.keys(source); for ( - index = 0, quantity = sourceKeys.length; + let index = 0, quantity = sourceKeys.length; index < quantity; index += 1 ) { - key = sourceKeys[index]; + const key = sourceKeys[index]; if (!_hasOwnProperty.call(destination, key)) { - destination[key] = source[key]; + setProperty(destination, key, source[key]); overridableKeys[key] = true; } } @@ -5929,13 +7168,13 @@ var require_loader = __commonJS({ keyNode, valueNode, startLine, + startLineStart, startPos ) { - var index, quantity; if (Array.isArray(keyNode)) { keyNode = Array.prototype.slice.call(keyNode); for ( - index = 0, quantity = keyNode.length; + let index = 0, quantity = keyNode.length; index < quantity; index += 1 ) { @@ -5962,12 +7201,24 @@ var require_loader = __commonJS({ } if (keyTag === "tag:yaml.org,2002:merge") { if (Array.isArray(valueNode)) { + if (valueNode.length > state.maxMergeSeqLength) { + throwError( + state, + "merge sequence length exceeded maxMergeSeqLength (" + + state.maxMergeSeqLength + + ")" + ); + } + const seen = /* @__PURE__ */ new Set(); for ( - index = 0, quantity = valueNode.length; + let index = 0, quantity = valueNode.length; index < quantity; index += 1 ) { - mergeMappings(state, _result, valueNode[index], overridableKeys); + const src = valueNode[index]; + if (seen.has(src)) continue; + seen.add(src); + mergeMappings(state, _result, src, overridableKeys); } } else { mergeMappings(state, _result, valueNode, overridableKeys); @@ -5979,17 +7230,17 @@ var require_loader = __commonJS({ _hasOwnProperty.call(_result, keyNode) ) { state.line = startLine || state.line; + state.lineStart = startLineStart || state.lineStart; state.position = startPos || state.position; throwError(state, "duplicated mapping key"); } - _result[keyNode] = valueNode; + setProperty(_result, keyNode, valueNode); delete overridableKeys[keyNode]; } return _result; } function readLineBreak(state) { - var ch; - ch = state.input.charCodeAt(state.position); + const ch = state.input.charCodeAt(state.position); if (ch === 10) { state.position++; } else if (ch === 13) { @@ -6002,12 +7253,16 @@ var require_loader = __commonJS({ } state.line += 1; state.lineStart = state.position; + state.firstTabInLine = -1; } function skipSeparationSpace(state, allowComments, checkIndent) { - var lineBreaks = 0, - ch = state.input.charCodeAt(state.position); + let lineBreaks = 0; + let ch = state.input.charCodeAt(state.position); while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { + while (isWhiteSpace(ch)) { + if (ch === 9 && state.firstTabInLine === -1) { + state.firstTabInLine = state.position; + } ch = state.input.charCodeAt(++state.position); } if (allowComments && ch === 35) { @@ -6015,7 +7270,7 @@ var require_loader = __commonJS({ ch = state.input.charCodeAt(++state.position); } while (ch !== 10 && ch !== 13 && ch !== 0); } - if (is_EOL(ch)) { + if (isEol(ch)) { readLineBreak(state); ch = state.input.charCodeAt(state.position); lineBreaks++; @@ -6038,9 +7293,8 @@ var require_loader = __commonJS({ return lineBreaks; } function testDocumentSeparator(state) { - var _position = state.position, - ch; - ch = state.input.charCodeAt(_position); + let _position = state.position; + let ch = state.input.charCodeAt(_position); if ( (ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && @@ -6048,7 +7302,7 @@ var require_loader = __commonJS({ ) { _position += 3; ch = state.input.charCodeAt(_position); - if (ch === 0 || is_WS_OR_EOL(ch)) { + if (ch === 0 || isWsOrEol(ch)) { return true; } } @@ -6062,21 +7316,18 @@ var require_loader = __commonJS({ } } function readPlainScalar(state, nodeIndent, withinFlowCollection) { - var preceding, - following, - captureStart, - captureEnd, - hasPendingContent, - _line, - _lineStart, - _lineIndent, - _kind = state.kind, - _result = state.result, - ch; - ch = state.input.charCodeAt(state.position); + let captureStart; + let captureEnd; + let hasPendingContent; + let _line; + let _lineStart; + let _lineIndent; + const _kind = state.kind; + const _result = state.result; + let ch = state.input.charCodeAt(state.position); if ( - is_WS_OR_EOL(ch) || - is_FLOW_INDICATOR(ch) || + isWsOrEol(ch) || + isFlowIndicator(ch) || ch === 35 || ch === 38 || ch === 42 || @@ -6092,10 +7343,10 @@ var require_loader = __commonJS({ return false; } if (ch === 63 || ch === 45) { - following = state.input.charCodeAt(state.position + 1); + const following = state.input.charCodeAt(state.position + 1); if ( - is_WS_OR_EOL(following) || - (withinFlowCollection && is_FLOW_INDICATOR(following)) + isWsOrEol(following) || + (withinFlowCollection && isFlowIndicator(following)) ) { return false; } @@ -6106,25 +7357,25 @@ var require_loader = __commonJS({ hasPendingContent = false; while (ch !== 0) { if (ch === 58) { - following = state.input.charCodeAt(state.position + 1); + const following = state.input.charCodeAt(state.position + 1); if ( - is_WS_OR_EOL(following) || - (withinFlowCollection && is_FLOW_INDICATOR(following)) + isWsOrEol(following) || + (withinFlowCollection && isFlowIndicator(following)) ) { break; } } else if (ch === 35) { - preceding = state.input.charCodeAt(state.position - 1); - if (is_WS_OR_EOL(preceding)) { + const preceding = state.input.charCodeAt(state.position - 1); + if (isWsOrEol(preceding)) { break; } } else if ( (state.position === state.lineStart && testDocumentSeparator(state)) || - (withinFlowCollection && is_FLOW_INDICATOR(ch)) + (withinFlowCollection && isFlowIndicator(ch)) ) { break; - } else if (is_EOL(ch)) { + } else if (isEol(ch)) { _line = state.line; _lineStart = state.lineStart; _lineIndent = state.lineIndent; @@ -6147,7 +7398,7 @@ var require_loader = __commonJS({ captureStart = captureEnd = state.position; hasPendingContent = false; } - if (!is_WHITE_SPACE(ch)) { + if (!isWhiteSpace(ch)) { captureEnd = state.position + 1; } ch = state.input.charCodeAt(++state.position); @@ -6161,8 +7412,9 @@ var require_loader = __commonJS({ return false; } function readSingleQuotedScalar(state, nodeIndent) { - var ch, captureStart, captureEnd; - ch = state.input.charCodeAt(state.position); + let captureStart; + let captureEnd; + let ch = state.input.charCodeAt(state.position); if (ch !== 39) { return false; } @@ -6181,7 +7433,7 @@ var require_loader = __commonJS({ } else { return true; } - } else if (is_EOL(ch)) { + } else if (isEol(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines( state, @@ -6198,7 +7450,9 @@ var require_loader = __commonJS({ ); } else { state.position++; - captureEnd = state.position; + if (!isWhiteSpace(ch)) { + captureEnd = state.position; + } } } throwError( @@ -6207,8 +7461,10 @@ var require_loader = __commonJS({ ); } function readDoubleQuotedScalar(state, nodeIndent) { - var captureStart, captureEnd, hexLength, hexResult, tmp, ch; - ch = state.input.charCodeAt(state.position); + let captureStart; + let captureEnd; + let tmp; + let ch = state.input.charCodeAt(state.position); if (ch !== 34) { return false; } @@ -6224,14 +7480,14 @@ var require_loader = __commonJS({ } else if (ch === 92) { captureSegment(state, captureStart, state.position, true); ch = state.input.charCodeAt(++state.position); - if (is_EOL(ch)) { + if (isEol(ch)) { skipSeparationSpace(state, false, nodeIndent); } else if (ch < 256 && simpleEscapeCheck[ch]) { state.result += simpleEscapeMap[ch]; state.position++; } else if ((tmp = escapedHexLen(ch)) > 0) { - hexLength = tmp; - hexResult = 0; + let hexLength = tmp; + let hexResult = 0; for (; hexLength > 0; hexLength--) { ch = state.input.charCodeAt(++state.position); if ((tmp = fromHexCode(ch)) >= 0) { @@ -6246,7 +7502,7 @@ var require_loader = __commonJS({ throwError(state, "unknown escape sequence"); } captureStart = captureEnd = state.position; - } else if (is_EOL(ch)) { + } else if (isEol(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines( state, @@ -6263,7 +7519,9 @@ var require_loader = __commonJS({ ); } else { state.position++; - captureEnd = state.position; + if (!isWhiteSpace(ch)) { + captureEnd = state.position; + } } } throwError( @@ -6272,22 +7530,22 @@ var require_loader = __commonJS({ ); } function readFlowCollection(state, nodeIndent) { - var readNext = true, - _line, - _tag = state.tag, - _result, - _anchor = state.anchor, - following, - terminator, - isPair, - isExplicitPair, - isMapping, - overridableKeys = {}, - keyNode, - keyTag, - valueNode, - ch; - ch = state.input.charCodeAt(state.position); + let readNext = true; + let _line; + let _lineStart; + let _pos; + const _tag = state.tag; + let _result; + const _anchor = state.anchor; + let terminator; + let isPair; + let isExplicitPair; + let isMapping; + const overridableKeys = /* @__PURE__ */ Object.create(null); + let keyNode; + let keyTag; + let valueNode; + let ch = state.input.charCodeAt(state.position); if (ch === 91) { terminator = 93; isMapping = false; @@ -6300,7 +7558,7 @@ var require_loader = __commonJS({ return false; } if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; + storeAnchor(state, state.anchor, _result); } ch = state.input.charCodeAt(++state.position); while (ch !== 0) { @@ -6315,18 +7573,22 @@ var require_loader = __commonJS({ return true; } else if (!readNext) { throwError(state, "missed comma between flow collection entries"); + } else if (ch === 44) { + throwError(state, "expected the node content, but found ','"); } keyTag = keyNode = valueNode = null; isPair = isExplicitPair = false; if (ch === 63) { - following = state.input.charCodeAt(state.position + 1); - if (is_WS_OR_EOL(following)) { + const following = state.input.charCodeAt(state.position + 1); + if (isWsOrEol(following)) { isPair = isExplicitPair = true; state.position++; skipSeparationSpace(state, true, nodeIndent); } } _line = state.line; + _lineStart = state.lineStart; + _pos = state.position; composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); keyTag = state.tag; keyNode = state.result; @@ -6346,7 +7608,10 @@ var require_loader = __commonJS({ overridableKeys, keyTag, keyNode, - valueNode + valueNode, + _line, + _lineStart, + _pos ); } else if (isPair) { _result.push( @@ -6356,7 +7621,10 @@ var require_loader = __commonJS({ overridableKeys, keyTag, keyNode, - valueNode + valueNode, + _line, + _lineStart, + _pos ) ); } else { @@ -6377,17 +7645,15 @@ var require_loader = __commonJS({ ); } function readBlockScalar(state, nodeIndent) { - var captureStart, - folding, - chomping = CHOMPING_CLIP, - didReadContent = false, - detectedIndent = false, - textIndent = nodeIndent, - emptyLines = 0, - atMoreIndented = false, - tmp, - ch; - ch = state.input.charCodeAt(state.position); + let folding; + let chomping = CHOMPING_CLIP; + let didReadContent = false; + let detectedIndent = false; + let textIndent = nodeIndent; + let emptyLines = 0; + let atMoreIndented = false; + let tmp; + let ch = state.input.charCodeAt(state.position); if (ch === 124) { folding = false; } else if (ch === 62) { @@ -6421,14 +7687,14 @@ var require_loader = __commonJS({ break; } } - if (is_WHITE_SPACE(ch)) { + if (isWhiteSpace(ch)) { do { ch = state.input.charCodeAt(++state.position); - } while (is_WHITE_SPACE(ch)); + } while (isWhiteSpace(ch)); if (ch === 35) { do { ch = state.input.charCodeAt(++state.position); - } while (!is_EOL(ch) && ch !== 0); + } while (!isEol(ch) && ch !== 0); } } while (ch !== 0) { @@ -6445,10 +7711,13 @@ var require_loader = __commonJS({ if (!detectedIndent && state.lineIndent > textIndent) { textIndent = state.lineIndent; } - if (is_EOL(ch)) { + if (isEol(ch)) { emptyLines++; continue; } + if (!detectedIndent && textIndent === 0) { + throwError(state, "missing indentation for block scalar"); + } if (state.lineIndent < textIndent) { if (chomping === CHOMPING_KEEP) { state.result += common.repeat( @@ -6463,7 +7732,7 @@ var require_loader = __commonJS({ break; } if (folding) { - if (is_WHITE_SPACE(ch)) { + if (isWhiteSpace(ch)) { atMoreIndented = true; state.result += common.repeat( "\n", @@ -6488,8 +7757,8 @@ var require_loader = __commonJS({ didReadContent = true; detectedIndent = true; emptyLines = 0; - captureStart = state.position; - while (!is_EOL(ch) && ch !== 0) { + const captureStart = state.position; + while (!isEol(ch) && ch !== 0) { ch = state.input.charCodeAt(++state.position); } captureSegment(state, captureStart, state.position, false); @@ -6497,23 +7766,25 @@ var require_loader = __commonJS({ return true; } function readBlockSequence(state, nodeIndent) { - var _line, - _tag = state.tag, - _anchor = state.anchor, - _result = [], - following, - detected = false, - ch; + const _tag = state.tag; + const _anchor = state.anchor; + const _result = []; + let detected = false; + if (state.firstTabInLine !== -1) return false; if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; + storeAnchor(state, state.anchor, _result); } - ch = state.input.charCodeAt(state.position); + let ch = state.input.charCodeAt(state.position); while (ch !== 0) { + if (state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, "tab characters must not be used in indentation"); + } if (ch !== 45) { break; } - following = state.input.charCodeAt(state.position + 1); - if (!is_WS_OR_EOL(following)) { + const following = state.input.charCodeAt(state.position + 1); + if (!isWsOrEol(following)) { break; } detected = true; @@ -6525,7 +7796,7 @@ var require_loader = __commonJS({ continue; } } - _line = state.line; + const _line = state.line; composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); _result.push(state.result); skipSeparationSpace(state, true, -1); @@ -6549,29 +7820,32 @@ var require_loader = __commonJS({ return false; } function readBlockMapping(state, nodeIndent, flowIndent) { - var following, - allowCompact, - _line, - _pos, - _tag = state.tag, - _anchor = state.anchor, - _result = {}, - overridableKeys = {}, - keyTag = null, - keyNode = null, - valueNode = null, - atExplicitKey = false, - detected = false, - ch; + let allowCompact; + let _keyLine; + let _keyLineStart; + let _keyPos; + const _tag = state.tag; + const _anchor = state.anchor; + const _result = {}; + const overridableKeys = /* @__PURE__ */ Object.create(null); + let keyTag = null; + let keyNode = null; + let valueNode = null; + let atExplicitKey = false; + let detected = false; + if (state.firstTabInLine !== -1) return false; if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; + storeAnchor(state, state.anchor, _result); } - ch = state.input.charCodeAt(state.position); + let ch = state.input.charCodeAt(state.position); while (ch !== 0) { - following = state.input.charCodeAt(state.position + 1); - _line = state.line; - _pos = state.position; - if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) { + if (!atExplicitKey && state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, "tab characters must not be used in indentation"); + } + const following = state.input.charCodeAt(state.position + 1); + const _line = state.line; + if ((ch === 63 || ch === 58) && isWsOrEol(following)) { if (ch === 63) { if (atExplicitKey) { storeMappingPair( @@ -6580,7 +7854,10 @@ var require_loader = __commonJS({ overridableKeys, keyTag, keyNode, - null + null, + _keyLine, + _keyLineStart, + _keyPos ); keyTag = keyNode = valueNode = null; } @@ -6598,17 +7875,21 @@ var require_loader = __commonJS({ } state.position += 1; ch = following; - } else if ( - composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true) - ) { + } else { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + break; + } if (state.line === _line) { ch = state.input.charCodeAt(state.position); - while (is_WHITE_SPACE(ch)) { + while (isWhiteSpace(ch)) { ch = state.input.charCodeAt(++state.position); } if (ch === 58) { ch = state.input.charCodeAt(++state.position); - if (!is_WS_OR_EOL(ch)) { + if (!isWsOrEol(ch)) { throwError( state, "a whitespace character is expected after the key-value separator within a block mapping" @@ -6621,7 +7902,10 @@ var require_loader = __commonJS({ overridableKeys, keyTag, keyNode, - null + null, + _keyLine, + _keyLineStart, + _keyPos ); keyTag = keyNode = valueNode = null; } @@ -6650,10 +7934,13 @@ var require_loader = __commonJS({ state.anchor = _anchor; return true; } - } else { - break; } if (state.line === _line || state.lineIndent > nodeIndent) { + if (atExplicitKey) { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + } if ( composeNode( state, @@ -6677,15 +7964,19 @@ var require_loader = __commonJS({ keyTag, keyNode, valueNode, - _line, - _pos + _keyLine, + _keyLineStart, + _keyPos ); keyTag = keyNode = valueNode = null; } skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); } - if (state.lineIndent > nodeIndent && ch !== 0) { + if ( + (state.line === _line || state.lineIndent > nodeIndent) && + ch !== 0 + ) { throwError(state, "bad indentation of a mapping entry"); } else if (state.lineIndent < nodeIndent) { break; @@ -6698,7 +7989,10 @@ var require_loader = __commonJS({ overridableKeys, keyTag, keyNode, - null + null, + _keyLine, + _keyLineStart, + _keyPos ); } if (detected) { @@ -6710,13 +8004,11 @@ var require_loader = __commonJS({ return detected; } function readTagProperty(state) { - var _position, - isVerbatim = false, - isNamed = false, - tagHandle, - tagName, - ch; - ch = state.input.charCodeAt(state.position); + let isVerbatim = false; + let isNamed = false; + let tagHandle; + let tagName; + let ch = state.input.charCodeAt(state.position); if (ch !== 33) return false; if (state.tag !== null) { throwError(state, "duplication of a tag property"); @@ -6732,7 +8024,7 @@ var require_loader = __commonJS({ } else { tagHandle = "!"; } - _position = state.position; + let _position = state.position; if (isVerbatim) { do { ch = state.input.charCodeAt(++state.position); @@ -6747,7 +8039,7 @@ var require_loader = __commonJS({ ); } } else { - while (ch !== 0 && !is_WS_OR_EOL(ch)) { + while (ch !== 0 && !isWsOrEol(ch)) { if (ch === 33) { if (!isNamed) { tagHandle = state.input.slice(_position - 1, state.position + 1); @@ -6779,6 +8071,11 @@ var require_loader = __commonJS({ "tag name cannot contain such characters: " + tagName ); } + try { + tagName = decodeURIComponent(tagName); + } catch (err) { + throwError(state, "tag name is malformed: " + tagName); + } if (isVerbatim) { state.tag = tagName; } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { @@ -6793,15 +8090,14 @@ var require_loader = __commonJS({ return true; } function readAnchorProperty(state) { - var _position, ch; - ch = state.input.charCodeAt(state.position); + let ch = state.input.charCodeAt(state.position); if (ch !== 38) return false; if (state.anchor !== null) { throwError(state, "duplication of an anchor property"); } ch = state.input.charCodeAt(++state.position); - _position = state.position; - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + const _position = state.position; + while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { ch = state.input.charCodeAt(++state.position); } if (state.position === _position) { @@ -6814,12 +8110,11 @@ var require_loader = __commonJS({ return true; } function readAlias(state) { - var _position, alias, ch; - ch = state.input.charCodeAt(state.position); + let ch = state.input.charCodeAt(state.position); if (ch !== 42) return false; ch = state.input.charCodeAt(++state.position); - _position = state.position; - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + const _position = state.position; + while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { ch = state.input.charCodeAt(++state.position); } if (state.position === _position) { @@ -6828,7 +8123,7 @@ var require_loader = __commonJS({ "name of an alias node must contain at least one character" ); } - alias = state.input.slice(_position, state.position); + const alias = state.input.slice(_position, state.position); if (!_hasOwnProperty.call(state.anchorMap, alias)) { throwError(state, 'unidentified alias "' + alias + '"'); } @@ -6836,6 +8131,30 @@ var require_loader = __commonJS({ skipSeparationSpace(state, true, -1); return true; } + function tryReadBlockMappingFromProperty( + state, + propertyStart, + nodeIndent, + flowIndent + ) { + const fallbackState = snapshotState(state); + beginAnchorTransaction(state); + restoreState(state, propertyStart); + state.tag = null; + state.anchor = null; + state.kind = null; + state.result = null; + if ( + readBlockMapping(state, nodeIndent, flowIndent) && + state.kind === "mapping" + ) { + commitAnchorTransaction(state); + return true; + } + rollbackAnchorTransaction(state); + restoreState(state, fallbackState); + return false; + } function composeNode( state, parentIndent, @@ -6843,17 +8162,19 @@ var require_loader = __commonJS({ allowToSeek, allowCompact ) { - var allowBlockStyles, - allowBlockScalars, - allowBlockCollections, - indentStatus = 1, - atNewLine = false, - hasContent = false, - typeIndex, - typeQuantity, - type2, - flowIndent, - blockIndent; + let allowBlockScalars; + let allowBlockCollections; + let indentStatus = 1; + let atNewLine = false; + let hasContent = false; + let propertyStart = null; + let type2; + let flowIndent; + let blockIndent; + if (state.depth >= state.maxDepth) { + throwError(state, "nesting exceeded maxDepth (" + state.maxDepth + ")"); + } + state.depth += 1; if (state.listener !== null) { state.listener("open", state); } @@ -6861,10 +8182,11 @@ var require_loader = __commonJS({ state.anchor = null; state.kind = null; state.result = null; - allowBlockStyles = - allowBlockScalars = + const allowBlockStyles = + (allowBlockScalars = allowBlockCollections = - CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext; + CONTEXT_BLOCK_OUT === nodeContext || + CONTEXT_BLOCK_IN === nodeContext); if (allowToSeek) { if (skipSeparationSpace(state, true, -1)) { atNewLine = true; @@ -6878,7 +8200,22 @@ var require_loader = __commonJS({ } } if (indentStatus === 1) { - while (readTagProperty(state) || readAnchorProperty(state)) { + while (true) { + const ch = state.input.charCodeAt(state.position); + const propertyState = snapshotState(state); + if ( + atNewLine && + ((ch === 33 && state.tag !== null) || + (ch === 38 && state.anchor !== null)) + ) { + break; + } + if (!readTagProperty(state) && !readAnchorProperty(state)) { + break; + } + if (propertyStart === null) { + propertyStart = propertyState; + } if (skipSeparationSpace(state, true, -1)) { atNewLine = true; allowBlockCollections = allowBlockStyles; @@ -6916,7 +8253,22 @@ var require_loader = __commonJS({ ) { hasContent = true; } else { + const ch = state.input.charCodeAt(state.position); if ( + propertyStart !== null && + allowBlockStyles && + !allowBlockCollections && + ch !== 124 && + ch !== 62 && + tryReadBlockMappingFromProperty( + state, + propertyStart, + propertyStart.position - propertyStart.lineStart, + flowIndent + ) + ) { + hasContent = true; + } else if ( (allowBlockScalars && readBlockScalar(state, flowIndent)) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent) @@ -6940,7 +8292,7 @@ var require_loader = __commonJS({ } } if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; + storeAnchor(state, state.anchor, state.result); } } } else if (indentStatus === 0) { @@ -6948,81 +8300,100 @@ var require_loader = __commonJS({ allowBlockCollections && readBlockSequence(state, blockIndent); } } - if (state.tag !== null && state.tag !== "!") { - if (state.tag === "?") { - if (state.result !== null && state.kind !== "scalar") { - throwError( - state, - 'unacceptable node kind for ! tag; it should be "scalar", not "' + - state.kind + - '"' - ); - } - for ( - typeIndex = 0, typeQuantity = state.implicitTypes.length; - typeIndex < typeQuantity; - typeIndex += 1 - ) { - type2 = state.implicitTypes[typeIndex]; - if (type2.resolve(state.result)) { - state.result = type2.construct(state.result); - state.tag = type2.tag; - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - break; + if (state.tag === null) { + if (state.anchor !== null) { + storeAnchor(state, state.anchor, state.result); + } + } else if (state.tag === "?") { + if (state.result !== null && state.kind !== "scalar") { + throwError( + state, + 'unacceptable node kind for ! tag; it should be "scalar", not "' + + state.kind + + '"' + ); + } + for ( + let typeIndex = 0, typeQuantity = state.implicitTypes.length; + typeIndex < typeQuantity; + typeIndex += 1 + ) { + type2 = state.implicitTypes[typeIndex]; + if (type2.resolve(state.result)) { + state.result = type2.construct(state.result); + state.tag = type2.tag; + if (state.anchor !== null) { + storeAnchor(state, state.anchor, state.result); } + break; } - } else if ( + } + } else if (state.tag !== "!") { + if ( _hasOwnProperty.call( state.typeMap[state.kind || "fallback"], state.tag ) ) { type2 = state.typeMap[state.kind || "fallback"][state.tag]; - if (state.result !== null && type2.kind !== state.kind) { - throwError( - state, - "unacceptable node kind for !<" + - state.tag + - '> tag; it should be "' + - type2.kind + - '", not "' + - state.kind + - '"' - ); - } - if (!type2.resolve(state.result)) { - throwError( - state, - "cannot resolve a node with !<" + state.tag + "> explicit tag" - ); - } else { - state.result = type2.construct(state.result); - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; + } else { + type2 = null; + const typeList = state.typeMap.multi[state.kind || "fallback"]; + for ( + let typeIndex = 0, typeQuantity = typeList.length; + typeIndex < typeQuantity; + typeIndex += 1 + ) { + if ( + state.tag.slice(0, typeList[typeIndex].tag.length) === + typeList[typeIndex].tag + ) { + type2 = typeList[typeIndex]; + break; } } - } else { + } + if (!type2) { throwError(state, "unknown tag !<" + state.tag + ">"); } + if (state.result !== null && type2.kind !== state.kind) { + throwError( + state, + "unacceptable node kind for !<" + + state.tag + + '> tag; it should be "' + + type2.kind + + '", not "' + + state.kind + + '"' + ); + } + if (!type2.resolve(state.result, state.tag)) { + throwError( + state, + "cannot resolve a node with !<" + state.tag + "> explicit tag" + ); + } else { + state.result = type2.construct(state.result, state.tag); + if (state.anchor !== null) { + storeAnchor(state, state.anchor, state.result); + } + } } if (state.listener !== null) { state.listener("close", state); } + state.depth -= 1; return state.tag !== null || state.anchor !== null || hasContent; } function readDocument(state) { - var documentStart = state.position, - _position, - directiveName, - directiveArgs, - hasDirectives = false, - ch; + const documentStart = state.position; + let hasDirectives = false; + let ch; state.version = null; state.checkLineBreaks = state.legacy; - state.tagMap = {}; - state.anchorMap = {}; + state.tagMap = /* @__PURE__ */ Object.create(null); + state.anchorMap = /* @__PURE__ */ Object.create(null); while ((ch = state.input.charCodeAt(state.position)) !== 0) { skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); @@ -7031,12 +8402,12 @@ var require_loader = __commonJS({ } hasDirectives = true; ch = state.input.charCodeAt(++state.position); - _position = state.position; - while (ch !== 0 && !is_WS_OR_EOL(ch)) { + let _position = state.position; + while (ch !== 0 && !isWsOrEol(ch)) { ch = state.input.charCodeAt(++state.position); } - directiveName = state.input.slice(_position, state.position); - directiveArgs = []; + const directiveName = state.input.slice(_position, state.position); + const directiveArgs = []; if (directiveName.length < 1) { throwError( state, @@ -7044,18 +8415,18 @@ var require_loader = __commonJS({ ); } while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { + while (isWhiteSpace(ch)) { ch = state.input.charCodeAt(++state.position); } if (ch === 35) { do { ch = state.input.charCodeAt(++state.position); - } while (ch !== 0 && !is_EOL(ch)); + } while (ch !== 0 && !isEol(ch)); break; } - if (is_EOL(ch)) break; + if (isEol(ch)) break; _position = state.position; - while (ch !== 0 && !is_WS_OR_EOL(ch)) { + while (ch !== 0 && !isWsOrEol(ch)) { ch = state.input.charCodeAt(++state.position); } directiveArgs.push(state.input.slice(_position, state.position)); @@ -7105,8 +8476,6 @@ var require_loader = __commonJS({ state, "end of the stream or a document separator is expected" ); - } else { - return; } } function loadDocuments(input, options) { @@ -7123,8 +8492,8 @@ var require_loader = __commonJS({ input = input.slice(1); } } - var state = new State(input, options); - var nullpos = input.indexOf("\0"); + const state = new State(input, options); + const nullpos = input.indexOf("\0"); if (nullpos !== -1) { state.position = nullpos; throwError(state, "null byte is not allowed in input"); @@ -7148,12 +8517,12 @@ var require_loader = __commonJS({ options = iterator; iterator = null; } - var documents = loadDocuments(input, options); + const documents = loadDocuments(input, options); if (typeof iterator !== "function") { return documents; } for ( - var index = 0, length = documents.length; + let index = 0, length = documents.length; index < length; index += 1 ) { @@ -7161,7 +8530,7 @@ var require_loader = __commonJS({ } } function load(input, options) { - var documents = loadDocuments(input, options); + const documents = loadDocuments(input, options); if (documents.length === 0) { return void 0; } else if (documents.length === 1) { @@ -7171,44 +8540,21 @@ var require_loader = __commonJS({ "expected a single document in the stream, but found more" ); } - function safeLoadAll(input, iterator, options) { - if ( - typeof iterator === "object" && - iterator !== null && - typeof options === "undefined" - ) { - options = iterator; - iterator = null; - } - return loadAll( - input, - iterator, - common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options) - ); - } - function safeLoad(input, options) { - return load( - input, - common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options) - ); - } module2.exports.loadAll = loadAll; module2.exports.load = load; - module2.exports.safeLoadAll = safeLoadAll; - module2.exports.safeLoad = safeLoad; }, }); -// node_modules/js-yaml/lib/js-yaml/dumper.js +// node_modules/js-yaml/lib/dumper.js var require_dumper = __commonJS({ - "node_modules/js-yaml/lib/js-yaml/dumper.js"(exports, module2) { + "node_modules/js-yaml/lib/dumper.js"(exports2, module2) { "use strict"; var common = require_common(); var YAMLException = require_exception(); - var DEFAULT_FULL_SCHEMA = require_default_full(); - var DEFAULT_SAFE_SCHEMA = require_default_safe(); + var DEFAULT_SCHEMA = require_default(); var _toString = Object.prototype.toString; var _hasOwnProperty = Object.prototype.hasOwnProperty; + var CHAR_BOM = 65279; var CHAR_TAB = 9; var CHAR_LINE_FEED = 10; var CHAR_CARRIAGE_RETURN = 13; @@ -7267,18 +8613,18 @@ var require_dumper = __commonJS({ "Off", "OFF", ]; + var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; function compileStyleMap(schema, map) { - var result, keys, index, length, tag, style, type2; if (map === null) return {}; - result = {}; - keys = Object.keys(map); - for (index = 0, length = keys.length; index < length; index += 1) { - tag = keys[index]; - style = String(map[tag]); + const result = {}; + const keys = Object.keys(map); + for (let index = 0, length = keys.length; index < length; index += 1) { + let tag = keys[index]; + let style = String(map[tag]); if (tag.slice(0, 2) === "!!") { tag = "tag:yaml.org,2002:" + tag.slice(2); } - type2 = schema.compiledTypeMap["fallback"][tag]; + const type2 = schema.compiledTypeMap["fallback"][tag]; if (type2 && _hasOwnProperty.call(type2.styleAliases, style)) { style = type2.styleAliases[style]; } @@ -7287,8 +8633,9 @@ var require_dumper = __commonJS({ return result; } function encodeHex(character) { - var string, handle, length; - string = character.toString(16).toUpperCase(); + let handle; + let length; + const string = character.toString(16).toUpperCase(); if (character <= 255) { handle = "x"; length = 2; @@ -7307,8 +8654,10 @@ var require_dumper = __commonJS({ "\\" + handle + common.repeat("0", length - string.length) + string ); } + var QUOTING_TYPE_SINGLE = 1; + var QUOTING_TYPE_DOUBLE = 2; function State(options) { - this.schema = options["schema"] || DEFAULT_FULL_SCHEMA; + this.schema = options["schema"] || DEFAULT_SCHEMA; this.indent = Math.max(1, options["indent"] || 2); this.noArrayIndent = options["noArrayIndent"] || false; this.skipInvalid = options["skipInvalid"] || false; @@ -7321,6 +8670,13 @@ var require_dumper = __commonJS({ this.noRefs = options["noRefs"] || false; this.noCompatMode = options["noCompatMode"] || false; this.condenseFlow = options["condenseFlow"] || false; + this.quotingType = + options["quotingType"] === '"' + ? QUOTING_TYPE_DOUBLE + : QUOTING_TYPE_SINGLE; + this.forceQuotes = options["forceQuotes"] || false; + this.replacer = + typeof options["replacer"] === "function" ? options["replacer"] : null; this.implicitTypes = this.schema.compiledImplicit; this.explicitTypes = this.schema.compiledExplicit; this.tag = null; @@ -7329,14 +8685,13 @@ var require_dumper = __commonJS({ this.usedDuplicates = null; } function indentString(string, spaces) { - var ind = common.repeat(" ", spaces), - position = 0, - next = -1, - result = "", - line, - length = string.length; + const ind = common.repeat(" ", spaces); + let position = 0; + let result = ""; + const length = string.length; while (position < length) { - next = string.indexOf("\n", position); + let line; + const next = string.indexOf("\n", position); if (next === -1) { line = string.slice(position); position = length; @@ -7353,13 +8708,12 @@ var require_dumper = __commonJS({ return "\n" + common.repeat(" ", state.indent * level); } function testImplicitResolving(state, str) { - var index, length, type2; for ( - index = 0, length = state.implicitTypes.length; + let index = 0, length = state.implicitTypes.length; index < length; index += 1 ) { - type2 = state.implicitTypes[index]; + const type2 = state.implicitTypes[index]; if (type2.resolve(str)) { return true; } @@ -7371,39 +8725,48 @@ var require_dumper = __commonJS({ } function isPrintable(c) { return ( - (32 <= c && c <= 126) || - (161 <= c && c <= 55295 && c !== 8232 && c !== 8233) || - (57344 <= c && c <= 65533 && c !== 65279) || - (65536 <= c && c <= 1114111) + (c >= 32 && c <= 126) || + (c >= 161 && c <= 55295 && c !== 8232 && c !== 8233) || + (c >= 57344 && c <= 65533 && c !== CHAR_BOM) || + (c >= 65536 && c <= 1114111) ); } - function isNsChar(c) { + function isNsCharOrWhitespace(c) { return ( isPrintable(c) && - !isWhitespace(c) && - c !== 65279 && + c !== CHAR_BOM && // - b-char c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED ); } - function isPlainSafe(c, prev) { + function isPlainSafe(c, prev, inblock) { + const cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); + const cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); return ( - isPrintable(c) && - c !== 65279 && - c !== CHAR_COMMA && - c !== CHAR_LEFT_SQUARE_BRACKET && - c !== CHAR_RIGHT_SQUARE_BRACKET && - c !== CHAR_LEFT_CURLY_BRACKET && - c !== CHAR_RIGHT_CURLY_BRACKET && - c !== CHAR_COLON && - (c !== CHAR_SHARP || (prev && isNsChar(prev))) + // ns-plain-safe + ((inblock + ? cIsNsCharOrWhitespace + : cIsNsCharOrWhitespace && // - c-flow-indicator + c !== CHAR_COMMA && + c !== CHAR_LEFT_SQUARE_BRACKET && + c !== CHAR_RIGHT_SQUARE_BRACKET && + c !== CHAR_LEFT_CURLY_BRACKET && + c !== CHAR_RIGHT_CURLY_BRACKET) && // ns-plain-char + c !== CHAR_SHARP && // false on '#' + !(prev === CHAR_COLON && !cIsNsChar)) || // false on ': ' + (isNsCharOrWhitespace(prev) && + !isWhitespace(prev) && + c === CHAR_SHARP) || // change to true on '[^ ]#' + (prev === CHAR_COLON && cIsNsChar) ); } function isPlainSafeFirst(c) { return ( isPrintable(c) && - c !== 65279 && - !isWhitespace(c) && + c !== CHAR_BOM && + !isWhitespace(c) && // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && @@ -7411,7 +8774,7 @@ var require_dumper = __commonJS({ c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && - c !== CHAR_RIGHT_CURLY_BRACKET && + c !== CHAR_RIGHT_CURLY_BRACKET && // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && @@ -7420,14 +8783,28 @@ var require_dumper = __commonJS({ c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && - c !== CHAR_DOUBLE_QUOTE && + c !== CHAR_DOUBLE_QUOTE && // | “%” | “@” | “`”) c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT ); } + function isPlainSafeLast(c) { + return !isWhitespace(c) && c !== CHAR_COLON; + } + function codePointAt(string, pos) { + const first = string.charCodeAt(pos); + let second; + if (first >= 55296 && first <= 56319 && pos + 1 < string.length) { + second = string.charCodeAt(pos + 1); + if (second >= 56320 && second <= 57343) { + return (first - 55296) * 1024 + second - 56320 + 65536; + } + } + return first; + } function needIndentIndicator(string) { - var leadingSpaceRe = /^\n* /; + const leadingSpaceRe = /^\n* /; return leadingSpaceRe.test(string); } var STYLE_PLAIN = 1; @@ -7440,34 +8817,38 @@ var require_dumper = __commonJS({ singleLineOnly, indentPerLevel, lineWidth, - testAmbiguousType + testAmbiguousType, + quotingType, + forceQuotes, + inblock ) { - var i; - var char, prev_char; - var hasLineBreak = false; - var hasFoldableLine = false; - var shouldTrackWidth = lineWidth !== -1; - var previousLineBreak = -1; - var plain = - isPlainSafeFirst(string.charCodeAt(0)) && - !isWhitespace(string.charCodeAt(string.length - 1)); - if (singleLineOnly) { - for (i = 0; i < string.length; i++) { - char = string.charCodeAt(i); + let i; + let char = 0; + let prevChar = null; + let hasLineBreak = false; + let hasFoldableLine = false; + const shouldTrackWidth = lineWidth !== -1; + let previousLineBreak = -1; + let plain = + isPlainSafeFirst(codePointAt(string, 0)) && + isPlainSafeLast(codePointAt(string, string.length - 1)); + if (singleLineOnly || forceQuotes) { + for (i = 0; i < string.length; char >= 65536 ? (i += 2) : i++) { + char = codePointAt(string, i); if (!isPrintable(char)) { return STYLE_DOUBLE; } - prev_char = i > 0 ? string.charCodeAt(i - 1) : null; - plain = plain && isPlainSafe(char, prev_char); + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; } } else { - for (i = 0; i < string.length; i++) { - char = string.charCodeAt(i); + for (i = 0; i < string.length; char >= 65536 ? (i += 2) : i++) { + char = codePointAt(string, i); if (char === CHAR_LINE_FEED) { hasLineBreak = true; if (shouldTrackWidth) { hasFoldableLine = - hasFoldableLine || + hasFoldableLine || // Foldable line = too long, and not more-indented. (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "); previousLineBreak = i; @@ -7475,8 +8856,8 @@ var require_dumper = __commonJS({ } else if (!isPrintable(char)) { return STYLE_DOUBLE; } - prev_char = i > 0 ? string.charCodeAt(i - 1) : null; - plain = plain && isPlainSafe(char, prev_char); + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; } hasFoldableLine = hasFoldableLine || @@ -7485,31 +8866,44 @@ var require_dumper = __commonJS({ string[previousLineBreak + 1] !== " "); } if (!hasLineBreak && !hasFoldableLine) { - return plain && !testAmbiguousType(string) ? STYLE_PLAIN : STYLE_SINGLE; + if (plain && !forceQuotes && !testAmbiguousType(string)) { + return STYLE_PLAIN; + } + return quotingType === QUOTING_TYPE_DOUBLE + ? STYLE_DOUBLE + : STYLE_SINGLE; } if (indentPerLevel > 9 && needIndentIndicator(string)) { return STYLE_DOUBLE; } - return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + if (!forceQuotes) { + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; } - function writeScalar(state, string, level, iskey) { + function writeScalar(state, string, level, iskey, inblock) { state.dump = (function () { if (string.length === 0) { - return "''"; + return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; } - if ( - !state.noCompatMode && - DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 - ) { - return "'" + string + "'"; + if (!state.noCompatMode) { + if ( + DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || + DEPRECATED_BASE60_SYNTAX.test(string) + ) { + return state.quotingType === QUOTING_TYPE_DOUBLE + ? '"' + string + '"' + : "'" + string + "'"; + } } - var indent = state.indent * Math.max(1, level); - var lineWidth = + const indent = state.indent * Math.max(1, level); + const lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); - var singleLineOnly = - iskey || (state.flowLevel > -1 && level >= state.flowLevel); + const singleLineOnly = + iskey || // No block styles in flow mode. + (state.flowLevel > -1 && level >= state.flowLevel); function testAmbiguity(string2) { return testImplicitResolving(state, string2); } @@ -7519,7 +8913,10 @@ var require_dumper = __commonJS({ singleLineOnly, state.indent, lineWidth, - testAmbiguity + testAmbiguity, + state.quotingType, + state.forceQuotes && !iskey, + inblock ) ) { case STYLE_PLAIN: @@ -7548,32 +8945,32 @@ var require_dumper = __commonJS({ })(); } function blockHeader(string, indentPerLevel) { - var indentIndicator = needIndentIndicator(string) + const indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ""; - var clip = string[string.length - 1] === "\n"; - var keep = + const clip = string[string.length - 1] === "\n"; + const keep = clip && (string[string.length - 2] === "\n" || string === "\n"); - var chomp = keep ? "+" : clip ? "" : "-"; + const chomp = keep ? "+" : clip ? "" : "-"; return indentIndicator + chomp + "\n"; } function dropEndingNewline(string) { return string[string.length - 1] === "\n" ? string.slice(0, -1) : string; } function foldString(string, width) { - var lineRe = /(\n+)([^\n]*)/g; - var result = (function () { - var nextLF = string.indexOf("\n"); + const lineRe = /(\n+)([^\n]*)/g; + let result = (function () { + let nextLF = string.indexOf("\n"); nextLF = nextLF !== -1 ? nextLF : string.length; lineRe.lastIndex = nextLF; return foldLine(string.slice(0, nextLF), width); })(); - var prevMoreIndented = string[0] === "\n" || string[0] === " "; - var moreIndented; - var match3; + let prevMoreIndented = string[0] === "\n" || string[0] === " "; + let moreIndented; + let match3; while ((match3 = lineRe.exec(string))) { - var prefix = match3[1], - line = match3[2]; + const prefix = match3[1]; + const line = match3[2]; moreIndented = line[0] === " "; result += prefix + @@ -7585,13 +8982,13 @@ var require_dumper = __commonJS({ } function foldLine(line, width) { if (line === "" || line[0] === " ") return line; - var breakRe = / [^ ]/g; - var match3; - var start = 0, - end, - curr = 0, - next = 0; - var result = ""; + const breakRe = / [^ ]/g; + let match3; + let start = 0; + let end; + let curr = 0; + let next = 0; + let result = ""; while ((match3 = breakRe.exec(line))) { next = match3.index; if (next - start > width) { @@ -7610,37 +9007,34 @@ var require_dumper = __commonJS({ return result.slice(1); } function escapeString(string) { - var result = ""; - var char, nextChar; - var escapeSeq; - for (var i = 0; i < string.length; i++) { - char = string.charCodeAt(i); - if (char >= 55296 && char <= 56319) { - nextChar = string.charCodeAt(i + 1); - if (nextChar >= 56320 && nextChar <= 57343) { - result += encodeHex( - (char - 55296) * 1024 + nextChar - 56320 + 65536 - ); - i++; - continue; - } + let result = ""; + let char = 0; + for (let i = 0; i < string.length; char >= 65536 ? (i += 2) : i++) { + char = codePointAt(string, i); + const escapeSeq = ESCAPE_SEQUENCES[char]; + if (!escapeSeq && isPrintable(char)) { + result += string[i]; + if (char >= 65536) result += string[i + 1]; + } else { + result += escapeSeq || encodeHex(char); } - escapeSeq = ESCAPE_SEQUENCES[char]; - result += - !escapeSeq && isPrintable(char) - ? string[i] - : escapeSeq || encodeHex(char); } return result; } function writeFlowSequence(state, level, object) { - var _result = "", - _tag = state.tag, - index, - length; - for (index = 0, length = object.length; index < length; index += 1) { - if (writeNode(state, level, object[index], false, false)) { - if (index !== 0) _result += "," + (!state.condenseFlow ? " " : ""); + let _result = ""; + const _tag = state.tag; + for (let index = 0, length = object.length; index < length; index += 1) { + let value = object[index]; + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + if ( + writeNode(state, level, value, false, false) || + (typeof value === "undefined" && + writeNode(state, level, null, false, false)) + ) { + if (_result !== "") _result += "," + (!state.condenseFlow ? " " : ""); _result += state.dump; } } @@ -7648,13 +9042,19 @@ var require_dumper = __commonJS({ state.dump = "[" + _result + "]"; } function writeBlockSequence(state, level, object, compact) { - var _result = "", - _tag = state.tag, - index, - length; - for (index = 0, length = object.length; index < length; index += 1) { - if (writeNode(state, level + 1, object[index], true, true)) { - if (!compact || index !== 0) { + let _result = ""; + const _tag = state.tag; + for (let index = 0, length = object.length; index < length; index += 1) { + let value = object[index]; + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + if ( + writeNode(state, level + 1, value, true, true, false, true) || + (typeof value === "undefined" && + writeNode(state, level + 1, null, true, true, false, true)) + ) { + if (!compact || _result !== "") { _result += generateNextLine(state, level); } if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { @@ -7669,24 +9069,22 @@ var require_dumper = __commonJS({ state.dump = _result || "[]"; } function writeFlowMapping(state, level, object) { - var _result = "", - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - pairBuffer; + let _result = ""; + const _tag = state.tag; + const objectKeyList = Object.keys(object); for ( - index = 0, length = objectKeyList.length; + let index = 0, length = objectKeyList.length; index < length; index += 1 ) { - pairBuffer = ""; - if (index !== 0) pairBuffer += ", "; + let pairBuffer = ""; + if (_result !== "") pairBuffer += ", "; if (state.condenseFlow) pairBuffer += '"'; - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; + const objectKey = objectKeyList[index]; + let objectValue = object[objectKey]; + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } if (!writeNode(state, level, objectKey, false, false)) { continue; } @@ -7706,15 +9104,9 @@ var require_dumper = __commonJS({ state.dump = "{" + _result + "}"; } function writeBlockMapping(state, level, object, compact) { - var _result = "", - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - explicitPair, - pairBuffer; + let _result = ""; + const _tag = state.tag; + const objectKeyList = Object.keys(object); if (state.sortKeys === true) { objectKeyList.sort(); } else if (typeof state.sortKeys === "function") { @@ -7723,20 +9115,23 @@ var require_dumper = __commonJS({ throw new YAMLException("sortKeys must be a boolean or a function"); } for ( - index = 0, length = objectKeyList.length; + let index = 0, length = objectKeyList.length; index < length; index += 1 ) { - pairBuffer = ""; - if (!compact || index !== 0) { + let pairBuffer = ""; + if (!compact || _result !== "") { pairBuffer += generateNextLine(state, level); } - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; + const objectKey = objectKeyList[index]; + let objectValue = object[objectKey]; + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } if (!writeNode(state, level + 1, objectKey, true, true, true)) { continue; } - explicitPair = + const explicitPair = (state.tag !== null && state.tag !== "?") || (state.dump && state.dump.length > 1024); if (explicitPair) { @@ -7765,10 +9160,13 @@ var require_dumper = __commonJS({ state.dump = _result || "{}"; } function detectType(state, object, explicit) { - var _result, typeList, index, length, type2, style; - typeList = explicit ? state.explicitTypes : state.implicitTypes; - for (index = 0, length = typeList.length; index < length; index += 1) { - type2 = typeList[index]; + const typeList = explicit ? state.explicitTypes : state.implicitTypes; + for ( + let index = 0, length = typeList.length; + index < length; + index += 1 + ) { + const type2 = typeList[index]; if ( (type2.instanceOf || type2.predicate) && (!type2.instanceOf || @@ -7776,9 +9174,18 @@ var require_dumper = __commonJS({ object instanceof type2.instanceOf)) && (!type2.predicate || type2.predicate(object)) ) { - state.tag = explicit ? type2.tag : "?"; + if (explicit) { + if (type2.multi && type2.representName) { + state.tag = type2.representName(object); + } else { + state.tag = type2.tag; + } + } else { + state.tag = "?"; + } if (type2.represent) { - style = state.styleMap[type2.tag] || type2.defaultStyle; + const style = state.styleMap[type2.tag] || type2.defaultStyle; + let _result; if (_toString.call(type2.represent) === "[object Function]") { _result = type2.represent(object, style); } else if (_hasOwnProperty.call(type2.represent, style)) { @@ -7799,20 +9206,29 @@ var require_dumper = __commonJS({ } return false; } - function writeNode(state, level, object, block, compact, iskey) { + function writeNode( + state, + level, + object, + block, + compact, + iskey, + isblockseq + ) { state.tag = null; state.dump = object; if (!detectType(state, object, false)) { detectType(state, object, true); } - var type2 = _toString.call(state.dump); + const type2 = _toString.call(state.dump); + const inblock = block; if (block) { block = state.flowLevel < 0 || state.flowLevel > level; } - var objectOrArray = - type2 === "[object Object]" || type2 === "[object Array]", - duplicateIndex, - duplicate; + const objectOrArray = + type2 === "[object Object]" || type2 === "[object Array]"; + let duplicateIndex; + let duplicate; if (objectOrArray) { duplicateIndex = state.duplicates.indexOf(object); duplicate = duplicateIndex !== -1; @@ -7847,22 +9263,27 @@ var require_dumper = __commonJS({ } } } else if (type2 === "[object Array]") { - var arrayLevel = state.noArrayIndent && level > 0 ? level - 1 : level; if (block && state.dump.length !== 0) { - writeBlockSequence(state, arrayLevel, state.dump, compact); + if (state.noArrayIndent && !isblockseq && level > 0) { + writeBlockSequence(state, level - 1, state.dump, compact); + } else { + writeBlockSequence(state, level, state.dump, compact); + } if (duplicate) { state.dump = "&ref_" + duplicateIndex + state.dump; } } else { - writeFlowSequence(state, arrayLevel, state.dump); + writeFlowSequence(state, level, state.dump); if (duplicate) { state.dump = "&ref_" + duplicateIndex + " " + state.dump; } } } else if (type2 === "[object String]") { if (state.tag !== "?") { - writeScalar(state, state.dump, level, iskey); + writeScalar(state, state.dump, level, iskey, inblock); } + } else if (type2 === "[object Undefined]") { + return false; } else { if (state.skipInvalid) return false; throw new YAMLException( @@ -7870,30 +9291,34 @@ var require_dumper = __commonJS({ ); } if (state.tag !== null && state.tag !== "?") { - state.dump = "!<" + state.tag + "> " + state.dump; + let tagStr = encodeURI( + state.tag[0] === "!" ? state.tag.slice(1) : state.tag + ).replace(/!/g, "%21"); + if (state.tag[0] === "!") { + tagStr = "!" + tagStr; + } else if (tagStr.slice(0, 18) === "tag:yaml.org,2002:") { + tagStr = "!!" + tagStr.slice(18); + } else { + tagStr = "!<" + tagStr + ">"; + } + state.dump = tagStr + " " + state.dump; } } return true; } function getDuplicateReferences(object, state) { - var objects = [], - duplicatesIndexes = [], - index, - length; + const objects = []; + const duplicatesIndexes = []; inspectNode(object, objects, duplicatesIndexes); - for ( - index = 0, length = duplicatesIndexes.length; - index < length; - index += 1 - ) { + const length = duplicatesIndexes.length; + for (let index = 0; index < length; index += 1) { state.duplicates.push(objects[duplicatesIndexes[index]]); } state.usedDuplicates = new Array(length); } function inspectNode(object, objects, duplicatesIndexes) { - var objectKeyList, index, length; if (object !== null && typeof object === "object") { - index = objects.indexOf(object); + const index = objects.indexOf(object); if (index !== -1) { if (duplicatesIndexes.indexOf(index) === -1) { duplicatesIndexes.push(index); @@ -7901,25 +9326,13 @@ var require_dumper = __commonJS({ } else { objects.push(object); if (Array.isArray(object)) { - for ( - index = 0, length = object.length; - index < length; - index += 1 - ) { - inspectNode(object[index], objects, duplicatesIndexes); + for (let i = 0, length = object.length; i < length; i += 1) { + inspectNode(object[i], objects, duplicatesIndexes); } } else { - objectKeyList = Object.keys(object); - for ( - index = 0, length = objectKeyList.length; - index < length; - index += 1 - ) { - inspectNode( - object[objectKeyList[index]], - objects, - duplicatesIndexes - ); + const objectKeyList = Object.keys(object); + for (let i = 0, length = objectKeyList.length; i < length; i += 1) { + inspectNode(object[objectKeyList[i]], objects, duplicatesIndexes); } } } @@ -7927,32 +9340,33 @@ var require_dumper = __commonJS({ } function dump(input, options) { options = options || {}; - var state = new State(options); + const state = new State(options); if (!state.noRefs) getDuplicateReferences(input, state); - if (writeNode(state, 0, input, true, true)) return state.dump + "\n"; + let value = input; + if (state.replacer) { + value = state.replacer.call({ "": value }, "", value); + } + if (writeNode(state, 0, value, true, true)) return state.dump + "\n"; return ""; } - function safeDump(input, options) { - return dump( - input, - common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options) - ); - } module2.exports.dump = dump; - module2.exports.safeDump = safeDump; }, }); -// node_modules/js-yaml/lib/js-yaml.js +// node_modules/js-yaml/index.js var require_js_yaml = __commonJS({ - "node_modules/js-yaml/lib/js-yaml.js"(exports, module2) { + "node_modules/js-yaml/index.js"(exports2, module2) { "use strict"; var loader = require_loader(); var dumper = require_dumper(); - function deprecated(name) { + function renamed(from, to) { return function () { throw new Error( - "Function " + name + " is deprecated and cannot be used." + "Function yaml." + + from + + " is removed in js-yaml 4. Use yaml." + + to + + " instead, which is now safe by default." ); }; } @@ -7961,31 +9375,29 @@ var require_js_yaml = __commonJS({ module2.exports.FAILSAFE_SCHEMA = require_failsafe(); module2.exports.JSON_SCHEMA = require_json(); module2.exports.CORE_SCHEMA = require_core2(); - module2.exports.DEFAULT_SAFE_SCHEMA = require_default_safe(); - module2.exports.DEFAULT_FULL_SCHEMA = require_default_full(); + module2.exports.DEFAULT_SCHEMA = require_default(); module2.exports.load = loader.load; module2.exports.loadAll = loader.loadAll; - module2.exports.safeLoad = loader.safeLoad; - module2.exports.safeLoadAll = loader.safeLoadAll; module2.exports.dump = dumper.dump; - module2.exports.safeDump = dumper.safeDump; module2.exports.YAMLException = require_exception(); - module2.exports.MINIMAL_SCHEMA = require_failsafe(); - module2.exports.SAFE_SCHEMA = require_default_safe(); - module2.exports.DEFAULT_SCHEMA = require_default_full(); - module2.exports.scan = deprecated("scan"); - module2.exports.parse = deprecated("parse"); - module2.exports.compose = deprecated("compose"); - module2.exports.addConstructor = deprecated("addConstructor"); - }, -}); - -// node_modules/js-yaml/index.js -var require_js_yaml2 = __commonJS({ - "node_modules/js-yaml/index.js"(exports, module2) { - "use strict"; - var yaml2 = require_js_yaml(); - module2.exports = yaml2; + module2.exports.types = { + binary: require_binary(), + float: require_float(), + map: require_map(), + null: require_null(), + pairs: require_pairs(), + set: require_set(), + timestamp: require_timestamp(), + bool: require_bool(), + int: require_int(), + merge: require_merge(), + omap: require_omap(), + seq: require_seq(), + str: require_str(), + }; + module2.exports.safeLoad = renamed("safeLoad", "load"); + module2.exports.safeLoadAll = renamed("safeLoadAll", "loadAll"); + module2.exports.safeDump = renamed("safeDump", "dump"); }, }); @@ -8194,6 +9606,9 @@ var XmlDomUtility = class { xmlDom.root().toString() : ""; } + /** + * Define method to create a lookup for DOM + */ buildLookUpTable(node) { if (node) { let nodeName = node.name; @@ -8215,6 +9630,9 @@ var XmlDomUtility = class { } } } + /** + * Returns array of nodes which match with the tag name. + */ getElementsByTagName(nodeName) { if (envVarUtility.isEmpty(nodeName)) return []; let selectedElements = this.xmlDomLookUpTable[nodeName.toLowerCase()]; @@ -8223,6 +9641,9 @@ var XmlDomUtility = class { } return selectedElements; } + /** + * Search in subtree with provided node name + */ getChildElementsByTagName(node, tagName) { if (!envVarUtility.isObject(node)) return []; let children = node.children; @@ -8627,8 +10048,9 @@ function match2(list, patterns, patternRoot, options) { continue; } if ( - patternRoot && - !isRooted(pattern2) && + patternRoot && // patternRoot supplied + !isRooted(pattern2) && // AND pattern not rooted + // AND matchBase:false or not basename only (!options2.matchBase || (process.platform == "win32" ? pattern2.replace(/\\/g, "/") @@ -8687,7 +10109,10 @@ function isRooted(p) { throw new Error('isRooted() parameter "p" cannot be empty'); } if (process.platform == "win32") { - return startsWith(p, "\\") || /^[A-Z]:/i.test(p); + return ( + startsWith(p, "\\") || // e.g. \ or \hello or \\hello + /^[A-Z]:/i.test(p) + ); } return startsWith(p, "/"); } @@ -8723,7 +10148,7 @@ function exist(path2) { // src/variableSubstitution.ts var core5 = require_core(); var fs2 = require("fs"); -var yaml = require_js_yaml2(); +var yaml = require_js_yaml(); var fileEncoding = (init_fileEncodingUtility(), __toCommonJS(fileEncodingUtility_exports)); var VariableSubstitution = class { @@ -8731,18 +10156,16 @@ var VariableSubstitution = class { this.fileContentCache = /* @__PURE__ */ new Map(); this.parseException = ""; } - run() { - return __async(this, null, function* () { - let filesInput = core5.getInput("files", { required: true }); - let files = filesInput.split(","); - if (files.length > 0) { - this.segregateFilesAndSubstitute(files); - } else { - throw Error( - "File Tranformation is not enabled. Please provide JSON/XML or YAML target files for variable substitution." - ); - } - }); + async run() { + let filesInput = core5.getInput("files", { required: true }); + let files = filesInput.split(","); + if (files.length > 0) { + this.segregateFilesAndSubstitute(files); + } else { + throw Error( + "File Tranformation is not enabled. Please provide JSON/XML or YAML target files for variable substitution." + ); + } } segregateFilesAndSubstitute(files) { let isSubstitutionApplied = false; @@ -8861,7 +10284,7 @@ var VariableSubstitution = class { } isYaml(file, content) { try { - let yamlObject = yaml.safeLoad(content); + let yamlObject = yaml.load(content); if (!this.fileContentCache.has(file)) { this.fileContentCache.set(file, yamlObject); } diff --git a/package-lock.json b/package-lock.json index ad43ab7..76e2a9f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "dependencies": { "@actions/core": "^1.10.0", - "js-yaml": "^3.14.1", + "js-yaml": "^4.2.0", "ltx": "^2.10.0", "minimatch": "^4.0.0" }, @@ -20,10 +20,10 @@ "@types/mocha": "^5.2.7", "@types/node": "^12.20.55", "chai": "^4.3.7", - "esbuild": "^0.15.10", + "esbuild": "^0.28.1", "install": "^0.13.0", - "mocha": "^10.2.0", - "nyc": "^15.1.0", + "mocha": "^11.7.6", + "nyc": "^18.0.0", "prettier": "^2.7.1", "sinon": "^7.5.0", "ts-node": "^8.10.2", @@ -31,20 +31,22 @@ } }, "node_modules/@actions/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", - "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "license": "MIT", "dependencies": { - "@actions/http-client": "^2.0.1", - "uuid": "^8.3.2" + "@actions/exec": "^1.1.1", + "@actions/http-client": "^2.0.1" } }, - "node_modules/@actions/core/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "license": "MIT", + "dependencies": { + "@actions/io": "^1.0.1" } }, "node_modules/@actions/http-client": { @@ -55,41 +57,59 @@ "tunnel": "^0.0.6" } }, + "node_modules/@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", + "license": "MIT" + }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", - "convert-source-map": "^1.7.0", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -99,188 +119,142 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.8.3" - } - }, "node_modules/@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.8.3" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.8.3" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "dev": true, - "dependencies": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -289,1073 +263,1247 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.10.tgz", - "integrity": "sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz", - "integrity": "sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==", + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", "cpu": [ - "loong64" + "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ - "linux" + "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", - "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", - "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@sinonjs/commons": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.6.0.tgz", - "integrity": "sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "type-detect": "4.0.8" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", - "dev": true + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", - "dev": true - }, - "node_modules/@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", - "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "node_modules/aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=4" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">= 8" + "node": ">=18" } }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=8" - } - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "node_modules/arg": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.1.tgz", - "integrity": "sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" + "node": ">=18" } }, - "node_modules/array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "dev": true - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "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==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/@isaacs/cliui/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": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "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, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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, + "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@isaacs/cliui/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": { - "has-flag": "^3.0.0" + "ansi-regex": "^6.2.2" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "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": "*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "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", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "license": "ISC", "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" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=8" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "node_modules/@istanbuljs/schema": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, + "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.1" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=6.0.0" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/debug/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 - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "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": ">=0.10.0" + "node": ">=14" } }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "node_modules/@sinonjs/commons": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.6.0.tgz", + "integrity": "sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg==", "dev": true, "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" + "type-detect": "4.0.8" } }, - "node_modules/default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "node_modules/@sinonjs/formatio": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", "dev": true, "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" } }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "node_modules/@sinonjs/samsam": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", "dev": true, - "engines": { - "node": ">=0.3.1" + "dependencies": { + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "node_modules/@types/chai": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", + "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", "dev": true }, - "node_modules/esbuild": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.10.tgz", - "integrity": "sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==", + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.10", - "@esbuild/linux-loong64": "0.15.10", - "esbuild-android-64": "0.15.10", - "esbuild-android-arm64": "0.15.10", - "esbuild-darwin-64": "0.15.10", - "esbuild-darwin-arm64": "0.15.10", - "esbuild-freebsd-64": "0.15.10", - "esbuild-freebsd-arm64": "0.15.10", - "esbuild-linux-32": "0.15.10", - "esbuild-linux-64": "0.15.10", - "esbuild-linux-arm": "0.15.10", - "esbuild-linux-arm64": "0.15.10", - "esbuild-linux-mips64le": "0.15.10", - "esbuild-linux-ppc64le": "0.15.10", - "esbuild-linux-riscv64": "0.15.10", - "esbuild-linux-s390x": "0.15.10", - "esbuild-netbsd-64": "0.15.10", - "esbuild-openbsd-64": "0.15.10", - "esbuild-sunos-64": "0.15.10", - "esbuild-windows-32": "0.15.10", - "esbuild-windows-64": "0.15.10", - "esbuild-windows-arm64": "0.15.10" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz", - "integrity": "sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz", - "integrity": "sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==", - "cpu": [ - "arm64" - ], + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz", - "integrity": "sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==", - "cpu": [ - "x64" - ], + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz", - "integrity": "sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==", - "cpu": [ - "arm64" - ], + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "default-require-extensions": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz", - "integrity": "sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==", - "cpu": [ - "x64" - ], + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.1.tgz", + "integrity": "sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz", - "integrity": "sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==", - "cpu": [ - "arm64" - ], + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.37", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.37.tgz", + "integrity": "sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, "engines": { - "node": ">=12" + "node": ">=6.0.0" } }, - "node_modules/esbuild-linux-32": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz", - "integrity": "sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==", - "cpu": [ - "ia32" - ], + "node_modules/brace-expansion": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, - "optional": true, - "os": [ - "linux" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, "engines": { - "node": ">=12" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/esbuild-linux-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz", - "integrity": "sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==", - "cpu": [ - "x64" - ], + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz", - "integrity": "sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==", - "cpu": [ - "arm" - ], + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz", - "integrity": "sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==", - "cpu": [ - "arm64" - ], + "node_modules/caniuse-lite": { + "version": "1.0.30001799", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", + "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==", "dev": true, - "optional": true, - "os": [ - "linux" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], + "license": "CC-BY-4.0" + }, + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz", - "integrity": "sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==", - "cpu": [ - "mips64el" - ], + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz", - "integrity": "sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==", - "cpu": [ - "ppc64" - ], + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, "engines": { - "node": ">=12" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz", - "integrity": "sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==", - "cpu": [ - "riscv64" - ], + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz", - "integrity": "sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==", - "cpu": [ - "s390x" - ], + "node_modules/cliui": { + "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, - "optional": true, - "os": [ - "linux" - ], + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, "engines": { "node": ">=12" } }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz", - "integrity": "sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==", - "cpu": [ - "x64" - ], + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz", - "integrity": "sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==", - "cpu": [ - "x64" - ], + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" + "license": "MIT" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" } }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz", - "integrity": "sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==", - "cpu": [ - "x64" - ], + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/esbuild-windows-32": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz", - "integrity": "sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==", - "cpu": [ - "ia32" - ], + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=12" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/esbuild-windows-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz", - "integrity": "sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==", - "cpu": [ - "x64" - ], + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz", - "integrity": "sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==", - "cpu": [ - "arm64" - ], + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "type-detect": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/diff": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.8.0" + "node": ">=0.3.1" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.375", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.375.tgz", + "integrity": "sha512-ZWP5eB4BVPW/ZYo9252hQZHZ5XavtsTgpbhcmMmRwymavC5AsLWQWBPaKMeNd2LW0KGby5HPXvj7+sr4ta5j/Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, "node_modules/find-cache-dir": { @@ -1401,16 +1549,33 @@ } }, "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "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", - "signal-exit": "^3.0.2" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/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": ">=8.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/fromentries": { @@ -1419,31 +1584,12 @@ "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==", "dev": true }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1458,10 +1604,11 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -1476,56 +1623,87 @@ } }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, + "license": "BlueOak-1.0.0", "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": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "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", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">= 6" + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/lru-cache": { + "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": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, "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==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.5" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/glob/node_modules/path-scurry": { + "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": "^11.0.0", + "minipass": "^7.1.2" + }, "engines": { - "node": ">=4" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/graceful-fs": { @@ -1585,20 +1763,11 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -1613,27 +1782,6 @@ "node": ">= 0.10" } }, - "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, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -1643,25 +1791,14 @@ "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, "node_modules/is-plain-obj": { @@ -1705,6 +1842,7 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1722,10 +1860,11 @@ "dev": true }, "node_modules/istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -1743,48 +1882,50 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-3.0.1.tgz", + "integrity": "sha512-s3mX05h5wGZeScG6XnOanygPh4SJu5ujMc9YbvpnLGXWy1cRiGbp0NdVcjHxgoZt3WfQppfBsa0y+gWdYJ2pGQ==", "dev": true, + "license": "ISC", "dependencies": { "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" + "rimraf": "^6.1.3" }, "engines": { - "node": ">=8" + "node": "20 || >=22" } }, "node_modules/istanbul-lib-report": { @@ -1849,34 +1990,62 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "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" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json5": { @@ -1884,6 +2053,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -1913,10 +2083,11 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.flattendeep": { "version": "4.4.0", @@ -1940,21 +2111,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1971,24 +2127,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2025,6 +2163,16 @@ "get-func-name": "^2.0.0" } }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/ltx": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.10.0.tgz", @@ -2048,15 +2196,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/make-error": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", @@ -2064,9 +2203,10 @@ "dev": true }, "node_modules/minimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.0.0.tgz", - "integrity": "sha512-nUXi6viDR8DREKfJTnzZLh1amprrt6Hepx/WUngirNdiNEDmfkW2DLfiTeXWcMkMY0bRkuQ8eyCSbG3W4D0Qcg==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.6.tgz", + "integrity": "sha512-i35PeWjrW3Kv6/Jken0yeuByzK4YWer7UWba3yWg8+v+5WQQtcKiQ1GqGP7Jc3jhUdlviU3gQf89ON+69eD8RA==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2074,70 +2214,63 @@ "node": ">=10" } }, + "node_modules/minipass": { + "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" + } + }, "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": "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": { + "browser-stdout": "^1.3.1", + "chokidar": "^4.0.1", + "debug": "^4.3.5", + "diff": "^7.0.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.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": "^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": "^9.2.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/mocha/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/mocha/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/mocha/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==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/mocha/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2150,28 +2283,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/mocha/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", "dev": true, + "license": "ISC", "dependencies": { - "argparse": "^2.0.1" + "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" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "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": "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/ms": { @@ -2180,18 +2327,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "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/nise": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.2.tgz", @@ -2217,20 +2352,22 @@ "node": ">=8" } }, - "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==", + "node_modules/node-releases": { + "version": "2.0.47", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", + "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-18.0.0.tgz", + "integrity": "sha512-G5UyHinFkB1BxqGTrmZdB6uIYH0+v7ZnVssuflUDi+J+RhKWyAhRT1RCehBSI6jLFLuUUgFDyLt49mUtdO1XeQ==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", @@ -2239,13 +2376,13 @@ "decamelize": "^1.2.0", "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", - "foreground-child": "^2.0.0", + "foreground-child": "^3.3.0", "get-package-type": "^0.1.0", - "glob": "^7.1.6", + "glob": "^13.0.6", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-instrument": "^6.0.2", + "istanbul-lib-processinfo": "^3.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", @@ -2254,33 +2391,17 @@ "p-map": "^3.0.0", "process-on-spawn": "^1.0.0", "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", + "rimraf": "^6.1.3", "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", + "spawn-wrap": "^3.0.0", + "test-exclude": "^8.0.0", "yargs": "^15.0.2" }, "bin": { "nyc": "bin/nyc.js" }, "engines": { - "node": ">=8.9" - } - }, - "node_modules/nyc/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "20 || >=22" } }, "node_modules/nyc/node_modules/cliui": { @@ -2294,24 +2415,6 @@ "wrap-ansi": "^6.2.0" } }, - "node_modules/nyc/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/nyc/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/nyc/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -2398,15 +2501,6 @@ "node": ">=6" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, "node_modules/p-limit": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", @@ -2454,6 +2548,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -2485,6 +2580,13 @@ "node": ">=8" } }, + "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/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -2494,15 +2596,6 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -2512,17 +2605,36 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "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==", + "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/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==", + "dev": true, + "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, + "license": "MIT", "dependencies": { "isarray": "0.0.1" } @@ -2536,17 +2648,12 @@ "node": "*" } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "license": "ISC" }, "node_modules/pkg-dir": { "version": "4.2.0", @@ -2624,25 +2731,18 @@ "node": ">=8" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "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, - "dependencies": { - "picomatch": "^2.2.1" - }, + "license": "MIT", "engines": { - "node": ">=8.10.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/release-zalgo": { @@ -2672,18 +2772,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -2694,15 +2782,20 @@ } }, "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", + "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "glob": "^7.1.3" + "glob": "^13.0.3", + "package-json-from-dist": "^1.0.1" }, "bin": { - "rimraf": "bin.js" + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2715,21 +2808,23 @@ "dev": true }, "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, "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": "7.0.5", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", + "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", "dev": true, - "dependencies": { - "randombytes": "^2.1.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" } }, "node_modules/set-blocking": { @@ -2812,15 +2907,17 @@ } }, "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-3.0.0.tgz", + "integrity": "sha512-z+s5vv4KzFPJVddGab0xX2n7kQPGMdNUX5l9T8EJqsXdKTWpcxmAqWHpsgHEXoC1taGBCc7b79bi62M5kdbrxQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { + "cross-spawn": "^7.0.6", "foreground-child": "^2.0.0", "is-windows": "^1.0.2", "make-dir": "^3.0.0", - "rimraf": "^3.0.0", + "rimraf": "^6.1.3", "signal-exit": "^3.0.2", "which": "^2.0.1" }, @@ -2828,26 +2925,20 @@ "node": ">=8" } }, - "node_modules/spawn-wrap/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/spawn-wrap/node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, + "license": "ISC", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">= 8" + "node": ">=8.0.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -2862,6 +2953,22 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "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", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -2874,6 +2981,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "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" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -2920,50 +3041,57 @@ } }, "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-8.0.0.tgz", + "integrity": "sha512-ZOffsNrXYggvU1mDGHk54I96r26P8SyMjO5slMKSc7+IWmtB/MQKnEC2fP51imB3/pT6YK5cT5E8f+Dd9KdyOQ==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "glob": "^13.0.6", + "minimatch": "^10.2.2" }, "engines": { - "node": ">=8" + "node": "20 || >=22" } }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/test-exclude/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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": "18 || 20 || >=22" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, "engines": { - "node": ">=4" + "node": "18 || 20 || >=22" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/test-exclude/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "is-number": "^7.0.0" + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=8.0" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ts-node": { @@ -2991,15 +3119,6 @@ "typescript": ">=2.7" } }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", - "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -3048,14 +3167,51 @@ "node": ">=4.2.0" } }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, "bin": { - "uuid": "bin/uuid" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/which-module": { @@ -3065,16 +3221,18 @@ "dev": true }, "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": "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": "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", @@ -3087,45 +3245,25 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/wrap-ansi-cjs": { + "name": "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": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -3144,31 +3282,40 @@ "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "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": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "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": ">=10" + "node": ">=12" } }, "node_modules/yargs-unparser": { @@ -3215,6 +3362,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" } @@ -3243,19 +3391,20 @@ }, "dependencies": { "@actions/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", - "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", "requires": { - "@actions/http-client": "^2.0.1", - "uuid": "^8.3.2" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } + "@actions/exec": "^1.1.1", + "@actions/http-client": "^2.0.1" + } + }, + "@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "requires": { + "@actions/io": "^1.0.1" } }, "@actions/http-client": { @@ -3266,261 +3415,442 @@ "tunnel": "^0.0.6" } }, + "@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==" + }, "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" } }, + "@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true + }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true } } }, - "@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "@babel/generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true + }, + "@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "requires": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + } + }, + "@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "requires": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + } + }, + "@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "dev": true, + "requires": { + "@babel/types": "^7.29.7" + } + }, + "@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + } + }, + "@babel/traverse": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" + } + }, + "@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + } + }, + "@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", "dev": true, - "requires": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } + "optional": true }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true + "@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "dev": true, + "optional": true }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", "dev": true, - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } + "optional": true }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } + "optional": true }, - "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } + "optional": true }, - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } + "optional": true }, - "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" - } + "optional": true }, - "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } + "optional": true }, - "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" - } + "optional": true }, - "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", "dev": true, - "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } + "optional": true }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } + "optional": true }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true + "@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "dev": true, + "optional": true }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true + "@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "dev": true, + "optional": true }, - "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", "dev": true, - "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" - } + "optional": true }, - "@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - } + "optional": true }, - "@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true + "@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "dev": true, + "optional": true }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - } + "optional": true }, - "@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } + "optional": true }, - "@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } + "optional": true }, - "@esbuild/android-arm": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.10.tgz", - "integrity": "sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==", + "@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", "dev": true, "optional": true }, - "@esbuild/linux-loong64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz", - "integrity": "sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==", + "@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", "dev": true, "optional": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true + }, + "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 + }, + "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 + }, + "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, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "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, + "requires": { + "ansi-regex": "^6.2.2" + } + }, + "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, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@istanbuljs/load-nyc-config": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", - "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "requires": { "camelcase": "^5.3.1", "find-up": "^4.1.0", - "js-yaml": "^3.13.1", + "get-package-type": "^0.1.0", + "js-yaml": "^4.2.0", "resolve-from": "^5.0.0" }, "dependencies": { @@ -3555,50 +3885,60 @@ } }, "@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", - "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", "dev": true }, "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true + "@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true }, "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@sinonjs/commons": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.6.0.tgz", @@ -3641,12 +3981,6 @@ "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", "dev": true }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, "@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -3666,21 +4000,15 @@ "dev": true }, "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, - "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==", - "dev": true - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -3688,22 +4016,12 @@ "dev": true }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "color-convert": "^2.0.1" } }, "append-transform": { @@ -3718,7 +4036,7 @@ "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, "arg": { @@ -3728,12 +4046,9 @@ "dev": true }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "array-from": { "version": "2.1.1", @@ -3752,36 +4067,40 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "baseline-browser-mapping": { + "version": "2.10.37", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.37.tgz", + "integrity": "sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig==", "dev": true }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, + "browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "requires": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -3806,6 +4125,12 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, + "caniuse-lite": { + "version": "1.0.30001799", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", + "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==", + "dev": true + }, "chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -3821,28 +4146,6 @@ "type-detect": "^4.0.5" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -3850,19 +4153,12 @@ "dev": true }, "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" } }, "clean-stack": { @@ -3872,29 +4168,29 @@ "dev": true }, "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, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "commondir": { @@ -3918,42 +4214,23 @@ } }, "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } } }, "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, "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "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 - } + "ms": "^2.1.3" } }, "decamelize": { @@ -3981,9 +4258,21 @@ } }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.5.375", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.375.tgz", + "integrity": "sha512-ZWP5eB4BVPW/ZYo9252hQZHZ5XavtsTgpbhcmMmRwymavC5AsLWQWBPaKMeNd2LW0KGby5HPXvj7+sr4ta5j/Q==", "dev": true }, "emoji-regex": { @@ -3993,207 +4282,51 @@ "dev": true }, "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "esbuild": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.10.tgz", - "integrity": "sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.10", - "@esbuild/linux-loong64": "0.15.10", - "esbuild-android-64": "0.15.10", - "esbuild-android-arm64": "0.15.10", - "esbuild-darwin-64": "0.15.10", - "esbuild-darwin-arm64": "0.15.10", - "esbuild-freebsd-64": "0.15.10", - "esbuild-freebsd-arm64": "0.15.10", - "esbuild-linux-32": "0.15.10", - "esbuild-linux-64": "0.15.10", - "esbuild-linux-arm": "0.15.10", - "esbuild-linux-arm64": "0.15.10", - "esbuild-linux-mips64le": "0.15.10", - "esbuild-linux-ppc64le": "0.15.10", - "esbuild-linux-riscv64": "0.15.10", - "esbuild-linux-s390x": "0.15.10", - "esbuild-netbsd-64": "0.15.10", - "esbuild-openbsd-64": "0.15.10", - "esbuild-sunos-64": "0.15.10", - "esbuild-windows-32": "0.15.10", - "esbuild-windows-64": "0.15.10", - "esbuild-windows-arm64": "0.15.10" - } - }, - "esbuild-android-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz", - "integrity": "sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz", - "integrity": "sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz", - "integrity": "sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz", - "integrity": "sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz", - "integrity": "sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz", - "integrity": "sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz", - "integrity": "sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz", - "integrity": "sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz", - "integrity": "sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz", - "integrity": "sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz", - "integrity": "sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz", - "integrity": "sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz", - "integrity": "sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz", - "integrity": "sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz", - "integrity": "sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz", - "integrity": "sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz", - "integrity": "sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz", - "integrity": "sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz", - "integrity": "sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz", - "integrity": "sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==", - "dev": true, - "optional": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" } }, + "escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true + }, "find-cache-dir": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", @@ -4222,13 +4355,21 @@ "dev": true }, "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "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 + } } }, "fromentries": { @@ -4237,23 +4378,10 @@ "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==", "dev": true }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { @@ -4263,9 +4391,9 @@ "dev": true }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "get-package-type": { @@ -4275,45 +4403,58 @@ "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, "requires": { - "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": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "dependencies": { + "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 + }, + "brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "requires": { + "balanced-match": "^4.0.2" + } + }, + "lru-cache": { + "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 + }, "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "requires": { + "brace-expansion": "^5.0.5" + } + }, + "path-scurry": { + "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, "requires": { - "brace-expansion": "^1.1.7" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" } } } }, - "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, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, "graceful-fs": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", @@ -4360,16 +4501,6 @@ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -4381,40 +4512,16 @@ "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", "dev": true }, - "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, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, "is-plain-obj": { @@ -4460,9 +4567,9 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true }, "istanbul-lib-hook": { @@ -4475,41 +4582,37 @@ } }, "istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "requires": { - "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", "dev": true } } }, "istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-3.0.1.tgz", + "integrity": "sha512-s3mX05h5wGZeScG6XnOanygPh4SJu5ujMc9YbvpnLGXWy1cRiGbp0NdVcjHxgoZt3WfQppfBsa0y+gWdYJ2pGQ==", "dev": true, "requires": { "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" + "rimraf": "^6.1.3" } }, "istanbul-lib-report": { @@ -4561,6 +4664,16 @@ "istanbul-lib-report": "^3.0.0" } }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4568,18 +4681,17 @@ "dev": true }, "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true }, "json5": { @@ -4604,9 +4716,9 @@ } }, "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true }, "lodash.flattendeep": { @@ -4625,15 +4737,6 @@ "is-unicode-supported": "^0.1.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4644,21 +4747,6 @@ "supports-color": "^7.1.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4691,6 +4779,15 @@ "get-func-name": "^2.0.0" } }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, "ltx": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.10.0.tgz", @@ -4706,14 +4803,6 @@ "dev": true, "requires": { "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "make-error": { @@ -4723,85 +4812,84 @@ "dev": true }, "minimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.0.0.tgz", - "integrity": "sha512-nUXi6viDR8DREKfJTnzZLh1amprrt6Hepx/WUngirNdiNEDmfkW2DLfiTeXWcMkMY0bRkuQ8eyCSbG3W4D0Qcg==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.6.tgz", + "integrity": "sha512-i35PeWjrW3Kv6/Jken0yeuByzK4YWer7UWba3yWg8+v+5WQQtcKiQ1GqGP7Jc3jhUdlviU3gQf89ON+69eD8RA==", "requires": { "brace-expansion": "^1.1.7" } }, + "minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true + }, "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "11.7.6", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.6.tgz", + "integrity": "sha512-nS9xOGbw2I3cjCpxwZAEJ9xK9lmJ08vEkQvLtz4du9ZrF9UrjRpeJGiIgl2Z+Qs++pmB4ecDe48Fwsh+j+j7xA==", "dev": true, "requires": { - "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" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, + "browser-stdout": "^1.3.1", + "chokidar": "^4.0.1", + "debug": "^4.3.5", + "diff": "^9.0.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.2.0", + "log-symbols": "^4.1.0", + "minimatch": "^9.0.5", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "serialize-javascript": "^7.0.5", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^9.2.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" + }, + "dependencies": { "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, "requires": { "balanced-match": "^1.0.0" } }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, "requires": { - "argparse": "^2.0.1" + "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": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "requires": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" } } } @@ -4812,12 +4900,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "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 - }, "nise": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.2.tgz", @@ -4840,16 +4922,16 @@ "process-on-spawn": "^1.0.0" } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node-releases": { + "version": "2.0.47", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", + "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", "dev": true }, "nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-18.0.0.tgz", + "integrity": "sha512-G5UyHinFkB1BxqGTrmZdB6uIYH0+v7ZnVssuflUDi+J+RhKWyAhRT1RCehBSI6jLFLuUUgFDyLt49mUtdO1XeQ==", "dev": true, "requires": { "@istanbuljs/load-nyc-config": "^1.0.0", @@ -4859,13 +4941,13 @@ "decamelize": "^1.2.0", "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", - "foreground-child": "^2.0.0", + "foreground-child": "^3.3.0", "get-package-type": "^0.1.0", - "glob": "^7.1.6", + "glob": "^13.0.6", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-instrument": "^6.0.2", + "istanbul-lib-processinfo": "^3.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", @@ -4874,23 +4956,13 @@ "p-map": "^3.0.0", "process-on-spawn": "^1.0.0", "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", + "rimraf": "^6.1.3", "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", + "spawn-wrap": "^3.0.0", + "test-exclude": "^8.0.0", "yargs": "^15.0.2" }, "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -4902,21 +4974,6 @@ "wrap-ansi": "^6.2.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -4987,15 +5044,6 @@ } } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, "p-limit": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", @@ -5052,34 +5100,46 @@ "release-zalgo": "^1.0.0" } }, + "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 + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "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, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "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 + } + } }, "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "requires": { "isarray": "0.0.1" @@ -5091,10 +5151,10 @@ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "pkg-dir": { @@ -5151,23 +5211,11 @@ "fromentries": "^1.2.0" } }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true }, "release-zalgo": { "version": "1.0.0", @@ -5190,15 +5238,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -5206,12 +5245,13 @@ "dev": true }, "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", + "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", "dev": true, "requires": { - "glob": "^7.1.3" + "glob": "^13.0.3", + "package-json-from-dist": "^1.0.1" } }, "safe-buffer": { @@ -5221,19 +5261,16 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", + "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", + "dev": true }, "set-blocking": { "version": "2.0.0", @@ -5271,7 +5308,7 @@ "@sinonjs/commons": "^1.4.0", "@sinonjs/formatio": "^3.2.1", "@sinonjs/samsam": "^3.3.3", - "diff": "^3.5.0", + "diff": "^9.0.0", "lolex": "^4.2.0", "nise": "^1.5.2", "supports-color": "^5.5.0" @@ -5305,35 +5342,32 @@ } }, "spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-3.0.0.tgz", + "integrity": "sha512-z+s5vv4KzFPJVddGab0xX2n7kQPGMdNUX5l9T8EJqsXdKTWpcxmAqWHpsgHEXoC1taGBCc7b79bi62M5kdbrxQ==", "dev": true, "requires": { + "cross-spawn": "^7.0.6", "foreground-child": "^2.0.0", "is-windows": "^1.0.2", "make-dir": "^3.0.0", - "rimraf": "^3.0.0", + "rimraf": "^6.1.3", "signal-exit": "^3.0.2", "which": "^2.0.1" }, "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, "requires": { - "isexe": "^2.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" } } } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -5345,6 +5379,17 @@ "strip-ansi": "^6.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -5354,6 +5399,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -5384,42 +5438,42 @@ } }, "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-8.0.0.tgz", + "integrity": "sha512-ZOffsNrXYggvU1mDGHk54I96r26P8SyMjO5slMKSc7+IWmtB/MQKnEC2fP51imB3/pT6YK5cT5E8f+Dd9KdyOQ==", "dev": true, "requires": { "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "glob": "^13.0.6", + "minimatch": "^10.2.2" }, "dependencies": { + "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 + }, + "brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "requires": { + "balanced-match": "^4.0.2" + } + }, "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.5" } } } }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, "ts-node": { "version": "8.10.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", @@ -5427,18 +5481,10 @@ "dev": true, "requires": { "arg": "^4.1.0", - "diff": "^4.0.1", + "diff": "^9.0.0", "make-error": "^1.1.1", "source-map-support": "^0.5.17", "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", - "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", - "dev": true - } } }, "tunnel": { @@ -5473,11 +5519,24 @@ "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", "dev": true }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "requires": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } }, "which-module": { "version": "2.0.0", @@ -5486,9 +5545,9 @@ "dev": true }, "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", + "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", "dev": true }, "wrap-ansi": { @@ -5500,39 +5559,18 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } }, "write-file-atomic": { "version": "3.0.3", @@ -5552,19 +5590,25 @@ "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { - "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" }, "dependencies": { "y18n": { @@ -5576,9 +5620,9 @@ } }, "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "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 }, "yargs-unparser": { diff --git a/package.json b/package.json index 6fda2dc..816fb67 100644 --- a/package.json +++ b/package.json @@ -27,10 +27,10 @@ "@types/mocha": "^5.2.7", "@types/node": "^12.20.55", "chai": "^4.3.7", - "esbuild": "^0.15.10", + "esbuild": "^0.28.1", "install": "^0.13.0", - "mocha": "^10.2.0", - "nyc": "^15.1.0", + "mocha": "^11.7.6", + "nyc": "^18.0.0", "prettier": "^2.7.1", "sinon": "^7.5.0", "ts-node": "^8.10.2", @@ -38,8 +38,13 @@ }, "dependencies": { "@actions/core": "^1.10.0", - "js-yaml": "^3.14.1", + "js-yaml": "^4.2.0", "ltx": "^2.10.0", "minimatch": "^4.0.0" + }, + "overrides": { + "diff": "^9.0.0", + "js-yaml": "$js-yaml", + "serialize-javascript": "^7.0.5" } } diff --git a/src/variableSubstitution.ts b/src/variableSubstitution.ts index 44cc76e..f25836e 100644 --- a/src/variableSubstitution.ts +++ b/src/variableSubstitution.ts @@ -114,7 +114,7 @@ export class VariableSubstitution { private isYaml(file: string, content: string) : boolean { try { - let yamlObject = yaml.safeLoad(content); + let yamlObject = yaml.load(content); if(!this.fileContentCache.has(file)) { this.fileContentCache.set(file, yamlObject); } From 1ea0692ad6927350c26a1686958b552351ffd904 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 17 Jun 2026 02:19:20 +0000 Subject: [PATCH 2/2] Update readme with latest version and/or recompile the action. --- lib/Tests/jsonVariableSubstitution.test.js | 268 ++++---- lib/Tests/variableSubstitution.test.js | 134 ++-- lib/Tests/xmlVariableSubstituttion.test.js | 171 ++--- lib/operations/envVariableUtility.js | 146 ++--- lib/operations/fileEncodingUtility.js | 124 ++-- .../jsonVariableSubstitutionUtility.js | 112 ++-- lib/operations/utility.js | 614 +++++++++--------- lib/operations/xmlDomUtility.js | 154 +++-- lib/operations/xmlVariableSubstitution.js | 295 ++++----- 9 files changed, 904 insertions(+), 1114 deletions(-) diff --git a/lib/Tests/jsonVariableSubstitution.test.js b/lib/Tests/jsonVariableSubstitution.test.js index 2d33cc7..4662383 100644 --- a/lib/Tests/jsonVariableSubstitution.test.js +++ b/lib/Tests/jsonVariableSubstitution.test.js @@ -5,150 +5,130 @@ const chai = require("chai"); const envVariableUtility_1 = require("../operations/envVariableUtility"); const jsonVariableSubstitutionUtility_1 = require("../operations/jsonVariableSubstitutionUtility"); var expect = chai.expect; -describe("Test JSON Variable Substitution", () => { - var jsonObject, isApplied; - before(() => { - let stub = sinon - .stub(envVariableUtility_1.EnvTreeUtility, "getEnvVarTree") - .callsFake(() => { - let envVariables = new Map([ - ["system.debug", "true"], - ["data.ConnectionString", "database_connection"], - ["data.userName", "db_admin"], - ["data.password", "db_pass"], - ["&pl.ch@r@cter.k^y", "*.config"], - ["build.sourceDirectory", "DefaultWorkingDirectory"], - ["user.profile.name.first", "firstName"], - ["user.profile", "replace_all"], - ["constructor.name", "newConstructorName"], - ["constructor.valueOf", "constructorNewValue"], - ["profile.users", '["suaggar","rok","asranja", "chaitanya"]'], - ["profile.enabled", "false"], - ["profile.version", "1173"], - ["profile.somefloat", "97.75"], - [ - "profile.preimum_level", - '{"suaggar": "V4", "rok": "V5", "asranja": { "type" : "V6"}}', - ], - ]); - let envVarTree = { - value: null, - isEnd: false, - child: { - __proto__: null, - }, - }; - for (let [key, value] of envVariables.entries()) { - if (!envVariableUtility_1.isPredefinedVariable(key)) { - let envVarTreeIterator = envVarTree; - let envVariableNameArray = key.split("."); - for (let variableName of envVariableNameArray) { - if ( - envVarTreeIterator.child[variableName] === undefined || - typeof envVarTreeIterator.child[variableName] === "function" - ) { - envVarTreeIterator.child[variableName] = { - value: null, - isEnd: false, - child: {}, - }; - } - envVarTreeIterator = envVarTreeIterator.child[variableName]; +describe('Test JSON Variable Substitution', () => { + var jsonObject, isApplied; + before(() => { + let stub = sinon.stub(envVariableUtility_1.EnvTreeUtility, "getEnvVarTree").callsFake(() => { + let envVariables = new Map([ + ['system.debug', 'true'], + ['data.ConnectionString', 'database_connection'], + ['data.userName', 'db_admin'], + ['data.password', 'db_pass'], + ['&pl.ch@r@cter.k^y', '*.config'], + ['build.sourceDirectory', 'DefaultWorkingDirectory'], + ['user.profile.name.first', 'firstName'], + ['user.profile', 'replace_all'], + ['constructor.name', 'newConstructorName'], + ['constructor.valueOf', 'constructorNewValue'], + ['profile.users', '["suaggar","rok","asranja", "chaitanya"]'], + ['profile.enabled', 'false'], + ['profile.version', '1173'], + ['profile.somefloat', '97.75'], + ['profile.preimum_level', '{"suaggar": "V4", "rok": "V5", "asranja": { "type" : "V6"}}'] + ]); + let envVarTree = { + value: null, + isEnd: false, + child: { + '__proto__': null + } + }; + for (let [key, value] of envVariables.entries()) { + if (!envVariableUtility_1.isPredefinedVariable(key)) { + let envVarTreeIterator = envVarTree; + let envVariableNameArray = key.split('.'); + for (let variableName of envVariableNameArray) { + if (envVarTreeIterator.child[variableName] === undefined || typeof envVarTreeIterator.child[variableName] === 'function') { + envVarTreeIterator.child[variableName] = { + value: null, + isEnd: false, + child: {} + }; + } + envVarTreeIterator = envVarTreeIterator.child[variableName]; + } + envVarTreeIterator.isEnd = true; + envVarTreeIterator.value = value; + } + } + return envVarTree; + }); + jsonObject = { + 'User.Profile': 'do_not_replace', + 'data': { + 'ConnectionString': 'connect_string', + 'userName': 'name', + 'password': 'pass' + }, + '&pl': { + 'ch@r@cter.k^y': 'v@lue' + }, + 'system': { + 'debug': 'no_change' + }, + 'user.profile': { + 'name.first': 'fname' + }, + 'constructor.name': 'myconstructorname', + 'constructor': { + 'name': 'myconstructorname', + 'valueOf': 'myconstructorvalue' + }, + 'profile': { + 'users': ['arjgupta', 'raagra', 'muthuk'], + 'preimum_level': { + 'arjgupta': 'V1', + 'raagra': 'V2', + 'muthuk': { + 'type': 'V3' + } + }, + "enabled": true, + "version": 2, + "somefloat": 2.3456 } - envVarTreeIterator.isEnd = true; - envVarTreeIterator.value = value; - } - } - return envVarTree; - }); - jsonObject = { - "User.Profile": "do_not_replace", - data: { - ConnectionString: "connect_string", - userName: "name", - password: "pass", - }, - "&pl": { - "ch@r@cter.k^y": "v@lue", - }, - system: { - debug: "no_change", - }, - "user.profile": { - "name.first": "fname", - }, - "constructor.name": "myconstructorname", - constructor: { - name: "myconstructorname", - valueOf: "myconstructorvalue", - }, - profile: { - users: ["arjgupta", "raagra", "muthuk"], - preimum_level: { - arjgupta: "V1", - raagra: "V2", - muthuk: { - type: "V3", - }, - }, - enabled: true, - version: 2, - somefloat: 2.3456, - }, - }; - let jsonSubsitution = - new jsonVariableSubstitutionUtility_1.JsonSubstitution(); - isApplied = jsonSubsitution.substituteJsonVariable( - jsonObject, - envVariableUtility_1.EnvTreeUtility.getEnvVarTree() - ); - stub.restore(); - }); - it("Should substitute", () => { - console.log(JSON.stringify(jsonObject)); - expect(isApplied).to.equal(true); - }); - it("Validate simple string change", () => { - expect(jsonObject["data"]["ConnectionString"]).to.equal( - "database_connection" - ); - expect(jsonObject["data"]["userName"]).to.equal("db_admin"); - }); - it("Validate system variable elimination", () => { - expect(jsonObject["system"]["debug"]).to.equal("no_change"); - }); - it("Validate special variables", () => { - expect(jsonObject["&pl"]["ch@r@cter.k^y"]).to.equal("*.config"); - }); - it("Validate case sensitive variables", () => { - expect(jsonObject["User.Profile"]).to.equal("do_not_replace"); - }); - it("Validate inbuilt JSON attributes substitution", () => { - expect(jsonObject["constructor.name"]).to.equal("newConstructorName"); - expect(jsonObject["constructor"]["name"]).to.equal("newConstructorName"); - expect(jsonObject["constructor"]["valueOf"]).to.equal( - "constructorNewValue" - ); - }); - it("Validate Array Object", () => { - expect(jsonObject["profile"]["users"].length).to.equal(4); - let newArray = ["suaggar", "rok", "asranja", "chaitanya"]; - expect(jsonObject["profile"]["users"]).to.deep.equal(newArray); - }); - it("Validate Boolean", () => { - expect(jsonObject["profile"]["enabled"]).to.equal(false); - }); - it("Validate Number(float)", () => { - expect(jsonObject["profile"]["somefloat"]).to.equal(97.75); - }); - it("Validate Number(int)", () => { - expect(jsonObject["profile"]["version"]).to.equal(1173); - }); - it("Validate Object", () => { - expect(jsonObject["profile"]["preimum_level"]).to.deep.equal({ - suaggar: "V4", - rok: "V5", - asranja: { type: "V6" }, + }; + let jsonSubsitution = new jsonVariableSubstitutionUtility_1.JsonSubstitution(); + isApplied = jsonSubsitution.substituteJsonVariable(jsonObject, envVariableUtility_1.EnvTreeUtility.getEnvVarTree()); + stub.restore(); + }); + it("Should substitute", () => { + console.log(JSON.stringify(jsonObject)); + expect(isApplied).to.equal(true); + }); + it("Validate simple string change", () => { + expect(jsonObject['data']['ConnectionString']).to.equal('database_connection'); + expect(jsonObject['data']['userName']).to.equal('db_admin'); + }); + it("Validate system variable elimination", () => { + expect(jsonObject['system']['debug']).to.equal('no_change'); + }); + it("Validate special variables", () => { + expect(jsonObject['&pl']['ch@r@cter.k^y']).to.equal('*.config'); + }); + it("Validate case sensitive variables", () => { + expect(jsonObject['User.Profile']).to.equal('do_not_replace'); + }); + it("Validate inbuilt JSON attributes substitution", () => { + expect(jsonObject['constructor.name']).to.equal('newConstructorName'); + expect(jsonObject['constructor']['name']).to.equal('newConstructorName'); + expect(jsonObject['constructor']['valueOf']).to.equal('constructorNewValue'); + }); + it("Validate Array Object", () => { + expect(jsonObject['profile']['users'].length).to.equal(4); + let newArray = ["suaggar", "rok", "asranja", "chaitanya"]; + expect(jsonObject['profile']['users']).to.deep.equal(newArray); + }); + it("Validate Boolean", () => { + expect(jsonObject['profile']['enabled']).to.equal(false); + }); + it("Validate Number(float)", () => { + expect(jsonObject['profile']['somefloat']).to.equal(97.75); + }); + it("Validate Number(int)", () => { + expect(jsonObject['profile']['version']).to.equal(1173); + }); + it("Validate Object", () => { + expect(jsonObject['profile']['preimum_level']).to.deep.equal({ "suaggar": "V4", "rok": "V5", "asranja": { "type": "V6" } }); }); - }); }); diff --git a/lib/Tests/variableSubstitution.test.js b/lib/Tests/variableSubstitution.test.js index 3885c05..1130460 100644 --- a/lib/Tests/variableSubstitution.test.js +++ b/lib/Tests/variableSubstitution.test.js @@ -7,72 +7,70 @@ const chai_1 = require("chai"); const path = require("path"); const sinon = require("sinon"); describe("Test variable substitution main", () => { - var spy, JsonSubstitutionMock, XmlSubstitutionMock; - before(() => { - spy = sinon.spy(console, "log"); - JsonSubstitutionMock = sinon.mock( - jsonVariableSubstitutionUtility_1.JsonSubstitution - ); - XmlSubstitutionMock = sinon.mock(xmlVariableSubstitution_1.XmlSubstitution); - }); - after(() => { - JsonSubstitutionMock.restore(); - XmlSubstitutionMock.restore(); - spy.restore(); - }); - it("Valid XML", () => { - let file = path.join(__dirname, "/Resources/Web.config"); - let filesArr = file.split(","); - let varSub = new variableSubstitution_1.VariableSubstitution(); - try { - varSub.segregateFilesAndSubstitute(filesArr); - } catch (e) {} - chai_1.expect( - spy.calledWith("Applying variable substitution on XML file: " + file) - ).to.be.true; - }); - it("Valid JSON", () => { - let file = path.join(__dirname, "/Resources/test.json"); - let filesArr = file.split(","); - let varSub = new variableSubstitution_1.VariableSubstitution(); - try { - varSub.segregateFilesAndSubstitute(filesArr); - } catch (e) {} - chai_1.expect( - spy.calledWith("Applying variable substitution on JSON file: " + file) - ).to.be.true; - }); - it("Invalid JSON", () => { - let file = path.join(__dirname, "/Resources/Wrong_test.json"); - let filesArr = file.split(","); - let varSub = new variableSubstitution_1.VariableSubstitution(); - try { - varSub.segregateFilesAndSubstitute(filesArr); - } catch (e) {} - chai_1.expect( - spy.calledWith("Applying variable substitution on JSON file: " + file) - ).to.be.false; - }); - it("Valid YAML", () => { - let file = path.join(__dirname, "/Resources/test.yaml"); - let filesArr = file.split(","); - let varSub = new variableSubstitution_1.VariableSubstitution(); - try { - varSub.segregateFilesAndSubstitute(filesArr); - } catch (e) {} - chai_1.expect( - spy.calledWith("Applying variable substitution on YAML file: " + file) - ).to.be.true; - }); - it("Invalid YAML", () => { - let file = path.join(__dirname, "/Resources/Wrong_test.yml"); - let filesArr = file.split(","); - let varSub = new variableSubstitution_1.VariableSubstitution(); - try { - varSub.segregateFilesAndSubstitute(filesArr); - } catch (e) {} - chai_1.expect( - spy.calledWith("Applying variable substitution on YAML file: " + file) - ).to.be.false; - }); + var spy, JsonSubstitutionMock, XmlSubstitutionMock; + before(() => { + spy = sinon.spy(console, "log"); + JsonSubstitutionMock = sinon.mock(jsonVariableSubstitutionUtility_1.JsonSubstitution); + XmlSubstitutionMock = sinon.mock(xmlVariableSubstitution_1.XmlSubstitution); + }); + after(() => { + JsonSubstitutionMock.restore(); + XmlSubstitutionMock.restore(); + spy.restore(); + }); + it("Valid XML", () => { + let file = path.join(__dirname, "/Resources/Web.config"); + let filesArr = file.split(","); + let varSub = new variableSubstitution_1.VariableSubstitution(); + try { + varSub.segregateFilesAndSubstitute(filesArr); + } + catch (e) { + } + chai_1.expect(spy.calledWith("Applying variable substitution on XML file: " + file)).to.be.true; + }); + it("Valid JSON", () => { + let file = path.join(__dirname, "/Resources/test.json"); + let filesArr = file.split(","); + let varSub = new variableSubstitution_1.VariableSubstitution(); + try { + varSub.segregateFilesAndSubstitute(filesArr); + } + catch (e) { + } + chai_1.expect(spy.calledWith("Applying variable substitution on JSON file: " + file)).to.be.true; + }); + it("Invalid JSON", () => { + let file = path.join(__dirname, "/Resources/Wrong_test.json"); + let filesArr = file.split(","); + let varSub = new variableSubstitution_1.VariableSubstitution(); + try { + varSub.segregateFilesAndSubstitute(filesArr); + } + catch (e) { + } + chai_1.expect(spy.calledWith("Applying variable substitution on JSON file: " + file)).to.be.false; + }); + it("Valid YAML", () => { + let file = path.join(__dirname, "/Resources/test.yaml"); + let filesArr = file.split(","); + let varSub = new variableSubstitution_1.VariableSubstitution(); + try { + varSub.segregateFilesAndSubstitute(filesArr); + } + catch (e) { + } + chai_1.expect(spy.calledWith("Applying variable substitution on YAML file: " + file)).to.be.true; + }); + it("Invalid YAML", () => { + let file = path.join(__dirname, "/Resources/Wrong_test.yml"); + let filesArr = file.split(","); + let varSub = new variableSubstitution_1.VariableSubstitution(); + try { + varSub.segregateFilesAndSubstitute(filesArr); + } + catch (e) { + } + chai_1.expect(spy.calledWith("Applying variable substitution on YAML file: " + file)).to.be.false; + }); }); diff --git a/lib/Tests/xmlVariableSubstituttion.test.js b/lib/Tests/xmlVariableSubstituttion.test.js index 2d3638c..4ccb91a 100644 --- a/lib/Tests/xmlVariableSubstituttion.test.js +++ b/lib/Tests/xmlVariableSubstituttion.test.js @@ -1,41 +1,23 @@ "use strict"; -var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); -var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); -var __importStar = - (this && this.__importStar) || - function (mod) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; - }; +}; Object.defineProperty(exports, "__esModule", { value: true }); const envVarUtility = __importStar(require("../operations/envVariableUtility")); const xmlDomUtility_1 = require("../operations/xmlDomUtility"); @@ -45,75 +27,56 @@ const fs = require("fs"); const path = require("path"); const sinon = require("sinon"); var expect = chai.expect; -describe("Test Xml Variable Substitution", () => { - it("Should substitute", () => { - let envVarUtilityMock = sinon.mock(envVarUtility); - envVarUtilityMock.expects("getVariableMap").returns( - new Map([ - ["conntype", "new_connType"], - ["MyDB", "TestDB"], - ["webpages:Version", "1.1.7.3"], - ["xdt:Transform", "DelAttributes"], - ["xdt:Locator", "Match(tag)"], - [ - "DefaultConnection", - "Url=https://primary;Database=db1;ApiKey=11111111-1111-1111-1111-111111111111;Failover = {Url:'https://secondary', ApiKey:'11111111-1111-1111-1111-111111111111'}", - ], - ["OtherDefaultConnection", "connectionStringValue2"], - ["ParameterConnection", "New_Connection_String From xml var subs"], - ["connectionString", "replaced_value"], - ["invariantName", "System.Data.SqlServer"], - ["blatvar", "ApplicationSettingReplacedValue"], - ["log_level", "error,warning"], - ["Email:ToOverride", ""], - ]) - ); - function replaceEscapeXMLCharacters(xmlDOMNode) { - if (!xmlDOMNode || typeof xmlDOMNode == "string") { - return; - } - for (var xmlAttribute in xmlDOMNode.attrs) { - xmlDOMNode.attrs[xmlAttribute] = xmlDOMNode.attrs[xmlAttribute].replace( - /'/g, - "APOS_CHARACTER_TOKEN" - ); - } - for (var xmlChild of xmlDOMNode.children) { - replaceEscapeXMLCharacters(xmlChild); - } - } - let source = path.join(__dirname, "/Resources/Web.config"); - let fileBuffer = fs.readFileSync(source); - let fileContent = fileBuffer.toString("utf-8"); - let xmlDomUtilityInstance = new xmlDomUtility_1.XmlDomUtility(fileContent); - let xmlSubstitution = new xmlVariableSubstitution_1.XmlSubstitution( - xmlDomUtilityInstance - ); - let isApplied = xmlSubstitution.substituteXmlVariables(); - expect(isApplied).to.equal(true); - let xmlDocument = xmlDomUtilityInstance.getXmlDom(); - replaceEscapeXMLCharacters(xmlDocument); - let domContent = - "\uFEFF" + xmlDomUtilityInstance.getContentWithHeader(xmlDocument); - for (let replacableTokenValue in xmlSubstitution.replacableTokenValues) { - domContent = domContent - .split(replacableTokenValue) - .join(xmlSubstitution.replacableTokenValues[replacableTokenValue]); - } - let expectedResult = path.join(__dirname, "/Resources/Web_Expected.config"); - fileBuffer = fs.readFileSync(expectedResult); - let expectedContent = fileBuffer.toString("utf-8"); - let targetXmlDomUtilityInstance = new xmlDomUtility_1.XmlDomUtility( - expectedContent - ); - let expectedXmlDocument = targetXmlDomUtilityInstance.getXmlDom(); - replaceEscapeXMLCharacters(expectedXmlDocument); - let expectedDomContent = - "\uFEFF" + - xmlDomUtilityInstance.getContentWithHeader(expectedXmlDocument); - expectedDomContent = expectedDomContent - .split("APOS_CHARACTER_TOKEN") - .join("'"); - expect(domContent).to.equal(expectedDomContent); - }); +describe('Test Xml Variable Substitution', () => { + it("Should substitute", () => { + let envVarUtilityMock = sinon.mock(envVarUtility); + envVarUtilityMock.expects('getVariableMap').returns(new Map([ + ['conntype', 'new_connType'], + ['MyDB', 'TestDB'], + ['webpages:Version', '1.1.7.3'], + ['xdt:Transform', 'DelAttributes'], + ['xdt:Locator', 'Match(tag)'], + ['DefaultConnection', "Url=https://primary;Database=db1;ApiKey=11111111-1111-1111-1111-111111111111;Failover = {Url:'https://secondary', ApiKey:'11111111-1111-1111-1111-111111111111'}"], + ['OtherDefaultConnection', 'connectionStringValue2'], + ['ParameterConnection', 'New_Connection_String From xml var subs'], + ['connectionString', 'replaced_value'], + ['invariantName', 'System.Data.SqlServer'], + ['blatvar', 'ApplicationSettingReplacedValue'], + ['log_level', 'error,warning'], + ['Email:ToOverride', ''] + ])); + function replaceEscapeXMLCharacters(xmlDOMNode) { + if (!xmlDOMNode || typeof xmlDOMNode == 'string') { + return; + } + for (var xmlAttribute in xmlDOMNode.attrs) { + xmlDOMNode.attrs[xmlAttribute] = xmlDOMNode.attrs[xmlAttribute].replace(/'/g, "APOS_CHARACTER_TOKEN"); + } + for (var xmlChild of xmlDOMNode.children) { + replaceEscapeXMLCharacters(xmlChild); + } + } + let source = path.join(__dirname, "/Resources/Web.config"); + let fileBuffer = fs.readFileSync(source); + let fileContent = fileBuffer.toString('utf-8'); + let xmlDomUtilityInstance = new xmlDomUtility_1.XmlDomUtility(fileContent); + let xmlSubstitution = new xmlVariableSubstitution_1.XmlSubstitution(xmlDomUtilityInstance); + let isApplied = xmlSubstitution.substituteXmlVariables(); + expect(isApplied).to.equal(true); + let xmlDocument = xmlDomUtilityInstance.getXmlDom(); + replaceEscapeXMLCharacters(xmlDocument); + let domContent = '\uFEFF' + xmlDomUtilityInstance.getContentWithHeader(xmlDocument); + for (let replacableTokenValue in xmlSubstitution.replacableTokenValues) { + domContent = domContent.split(replacableTokenValue).join(xmlSubstitution.replacableTokenValues[replacableTokenValue]); + } + let expectedResult = path.join(__dirname, "/Resources/Web_Expected.config"); + fileBuffer = fs.readFileSync(expectedResult); + let expectedContent = fileBuffer.toString('utf-8'); + let targetXmlDomUtilityInstance = new xmlDomUtility_1.XmlDomUtility(expectedContent); + let expectedXmlDocument = targetXmlDomUtilityInstance.getXmlDom(); + replaceEscapeXMLCharacters(expectedXmlDocument); + let expectedDomContent = '\uFEFF' + xmlDomUtilityInstance.getContentWithHeader(expectedXmlDocument); + expectedDomContent = expectedDomContent.split("APOS_CHARACTER_TOKEN").join("'"); + expect(domContent).to.equal(expectedDomContent); + }); }); diff --git a/lib/operations/envVariableUtility.js b/lib/operations/envVariableUtility.js index fcad7a3..eafac57 100644 --- a/lib/operations/envVariableUtility.js +++ b/lib/operations/envVariableUtility.js @@ -1,107 +1,87 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.EnvTreeUtility = - exports.isObject = - exports.isEmpty = - exports.getVariableMap = - exports.isPredefinedVariable = - void 0; +exports.EnvTreeUtility = exports.isObject = exports.isEmpty = exports.getVariableMap = exports.isPredefinedVariable = void 0; function isPredefinedVariable(variable) { - let predefinedVarPrefix = [ - "runner.", - "azure_http_user_agent", - "common.", - "system.", - ]; - for (let varPrefix of predefinedVarPrefix) { - if (variable.toLowerCase().startsWith(varPrefix)) { - return true; + let predefinedVarPrefix = ['runner.', 'azure_http_user_agent', 'common.', 'system.']; + for (let varPrefix of predefinedVarPrefix) { + if (variable.toLowerCase().startsWith(varPrefix)) { + return true; + } } - } - return false; + return false; } exports.isPredefinedVariable = isPredefinedVariable; function getVariableMap() { - let variableMap = new Map(); - let variables = process.env; - Object.keys(variables).forEach((key) => { - if (!isPredefinedVariable(key)) { - variableMap.set(key, variables[key]); - } - }); - return variableMap; + let variableMap = new Map(); + let variables = process.env; + Object.keys(variables).forEach(key => { + if (!isPredefinedVariable(key)) { + variableMap.set(key, variables[key]); + } + }); + return variableMap; } exports.getVariableMap = getVariableMap; function isEmpty(object) { - if (object == null || object == "") return true; - return false; + if (object == null || object == "") + return true; + return false; } exports.isEmpty = isEmpty; function isObject(object) { - if (object == null || object == "" || typeof object != "object") { - return false; - } - return true; + if (object == null || object == "" || typeof (object) != 'object') { + return false; + } + return true; } exports.isObject = isObject; class EnvTreeUtility { - constructor() { - this.envVarTree = null; - } - static getEnvVarTree() { - let util = new EnvTreeUtility(); - if (!util.envVarTree) { - util.envVarTree = util.createEnvTree(getVariableMap()); + constructor() { + this.envVarTree = null; + } + static getEnvVarTree() { + let util = new EnvTreeUtility(); + if (!util.envVarTree) { + util.envVarTree = util.createEnvTree(getVariableMap()); + } + return util.envVarTree; } - return util.envVarTree; - } - createEnvTree(envVariables) { - // __proto__ is marked as null, so that custom object can be assgined. - // This replacement do not affect the JSON object, as no inbuilt JSON function is referenced. - let envVarTree = { - value: null, - isEnd: false, - child: { - __proto__: null, - }, - }; - for (let [key, value] of envVariables.entries()) { - let envVarTreeIterator = envVarTree; - let envVariableNameArray = key.split("."); - for (let variableName of envVariableNameArray) { - if ( - envVarTreeIterator.child[variableName] === undefined || - typeof envVarTreeIterator.child[variableName] === "function" - ) { - envVarTreeIterator.child[variableName] = { + createEnvTree(envVariables) { + // __proto__ is marked as null, so that custom object can be assgined. + // This replacement do not affect the JSON object, as no inbuilt JSON function is referenced. + let envVarTree = { value: null, isEnd: false, - child: {}, - }; + child: { + '__proto__': null + } + }; + for (let [key, value] of envVariables.entries()) { + let envVarTreeIterator = envVarTree; + let envVariableNameArray = key.split('.'); + for (let variableName of envVariableNameArray) { + if (envVarTreeIterator.child[variableName] === undefined || typeof envVarTreeIterator.child[variableName] === 'function') { + envVarTreeIterator.child[variableName] = { + value: null, + isEnd: false, + child: {} + }; + } + envVarTreeIterator = envVarTreeIterator.child[variableName]; + } + envVarTreeIterator.isEnd = true; + envVarTreeIterator.value = value; } - envVarTreeIterator = envVarTreeIterator.child[variableName]; - } - envVarTreeIterator.isEnd = true; - envVarTreeIterator.value = value; + return envVarTree; } - return envVarTree; - } - checkEnvTreePath(jsonObjectKey, index, jsonObjectKeyLength, envVarTree) { - if (index == jsonObjectKeyLength) { - return envVarTree; - } - if ( - envVarTree.child[jsonObjectKey[index]] === undefined || - typeof envVarTree.child[jsonObjectKey[index]] === "function" - ) { - return undefined; + checkEnvTreePath(jsonObjectKey, index, jsonObjectKeyLength, envVarTree) { + if (index == jsonObjectKeyLength) { + return envVarTree; + } + if (envVarTree.child[jsonObjectKey[index]] === undefined || typeof envVarTree.child[jsonObjectKey[index]] === 'function') { + return undefined; + } + return this.checkEnvTreePath(jsonObjectKey, index + 1, jsonObjectKeyLength, envVarTree.child[jsonObjectKey[index]]); } - return this.checkEnvTreePath( - jsonObjectKey, - index + 1, - jsonObjectKeyLength, - envVarTree.child[jsonObjectKey[index]] - ); - } } exports.EnvTreeUtility = EnvTreeUtility; diff --git a/lib/operations/fileEncodingUtility.js b/lib/operations/fileEncodingUtility.js index c79403a..285c9f3 100644 --- a/lib/operations/fileEncodingUtility.js +++ b/lib/operations/fileEncodingUtility.js @@ -3,78 +3,64 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.detectFileEncoding = void 0; const core = require("@actions/core"); function detectFileEncodingWithBOM(fileName, buffer) { - core.debug("Detecting file encoding using BOM"); - if (buffer.slice(0, 3).equals(Buffer.from([239, 187, 191]))) { - return { - encoding: "utf-8", - withBOM: true, - }; - } else if (buffer.slice(0, 4).equals(Buffer.from([255, 254, 0, 0]))) { - throw Error( - `Detected file encoding of the file ${fileName} as UTF-32LE. Variable substitution is not supported with file encoding UTF-32LE. Supported encodings are UTF-8 and UTF-16LE.` - ); - } else if (buffer.slice(0, 2).equals(Buffer.from([254, 255]))) { - throw Error( - `Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16LE.` - ); - } else if (buffer.slice(0, 2).equals(Buffer.from([255, 254]))) { - return { - encoding: "utf-16le", - withBOM: true, - }; - } else if (buffer.slice(0, 4).equals(Buffer.from([0, 0, 254, 255]))) { - throw Error( - `Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16LE.` - ); - } - core.debug("Unable to detect File encoding using BOM"); - return null; + core.debug('Detecting file encoding using BOM'); + if (buffer.slice(0, 3).equals(Buffer.from([239, 187, 191]))) { + return { + encoding: 'utf-8', + withBOM: true + }; + } + else if (buffer.slice(0, 4).equals(Buffer.from([255, 254, 0, 0]))) { + throw Error(`Detected file encoding of the file ${fileName} as UTF-32LE. Variable substitution is not supported with file encoding UTF-32LE. Supported encodings are UTF-8 and UTF-16LE.`); + } + else if (buffer.slice(0, 2).equals(Buffer.from([254, 255]))) { + throw Error(`Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16LE.`); + } + else if (buffer.slice(0, 2).equals(Buffer.from([255, 254]))) { + return { + encoding: 'utf-16le', + withBOM: true + }; + } + else if (buffer.slice(0, 4).equals(Buffer.from([0, 0, 254, 255]))) { + throw Error(`Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16LE.`); + } + core.debug('Unable to detect File encoding using BOM'); + return null; } function detectFileEncodingWithoutBOM(fileName, buffer) { - core.debug("Detecting file encoding without BOM"); - let typeCode = 0; - for (let index = 0; index < 4; index++) { - typeCode = typeCode << 1; - typeCode = typeCode | (buffer[index] > 0 ? 1 : 0); - } - switch (typeCode) { - case 1: - throw Error( - `Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16 LE.` - ); - case 5: - throw Error( - `Detected file encoding of the file ${fileName} as UTF-16BE. Variable substitution is not supported with file encoding UTF-16BE. Supported encodings are UTF-8 and UTF-16 LE.` - ); - case 8: - throw Error( - `Detected file encoding of the file ${fileName} as UTF-32LE. Variable substitution is not supported with file encoding UTF-32LE. Supported encodings are UTF-8 and UTF-16 LE.` - ); - case 10: - return { - encoding: "utf-16le", - withBOM: false, - }; - case 15: - return { - encoding: "utf-8", - withBOM: false, - }; - default: - throw Error( - `Unable to detect encoding of the file ${fileName} (typeCode: ${typeCode}). Supported encodings are UTF-8 and UTF-16 LE.` - ); - } + core.debug('Detecting file encoding without BOM'); + let typeCode = 0; + for (let index = 0; index < 4; index++) { + typeCode = typeCode << 1; + typeCode = typeCode | (buffer[index] > 0 ? 1 : 0); + } + switch (typeCode) { + case 1: + throw Error(`Detected file encoding of the file ${fileName} as UTF-32BE. Variable substitution is not supported with file encoding UTF-32BE. Supported encodings are UTF-8 and UTF-16 LE.`); + case 5: + throw Error(`Detected file encoding of the file ${fileName} as UTF-16BE. Variable substitution is not supported with file encoding UTF-16BE. Supported encodings are UTF-8 and UTF-16 LE.`); + case 8: + throw Error(`Detected file encoding of the file ${fileName} as UTF-32LE. Variable substitution is not supported with file encoding UTF-32LE. Supported encodings are UTF-8 and UTF-16 LE.`); + case 10: + return { + encoding: 'utf-16le', + withBOM: false + }; + case 15: + return { + encoding: 'utf-8', + withBOM: false + }; + default: + throw Error(`Unable to detect encoding of the file ${fileName} (typeCode: ${typeCode}). Supported encodings are UTF-8 and UTF-16 LE.`); + } } function detectFileEncoding(fileName, buffer) { - if (buffer.length < 4) { - throw Error( - `File buffer is too short to detect encoding type : ${fileName}` - ); - } - let fileEncoding = - detectFileEncodingWithBOM(fileName, buffer) || - detectFileEncodingWithoutBOM(fileName, buffer); - return fileEncoding; + if (buffer.length < 4) { + throw Error(`File buffer is too short to detect encoding type : ${fileName}`); + } + let fileEncoding = detectFileEncodingWithBOM(fileName, buffer) || detectFileEncodingWithoutBOM(fileName, buffer); + return fileEncoding; } exports.detectFileEncoding = detectFileEncoding; diff --git a/lib/operations/jsonVariableSubstitutionUtility.js b/lib/operations/jsonVariableSubstitutionUtility.js index da48ee7..2a9e154 100644 --- a/lib/operations/jsonVariableSubstitutionUtility.js +++ b/lib/operations/jsonVariableSubstitutionUtility.js @@ -4,78 +4,48 @@ exports.JsonSubstitution = void 0; const core = require("@actions/core"); const envVariableUtility_1 = require("./envVariableUtility"); class JsonSubstitution { - constructor() { - this.envTreeUtil = new envVariableUtility_1.EnvTreeUtility(); - } - substituteJsonVariable(jsonObject, envObject) { - let isValueChanged = false; - for (let jsonChild in jsonObject) { - let jsonChildArray = jsonChild.split("."); - let resultNode = this.envTreeUtil.checkEnvTreePath( - jsonChildArray, - 0, - jsonChildArray.length, - envObject - ); - if (resultNode != undefined) { - if (resultNode.isEnd) { - switch (typeof jsonObject[jsonChild]) { - case "number": - console.log( - "SubstitutingValueonKeyWithNumber", - jsonChild, - resultNode.value - ); - jsonObject[jsonChild] = !isNaN(resultNode.value) - ? Number(resultNode.value) - : resultNode.value; - break; - case "boolean": - console.log( - "SubstitutingValueonKeyWithBoolean", - jsonChild, - resultNode.value - ); - jsonObject[jsonChild] = - resultNode.value == "true" - ? true - : resultNode.value == "false" - ? false - : resultNode.value; - break; - case "object": - case null: - try { - console.log( - "SubstitutingValueonKeyWithObject", - jsonChild, - resultNode.value - ); - jsonObject[jsonChild] = JSON.parse(resultNode.value); - } catch (exception) { - core.debug( - "unable to substitute the value. falling back to string value" - ); - jsonObject[jsonChild] = resultNode.value; - } - break; - case "string": - console.log( - "SubstitutingValueonKeyWithString", - jsonChild, - resultNode.value - ); - jsonObject[jsonChild] = resultNode.value; - } - isValueChanged = true; - } else { - isValueChanged = - this.substituteJsonVariable(jsonObject[jsonChild], resultNode) || - isValueChanged; + constructor() { + this.envTreeUtil = new envVariableUtility_1.EnvTreeUtility(); + } + substituteJsonVariable(jsonObject, envObject) { + let isValueChanged = false; + for (let jsonChild in jsonObject) { + let jsonChildArray = jsonChild.split('.'); + let resultNode = this.envTreeUtil.checkEnvTreePath(jsonChildArray, 0, jsonChildArray.length, envObject); + if (resultNode != undefined) { + if (resultNode.isEnd) { + switch (typeof (jsonObject[jsonChild])) { + case 'number': + console.log('SubstitutingValueonKeyWithNumber', jsonChild, resultNode.value); + jsonObject[jsonChild] = !isNaN(resultNode.value) ? Number(resultNode.value) : resultNode.value; + break; + case 'boolean': + console.log('SubstitutingValueonKeyWithBoolean', jsonChild, resultNode.value); + jsonObject[jsonChild] = (resultNode.value == 'true' ? true : (resultNode.value == 'false' ? false : resultNode.value)); + break; + case 'object': + case null: + try { + console.log('SubstitutingValueonKeyWithObject', jsonChild, resultNode.value); + jsonObject[jsonChild] = JSON.parse(resultNode.value); + } + catch (exception) { + core.debug('unable to substitute the value. falling back to string value'); + jsonObject[jsonChild] = resultNode.value; + } + break; + case 'string': + console.log('SubstitutingValueonKeyWithString', jsonChild, resultNode.value); + jsonObject[jsonChild] = resultNode.value; + } + isValueChanged = true; + } + else { + isValueChanged = this.substituteJsonVariable(jsonObject[jsonChild], resultNode) || isValueChanged; + } + } } - } + return isValueChanged; } - return isValueChanged; - } } exports.JsonSubstitution = JsonSubstitution; diff --git a/lib/operations/utility.js b/lib/operations/utility.js index dcb5204..4e7336b 100644 --- a/lib/operations/utility.js +++ b/lib/operations/utility.js @@ -1,41 +1,23 @@ "use strict"; -var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); -var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); -var __importStar = - (this && this.__importStar) || - function (mod) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; - }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.findfiles = void 0; const core = require("@actions/core"); @@ -44,330 +26,316 @@ const minimatch = __importStar(require("minimatch")); const fs = require("fs"); const path = require("path"); function findfiles(filepath) { - core.debug("Finding files matching input: " + filepath); - let filesList; - if (filepath.indexOf("*") == -1 && filepath.indexOf("?") == -1) { - // No pattern found, check literal path to a single file - if (exist(filepath)) { - filesList = [filepath]; - } else { - core.debug( - "No matching files were found with search pattern: " + filepath - ); - return []; - } - } else { - filepath = path.join(process.env.GITHUB_WORKSPACE, filepath); - let firstWildcardIndex = function (str) { - let idx = str.indexOf("*"); - let idxOfWildcard = str.indexOf("?"); - if (idxOfWildcard > -1) { - return idx > -1 ? Math.min(idx, idxOfWildcard) : idxOfWildcard; - } - return idx; - }; - // Find app files matching the specified pattern - core.debug("Matching glob pattern: " + filepath); - // First find the most complete path without any matching patterns - let idx = firstWildcardIndex(filepath); - core.debug("Index of first wildcard: " + idx); - let slicedPath = filepath.slice(0, idx); - let findPathRoot = path.dirname(slicedPath); - if (slicedPath.endsWith("\\") || slicedPath.endsWith("/")) { - findPathRoot = slicedPath; + core.debug("Finding files matching input: " + filepath); + let filesList; + if (filepath.indexOf('*') == -1 && filepath.indexOf('?') == -1) { + // No pattern found, check literal path to a single file + if (exist(filepath)) { + filesList = [filepath]; + } + else { + core.debug('No matching files were found with search pattern: ' + filepath); + return []; + } } - core.debug("find root dir: " + findPathRoot); - // Now we get a list of all files under this root - let allFiles = find(findPathRoot); - // Now matching the pattern against all files - filesList = match(allFiles, filepath, "", { - matchBase: true, - nocase: !!os.type().match(/^Win/), - }); - // Fail if no matching files were found - if (!filesList || filesList.length == 0) { - core.debug( - "No matching files were found with search pattern: " + filepath - ); - return []; + else { + filepath = path.join(process.env.GITHUB_WORKSPACE, filepath); + let firstWildcardIndex = function (str) { + let idx = str.indexOf('*'); + let idxOfWildcard = str.indexOf('?'); + if (idxOfWildcard > -1) { + return (idx > -1) ? + Math.min(idx, idxOfWildcard) : idxOfWildcard; + } + return idx; + }; + // Find app files matching the specified pattern + core.debug('Matching glob pattern: ' + filepath); + // First find the most complete path without any matching patterns + let idx = firstWildcardIndex(filepath); + core.debug('Index of first wildcard: ' + idx); + let slicedPath = filepath.slice(0, idx); + let findPathRoot = path.dirname(slicedPath); + if (slicedPath.endsWith("\\") || slicedPath.endsWith("/")) { + findPathRoot = slicedPath; + } + core.debug('find root dir: ' + findPathRoot); + // Now we get a list of all files under this root + let allFiles = find(findPathRoot); + // Now matching the pattern against all files + filesList = match(allFiles, filepath, '', { matchBase: true, nocase: !!os.type().match(/^Win/) }); + // Fail if no matching files were found + if (!filesList || filesList.length == 0) { + core.debug('No matching files were found with search pattern: ' + filepath); + return []; + } } - } - return filesList; + return filesList; } exports.findfiles = findfiles; class _FindItem { - constructor(path, level) { - this.path = path; - this.level = level; - } + constructor(path, level) { + this.path = path; + this.level = level; + } } function find(findPath) { - if (!findPath) { - core.debug("no path specified"); - return []; - } - // normalize the path, otherwise the first result is inconsistently formatted from the rest of the results - // because path.join() performs normalization. - findPath = path.normalize(findPath); - // debug trace the parameters - core.debug(`findPath: '${findPath}'`); - // return empty if not exists - try { - fs.lstatSync(findPath); - } catch (err) { - if (err.code == "ENOENT") { - core.debug("0 results"); - return []; + if (!findPath) { + core.debug('no path specified'); + return []; } - throw err; - } - try { - let result = []; - // push the first item - let stack = [new _FindItem(findPath, 1)]; - let traversalChain = []; // used to detect cycles - while (stack.length) { - // pop the next item and push to the result array - let item = stack.pop(); // non-null because `stack.length` was truthy - result.push(item.path); - // stat the item. the stat info is used further below to determine whether to traverse deeper - // - // stat returns info about the target of a symlink (or symlink chain), - // lstat returns info about a symlink itself - let stats; - // use lstat (not following symlinks) - stats = fs.lstatSync(item.path); - // note, isDirectory() returns false for the lstat of a symlink - if (stats.isDirectory()) { - core.debug(` ${item.path} (directory)`); - // push the child items in reverse onto the stack - let childLevel = item.level + 1; - let childItems = fs - .readdirSync(item.path) - .map( - (childName) => - new _FindItem(path.join(item.path, childName), childLevel) - ); - for (let i = childItems.length - 1; i >= 0; i--) { - stack.push(childItems[i]); + // normalize the path, otherwise the first result is inconsistently formatted from the rest of the results + // because path.join() performs normalization. + findPath = path.normalize(findPath); + // debug trace the parameters + core.debug(`findPath: '${findPath}'`); + // return empty if not exists + try { + fs.lstatSync(findPath); + } + catch (err) { + if (err.code == 'ENOENT') { + core.debug('0 results'); + return []; } - } else { - core.debug(` ${item.path} (file)`); - } + throw err; + } + try { + let result = []; + // push the first item + let stack = [new _FindItem(findPath, 1)]; + let traversalChain = []; // used to detect cycles + while (stack.length) { + // pop the next item and push to the result array + let item = stack.pop(); // non-null because `stack.length` was truthy + result.push(item.path); + // stat the item. the stat info is used further below to determine whether to traverse deeper + // + // stat returns info about the target of a symlink (or symlink chain), + // lstat returns info about a symlink itself + let stats; + // use lstat (not following symlinks) + stats = fs.lstatSync(item.path); + // note, isDirectory() returns false for the lstat of a symlink + if (stats.isDirectory()) { + core.debug(` ${item.path} (directory)`); + // push the child items in reverse onto the stack + let childLevel = item.level + 1; + let childItems = fs.readdirSync(item.path) + .map((childName) => new _FindItem(path.join(item.path, childName), childLevel)); + for (let i = childItems.length - 1; i >= 0; i--) { + stack.push(childItems[i]); + } + } + else { + core.debug(` ${item.path} (file)`); + } + } + core.debug(`${result.length} results`); + return result; + } + catch (err) { + throw new Error('LIB_OperationFailed' + 'find' + err.message); } - core.debug(`${result.length} results`); - return result; - } catch (err) { - throw new Error("LIB_OperationFailed" + "find" + err.message); - } } function _getDefaultMatchOptions() { - return { - debug: false, - nobrace: true, - noglobstar: false, - dot: true, - noext: false, - nocase: process.platform == "win32", - nonull: false, - matchBase: false, - nocomment: false, - nonegate: false, - flipNegate: false, - }; + return { + debug: false, + nobrace: true, + noglobstar: false, + dot: true, + noext: false, + nocase: process.platform == 'win32', + nonull: false, + matchBase: false, + nocomment: false, + nonegate: false, + flipNegate: false + }; } function cloneMatchOptions(matchOptions) { - return { - debug: matchOptions.debug, - nobrace: matchOptions.nobrace, - noglobstar: matchOptions.noglobstar, - dot: matchOptions.dot, - noext: matchOptions.noext, - nocase: matchOptions.nocase, - nonull: matchOptions.nonull, - matchBase: matchOptions.matchBase, - nocomment: matchOptions.nocomment, - nonegate: matchOptions.nonegate, - flipNegate: matchOptions.flipNegate, - }; + return { + debug: matchOptions.debug, + nobrace: matchOptions.nobrace, + noglobstar: matchOptions.noglobstar, + dot: matchOptions.dot, + noext: matchOptions.noext, + nocase: matchOptions.nocase, + nonull: matchOptions.nonull, + matchBase: matchOptions.matchBase, + nocomment: matchOptions.nocomment, + nonegate: matchOptions.nonegate, + flipNegate: matchOptions.flipNegate + }; } function match(list, patterns, patternRoot, options) { - // trace parameters - core.debug(`patternRoot: '${patternRoot}'`); - options = options || _getDefaultMatchOptions(); // default match options - // convert pattern to an array - if (typeof patterns == "string") { - patterns = [patterns]; - } - // hashtable to keep track of matches - let map = {}; - let originalOptions = options; - for (let pattern of patterns) { - core.debug(`pattern: '${pattern}'`); - // trim and skip empty - pattern = (pattern || "").trim(); - if (!pattern) { - core.debug("skipping empty pattern"); - continue; - } - // clone match options - let options = cloneMatchOptions(originalOptions); - // skip comments - if (!options.nocomment && startsWith(pattern, "#")) { - core.debug("skipping comment"); - continue; - } - // set nocomment - brace expansion could result in a leading '#' - options.nocomment = true; - // determine whether pattern is include or exclude - let negateCount = 0; - if (!options.nonegate) { - while (pattern.charAt(negateCount) == "!") { - negateCount++; - } - pattern = pattern.substring(negateCount); // trim leading '!' - if (negateCount) { - core.debug(`trimmed leading '!'. pattern: '${pattern}'`); - } - } - let isIncludePattern = - negateCount == 0 || - (negateCount % 2 == 0 && !options.flipNegate) || - (negateCount % 2 == 1 && options.flipNegate); - // set nonegate - brace expansion could result in a leading '!' - options.nonegate = true; - options.flipNegate = false; - // expand braces - required to accurately root patterns - let expanded; - let preExpanded = pattern; - if (options.nobrace) { - expanded = [pattern]; - } else { - // convert slashes on Windows before calling braceExpand(). unfortunately this means braces cannot - // be escaped on Windows, this limitation is consistent with current limitations of minimatch (3.0.3). - core.debug("expanding braces"); - let convertedPattern = - process.platform == "win32" ? pattern.replace(/\\/g, "/") : pattern; - expanded = minimatch.braceExpand(convertedPattern); + // trace parameters + core.debug(`patternRoot: '${patternRoot}'`); + options = options || _getDefaultMatchOptions(); // default match options + // convert pattern to an array + if (typeof patterns == 'string') { + patterns = [patterns]; } - // set nobrace - options.nobrace = true; - for (let pattern of expanded) { - if (expanded.length != 1 || pattern != preExpanded) { + // hashtable to keep track of matches + let map = {}; + let originalOptions = options; + for (let pattern of patterns) { core.debug(`pattern: '${pattern}'`); - } - // trim and skip empty - pattern = (pattern || "").trim(); - if (!pattern) { - core.debug("skipping empty pattern"); - continue; - } - // root the pattern when all of the following conditions are true: - if ( - patternRoot && // patternRoot supplied - !isRooted(pattern) && // AND pattern not rooted - // AND matchBase:false or not basename only - (!options.matchBase || - (process.platform == "win32" - ? pattern.replace(/\\/g, "/") - : pattern - ).indexOf("/") >= 0) - ) { - pattern = ensureRooted(patternRoot, pattern); - core.debug(`rooted pattern: '${pattern}'`); - } - if (isIncludePattern) { - // apply the pattern - core.debug("applying include pattern against original list"); - let matchResults = minimatch.match(list, pattern, options); - core.debug(matchResults.length + " matches"); - // union the results - for (let matchResult of matchResults) { - map[matchResult] = true; + // trim and skip empty + pattern = (pattern || '').trim(); + if (!pattern) { + core.debug('skipping empty pattern'); + continue; } - } else { - // apply the pattern - core.debug("applying exclude pattern against original list"); - let matchResults = minimatch.match(list, pattern, options); - core.debug(matchResults.length + " matches"); - // substract the results - for (let matchResult of matchResults) { - delete map[matchResult]; + // clone match options + let options = cloneMatchOptions(originalOptions); + // skip comments + if (!options.nocomment && startsWith(pattern, '#')) { + core.debug('skipping comment'); + continue; + } + // set nocomment - brace expansion could result in a leading '#' + options.nocomment = true; + // determine whether pattern is include or exclude + let negateCount = 0; + if (!options.nonegate) { + while (pattern.charAt(negateCount) == '!') { + negateCount++; + } + pattern = pattern.substring(negateCount); // trim leading '!' + if (negateCount) { + core.debug(`trimmed leading '!'. pattern: '${pattern}'`); + } + } + let isIncludePattern = negateCount == 0 || + (negateCount % 2 == 0 && !options.flipNegate) || + (negateCount % 2 == 1 && options.flipNegate); + // set nonegate - brace expansion could result in a leading '!' + options.nonegate = true; + options.flipNegate = false; + // expand braces - required to accurately root patterns + let expanded; + let preExpanded = pattern; + if (options.nobrace) { + expanded = [pattern]; + } + else { + // convert slashes on Windows before calling braceExpand(). unfortunately this means braces cannot + // be escaped on Windows, this limitation is consistent with current limitations of minimatch (3.0.3). + core.debug('expanding braces'); + let convertedPattern = process.platform == 'win32' ? pattern.replace(/\\/g, '/') : pattern; + expanded = minimatch.braceExpand(convertedPattern); + } + // set nobrace + options.nobrace = true; + for (let pattern of expanded) { + if (expanded.length != 1 || pattern != preExpanded) { + core.debug(`pattern: '${pattern}'`); + } + // trim and skip empty + pattern = (pattern || '').trim(); + if (!pattern) { + core.debug('skipping empty pattern'); + continue; + } + // root the pattern when all of the following conditions are true: + if (patternRoot && // patternRoot supplied + !isRooted(pattern) && // AND pattern not rooted + // AND matchBase:false or not basename only + (!options.matchBase || (process.platform == 'win32' ? pattern.replace(/\\/g, '/') : pattern).indexOf('/') >= 0)) { + pattern = ensureRooted(patternRoot, pattern); + core.debug(`rooted pattern: '${pattern}'`); + } + if (isIncludePattern) { + // apply the pattern + core.debug('applying include pattern against original list'); + let matchResults = minimatch.match(list, pattern, options); + core.debug(matchResults.length + ' matches'); + // union the results + for (let matchResult of matchResults) { + map[matchResult] = true; + } + } + else { + // apply the pattern + core.debug('applying exclude pattern against original list'); + let matchResults = minimatch.match(list, pattern, options); + core.debug(matchResults.length + ' matches'); + // substract the results + for (let matchResult of matchResults) { + delete map[matchResult]; + } + } } - } } - } - // return a filtered version of the original list (preserves order and prevents duplication) - let result = list.filter((item) => map.hasOwnProperty(item)); - core.debug(result.length + " final results"); - return result; + // return a filtered version of the original list (preserves order and prevents duplication) + let result = list.filter((item) => map.hasOwnProperty(item)); + core.debug(result.length + ' final results'); + return result; } function ensureRooted(root, p) { - if (!root) { - throw new Error('ensureRooted() parameter "root" cannot be empty'); - } - if (!p) { - throw new Error('ensureRooted() parameter "p" cannot be empty'); - } - if (isRooted(p)) { - return p; - } - if (process.platform == "win32" && root.match(/^[A-Z]:$/i)) { - // e.g. C: + if (!root) { + throw new Error('ensureRooted() parameter "root" cannot be empty'); + } + if (!p) { + throw new Error('ensureRooted() parameter "p" cannot be empty'); + } + if (isRooted(p)) { + return p; + } + if (process.platform == 'win32' && root.match(/^[A-Z]:$/i)) { // e.g. C: + return root + p; + } + // ensure root ends with a separator + if (endsWith(root, '/') || (process.platform == 'win32' && endsWith(root, '\\'))) { + // root already ends with a separator + } + else { + root += path.sep; // append separator + } return root + p; - } - // ensure root ends with a separator - if ( - endsWith(root, "/") || - (process.platform == "win32" && endsWith(root, "\\")) - ) { - // root already ends with a separator - } else { - root += path.sep; // append separator - } - return root + p; } function isRooted(p) { - p = normalizeSeparators(p); - if (!p) { - throw new Error('isRooted() parameter "p" cannot be empty'); - } - if (process.platform == "win32") { - return ( - startsWith(p, "\\") || // e.g. \ or \hello or \\hello - /^[A-Z]:/i.test(p) - ); // e.g. C: or C:\hello - } - return startsWith(p, "/"); // e.g. /hello + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); + } + if (process.platform == 'win32') { + return startsWith(p, '\\') || // e.g. \ or \hello or \\hello + /^[A-Z]:/i.test(p); // e.g. C: or C:\hello + } + return startsWith(p, '/'); // e.g. /hello } function startsWith(str, start) { - return str.slice(0, start.length) == start; + return str.slice(0, start.length) == start; } function endsWith(str, end) { - return str.slice(-end.length) == end; + return str.slice(-end.length) == end; } function normalizeSeparators(p) { - p = p || ""; - if (process.platform == "win32") { - // convert slashes on Windows - p = p.replace(/\//g, "\\"); + p = p || ''; + if (process.platform == 'win32') { + // convert slashes on Windows + p = p.replace(/\//g, '\\'); + // remove redundant slashes + let isUnc = /^\\\\+[^\\]/.test(p); // e.g. \\hello + return (isUnc ? '\\' : '') + p.replace(/\\\\+/g, '\\'); // preserve leading // for UNC + } // remove redundant slashes - let isUnc = /^\\\\+[^\\]/.test(p); // e.g. \\hello - return (isUnc ? "\\" : "") + p.replace(/\\\\+/g, "\\"); // preserve leading // for UNC - } - // remove redundant slashes - return p.replace(/\/\/+/g, "/"); + return p.replace(/\/\/+/g, '/'); } function exist(path) { - let exist = false; - try { - exist = !!(path && fs.statSync(path) != null); - } catch (err) { - if (err && err.code === "ENOENT") { - exist = false; - } else { - throw err; + let exist = false; + try { + exist = !!(path && fs.statSync(path) != null); + } + catch (err) { + if (err && err.code === 'ENOENT') { + exist = false; + } + else { + throw err; + } } - } - return exist; + return exist; } diff --git a/lib/operations/xmlDomUtility.js b/lib/operations/xmlDomUtility.js index cd69e4c..56fca93 100644 --- a/lib/operations/xmlDomUtility.js +++ b/lib/operations/xmlDomUtility.js @@ -2,92 +2,88 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.XmlDomUtility = void 0; var envVarUtility = require("./envVariableUtility"); -var ltx = require("ltx"); +var ltx = require('ltx'); class XmlDomUtility { - constructor(xmlContent) { - this.xmlDomLookUpTable = {}; - this.xmlDomLookUpTable = {}; - this.headerContent = null; - this.xmlDom = ltx.parse(xmlContent); - this.readHeader(xmlContent); - this.buildLookUpTable(this.xmlDom); - } - getXmlDom() { - return this.xmlDom; - } - readHeader(xmlContent) { - let index = xmlContent.indexOf("\n"); - if (index > -1) { - let firstLine = xmlContent.substring(0, index).trim(); - if (firstLine.startsWith("")) { - this.headerContent = firstLine; - } + constructor(xmlContent) { + this.xmlDomLookUpTable = {}; + this.xmlDomLookUpTable = {}; + this.headerContent = null; + this.xmlDom = ltx.parse(xmlContent); + this.readHeader(xmlContent); + this.buildLookUpTable(this.xmlDom); } - } - getContentWithHeader(xmlDom) { - return xmlDom - ? (this.headerContent ? this.headerContent + "\n" : "") + - xmlDom.root().toString() - : ""; - } - /** - * Define method to create a lookup for DOM - */ - buildLookUpTable(node) { - if (node) { - let nodeName = node.name; - if (nodeName) { - nodeName = nodeName.toLowerCase(); - let listOfNodes = this.xmlDomLookUpTable[nodeName]; - if (listOfNodes == null || !Array.isArray(listOfNodes)) { - listOfNodes = []; - this.xmlDomLookUpTable[nodeName] = listOfNodes; - } - listOfNodes.push(node); - let childNodes = node.children; - for (let i = 0; i < childNodes.length; i++) { - let childNodeName = childNodes[i].name; - if (childNodeName) { - this.buildLookUpTable(childNodes[i]); - } + getXmlDom() { + return this.xmlDom; + } + readHeader(xmlContent) { + let index = xmlContent.indexOf('\n'); + if (index > -1) { + let firstLine = xmlContent.substring(0, index).trim(); + if (firstLine.startsWith("")) { + this.headerContent = firstLine; + } } - } } - } - /** - * Returns array of nodes which match with the tag name. - */ - getElementsByTagName(nodeName) { - if (envVarUtility.isEmpty(nodeName)) return []; - let selectedElements = this.xmlDomLookUpTable[nodeName.toLowerCase()]; - if (!selectedElements) { - selectedElements = []; + getContentWithHeader(xmlDom) { + return xmlDom ? (this.headerContent ? this.headerContent + "\n" : "") + xmlDom.root().toString() : ""; } - return selectedElements; - } - /** - * Search in subtree with provided node name - */ - getChildElementsByTagName(node, tagName) { - if (!envVarUtility.isObject(node)) return []; - let children = node.children; - let liveNodes = []; - if (children) { - for (let i = 0; i < children.length; i++) { - let childName = children[i].name; - if (!envVarUtility.isEmpty(childName) && tagName == childName) { - liveNodes.push(children[i]); + /** + * Define method to create a lookup for DOM + */ + buildLookUpTable(node) { + if (node) { + let nodeName = node.name; + if (nodeName) { + nodeName = nodeName.toLowerCase(); + let listOfNodes = this.xmlDomLookUpTable[nodeName]; + if (listOfNodes == null || !(Array.isArray(listOfNodes))) { + listOfNodes = []; + this.xmlDomLookUpTable[nodeName] = listOfNodes; + } + listOfNodes.push(node); + let childNodes = node.children; + for (let i = 0; i < childNodes.length; i++) { + let childNodeName = childNodes[i].name; + if (childNodeName) { + this.buildLookUpTable(childNodes[i]); + } + } + } } - let liveChildNodes = this.getChildElementsByTagName( - children[i], - tagName - ); - if (liveChildNodes && liveChildNodes.length > 0) { - liveNodes = liveNodes.concat(liveChildNodes); + } + /** + * Returns array of nodes which match with the tag name. + */ + getElementsByTagName(nodeName) { + if (envVarUtility.isEmpty(nodeName)) + return []; + let selectedElements = this.xmlDomLookUpTable[nodeName.toLowerCase()]; + if (!selectedElements) { + selectedElements = []; + } + return selectedElements; + } + /** + * Search in subtree with provided node name + */ + getChildElementsByTagName(node, tagName) { + if (!envVarUtility.isObject(node)) + return []; + let children = node.children; + let liveNodes = []; + if (children) { + for (let i = 0; i < children.length; i++) { + let childName = children[i].name; + if (!envVarUtility.isEmpty(childName) && tagName == childName) { + liveNodes.push(children[i]); + } + let liveChildNodes = this.getChildElementsByTagName(children[i], tagName); + if (liveChildNodes && liveChildNodes.length > 0) { + liveNodes = liveNodes.concat(liveChildNodes); + } + } } - } + return liveNodes; } - return liveNodes; - } } exports.XmlDomUtility = XmlDomUtility; diff --git a/lib/operations/xmlVariableSubstitution.js b/lib/operations/xmlVariableSubstitution.js index 44be035..2b2cb18 100644 --- a/lib/operations/xmlVariableSubstitution.js +++ b/lib/operations/xmlVariableSubstitution.js @@ -2,189 +2,138 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.XmlSubstitution = void 0; const core = require("@actions/core"); -let envVarUtility = require("./envVariableUtility"); -const tags = [ - "applicationSettings", - "appSettings", - "connectionStrings", - "configSections", -]; +let envVarUtility = require('./envVariableUtility'); +const tags = ["applicationSettings", "appSettings", "connectionStrings", "configSections"]; class XmlSubstitution { - constructor(xmlDomUtilityInstance) { - this.replacableTokenValues = { APOS_CHARACTER_TOKEN: "'" }; - this.variableMap = envVarUtility.getVariableMap(); - this.xmlDomUtility = xmlDomUtilityInstance; - } - substituteXmlVariables() { - let isSubstitutionApplied = false; - for (let tag of tags) { - let nodes = this.xmlDomUtility.getElementsByTagName(tag); - if (nodes.length == 0) { - core.debug( - "Unable to find node with tag '" + tag + "' in provided xml file." - ); - continue; - } - for (let xmlNode of nodes) { - if (envVarUtility.isObject(xmlNode)) { - console.log("Processing substitution for xml node: ", xmlNode.name); - try { - if (xmlNode.name == "configSections") { - isSubstitutionApplied = - this.updateXmlConfigNodeAttribute(xmlNode) || - isSubstitutionApplied; - } else if (xmlNode.name == "connectionStrings") { - isSubstitutionApplied = - this.updateXmlConnectionStringsNodeAttribute(xmlNode) || - isSubstitutionApplied; - } else { - isSubstitutionApplied = - this.updateXmlNodeAttribute(xmlNode) || isSubstitutionApplied; + constructor(xmlDomUtilityInstance) { + this.replacableTokenValues = { "APOS_CHARACTER_TOKEN": "'" }; + this.variableMap = envVarUtility.getVariableMap(); + this.xmlDomUtility = xmlDomUtilityInstance; + } + substituteXmlVariables() { + let isSubstitutionApplied = false; + for (let tag of tags) { + let nodes = this.xmlDomUtility.getElementsByTagName(tag); + if (nodes.length == 0) { + core.debug("Unable to find node with tag '" + tag + "' in provided xml file."); + continue; + } + for (let xmlNode of nodes) { + if (envVarUtility.isObject(xmlNode)) { + console.log('Processing substitution for xml node: ', xmlNode.name); + try { + if (xmlNode.name == "configSections") { + isSubstitutionApplied = this.updateXmlConfigNodeAttribute(xmlNode) || isSubstitutionApplied; + } + else if (xmlNode.name == "connectionStrings") { + isSubstitutionApplied = this.updateXmlConnectionStringsNodeAttribute(xmlNode) || isSubstitutionApplied; + } + else { + isSubstitutionApplied = this.updateXmlNodeAttribute(xmlNode) || isSubstitutionApplied; + } + } + catch (error) { + core.debug("Error occurred while processing xml node : " + xmlNode.name); + core.debug(error); + } + } } - } catch (error) { - core.debug( - "Error occurred while processing xml node : " + xmlNode.name - ); - core.debug(error); - } } - } + return isSubstitutionApplied; } - return isSubstitutionApplied; - } - updateXmlConfigNodeAttribute(xmlNode) { - let isSubstitutionApplied = false; - let sections = this.xmlDomUtility.getChildElementsByTagName( - xmlNode, - "section" - ); - for (let section of sections) { - if (envVarUtility.isObject(section)) { - let sectionName = section.attr("name"); - if (!envVarUtility.isEmpty(sectionName)) { - let customSectionNodes = - this.xmlDomUtility.getElementsByTagName(sectionName); - if (customSectionNodes.length != 0) { - let customNode = customSectionNodes[0]; - isSubstitutionApplied = - this.updateXmlNodeAttribute(customNode) || isSubstitutionApplied; - } + updateXmlConfigNodeAttribute(xmlNode) { + let isSubstitutionApplied = false; + let sections = this.xmlDomUtility.getChildElementsByTagName(xmlNode, "section"); + for (let section of sections) { + if (envVarUtility.isObject(section)) { + let sectionName = section.attr('name'); + if (!envVarUtility.isEmpty(sectionName)) { + let customSectionNodes = this.xmlDomUtility.getElementsByTagName(sectionName); + if (customSectionNodes.length != 0) { + let customNode = customSectionNodes[0]; + isSubstitutionApplied = this.updateXmlNodeAttribute(customNode) || isSubstitutionApplied; + } + } + } } - } - } - return isSubstitutionApplied; - } - updateXmlNodeAttribute(xmlDomNode) { - let isSubstitutionApplied = false; - if ( - envVarUtility.isEmpty(xmlDomNode) || - !envVarUtility.isObject(xmlDomNode) || - xmlDomNode.name == "#comment" - ) { - core.debug("Provided node is empty or a comment."); - return isSubstitutionApplied; + return isSubstitutionApplied; } - const ConfigFileAppSettingsToken = "CONFIG_FILE_SETTINGS_TOKEN"; - let xmlDomNodeAttributes = xmlDomNode.attrs; - for (var attributeName in xmlDomNodeAttributes) { - var attributeNameValue = - attributeName === "key" || attributeName == "name" - ? xmlDomNodeAttributes[attributeName] - : attributeName; - var attributeName = - attributeName === "key" || attributeName == "name" - ? "value" - : attributeName; - if (this.variableMap.get(attributeNameValue) != undefined) { - let ConfigFileAppSettingsTokenName = - ConfigFileAppSettingsToken + "(" + attributeNameValue + ")"; - let isValueReplaced = false; - if (xmlDomNode.getAttr(attributeName) != undefined) { - console.log( - `Updating value for key: ${attributeNameValue} with token value: ${ConfigFileAppSettingsTokenName}` - ); - xmlDomNode.attr(attributeName, ConfigFileAppSettingsTokenName); - isValueReplaced = true; - } else { - let children = xmlDomNode.children; - for (var childNode of children) { - if ( - envVarUtility.isObject(childNode) && - childNode.name == attributeName - ) { - if (childNode.children.length === 1) { - console.log( - `Updating value for key: ${attributeNameValue} with token value: ${ConfigFileAppSettingsTokenName}` - ); - childNode.children[0] = ConfigFileAppSettingsTokenName; - isValueReplaced = true; - } + updateXmlNodeAttribute(xmlDomNode) { + let isSubstitutionApplied = false; + if (envVarUtility.isEmpty(xmlDomNode) || !envVarUtility.isObject(xmlDomNode) || xmlDomNode.name == "#comment") { + core.debug("Provided node is empty or a comment."); + return isSubstitutionApplied; + } + const ConfigFileAppSettingsToken = 'CONFIG_FILE_SETTINGS_TOKEN'; + let xmlDomNodeAttributes = xmlDomNode.attrs; + for (var attributeName in xmlDomNodeAttributes) { + var attributeNameValue = (attributeName === "key" || attributeName == "name") ? xmlDomNodeAttributes[attributeName] : attributeName; + var attributeName = (attributeName === "key" || attributeName == "name") ? "value" : attributeName; + if (this.variableMap.get(attributeNameValue) != undefined) { + let ConfigFileAppSettingsTokenName = ConfigFileAppSettingsToken + '(' + attributeNameValue + ')'; + let isValueReplaced = false; + if (xmlDomNode.getAttr(attributeName) != undefined) { + console.log(`Updating value for key: ${attributeNameValue} with token value: ${ConfigFileAppSettingsTokenName}`); + xmlDomNode.attr(attributeName, ConfigFileAppSettingsTokenName); + isValueReplaced = true; + } + else { + let children = xmlDomNode.children; + for (var childNode of children) { + if (envVarUtility.isObject(childNode) && childNode.name == attributeName) { + if (childNode.children.length === 1) { + console.log(`Updating value for key: ${attributeNameValue} with token value: ${ConfigFileAppSettingsTokenName}`); + childNode.children[0] = ConfigFileAppSettingsTokenName; + isValueReplaced = true; + } + } + } + } + if (isValueReplaced) { + this.replacableTokenValues[ConfigFileAppSettingsTokenName] = this.variableMap.get(attributeNameValue).replace(/"/g, "'"); + isSubstitutionApplied = true; + } } - } } - if (isValueReplaced) { - this.replacableTokenValues[ConfigFileAppSettingsTokenName] = - this.variableMap.get(attributeNameValue).replace(/"/g, "'"); - isSubstitutionApplied = true; + let children = xmlDomNode.children; + for (var childNode of children) { + if (envVarUtility.isObject(childNode)) { + isSubstitutionApplied = this.updateXmlNodeAttribute(childNode) || isSubstitutionApplied; + } } - } - } - let children = xmlDomNode.children; - for (var childNode of children) { - if (envVarUtility.isObject(childNode)) { - isSubstitutionApplied = - this.updateXmlNodeAttribute(childNode) || isSubstitutionApplied; - } - } - return isSubstitutionApplied; - } - updateXmlConnectionStringsNodeAttribute(xmlDomNode) { - let isSubstitutionApplied = false; - const ConfigFileConnStringToken = "CONFIG_FILE_CONN_STRING_TOKEN"; - if ( - envVarUtility.isEmpty(xmlDomNode) || - !envVarUtility.isObject(xmlDomNode) || - xmlDomNode.name == "#comment" - ) { - core.debug("Provided node is empty or a comment."); - return isSubstitutionApplied; + return isSubstitutionApplied; } - let xmlDomNodeAttributes = xmlDomNode.attrs; - if (xmlDomNodeAttributes.hasOwnProperty("connectionString")) { - if ( - xmlDomNodeAttributes.hasOwnProperty("name") && - this.variableMap.get(xmlDomNodeAttributes.name) - ) { - let ConfigFileConnStringTokenName = - ConfigFileConnStringToken + "(" + xmlDomNodeAttributes.name + ")"; - core.debug( - `Substituting connectionString value for connectionString= ${xmlDomNodeAttributes.name} with token value: ${ConfigFileConnStringTokenName}` - ); - xmlDomNode.attr("connectionString", ConfigFileConnStringTokenName); - this.replacableTokenValues[ConfigFileConnStringTokenName] = - this.variableMap.get(xmlDomNodeAttributes.name).replace(/"/g, "'"); - isSubstitutionApplied = true; - } else if (this.variableMap.get("connectionString") != undefined) { - let ConfigFileConnStringTokenName = - ConfigFileConnStringToken + "(connectionString)"; - core.debug( - `Substituting connectionString value for connectionString= ${xmlDomNodeAttributes.name} with token value: ${ConfigFileConnStringTokenName}` - ); - xmlDomNode.attr("connectionString", ConfigFileConnStringTokenName); - this.replacableTokenValues[ConfigFileConnStringTokenName] = - this.variableMap.get("connectionString").replace(/"/g, "'"); - isSubstitutionApplied = true; - } - } - let children = xmlDomNode.children; - for (var childNode of children) { - if (envVarUtility.isObject(childNode)) { - isSubstitutionApplied = - this.updateXmlConnectionStringsNodeAttribute(childNode) || - isSubstitutionApplied; - } + updateXmlConnectionStringsNodeAttribute(xmlDomNode) { + let isSubstitutionApplied = false; + const ConfigFileConnStringToken = 'CONFIG_FILE_CONN_STRING_TOKEN'; + if (envVarUtility.isEmpty(xmlDomNode) || !envVarUtility.isObject(xmlDomNode) || xmlDomNode.name == "#comment") { + core.debug("Provided node is empty or a comment."); + return isSubstitutionApplied; + } + let xmlDomNodeAttributes = xmlDomNode.attrs; + if (xmlDomNodeAttributes.hasOwnProperty("connectionString")) { + if (xmlDomNodeAttributes.hasOwnProperty("name") && this.variableMap.get(xmlDomNodeAttributes.name)) { + let ConfigFileConnStringTokenName = ConfigFileConnStringToken + '(' + xmlDomNodeAttributes.name + ')'; + core.debug(`Substituting connectionString value for connectionString= ${xmlDomNodeAttributes.name} with token value: ${ConfigFileConnStringTokenName}`); + xmlDomNode.attr("connectionString", ConfigFileConnStringTokenName); + this.replacableTokenValues[ConfigFileConnStringTokenName] = this.variableMap.get(xmlDomNodeAttributes.name).replace(/"/g, "'"); + isSubstitutionApplied = true; + } + else if (this.variableMap.get("connectionString") != undefined) { + let ConfigFileConnStringTokenName = ConfigFileConnStringToken + '(connectionString)'; + core.debug(`Substituting connectionString value for connectionString= ${xmlDomNodeAttributes.name} with token value: ${ConfigFileConnStringTokenName}`); + xmlDomNode.attr("connectionString", ConfigFileConnStringTokenName); + this.replacableTokenValues[ConfigFileConnStringTokenName] = this.variableMap.get("connectionString").replace(/"/g, "'"); + isSubstitutionApplied = true; + } + } + let children = xmlDomNode.children; + for (var childNode of children) { + if (envVarUtility.isObject(childNode)) { + isSubstitutionApplied = this.updateXmlConnectionStringsNodeAttribute(childNode) || isSubstitutionApplied; + } + } + return isSubstitutionApplied; } - return isSubstitutionApplied; - } } exports.XmlSubstitution = XmlSubstitution;